2019-06-23
都是必知概念。
- 前向傳播算法,用于計(jì)算模型最終的輸出結(jié)果;反向傳播算法,用于減小模型輸出結(jié)果與實(shí)際結(jié)果之前的誤差,通過調(diào)整參數(shù)權(quán)重來優(yōu)化模型。故,神經(jīng)網(wǎng)絡(luò)就是通過前向傳播與反向傳播算法的循環(huán)迭代,來訓(xùn)練模型,進(jìn)而進(jìn)行預(yù)測或者分類。
- 而梯度下降與反向傳播之間是有關(guān)系的。梯度下降是沿著代價小的方向走的,所以用到的是代價函數(shù)的導(dǎo)數(shù)。每個參數(shù)都要向代價小的方向邁進(jìn)一步,邁多少,由反向傳播的公式算得。(暫時理解是這樣,沒仔細(xì)看反向傳播的那些公式)
- 訓(xùn)練過程中,可能出現(xiàn)過擬合的現(xiàn)象。針對這個問題,出現(xiàn)了正則化這個方法。通過在代價函數(shù)上增加一個正則項(xiàng),來對參數(shù)進(jìn)行約束,起到打壓某些不必要的參數(shù)的作用,從而解決過擬合問題。
- 雖然名字看起來像一個系列的,但是批標(biāo)準(zhǔn)化跟正則化可是沒啥關(guān)系的。批標(biāo)準(zhǔn)化解決的是每層的輸出的分布問題,將分布標(biāo)準(zhǔn)化。這樣本質(zhì)上解決的是有的地方?jīng)]怎么有梯度,導(dǎo)致梯度下降很慢的問題。
Gradient Descent 梯度下降

梯度下降簡單例子
看了單變量函數(shù)的梯度下降例子,感受一下。其實(shí)就是根據(jù)上一次的位置,一直地形,來決定下一步走多少,才可能更好地逼近山底。如果學(xué)習(xí)率α太小,步子小,就走得很慢;如果學(xué)習(xí)率太大,步子大到會跨過最低點(diǎn),就會震蕩。
- 有三種變種:
這篇詳細(xì)、全面、易讀:批量梯度下降(BGD)、隨機(jī)梯度下降(SGD)以及小批量梯度下降(MBGD)的理解
1、批梯度下降 (Batch Gradient Descent, BGD)
每次對所有樣本算代價,作為目標(biāo)函數(shù)。對目標(biāo)函數(shù)求偏導(dǎo),再用反向傳播去更新前面每層的參數(shù)。
2、隨機(jī)梯度下降 (Stochastic Gradient Descent, SGD)
每次對隨機(jī)一個樣本算代價。
3、小批量梯度下降 (Mini-Batch Gradient Descent, MBGD) (一般都用這個)
每次對小批量樣本算代價。
Forward Propagation 前向傳播
參考:深度學(xué)習(xí)(一):DNN前向傳播算法和反向傳播算法
-
前向傳播就是從這一層的輸出,到下一層的輸出的過程
like this
前向傳播
Back Propagation 反向傳播
參考:同上
-
對DNN的損失函數(shù)用梯度下降法進(jìn)行迭代優(yōu)化求極小值的過程即為我們的反向傳播算法
批梯度下降為例的反向傳播
就是說,前向傳播直到輸出,與真實(shí)標(biāo)簽會有差值,把這個差值反向傳播回每一層, 對每一層的參數(shù)進(jìn)行修改,從而得到訓(xùn)練。重復(fù)前向與反向的過程。
Normalization 正則化
這篇非常好,很詳細(xì):機(jī)器學(xué)習(xí)之正則化(Regularization)

加了正則化的損失函數(shù)
直接寫理解:
- 不用正則化的話,普通的損失函數(shù)存在什么問題?
如果你用的模型很復(fù)雜,有很多個參數(shù);但是實(shí)際的模型并不那么復(fù)雜,或者數(shù)據(jù)量并沒有大到需要用這么多參數(shù)。那么會出現(xiàn)過擬合。 - 為什么這樣會出現(xiàn)過擬合?
比如用高階函數(shù)去擬合二階函數(shù),訓(xùn)練到最后會全都擬合到數(shù)據(jù)點(diǎn)上去了,高階都用來遷就那些偏離二階函數(shù)的數(shù)據(jù)了。 - 正則化的作用?
防止過擬合。 - 怎么防止過擬合?
讓模型簡單點(diǎn)啊,是二階函數(shù)就別用高階去擬合啊。 - 你怎么知道就是二階,或者說你怎么知道留哪些參數(shù)?
用正則項(xiàng)去約束參數(shù)的大小,如果一個參數(shù)很小,也就跟沒這個參數(shù)差不多了。 - 損失函數(shù)如何理解?
上面損失函數(shù)的第一項(xiàng),是用于訓(xùn)練擬合程度,越小越好;第二項(xiàng)是用來約束參數(shù)的大小,越小越好。但是如上面所說,參數(shù)會促進(jìn)擬合程度,但是參數(shù)大了第二項(xiàng)就大了,所以兩項(xiàng)之間就得在訓(xùn)練的過程中打一架找個平衡點(diǎn)。λ就是人為給個權(quán)重用來平衡這兩個之間的力量,使其力量均衡才能打得起來,免得開始打一方就死了。
Batch Normalization
這篇很詳細(xì)的樣子,但是能力還不及,看不太懂:【深度學(xué)習(xí)】深入理解Batch Normalization批標(biāo)準(zhǔn)化
這篇邏輯清晰一些:【深度學(xué)習(xí)】批歸一化(Batch Normalization)
- 在訓(xùn)練過程中,隨著每次正向反向傳播,每層的參數(shù)會有所改變,隨之每層的輸出也有所改變。BN解決的是除了輸入之外,其他層的數(shù)據(jù)分布漂移問題,即Internal Covariate Shift。
-
這樣本質(zhì)上解決的是困在梯度小的區(qū)域時,梯度下降很慢的問題。理解BN


