參考文獻:
大家都做過對資訊的處理。
在這個過程中,我們會發現,由於影象的畫素是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指...