0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何有效地對(duì)神經(jīng)網(wǎng)絡(luò)參數(shù)進(jìn)行初始化

DPVg_AI_era ? 來(lái)源:lq ? 2019-05-15 08:59 ? 次閱讀

神經(jīng)網(wǎng)絡(luò)的初始化是訓(xùn)練流程的重要基礎(chǔ)環(huán)節(jié),會(huì)對(duì)模型的性能、收斂性、收斂速度等產(chǎn)生重要的影響。本文是deeplearning.ai的一篇技術(shù)博客,文章指出,對(duì)初始化值的大小選取不當(dāng), 可能造成梯度爆炸或梯度消失等問(wèn)題,并提出了針對(duì)性的解決方法。

初始化會(huì)對(duì)深度神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練時(shí)間和收斂性產(chǎn)生重大影響。簡(jiǎn)單的初始化方法可以加速訓(xùn)練,但使用這些方法需要注意小心常見的陷阱。本文將解釋如何有效地對(duì)神經(jīng)網(wǎng)絡(luò)參數(shù)進(jìn)行初始化。

有效的初始化對(duì)構(gòu)建模型至關(guān)重要

要構(gòu)建機(jī)器學(xué)習(xí)算法,通常要定義一個(gè)體系結(jié)構(gòu)(例如邏輯回歸,支持向量機(jī),神經(jīng)網(wǎng)絡(luò))并對(duì)其進(jìn)行訓(xùn)練來(lái)學(xué)習(xí)參數(shù)。下面是訓(xùn)練神經(jīng)網(wǎng)絡(luò)的一些常見流程:

初始化參數(shù)

選擇優(yōu)化算法

然后重復(fù)以下步驟:

1、向前傳播輸入

2、計(jì)算成本函數(shù)

3、使用反向傳播計(jì)算與參數(shù)相關(guān)的成本梯度

4、根據(jù)優(yōu)化算法,利用梯度更新每個(gè)參數(shù)

然后,給定一個(gè)新的數(shù)據(jù)點(diǎn),使用模型來(lái)預(yù)測(cè)其類型。

初始化值太大太小會(huì)導(dǎo)致梯度爆炸或梯度消失

初始化這一步對(duì)于模型的最終性能至關(guān)重要,需要采用正確的方法。比如對(duì)于下面的三層神經(jīng)網(wǎng)絡(luò)??梢試L試使用不同的方法初始化此網(wǎng)絡(luò),并觀察對(duì)學(xué)習(xí)的影響。

在優(yōu)化循環(huán)的每次迭代(前向,成本,后向,更新)中,我們觀察到當(dāng)從輸出層向輸入層移動(dòng)時(shí),反向傳播的梯度要么被放大,要么被最小化。

假設(shè)所有激活函數(shù)都是線性的(恒等函數(shù))。 則輸出激活為:

其中 L=10 ,且W[1]、W[2]…W[L-1]都是2*2矩陣,因?yàn)閺牡?層到L-1層都是2個(gè)神經(jīng)元,接收2個(gè)輸入。為了方便分析,如果假設(shè)W[1]=W[2]=…=W[L-1]=W,那么輸出預(yù)測(cè)為

如果初始化值太大或太小會(huì)造成什么結(jié)果?

情況1:初始化值過(guò)大會(huì)導(dǎo)致梯度爆炸

如果每個(gè)權(quán)重的初始化值都比單位矩陣稍大,即:

可簡(jiǎn)化表示為

且a[l]的值隨l值呈指數(shù)級(jí)增長(zhǎng)。當(dāng)這些激活用于向后傳播時(shí),會(huì)導(dǎo)致梯度爆炸。也就是說(shuō),與參數(shù)相關(guān)的成本梯度太大。 這導(dǎo)致成本圍繞其最小值振蕩。

初始化值太大導(dǎo)致成本圍繞其最小值震蕩

情況2:初始化值過(guò)小會(huì)導(dǎo)致梯度消失

類似地,如果每個(gè)權(quán)重的初始化值都比單位矩陣稍小,即:

可簡(jiǎn)化表示為

且a[l]的值隨l值減少呈指數(shù)級(jí)下降。當(dāng)這些激活用于后向傳播時(shí),可能會(huì)導(dǎo)致梯度消失。也就是說(shuō),與參數(shù)相關(guān)的成本梯度太小。這會(huì)導(dǎo)致成本在達(dá)到最小值之前收斂。

初始化值太小導(dǎo)致模型過(guò)早收斂

總而言之,使用大小不合適的值對(duì)權(quán)重進(jìn)行將導(dǎo)致神經(jīng)網(wǎng)絡(luò)的發(fā)散或訓(xùn)練速度下降。 雖然我們用的是簡(jiǎn)單的對(duì)稱權(quán)重矩陣來(lái)說(shuō)明梯度爆炸/消失的問(wèn)題,但這一現(xiàn)象可以推廣到任何不合適的初始化值。

如何確定合適的初始化值

