日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

【AI初识境】什么是深度学习成功的开始?参数初始化

發布時間:2025/3/20 ChatGpt 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【AI初识境】什么是深度学习成功的开始?参数初始化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章首發于微信公眾號《有三AI》

【AI初識境】什么是深度學習成功的開始?參數初始化

這是《AI初識境》第5篇,這次我們說說初始化。所謂初識,就是對相關技術有基本了解,掌握了基本的使用方法。

神經網絡要優化一個非常復雜的非線性模型,而且基本沒有全局最優解,初始化在其中扮演著非常重要的作用,尤其在沒有BN等技術的早期,它直接影響模型能否收斂。

可以說萬事開頭難,沒有好的初始化的深度學習模型訓練起來更難。

作者&編輯??|?言有三

?

01?初始化的重要性

2006年Hinton等人在science期刊上發表了論文“Reducing?the?dimensionality?of?data?with?neuralnetworks”,揭開了新的訓練深層神經網絡算法的序幕。

利用無監督的RBM網絡來進行預訓練,進行圖像的降維,取得比PCA更好的結果,通常這被認為是深度學習興起的開篇

這么看來,是因為好的初始化方法的出現,才有了深層神經網絡工程化落地的可能性。

好的初始化應該滿足以下兩個條件:

(1)?讓神經元各層激活值不會出現飽和現象;

(2)?各層激活值也不能為0。

也就是激活值不要太大,也不要太小,應該剛剛好,當然這還只是最基本的要求。

我們都知道在早期,sigmoid激活函數是多層感知器模型的標配,上面這篇文章同樣也是用sigmoid激活函數,沒有那么多問題,是因為使用了預訓練。

如果不使用預訓練會如何?在Xavier?Glorot和Yoshua?Bengio提出xavier初始化方法的論文【1】中就對不同的激活函數使用不同的數據集做過實驗。

上面是一個四層的神經網絡在sigmoid函數激活下的訓練過程,可以看到最深的layer4層剛開始的時候很快就進入了飽和區域(激活值很低),其他幾層則比較平穩,在訓練的后期才能進行正常的更新。

為什么會這樣呢?網絡中有兩類參數需要學習,一個是權重,一個是偏置。對于上面的結果作者們提出了一個假設,就是在網絡的學習過程中,偏置項總是學的更快,網絡真正的輸出就是直接由layer4決定的,輸出就是softmax(b+Wh)。既然偏置項學的快,那Wh就沒有這么重要了,所以激活值可以低一點。

解釋雖然比較牽強,但是畢竟實驗結果擺在那里,從tanh函數的激活值來看會更直觀。

這個圖有個特點是,0,1和-1的值都不少,而中間段的就比較少。在0值,逼近線性函數,它不能為網絡的非線性能力作出貢獻。對于1,-1,則是飽和區,沒有用。

?

02?常用的初始化方法

1、全零初始化和隨機初始化

如果神經元的權重被初始化為0,?在第一次更新的時候,除了輸出之外,所有的中間層的節點的值都為零。一般神經網絡擁有對稱的結構,那么在進行第一次誤差反向傳播時,更新后的網絡參數將會相同,在下一次更新時,相同的網絡參數學習提取不到有用的特征,因此深度學習模型都不會使用0初始化所有參數。

而隨機初始化就是搞一些很小的值進行初始化,實驗表明大了就容易飽和,小的就激活不動,再說了這個沒技術含量,不必再討論。

2.標準初始化

對于均勻分布,X~U(a,b),概率密度函數等于:

?

它的期望等于0,方差等于(b-a)^2/12,如果b=1,a=-1,就是1/3。

下面我們首先計算一下,輸出輸入以及權重的方差關系公式:

如果我們希望每一層的激活值是穩定的,w就應該用n的平方根進行歸一化,n為每個神經元的輸入數量。

所以標準的初始化方法其權重參數就是以下分布:

它保證了參數均值為0,方差為常量1/3,和網絡的層數無關。? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

3.Xavier初始化

首先有一個共識必須先提出:神經網絡如果保持每層的信息流動是同一方差,那么會更加有利于優化。不然大家也不會去爭先恐后地研究各種normalization方法。

不過,Xavier?Glorot認為還不夠,應該增強這個條件,好的初始化應該使得各層的激活值和梯度的方差在傳播過程中保持一致,這個被稱為Glorot條件。

如果反向傳播每層梯度保持近似的方差,則信息能反饋到各層。而前向傳播激活值方差近似相等,有利于平穩地學習。

當然為了做到這一點,對激活函數也必須作出一些約定。

(1)?激活函數是線性的,至少在0點附近,而且導數為1。

(2)?激活值關于0對稱。

這兩個都不適用于sigmoid函數和ReLU函數,而適合tanh函數。

要滿足上面的兩個條件,就是下面的式子。

推導可以參考前面標準初始化的方法,這里的ni,ni+1分別就是輸入和輸出的神經元個數了,因為輸入輸出不相等,作為一種權衡,文中就建議使用輸入和輸出的均值來代替。

再帶入前面的均勻分布的方差(b-a)^2/12,就得到了對于tanh函數的xavier初始化方法。

下面這兩個圖分別是標準初始化和xavier初始化帶來的各層的反傳梯度方差,可以看出xavier確實保持了一致性。

4.He初始化

Xavier初始化雖然美妙,但它是針對tanh函數設計的,而激活函數現在是ReLU的天下,ReLU只有一半的激活,另一半是不激活的,所以前面的計算輸入輸出的方差的式子多了一個1/2,如下。

