Task6-7

Task6

批量歸一化

BatchNormalization想要解決的問題:Internal Covariate Shift

作者:Juliuszh
鏈接:https://zhuanlan.zhihu.com/p/33173246
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

1.2 深度學習中的 Internal Covariate Shift

深度神經(jīng)網(wǎng)絡(luò)模型的訓練為什么會很困難?其中一個重要的原因是,深度神經(jīng)網(wǎng)絡(luò)涉及到很多層的疊加,而每一層的參數(shù)更新會導致上層的輸入數(shù)據(jù)分布發(fā)生變化,通過層層疊加,高層的輸入分布變化會非常劇烈,這就使得高層需要不斷去重新適應(yīng)底層的參數(shù)更新。為了訓好模型,我們需要非常謹慎地去設(shè)定學習率、初始化權(quán)重、以及盡可能細致的參數(shù)更新策略。

Google 將這一現(xiàn)象總結(jié)為 Internal Covariate Shift,簡稱 ICS. 什么是 ICS 呢?

@魏秀參

一個回答中做出了一個很好的解釋:

大家都知道在統(tǒng)計機器學習中的一個經(jīng)典假設(shè)是“源空間(source domain)和目標空間(target domain)的數(shù)據(jù)分布(distribution)是一致的”。如果不一致,那么就出現(xiàn)了新的機器學習問題,如 transfer learning / domain adaptation 等。而 covariate shift 就是分布不一致假設(shè)之下的一個分支問題,它是指源空間和目標空間的條件概率是一致的,但是其邊緣概率不同,即:對所有x\in \chi[圖片上傳失敗...(image-a57c44-1582635612735)]

但是[圖片上傳失敗...(image-5235d6-1582635612735)]大家細想便會發(fā)現(xiàn),的確,對于神經(jīng)網(wǎng)絡(luò)的各層輸出,由于它們經(jīng)過了層內(nèi)操作作用,其分布顯然與各層對應(yīng)的輸入信號分布不同,而且差異會隨著網(wǎng)絡(luò)深度增大而增大,可是它們所能“指示”的樣本標記(label)仍然是不變的,這便符合了covariate shift的定義。由于是對層間信號的分析,也即是“internal”的來由。

1.3 ICS 會導致什么問題?

簡而言之,每個神經(jīng)元的輸入數(shù)據(jù)不再是“獨立同分布”。

其一,上層參數(shù)需要不斷適應(yīng)新的輸入數(shù)據(jù)分布,降低學習速度。

其二,下層輸入的變化可能趨向于變大或者變小,導致上層落入飽和區(qū),使得學習過早停止。

其三,每層的更新都會影響到其它層,因此每層的參數(shù)更新策略需要盡可能的謹慎。

[圖片上傳失敗...(image-4e9d98-1582635612735)]

最后scale and shift中\gamma,\beta分別稱為縮放系數(shù),平移系數(shù)。

作用:為了保證模型的表達能力不因為規(guī)范化而下降。

批量歸一化層在仿射變換之后,激活函數(shù)之前。

其他歸一化方法

Layer Normalization

Instance Normalization

Group Normalization

FRN(Filter Response Normalization)

殘差網(wǎng)絡(luò)

動機:網(wǎng)絡(luò)退化

在神經(jīng)網(wǎng)絡(luò)可以收斂的前提下,隨著網(wǎng)絡(luò)深度增加,網(wǎng)絡(luò)的表現(xiàn)先是逐漸增加至飽和,然后迅速下降[1]。

需要注意,網(wǎng)絡(luò)退化問題不是過擬合導致的,即便在模型訓練過程中,同樣的訓練輪次下,退化的網(wǎng)絡(luò)也比稍淺層的網(wǎng)絡(luò)的訓練錯誤更高,如下圖[1]所示。

[模型退化:深層模型反而取得更低的訓練和測試誤差]

這一點并不符合常理:如果存在某個K層的網(wǎng)絡(luò)f是當前最優(yōu)的網(wǎng)絡(luò),那么可以構(gòu)造一個更深的網(wǎng)絡(luò),其最后幾層僅是該網(wǎng)絡(luò)fK層輸出的恒等映射(Identity Mapping),就可以取得與f一致的結(jié)果;也許K還不是所謂“最佳層數(shù)”,那么更深的網(wǎng)絡(luò)就可以取得更好的結(jié)果??偠灾?,與淺層網(wǎng)絡(luò)相比,更深的網(wǎng)絡(luò)的表現(xiàn)不應(yīng)該更差。因此,一個合理的猜測就是,對神經(jīng)網(wǎng)絡(luò)來說,恒等映射并不容易擬合。

作者:LinT
鏈接:https://zhuanlan.zhihu.com/p/80226180
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

殘差塊

image.png

image.png

在前向傳播時,輸入信號可以從任意低層直接傳播到高層。由于包含了一個天然的恒等映射,一定程度上可以解決網(wǎng)絡(luò)退化問題

網(wǎng)絡(luò)結(jié)構(gòu)

img
img

稠密網(wǎng)絡(luò)

img

DenseNet:比ResNet更優(yōu)的CNN模型 - 小小將的文章 - 知乎 https://zhuanlan.zhihu.com/p/37189203

凸優(yōu)化

凸函數(shù)的定義:
\lambda f(x)+(1-\lambda)f(x')\geq f(\lambda x+(1-\lambda) x')
Jensen不等式:
\sum_i \alpha_if(x_i)\geq f(\sum_i \alpha_ix_i)\\ E_x[f(x)]\geq f(E_x[x])
凸函數(shù)的期望大于等于期望的凸函數(shù)

