您現在的位置是:首頁 > 武術

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

  • 由 新智元 發表于 武術
  • 2022-04-13
簡介方差正則給定一個輸入y和一個固定的解碼器D,研究人員使用FISTA演算法(近似梯度方法ISTA的快速版)進行推理來找到一個稀疏編碼z*,得到的z*可以使用D中的元素最好地重建輸入y

正則化項有什麼用

編輯:LRS

【新智元導讀】最近LeCun又發新作,依然是崩潰問題,依然是自監督,這次提出了一個新的正則化方法:方差正則,可以有效防止編碼崩潰,還能提升重構質量,一張顯示卡就能訓!

神經網路中有一類學習特別受研究人員的青睞,那就是自監督學習(self-supervised learning SSL)。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

只要給足夠多的資料,自監督學習能夠在完全不需要人工標註的情況下,學習到文字、影象的表徵,並且資料量越大、模型引數量越大,效果越好。

自監督學習的工作原理也很簡單:例如應用場景是圖片的話,我們可以把SSL模型的輸入和輸出都設定為同一張圖片,中間加入一個隱藏層,然後開訓!

一個最簡單的自編碼器AutoEncoder就弄好了。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

通常來說隱藏層的神經元數量是要小於輸入圖片的,這樣訓練後,自編碼器的中間隱藏層就可以作為圖片的表徵向量,因為訓練過程的目標就是僅用該隱藏向量即可還原圖片。

自編碼器最初提出是基於降維的思想,但是當隱層節點比輸入節點多時,自編碼器就會失去自動學習樣本特徵的能力,此時就需要對隱藏層節點進行一定的約束。

稀疏自編碼器應運而生,約束的出發點來自於:高維而稀疏的表達是好的。所以只需要對隱藏層節點進行稀疏性約束即可。

常用的稀疏編碼方式當然是L1正則。

最近LeCun提出了一種新的稀疏編碼協議可以防止編碼的崩潰,而不需要對解碼器進行正則化處理。新的編碼協議直接對編碼進行正則化,使每個潛碼成分(latent code component)在一組給定的輸入的稀疏表示上具有大於固定閾值的方差。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

論文:https://arxiv。org/abs/2112。09214

開原始碼:https://github。com/kevtimova/deep-sparse

此外,研究人員還探索瞭如何利用多層解碼器來有效訓練稀疏編碼系統的方法,可以比線性字典(linear dictionary)模擬更復雜的關係。

在對MNIST和自然影象塊(natural image patch)的實驗中,實驗結果表明使用新方法學習到的解碼器線上性和多層情況下都有可解釋的特徵。

與使用線性字典的自動編碼器相比,使用方差正則化方法訓練的具有多層解碼器的稀疏自動編碼器可以產生更高質量的重建,也表明方差正則化方法得到的稀疏表徵在低資料量下的去噪和分類等下游任務中很有用。

論文中LeCun的作者單位也是從FAIR更名為Meta AI Research(MAIR)。

方差正則

給定一個輸入y和一個固定的解碼器D,研究人員使用FISTA演算法(近似梯度方法ISTA的快速版)進行推理來找到一個稀疏編碼z*,得到的z*可以使用D中的元素最好地重建輸入y。

解碼器D的權重是透過最小化輸入y和從z∗計算出的重構y之間的平均平方誤差(MSE)來訓練得到的。

編碼器E的權重則是透過預測FISTA的輸出z∗得到。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

為了防止潛碼的L1正則崩潰,研究人員加入了一個限制條件,確保每個潛碼方差大於預先設定的閾值。主要實現方法就是對能量函式加入一個正則化項,從而能夠促使所有潛碼分量的方差保持在預設的閾值以上。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

更具體地說,研究人員修改了推理過程中的目標函式來最小化能量。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

其中hinge項與L1懲罰項相抵消作為新的正則化項,新的方程可以鼓勵每個潛伏程式碼成分的方差保持在的閾值以上,從而可以防止潛碼的L1正則崩潰,進而無需對解碼器權重進行正則化。

重構項求和之後的梯度和潛碼z對應。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

對於線性解碼器來說,儘管hinge項不是光滑的凸函式,但梯度是一條線(line)意味著hinge項在區域性表現得像一個凸二次函式。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

訓練過程中,研究人員將編碼器E與解碼器D同時訓練來預測FISTA推理計算的稀疏編碼。

同時訓練的第一個原因是為了避免在解碼器訓練完成後使用批次統計來計算編碼。事實上,應該可以為不同的輸入獨立地計算編碼。

第二個原因是為了減少推理時間。編碼器和解碼器的訓練完成後,編碼器可以直接計算輸入的稀疏表示,這樣就不需要用FISTA進行推理,即編碼器可以進行amoritized推理。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

編碼器的正則項可以促使FISTA找到可以被編碼器學習到的編碼。在實驗設定中,編碼器的預測通常被視為常數(constants),用作FIST編碼的初始值。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

如果編碼器提供了一個好的初始值,則可以透過減少FISTA迭代的次數來減少推理時間。

實驗設定

實驗中的編碼器為一個LISTA(Learned ISTA)編碼器,它的設計是為了模仿ISTA推理的輸出,類似於一個遞迴神經網路。編碼器由兩個全連線層,一個偏置項,以及ReLU啟用函式組成。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

線性解碼器的引數簡單地說是一個線性變換,將編碼對映到輸入資料的重構維度上,線上性變換中沒有偏置項。

在非線性解碼器的情況下,使用一個大小為m的隱藏層和大小為l的輸入層(潛碼的size)的全連線網路,使用ReLU作為隱藏層的啟用函式。將輸入程式碼對映到隱含表徵的層中有一個偏置項,而將隱含表徵對映到輸出的層沒有偏置項。

在推理過程中,編碼z被限制為非負值。MNIST實驗中潛碼的維度為128,在ImageNet patch的實驗中則是256,當batch size為250時,對於VDL中每個潛成分(latent component)的方差的正則化項來說是足夠大的。

將FISTA的最大迭代次數K設定為200次,已經足以實現一個效果不錯的重構模型了。

在自編碼器訓練中,研究人員設定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)解碼器似乎可以學到方向、筆劃,甚至是是數字圖形中的一部分。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

隨著λ值的提高,生成的影象也越來越像一個完整的數字,完成了從筆劃到數字的演化。

在重構質量上,SDL和VDL模型的編碼器的曲線顯示了由未啟用編碼(值為0)成分的平均百分比衡量的稀疏程度和由平均PSNR衡量的重建質量之間的權衡。

LeCun新作,一張卡就能訓!方差正則,稀疏編碼器不再崩潰

在5個隨機種子上的測試集所衡量的重建質量和預期相符,較高的稀疏度會導致更差的重建效果,但用文中提出的方差正則化方法訓練出來的模型則會比SDL 模型在更高的稀疏程度下產生更好的重建效果,從而證實了方差正則化確實是有效的。

參考資料:

https://arxiv。org/abs/2112。09214

Top