開(kāi)局一把牌,怎么都能打 | 神經(jīng)網(wǎng)絡(luò)從“白癡”訓(xùn)練到“專家”水平,其參數(shù)并沒(méi)有太大的變化
這兩天重讀了一篇很有趣的論文,《Effect of the initial configuration of weights on the training and function of artificial neural networks》( https://arxiv.org/pdf/2012.02550 )。它非常直白的展示了人工神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中的初始權(quán)重配置對(duì)網(wǎng)絡(luò)功能和性能的影響。
通俗來(lái)講,神經(jīng)網(wǎng)絡(luò)就像是一臺(tái)復(fù)雜的機(jī)器,它內(nèi)部有很多“開(kāi)關(guān)”(也就是權(quán)重),這些開(kāi)關(guān)從一開(kāi)始就有隨機(jī)的初始設(shè)置。在訓(xùn)練過(guò)程中,這些開(kāi)關(guān)的設(shè)置會(huì)一點(diǎn)一點(diǎn)調(diào)整,目標(biāo)是讓網(wǎng)絡(luò)最終能夠給出盡量準(zhǔn)確的輸出。
作者通過(guò)分析發(fā)現(xiàn),在使用常見(jiàn)的訓(xùn)練方法(SGD/AdamW等)時(shí),網(wǎng)絡(luò)的最終狀態(tài)通常不會(huì)離初始設(shè)置太遠(yuǎn)。這就好比網(wǎng)絡(luò)的學(xué)習(xí)是在“微調(diào)”初始狀態(tài),而不是完全重置或重新安排所有開(kāi)關(guān)。
訓(xùn)練算法通常不需要走到離初始設(shè)置太遠(yuǎn)的地方,在初始設(shè)置的周?chē)湍苷业嚼硐氲慕狻?/p>
受論文思路的啟發(fā),我做了一個(gè)實(shí)驗(yàn),來(lái)觀察上述現(xiàn)象。( 詳細(xì)完整的代碼在 https://github.com/zhangfaen/effect-of-the-initial-configuration-of-weights )。
我們定義一個(gè)簡(jiǎn)單的多層神經(jīng)網(wǎng)絡(luò)。
其中nn.Linear(128, 128)這個(gè)參數(shù)矩陣,是隨機(jī)初始化的。我們制作一個(gè)分辨率圖片是128*128的圖片,圖片中我們故意放了一個(gè)水?。ā爸小保┳帧?/p>
圖1
然后,我們把這個(gè)圖片疊加到nn.Linear(128, 128)這個(gè)參數(shù)矩陣中。
我們把這個(gè)參數(shù)矩陣當(dāng)一個(gè)圖片看的話,會(huì)是這個(gè)樣子:
圖2
然后,我們用著名的手寫(xiě)字符識(shí)別數(shù)據(jù)集來(lái)訓(xùn)練這個(gè)模型。
訓(xùn)練完成后,我們?cè)儆脠D片的方式看一下nn.Linear(128, 128)這個(gè)參數(shù)矩陣,如圖3。
圖3
可以看到,模型從最初的8.92%準(zhǔn)確率(就是隨機(jī)猜的準(zhǔn)確率),到95.77%的準(zhǔn)確率,nn.Linear(128, 128)這個(gè)參數(shù)矩陣居然沒(méi)有什么大的變化(看 圖2 和 圖3)。
下面的圖中第1行,10個(gè)“中”字,表示訓(xùn)練過(guò)程10個(gè)epoch中,這個(gè)nn.Linear(128, 128)這個(gè)參數(shù)矩陣的整體數(shù)值如何在變(其實(shí)沒(méi)怎么變)
所以,一個(gè)深度神經(jīng)網(wǎng)絡(luò)模型,初始參數(shù)配置不管怎樣,從“白癡”訓(xùn)練到“專家”水平,其實(shí)其內(nèi)部參數(shù)并沒(méi)有太大的變化。是不是有點(diǎn) “朽木皆可雕也” 或者 “開(kāi)局一把牌,怎么都能打”的意思?
再感受一下論文中的圖和一個(gè)論述,啟發(fā)且有趣
本文轉(zhuǎn)載自??后向傳播??,作者: 張發(fā)恩