性質(zhì)

  1. 無局部最小值

  2. 對于凸函數(shù) f(x),定義集合 S_b:={x|x∈X and f(x)≤b},則集合 S_b 為凸集

  3. f′′(x)≥0?f(x)f″(x)≥0?f(x) 是凸函數(shù)

梯度下降

牛頓法

梯度下降法、牛頓法和擬牛頓法 - Eureka的文章 - 知乎 https://zhuanlan.zhihu.com/p/37524275

image.png

紅色曲線是利用牛頓法迭代求解,綠色曲線是利用梯度下降法求解。

image.png

動態(tài)學習率

image.png

先大后小

Task7

優(yōu)化算法

一般來說,ill-conditioned是指問題的條件數(shù)(condition number)非常大,從而比較難以優(yōu)化,或者說需要更多迭代次數(shù)來達到同樣精度。直觀上來講,條件數(shù)是:函數(shù)梯度最大變化速度 / 梯度最小變化速度(對于二階可導函數(shù),條件數(shù)的嚴格定義是:Hessian矩陣最大特征值的上界 / 最小特征值的下界)。

用最簡單的話來解釋就是,問題條件數(shù)大意味著目標函數(shù)在有的地方(或有的方向)變化很快、有的地方很慢,比較不規(guī)律,從而很難用當前的局部信息(也就是梯度)去比較準確地預測最優(yōu)點所在的位置,只能一步步緩慢的逼近最優(yōu)點,從而優(yōu)化時需要更多的迭代次數(shù)。

作者:Martin Tan
鏈接:https://www.zhihu.com/question/56977045/answer/151137770
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

img

Solution to ill-condition

  • Preconditioning gradient vector: applied in Adam, RMSProp, AdaGrad, Adelta, KFC, Natural gradient and other secord-order optimization algorithms.
  • Averaging history gradient: like momentum, which allows larger learning rates to accelerate convergence; applied in Adam, RMSProp, SGD momentum.

Momentum動量

設(shè)時間步t的自變量為\boldsymbol{x}_t,學習率為\eta_t。 在時間步0,動量法創(chuàng)建速度變量v_0,并將其元素初始化成0。在時間步t>0,動量法對每次迭代的步驟做如下修改:
\begin{aligned}\boldsymbol{v}_t &\leftarrow \gamma \boldsymbol{v}_{t-1} + \eta_t \boldsymbol{g}_t, \\\boldsymbol{x}_t &\leftarrow \boldsymbol{x}_{t-1} - \boldsymbol{v}_t,\end{aligned}
其中,動量超參數(shù)\gamma 滿足0\leq \gamma < 10。當\gamma=0時,動量法等價于小批量隨機梯度下降。

或:
\begin{aligned}\boldsymbol{v}_t &\leftarrow \gamma \boldsymbol{v}_{t-1} + (1-\gamma) \boldsymbol{g}_t, \\\boldsymbol{x}_t &\leftarrow \boldsymbol{x}_{t-1} - \alpha_t \boldsymbol{v}_t,\alpha_t=\frac{\eta_t}{1-\gamma}\end{aligned}
<img src="https://tangshusen.me/Dive-into-DL-PyTorch/img/chapter07/7.4_output1.png" alt="img" style="zoom:50%;" />

<img src="https://tangshusen.me/Dive-into-DL-PyTorch/img/chapter07/7.4_output3.png" alt="img" style="zoom:50%;" />

AdaGrad

s_0初始化為0, g_t^2為按元素平方
s_t\leftarrow s_{t-1}+g_t^2\\x_t\leftarrow x_{t-1}-\frac{\eta}{\sqrt{s_t+?}}\odot g_t

  1. g_t較大時,學習率下降得快

  2. g_t較小時,學習率下降得慢

  3. 若前期下降過快則后期學習率后期過小

    <img src="https://staticcdn.boyuai.com/rt_upload/65D88109B129448EB6DAC9C0A04110BF/q5qoefd6ox.svg" alt="img" style="zoom: 80%;" />

RMSProp

s_t\leftarrow \beta s_{t-1}+(1-\beta)g_t^2\\x_t\leftarrow x_{t-1}-\frac{\eta}{\sqrt{s_t+?}}\odot g_t

指數(shù)移動平均調(diào)整學習率

可以看作是最近1/(1?β)個時間步的小批量隨機梯度平方項的加權(quán)平均。如此一來,自變量每個元素的學習率在迭代過程中就不再一直降低(或不變)。

[圖片上傳失敗...(image-49a745-1582635612735)]

AdaDelta

在RMSProp的基礎(chǔ)上,維護一個額外的狀態(tài)變量\Delta x_t代替學習率
g'_t\leftarrow \sqrt{\frac{\Delta x_{t-1}+?}{s_{t}+?}}\odot g_t\\x_t\leftarrow x_{t-1}-g'_t\\\Delta x_{t}\leftarrow \beta\Delta x_{t-1}+(1-\beta)g'^2_t
在pytorch中的\beta參數(shù)名是rho - \rho

Adam

Adaptive Moment Estimation

本質(zhì)上是帶有動量項的RMSprop,它利用梯度的一階矩估計和二階矩估計動態(tài)調(diào)整每個參數(shù)的學習率

<img src="Task6-8.assets/image-20200225195047950.png" alt="image-20200225195047950" style="zoom: 67%;" />

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容