Extracting and composing robust features with denosing autoencoders 論文
這是一篇發表於2008年初的論文。
文章主要講了利用 denosing autoencoder來學習 robust的中間特征。。進上步,說明,利用這個方法,可以初始化神經網絡的權值。。這就相當於一種非監督學習的方法來訓練神經網絡。
當我們在用神經網絡解決各種識別任務時,如果我們想要網絡的性能更好,就需要更深層或更wider的神經網絡來建模,Model出更復雜的分布。 網絡變深以後,如何訓練是一個很重要問題,如果訓練不好,深層網絡的性能真的不如淺層的神經網絡。。
在訓練深層網絡的解決方法的道路上,已有的方法:
1.隨機初始化權值, 不過這樣的效果很不好,網絡很容易 stuck in poor solutions
2. 利用stacking的受限的波爾茲曼機預訓練網絡,然後再fine-tune with UP-down。
3. 使用stacking的 自動編碼器初始化網絡權值,然後再進行fine-tune with gradient descent.
方法3中的基本的autoencoder的圖是這樣的:
現在的問題是:我們能不能改進一下它呢??讓它學習到的中間特征更具有代表性?(即可以學習到對輸入不變的中間特征)。
下圖為文中提出的降噪編碼器。。它的主要思想為:給定一個輸入 X,首先進行一定的destroy,得到corrupted的 -X,然後利用它學習到中間特征來reconstruct 輸入。
改進的 denosing autoencoder
然後,我們就可以利用它逐層來訓練網絡的初始權值了。
具體過程
1.訓練第一層的權值:給定輸入X,加噪得到-X, 然後利用這個autoencoder得到了第一層的權值;
2.訓練第二層的權值: 固定第一層的權值,然後給定輸入X得到了第一層的輸出Y,然後把這個Y當作為降噪編碼器的原始的輸入,然後在Y的基礎上加噪,得到了-Y,然後利用autoencoder得到了第二層的初始權值;
3.訓練第三層的權值:固定前兩層的權值,然後給定輸入X,得到了第二層的輸出Z,然後把這個Z當作為降噪編碼器的原始的輸入,在Z的基本加噪,………………,得到了第三層的初始權值;
等等……
這變樣,把整個網絡的初始權值訓練完畢了。
有一個註意的地方就是:我們在訓練後面幾層的權值時,我們的輸入X是不加噪聲的,我們只是把前一層的輸出作為降噪編碼器的原始輸入,在它的基礎上加上噪聲的;這個別錯了;
文中給出了從不同的角度來說明了降噪編碼器。
包括:什麽流形啊、什麽信息論、生成模型等等相關的東西,我看了一遍,也沒有怎麽看明白,需要很深的數學知識、統計知識啊,所以沒有深入去看了;
文中通過試驗,證明了它的有效性;
另外,文中的參考文獻很有價值的;
參考:Extracting and composing robust features with denosing autoencoders 論文;
Extracting and composing robust features with denosing autoencoders 的對應的PPT
Extracting and composing robust features with denosing autoencoders 論文