深度學習與圖網(wǎng)絡 編輯:LRS 本文來自新智元微信公眾號,原文鏈接https://mp.weixin.qq.com/s/StJED9x8YhEWAJKvDHhqFw 【導讀】最近LeCun又發(fā)新作,依然是崩潰問題,依然是自監(jiān)督,這次提出了一個新的正則化方法:方差正則,可以有效防止編碼崩潰,還能提升重構質量,一張顯卡就能訓!神經(jīng)網(wǎng)絡中有一類學習特別受研究人員的青睞,那就是自監(jiān)督學習(self-supervised learning SSL)。 只要給足夠多的數(shù)據(jù),自監(jiān)督學習能夠在完全不需要人工標注的情況下,學習到文本、圖像的表征,并且數(shù)據(jù)量越大、模型參數(shù)量越大,效果越好。 自監(jiān)督學習的工作原理也很簡單:例如應用場景是圖片的話,我們可以把SSL模型的輸入和輸出都設置為同一張圖片,中間加入一個隱藏層,然后開訓! 一個最簡單的自編碼器AutoEncoder就弄好了。 通常來說隱藏層的神經(jīng)元數(shù)量是要小于輸入圖片的,這樣訓練后,自編碼器的中間隱藏層就可以作為圖片的表征向量,因為訓練過程的目標就是僅用該隱藏向量即可還原圖片。 自編碼器最初提出是基于降維的思想,但是當隱層節(jié)點比輸入節(jié)點多時,自編碼器就會失去自動學習樣本特征的能力,此時就需要對隱藏層節(jié)點進行一定的約束。 稀疏自編碼器應運而生,約束的出發(fā)點來自于:高維而稀疏的表達是好的。所以只需要對隱藏層節(jié)點進行稀疏性約束即可。 常用的稀疏編碼方式當然是L1正則。 最近LeCun提出了一種新的稀疏編碼協(xié)議可以防止編碼的崩潰,而不需要對解碼器進行正則化處理。新的編碼協(xié)議直接對編碼進行正則化,使每個潛碼成分(latent code component)在一組給定的輸入的稀疏表示上具有大于固定閾值的方差。 論文:https:///abs/2112.09214 開源代碼:https://github.com/kevtimova/deep-sparse 此外,研究人員還探索了如何利用多層解碼器來有效訓練稀疏編碼系統(tǒng)的方法,可以比線性字典(linear dictionary)模擬更復雜的關系。 在對MNIST和自然圖像塊(natural image patch)的實驗中,實驗結果表明使用新方法學習到的解碼器在線性和多層情況下都有可解釋的特征。 與使用線性字典的自動編碼器相比,使用方差正則化方法訓練的具有多層解碼器的稀疏自動編碼器可以產(chǎn)生更高質量的重建,也表明方差正則化方法得到的稀疏表征在低數(shù)據(jù)量下的去噪和分類等下游任務中很有用。 論文中LeCun的作者單位也是從FAIR更名為Meta AI Research(MAIR)。
方差正則 給定一個輸入y和一個固定的解碼器D,研究人員使用FISTA算法(近似梯度方法ISTA的快速版)進行推理來找到一個稀疏編碼z*,得到的z*可以使用D中的元素最好地重建輸入y。 解碼器D的權重是通過最小化輸入y和從z?計算出的重構y之間的平均平方誤差(MSE)來訓練得到的。 編碼器E的權重則是通過預測FISTA的輸出z?得到。 為了防止?jié)摯a的L1正則崩潰,研究人員加入了一個限制條件,確保每個潛碼方差大于預先設定的閾值。主要實現(xiàn)方法就是對能量函數(shù)加入一個正則化項,從而能夠促使所有潛碼分量的方差保持在預設的閾值以上。 更具體地說,研究人員修改了推理過程中的目標函數(shù)來最小化能量。 其中hinge項與L1懲罰項相抵消作為新的正則化項,新的方程可以鼓勵每個潛伏代碼成分的方差保持在的閾值以上,從而可以防止?jié)摯a的L1正則崩潰,進而無需對解碼器權重進行正則化。 重構項求和之后的梯度和潛碼z對應。 對于線性解碼器來說,盡管hinge項不是光滑的凸函數(shù),但梯度是一條線(line)意味著hinge項在局部表現(xiàn)得像一個凸二次函數(shù)。 訓練過程中,研究人員將編碼器E與解碼器D同時訓練來預測FISTA推理計算的稀疏編碼。 同時訓練的第一個原因是為了避免在解碼器訓練完成后使用批量統(tǒng)計來計算編碼。事實上,應該可以為不同的輸入獨立地計算編碼。 第二個原因是為了減少推理時間。編碼器和解碼器的訓練完成后,編碼器可以直接計算輸入的稀疏表示,這樣就不需要用FISTA進行推理,即編碼器可以進行amoritized推理。 編碼器的正則項可以促使FISTA找到可以被編碼器學習到的編碼。在實驗設置中,編碼器的預測通常被視為常數(shù)(constants),用作FIST編碼的初始值。 如果編碼器提供了一個好的初始值,則可以通過減少FISTA迭代的次數(shù)來減少推理時間。
實驗設置 實驗中的編碼器為一個LISTA(Learned ISTA)編碼器,它的設計是為了模仿ISTA推理的輸出,類似于一個遞歸神經(jīng)網(wǎng)絡。編碼器由兩個全連接層,一個偏置項,以及ReLU激活函數(shù)組成。 線性解碼器的參數(shù)簡單地說是一個線性變換,將編碼映射到輸入數(shù)據(jù)的重構維度上,在線性變換中沒有偏置項。 在非線性解碼器的情況下,使用一個大小為m的隱藏層和大小為l的輸入層(潛碼的size)的全連接網(wǎng)絡,使用ReLU作為隱藏層的激活函數(shù)。將輸入代碼映射到隱含表征的層中有一個偏置項,而將隱含表征映射到輸出的層沒有偏置項。 在推理過程中,編碼z被限制為非負值。MNIST實驗中潛碼的維度為128,在ImageNet patch的實驗中則是256,當batch size為250時,對于VDL中每個潛成分(latent component)的方差的正則化項來說是足夠大的。 將FISTA的最大迭代次數(shù)K設置為200次,已經(jīng)足以實現(xiàn)一個效果不錯的重構模型了。 在自編碼器訓練中,研究人員設置MNIST的epoch為200,image patch則為100。在SDL和SDL-NL實驗中,將解碼器的全連接層W、W1和W2中的列的L2正則固定為1,并保存輸出平均能量最低的自編碼器。 研究人員還對SDL-NL和VDL-NL模型中的偏置項b1以及LISTA編碼器中的偏置項b增加了權重衰減,以防止其正則化項無限膨脹。 模型的訓練只需要一塊NVIDIA RTX 8000 GPU卡,并且所有實驗的運行時間都在24小時以內。 實驗結果可以看到,對于兩個SDL和兩個VDL的字典元素(dictionary elements)來說,在稀疏度λ較低的情況下(0.001, 0.005)解碼器似乎可以學到方向、筆劃,甚至是是數(shù)字圖形中的一部分。 隨著λ值的提高,生成的圖像也越來越像一個完整的數(shù)字,完成了從筆劃到數(shù)字的演化。 在重構質量上,SDL和VDL模型的編碼器的曲線顯示了由未激活編碼(值為0)成分的平均百分比衡量的稀疏程度和由平均PSNR衡量的重建質量之間的權衡。 在5個隨機種子上的測試集所衡量的重建質量和預期相符,較高的稀疏度會導致更差的重建效果,但用文中提出的方差正則化方法訓練出來的模型則會比SDL 模型在更高的稀疏程度下產(chǎn)生更好的重建效果,從而證實了方差正則化確實是有效的。 參考資料: https:///abs/2112.09214 |
|