因為這一次沒有使用均勻初始化,而是使用了正態分布,所以對下面這個式子:

需要的就是這樣的正態分布。

綜上,對于兩大最經典的激活函數,各自有了對應的初始化方法。雖然后面還提出了一些其他的初始化方法,但是在我們這個系列中就不再詳述了。

?

03?關于初始化的一些思考

初始化這個問題明顯比較麻煩,不然大家也不會這么喜歡用pretrained模型了。

從前面我們可以看到,大家努力的方向有這么幾個。

(1)?預訓練啊。

機智地一比,甩鍋給別人,?。

(2)?從激活函數入手,讓梯度流動起來不要進入飽和區,則什么初始化咱們都可以接受。

這其實就要回到上次我們說的激活函數了,ReLU系列的激活函數天生可以緩解這個問題,反過來,像何凱明等提出的方法,也是可以反哺激活函數ReLU。

(3)?歸一化,讓每一層的輸入輸出的分布比較一致,降低學習難度。

回想一下,這不就是BN干的活嗎?所以才會有了BN之后,初始化方法不再需要小心翼翼地選擇。假如不用BN,要解決這個問題有幾個思路,我覺得分為兩派。

首先是理論派,就是咱們從理論上分析出設計一個怎么樣的函數是最合適的。

對于Sigmoid等函數,xavier設計出了xavier初始化方法,對于ReLU函數,何凱明設計了he初始化方法。

在此之上,有研究者分別針對零點平滑的激活函數和零點不平滑的激活函數提出了統一的框架,見文【2】,比如對于sigmoid,tanh等函數,方差和導數的關系如此。

然后是實踐派,在訓練的時候手動將權重歸一化的,見文【3】,這就是向歸一化方法靠攏了,下期咱們再講。

[1]?Glorot?X,?Bengio?Y.?Understanding?the?difficulty?of?training?deep?feedforward?neuralnetworks[C]//Proceedings?of?the?thirteenth?international?conference?on?artificial?intelligence?andstatistics.?2010:?249-256.

[2]?Kumar?S?K.?On?weight?initialization?in?deep?neural?networks[J].?arXiv?preprint?arXiv:1704.08863,?2017.

[3]?Mishkin?D,?Matas?J.?All?you?need?is?a?good?init[J].?arXiv?preprint?arXiv:1511.06422,?2015.

最后發一個通知,2019年有三AI培養計劃出爐了,一個季度一期噢。

2019年有三AI“春季”劃,給我一個榮耀,還你一生榮耀

?

總結

好的初始化方法就是贏在起跑線,不過現在的初始化方法也不是對什么數據集都有效,畢竟不同數據集的分布不同,咱們以后再談。

下期預告:論深度學習中的歸一化

?

轉載文章請后臺聯系

侵權必究

比如網絡loss不正常,怎么調都不管用。

比如訓練好好的,測試就是結果不對。

bug天天有,深度學習算法工程師遇到的特別多,如果你想交流更多,就來有三AI知識星球實時提問交流吧,大咖眾多,總有能解決你問題的。

初識境界到此基本就結束了,這一系列是為大家奠定扎實的深度學習基礎,希望學習完后大家能有收獲。

AI白身境系列完整閱讀:

第一期:【AI白身境】深度學習從棄用windows開始

第二期:【AI白身境】Linux干活三板斧,shell、vim和git

第三期:【AI白身境】學AI必備的python基礎

第四期:【AI白身境】深度學習必備圖像基礎

第五期:【AI白身境】搞計算機視覺必備的OpenCV入門基礎

第六期:【AI白身境】只會用Python?g++,CMake和Makefile了解一下

第七期:【AI白身境】學深度學習你不得不知的爬蟲基礎

第八期:?【AI白身境】深度學習中的數據可視化

第九期:【AI白身境】入行AI需要什么數學基礎:左手矩陣論,右手微積分

第十期:【AI白身境】一文覽盡計算機視覺研究方向

第十一期:【AI白身境】AI+,都加在哪些應用領域了

第十二期:【AI白身境】究竟誰是paper之王,全球前10的計算機科學家

AI初識境系列完整閱讀

第一期:【AI初識境】從3次人工智能潮起潮落說起

第二期:【AI初識境】從頭理解神經網絡-內行與外行的分水嶺

第三期:【AI初識境】近20年深度學習在圖像領域的重要進展節點

第四期:【AI初識境】激活函數:從人工設計到自動搜索

第五期:【AI初識境】什么是深度學習成功的開始?參數初始化

第六期:【AI初識境】深度學習模型中的Normalization,你懂了多少?

第七期:【AI初識境】為了圍剿SGD大家這些年想過的那十幾招

第八期:【AI初識境】被Hinton,DeepMind和斯坦福嫌棄的池化,到底是什么?

第九期:【AI初識境】如何增加深度學習模型的泛化能力

第十期:【AI初識境】深度學習模型評估,從圖像分類到生成模型

第十一期:【AI初識境】深度學習中常用的損失函數有哪些?

第十二期:【AI初識境】給深度學習新手開始項目時的10條建議

感謝各位看官的耐心閱讀,不足之處希望多多指教。后續內容將會不定期奉上,歡迎大家關注有三公眾號 有三AI

總結

以上是生活随笔為你收集整理的【AI初识境】什么是深度学习成功的开始?参数初始化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。