batch normal機制初窺

2021-09-24 16:31:47 字數 1342 閱讀 2528

參考文獻:

大家都做過對資訊的處理。

在這個過程中,我們會發現,由於影象的畫素是0-255之間。

這就說明,在整個過程中,我們發現其值永遠在第一象限中。

假設我們想用方程max(wx + b)來進行分類。

那整個過程中,訓練的目的,就是訓練w和b。

w的初始化,一般是從高斯分布中進行隨機初始化的。

有正有負。

這個時候用這個分類器對畫素進行分類,發現影象的所有點,都集中在第一象限中。

那麼在整個過程中,我們會發現,max(wx+b)為了達到收斂的效果,必然會為此付出巨大的代價。

最顯著的是,隨機初始化的分布是普通的高斯分布,那麼這個隨機分布,正是問題所在。

那麼為了防止曲線從外部進行分割,導致分割收斂的速度慢,或者導致陷入區域性最優解。

有乙個方法,就是將原始的資料進行乙個拆分,將它拆分為乙個在四個象限中都有的形象,也就是乙個平面。

這樣的方法有很多,最簡單的方法就是z-score的方法,對每個維度進行平均求方差,就能達成這樣的效果。

那麼在多層神經網路當中,我們可以採用層次處理的方法。

對每一層都進行這個操作,那麼無疑會大大加快處理時間。

理論上說呢,這個操作應該是在max(wx+b)後進行的,這樣是對每一層進行處理。

可惜的是,不是這樣的,要處理的物件是wx+b,作者認為對max後進行處理,一開始的時候引數不穩定,不太適合,所以乾脆對wx+b進行處理

那麼怎麼處理呢,就是針對每一緯度,wx+b都是減去自身均值再除以標準差,因為是針對乙個batch進行處理,所以叫做batch_normal。

在對卷積的處理過程中,我們意識到卷積層的引數是被共享的,那怎麼進行batch_normal,很簡單,在所有緯度進行操作後,取標準差和均值。

在這之後,我們意識到y(k

)=γk

x^k+

βk

y^ = \gamma^\hat x^ +\beta^

y(k)=γ

kx^k

+βk公式轉變為左邊的方程。

其中γ

\gamma

γ是標準差,而β

\beta

β是均值。

這不是又加回去了嗎

其實不是的,因為在batch_normal後,其值會傾向於在0.2到0.8中,對於sigmoid來說,它會導致只用線型部分,所以必須加上這一段,進行學習。

這個演算法解決了什麼問題呢?

學習率更高了

dropout可以更低了,因為過擬合一般都發生在邊緣位置,我們直接從中間開始切割。

降低l2權重,l2也是降低模型複雜度的方法

但同樣,在這樣的操作過程中,我們會發現

abbreviated 縮略

初窺JQuery 二 事件機制 1

詳細出處參考 jquery事件處理 頁面載入 事件繫結 事件委派 事件切換 toggle fn,fn 例項 複製 如下 html jquery toggle toggle function function function function 三 事件委派中也只有兩個方法,live 和die 兩個方...

Scrapy 初窺筆記

scrapy startproject yourprojectname 建立scrapy專案 開始爬蟲 scrapy crawl spidername 開始執行爬蟲 以上仿麻煩 根目錄新建執行檔案 from scrapy.cmdline import execute execute scrapy c...

初窺Shell 指令碼

1 shell是什麼 shell指令碼就是利用shell的命令解釋的功能,對乙個純文字的檔案進行解析,然後執行這些功能,也可以說shell指令碼就是一系列命令的合集。shell可以直接使用在win unix linux上面,並且可以呼叫大量系統內部的功能來解釋執行程式,如果熟練使用並掌握shell指...