堆疊降噪自動編碼器 Stacked Denoising Auto Encoder(SDAE)

原文鏈接

自動編碼器(Auto-Encoder,AE)

自編碼器(autoencoder)是神經(jīng)網(wǎng)絡的一種,經(jīng)過訓練后能嘗試將輸入復制到輸出。自編碼器內(nèi)部有一個隱藏層 h,可以產(chǎn)生編碼(code)表示輸入。該網(wǎng)絡可以看作由兩部分組成:一個由函數(shù) h = f(x) 表示的編碼器和一個生成重構(gòu)的解碼器 r = g(h)。我們不應該將自編碼器設計成輸入到輸出完全相等。這通常需要向自編碼器強加一些約束,使它只能近似地復制,并只能復制與訓練數(shù)據(jù)相似的輸入。

自動編碼機由三層網(wǎng)絡組成,其中輸入層神經(jīng)元數(shù)量與輸出層神經(jīng)元數(shù)量相等,中間層神經(jīng)元數(shù)量少于輸入層和輸出層。搭建一個自動編碼器需要完成下面三樣工作:搭建編碼器,搭建解碼器,設定一個損失函數(shù),用以衡量由于壓縮而損失掉的信息(自編碼器是有損的)。編碼器和解碼器一般都是參數(shù)化的方程,并關(guān)于損失函數(shù)可導,典型情況是使用神經(jīng)網(wǎng)絡。編碼器和解碼器的參數(shù)可以通過最小化損失函數(shù)而優(yōu)化。

自動編碼機(Auto-encoder)是一個自監(jiān)督的算法,并不是一個無監(jiān)督算法,它不需要對訓練樣本進行標記,其標簽產(chǎn)生自輸入數(shù)據(jù)。因此自編碼器很容易對指定類的輸入訓練出一種特定的編碼器,而不需要完成任何新工作。自動編碼器是數(shù)據(jù)相關(guān)的,只能壓縮那些與訓練數(shù)據(jù)類似的數(shù)據(jù)。比如,使用人臉訓練出來的自動編碼器在壓縮別的圖片,比如樹木時性能很差,因為它學習到的特征是與人臉相關(guān)的。

自動編碼器運算過程:原始input(設為x)經(jīng)過加權(quán)(W、b)、映射(Sigmoid)之后得到y(tǒng),再對y反向加權(quán)映射回來成為z。通過反復迭代訓練兩組(W、b),目的就是使輸出信號與輸入信號盡量相似。訓練結(jié)束之后自動編碼器可以由兩部分組成:

1.輸入層和中間層,可以用這個網(wǎng)絡來對信號進行壓縮

2.中間層和輸出層,我們可以將壓縮的信號進行還原


降噪自動編碼器(Denoising Auto Encoder,DAE)

降噪自動編碼器就是在自動編碼器的基礎之上,為了防止過擬合問題而對輸入層的輸入數(shù)據(jù)加入噪音,使學習得到的編碼器具有魯棒性而改進的,是Bengio在08年論文:Extracting and composing robust features with denoising autoencoders提出的。 論文中關(guān)于降噪自動編碼器的示意圖如下,類似于dropout,其中x是原始的輸入數(shù)據(jù),降噪自動編碼器以一定概率(通常使用二項分布)把輸入層節(jié)點的值置為0,從而得到含有噪音的模型輸入x?。


這個破損的數(shù)據(jù)是很有用的,原因有二:? 1.通過與非破損數(shù)據(jù)訓練的對比,破損數(shù)據(jù)訓練出來的Weight噪聲比較小。降噪因此得名。原因不難理解,因為擦除的時候不小心把輸入噪聲給×掉了。? 2.破損數(shù)據(jù)一定程度上減輕了訓練數(shù)據(jù)與測試數(shù)據(jù)的代溝。由于數(shù)據(jù)的部分被×掉了,因而這破損數(shù)據(jù)一定程度上比較接近測試數(shù)據(jù)。訓練、測試肯定有同有異,當然我們要求同舍異。

堆疊降噪自動編碼器(Stacked Denoising Auto Encoder,SDAE)

SDAE的思想就是將多個DAE堆疊在一起形成一個深度的架構(gòu)。只有在訓練的時候才會對輸入進行腐蝕(加噪),訓練完成就不需要在進行腐蝕。結(jié)構(gòu)如下圖所示:

逐層貪婪訓練:每層自編碼層都單獨進行非監(jiān)督訓練,以最小化輸入(輸入為前一層的隱層輸出)與重構(gòu)結(jié)果之間的誤差為訓練目標。前K層訓練好了,就可以訓練K+1層,因為已經(jīng)前向傳播求出K層的輸出,再用K層的輸出當作K+1的輸入訓練K+1層。

一旦SDAE訓練完成, 其高層的特征就可以用做傳統(tǒng)的監(jiān)督算法的輸入。當然,也可以在最頂層添加一層logistic regression layer(softmax層),然后使用帶label的數(shù)據(jù)來進一步對網(wǎng)絡進行微調(diào)(fine-tuning),即用樣本進行有監(jiān)督訓練。


學習更多編程知識,請關(guān)注我的公眾號:

代碼的路

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容