將龐大的資料集分成許多個batch,遍歷這些batch,每個batch使用梯度下降法進行優化
如果batch的數目太大,則每次迭代的時間太長,如果batch的數目為1,則退化為隨機梯度下降法,這樣就喪失了向量化的加速作用,因此,需要合理選擇batch的數目,一般對於較大的資料集,選擇為64或128到512,一般是2的整數次冪。vt
=βvt
−1+(
1−β)
θtv t=
βvt−
1+(1
−β)θ
t,其大概平均了11
−β1 1−
β的資料,其中
β β
的值常常取為0.9
當權值過大時,初始階段可能偏差過大,這時可利用vt
1−βt
v t1
−βt來去掉偏差
此種方法的目的是消除隨機梯度下降法的上下波動,當計算出dw、db等梯度後,使用vd
w,vd
b vdw
,vdb
來代替,使用這些值來更新各個引數
此種演算法對momentum做了一定的修改,更新公式變為sd
w=βs
dw+(
1−β)
(dw)
2 sdw
=βsd
w+(1
−β)(
dw)2
,其權值更新公式變為:w=
w−αd
wsdw
√ w=w
−αdw
sdw,為了防止權值更新公式中除以0,所以要在除的時候加乙個很小的值
ε ε
結合了上述兩種演算法,最終權值更新公式變為:w=
w−αv
dwsd
w√+ε
w =w
−αvd
wsdw
+ε,其中momentum常用的超引數的值為0.9,rmsprop中常用的超引數的值為0.999,極小值常取的值為10−
8 10−8
α= 1
1+de
cay_
rate
∗epo
ch_n
umα0
α = 1
1+de
cay_
rate
∗epo
ch_n
umα0
除此之外,還有其他的許多衰減演算法,例如:
深度學習二
一 過擬合及欠擬合及其解決方案 訓練誤差和泛化誤差 訓練誤差是指在訓練資料集上表現出的誤差,泛化誤差指的是模型在任意乙個測試資料樣本上表現出來的誤差的期望,並常常通過測試資料集上的誤差來近似。計算訓練誤差和泛化誤差可以用損失函式,例如線性回歸用到的平方損失函式和softmax回歸用到的交叉熵損失函式...
深度學習 二
本篇主要涉及深度學習中相關的數學知識 講解的函式都是充分光滑的函式 嚴格定義 假設如下 y軸是位移,x是時間,現在要求特定點的瞬時速度。直觀上摳出任意時刻的一點得到的瞬時速度為0,但是如果任意時刻都為0的話,那麼不就沒有位置變化了嗎?這個問題其實就是著名的飛矢不動悖論。但我們知道單單摳出乙個點來談速...
深度學習初探(二)深度學習框架
theano 是最早的深度學習框架之一,是乙個基於 python 語言 定位底層運算的計算庫,theano 同時支援 gpu 和 cpu 運 算。由於theano 開發效率較低,模型編譯時間較長,同時開發人員轉投tensorflow 等原因,theano 目前已經停止維護 scikit learn ...