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