為了防止以上問(wèn)題的出現(xiàn),我們可以堅(jiān)持以下經(jīng)驗(yàn)原則:

1.激活的平均值應(yīng)為零。

2.激活的方差應(yīng)該在每一層保持不變。

在這兩個(gè)假設(shè)下,反向傳播的梯度信號(hào)不應(yīng)該在任何層中乘以太小或太大的值。梯度應(yīng)該可以移動(dòng)到輸入層,而不會(huì)爆炸或消失。

更具體地說(shuō),對(duì)于層l,其前向傳播是:

我們想讓下式成立:

確保均值為零,并保持每層輸入方差值不變,可以保證信號(hào)不會(huì)爆炸或消失。該方法既適用于前向傳播(用于激活),也適用于向后傳播(用于關(guān)于激活的成本梯度)。這里建議使用Xavier初始化(或其派生初始化方法),對(duì)于每個(gè)層l,有:

層l中的所有權(quán)重均自正態(tài)分布中隨機(jī)挑選,其中均值μ=0,方差E= 1/( n[l?1]),其中n[l?1]是第l-1層網(wǎng)絡(luò)中的神經(jīng)元數(shù)量。偏差已初始化為零。

下圖說(shuō)明了Xavier初始化對(duì)五層全連接神經(jīng)網(wǎng)絡(luò)的影響。數(shù)據(jù)集為MNIST中選取的10000個(gè)手寫數(shù)字,分類結(jié)果的紅色方框表示錯(cuò)誤分類,藍(lán)色表示正確分類。

結(jié)果顯示,Xavier初始化的模型性能顯著高于uniform和標(biāo)準(zhǔn)正態(tài)分布(從上至下分別為uniform、標(biāo)準(zhǔn)正態(tài)分布、Xavier)。

結(jié)論

在實(shí)踐中,使用Xavier初始化的機(jī)器學(xué)習(xí)工程師會(huì)將權(quán)重初始化為N(0,1/( n[l?1]))或N(0,2/(n[l-1]+n[1])),其中后一個(gè)分布的方差是n[l-1]和n[1]的調(diào)和平均。

Xavier初始化可以與tanh激活一起使用。此外,還有大量其他初始化方法。 例如,如果你正在使用ReLU,則通常的初始化是He初始化,其初始化權(quán)重通過(guò)乘以Xavier初始化的方差2來(lái)初始化。 雖然這種初始化證明稍微復(fù)雜一些,但其思路與tanh是相同的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:一文看懂神經(jīng)網(wǎng)絡(luò)初始化!吳恩達(dá)Deeplearning.ai最新干貨

