第11课:优化神经网络——梯度优化
上一篇,我們主要介紹了在神經(jīng)網(wǎng)絡(luò)模型中如何防止出現(xiàn)過擬合問題。常用的方法是 L1、L2 正則化,Dropout 正則化,Data Augmentation,Early Stopping 等。本文將重點介紹如何使用梯度優(yōu)化來使神經(jīng)網(wǎng)絡(luò)訓(xùn)練更快更有效率。
Mini-Batch 梯度下降
神經(jīng)網(wǎng)絡(luò)反向傳播的過程需要使用梯度下降算法來優(yōu)化網(wǎng)絡(luò)參數(shù),迭代更新。我們之前介紹的梯度下降算法做法是每次訓(xùn)練都使用全部 m 個訓(xùn)練樣本(稱為 Batch)。該做法的缺點是當(dāng) m 很大的時候,例如百萬數(shù)量級(這在大型的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)里是比較常見的),會影響運算速度,增加模型的訓(xùn)練時間。
為了解決這一問題,我們可以將 m 個樣本均勻分割成若干個子集,每個子集包含較少的樣本數(shù)量。一般子集包含的樣本數(shù)量為 64、128、256 等,較常使用 2 的冪數(shù)。計算機(jī)存儲數(shù)據(jù)一般是 2 的冪,這樣設(shè)置可以提高運算速度。然后,對每個子集依次進(jìn)行訓(xùn)練。所有的子集都訓(xùn)練完成之后,可以說一次訓(xùn)練就完成了,我們稱之為一次 epoch。這就是 Mini-Batch 梯度下降算法。
例如總的訓(xùn)練樣本數(shù)量 m = 320000,拆分成 T=5000 個子集,每個 Mini-Batch 包含樣本的個數(shù)是 64。我們將每個 Mini-Batch 的輸入記為 $X^{\{t\}}$,輸出記為 $Y^{\{t\}}$,$t=1,2,\cdots,T$。
這里總結(jié)下神經(jīng)網(wǎng)絡(luò)參數(shù)標(biāo)記中各個上標(biāo)一般表示的含義:
$X^{(i)}$ :第 $i$ 個樣本;
總結(jié)
以上是生活随笔為你收集整理的第11课:优化神经网络——梯度优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VC实现在ListBox中选择背景位图
- 下一篇: 人设崩塌?万茜被盗号甩锅程序员,却两次被