文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MATLAB神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)

    遞歸網(wǎng)絡(luò)newelm 創(chuàng)建一Elman遞歸網(wǎng)絡(luò)2. 網(wǎng)絡(luò)應(yīng)用函數(shù)sim 仿真一個(gè)神經(jīng)網(wǎng)絡(luò)init 初始化一個(gè)
    發(fā)表于 09-22 16:10

    【案例分享】基于BP算法的前饋神經(jīng)網(wǎng)絡(luò)

    }或o koko_{k})的誤差神經(jīng)元偏倚的變化量:ΔΘ ΔΘ Delta Theta=學(xué)習(xí)步長(zhǎng)η ηeta × ×imes 乘以神經(jīng)元的誤差BP神經(jīng)網(wǎng)絡(luò)算法過(guò)程網(wǎng)絡(luò)
    發(fā)表于 07-21 04:00

    改善深層神經(jīng)網(wǎng)絡(luò)--超參數(shù)優(yōu)化、batch正則和程序框架 學(xué)習(xí)總結(jié)

    《深度學(xué)習(xí)工程師-吳恩達(dá)》02改善深層神經(jīng)網(wǎng)絡(luò)--超參數(shù)優(yōu)化、batch正則和程序框架 學(xué)習(xí)總結(jié)
    發(fā)表于 06-16 14:52

    怎么解決人工神經(jīng)網(wǎng)絡(luò)并行數(shù)據(jù)處理的問(wèn)題

    本文提出了一個(gè)基于FPGA 的信息處理的實(shí)例:一個(gè)簡(jiǎn)單的人工神經(jīng)網(wǎng)絡(luò)應(yīng)用Verilog 語(yǔ)言描述,該數(shù)據(jù)流采用模塊的程序設(shè)計(jì),并考慮了模塊間數(shù)據(jù)傳輸信號(hào)同 步的問(wèn)題,有效地解決了人工神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 05-06 07:22

    基于BP神經(jīng)網(wǎng)絡(luò)的PID控制

    神經(jīng)網(wǎng)絡(luò)可以建立參數(shù)Kp,Ki,Kd自整定的PID控制器?;贐P神經(jīng)網(wǎng)絡(luò)的PID控制系統(tǒng)結(jié)構(gòu)框圖如下圖所示:控制器由兩部分組成:經(jīng)典增量式PID控制器;BP神經(jīng)網(wǎng)絡(luò)...
    發(fā)表于 09-07 07:43

    卷積神經(jīng)網(wǎng)絡(luò)模型發(fā)展及應(yīng)用

    propagation algorithm,BP)[22]。BP 算法采用 Sigmoid 進(jìn)行非線性映射,有效解決了 非線性分類和學(xué)習(xí)的問(wèn)題,掀起了神經(jīng)網(wǎng)絡(luò)第二次 研究高潮。BP 網(wǎng)絡(luò)
    發(fā)表于 08-02 10:39

    如何進(jìn)行高效的時(shí)序圖神經(jīng)網(wǎng)絡(luò)的訓(xùn)練

    現(xiàn)有的圖數(shù)據(jù)規(guī)模極大,導(dǎo)致時(shí)序圖神經(jīng)網(wǎng)絡(luò)的訓(xùn)練需要格外長(zhǎng)的時(shí)間,因此使用多GPU進(jìn)行訓(xùn)練變得成為尤為重要,如何有效地將多GPU用于時(shí)序圖神經(jīng)網(wǎng)絡(luò)訓(xùn)練成為一個(gè)非常重要的研究議題。本文提供
    發(fā)表于 09-28 10:37

    BP神經(jīng)網(wǎng)絡(luò)的稅收預(yù)測(cè)

    針對(duì)傳統(tǒng)稅收預(yù)測(cè)模型精度較低的問(wèn)題,提出一種將Adaboost算法和BP神經(jīng)網(wǎng)絡(luò)相結(jié)合進(jìn)行稅收預(yù)測(cè)的方法。該方法首先對(duì)歷年稅收數(shù)據(jù)進(jìn)行預(yù)處理并初始化測(cè)試數(shù)據(jù)分布權(quán)值;然后
    發(fā)表于 02-27 16:51 ?0次下載
    BP<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的稅收預(yù)測(cè)

    神經(jīng)網(wǎng)絡(luò)是在許多用例中提供了精確狀態(tài)的機(jī)器學(xué)習(xí)算法

    參數(shù)是必須初始化網(wǎng)絡(luò)的值,這些值是神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時(shí)無(wú)法學(xué)習(xí)到的。例如:在卷積神經(jīng)網(wǎng)絡(luò)中,一些超參數(shù)
    的頭像 發(fā)表于 06-11 11:47 ?3068次閱讀
    <b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>是在許多用例中提供了精確狀態(tài)的機(jī)器學(xué)習(xí)算法

    神經(jīng)網(wǎng)絡(luò)如何正確初始化?

    初始化對(duì)訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的收斂性有重要影響。
    的頭像 發(fā)表于 05-17 16:32 ?8052次閱讀
    <b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>如何正確<b class='flag-5'>初始化</b>?

    教大家怎么選擇神經(jīng)網(wǎng)絡(luò)的超參數(shù)

    minibatch 的大小, 輸出神經(jīng)元的編碼方式, 代價(jià)函數(shù)的選擇, 權(quán)重初始化的方法, 神經(jīng)元激活函數(shù)的種類, 參加訓(xùn)練模型數(shù)據(jù)的規(guī)模 這些都是可以影響神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)速度和最后分類
    的頭像 發(fā)表于 06-19 14:49 ?3549次閱讀
    教大家怎么選擇<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的超<b class='flag-5'>參數(shù)</b>

    卷積神經(jīng)網(wǎng)絡(luò)算法代碼matlab

    )、池層(Pooling Layer)和全連接層(Fully Connected Layer)。卷積神經(jīng)網(wǎng)絡(luò)源自對(duì)腦神經(jīng)細(xì)胞的研究,能夠有效地處理大規(guī)模的視覺和語(yǔ)音數(shù)據(jù)。本文將詳細(xì)介
    的頭像 發(fā)表于 08-21 16:50 ?1126次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點(diǎn)

    傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型,卷積神經(jīng)網(wǎng)絡(luò)具有以下優(yōu)點(diǎn)。 1. 局部連接和權(quán)值共享:卷積神經(jīng)網(wǎng)絡(luò)通過(guò)設(shè)置局部連接和權(quán)值共享的結(jié)構(gòu),有效地減少了神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 12-07 15:37 ?3871次閱讀

    bp神經(jīng)網(wǎng)絡(luò)算法的基本流程包括哪些

    初始化網(wǎng)絡(luò)參數(shù) 在BP神經(jīng)網(wǎng)絡(luò)算法中,首先需要初始化網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-04 09:47 ?350次閱讀

    PyTorch如何實(shí)現(xiàn)多層全連接神經(jīng)網(wǎng)絡(luò)

    在PyTorch中實(shí)現(xiàn)多層全連接神經(jīng)網(wǎng)絡(luò)(也稱為密集連接神經(jīng)網(wǎng)絡(luò)或DNN)是一個(gè)相對(duì)直接的過(guò)程,涉及定義網(wǎng)絡(luò)結(jié)構(gòu)、初始化參數(shù)、前向傳播、損失
    的頭像 發(fā)表于 07-11 16:07 ?844次閱讀