自動編碼器,也就是自編碼神經網絡,是神經網絡的一種
採用無監督學習的方式對高維數據進行高效的特徵提取和特徵表示,在學術界和工業界都大放異彩
我們之前看的都是監督學習
但是生活中的大量的數據都是沒有label的
現在來看非監督學習
機器學習領域的三大方向
強化學習(櫻桃)、監督學習(蛋糕的外皮)、非監督學習
爲什麼需要非監督學習?
降維
利用大量的無標籤數據
https://projector.tensorflow.org/
Auto-Encoders
監督學習是有一個明確的目標的,那麼非監督學習也是有目標的
目標就是重建它自己
與CNN不同的在於,CNN的輸出層是分類,如果是十分類輸出層就有10個節點。但無監督網絡就無法分類,其目標就是重建自己,所以輸出層的節點數=輸入層的節點數
自編碼神經網絡就是一個特殊的全連接層
neck可以升維也可以降維,大部分是降維
怎樣訓練
還是原來那些方法
自編碼神經網絡還是神經網絡,所以training還是看loss function
PCA vs AutoEncoder
PCA,principal components analysis,主成分分析
在auto-encoder之前,降維都是用PCA降維
但是PCA具有線性特性,大部分的數學形態都是非線性的,線性變化很可能能操作的空間就非常少
可以看到autoencoder的效果還是好於PCA的
AutoEncoder的一些變種
Denoising AutoEncoders
只是在像素級別的重建,很有可能只是記住一些特徵。爲了防止這樣,我們給加一些擾動,加一些噪聲
如果加了噪聲之後還能重建出來,就說明能夠從數據中發現真正的規律了
Dropout AutoEncoders
在訓練的時候,有目的得讓一些權值斷開(把weight暫時設置爲0,但以後反向傳播還要用)
這樣給下一層的信息就是有限的了,就迫使系統更加robust,不會依賴所有神經元的輸入
可以看到,dropout很小的時候accurancy並不是最小的,因爲overfitting了,把一些噪聲的形態也記住了
Adversarial Autoencoders
對抗自編碼器,AAE
將GAN的技術應用到了autoencoder上面
AAE是根據VAE發展來的
encoder把真實分佈x映射成隱層的z, decoder 再將z解碼還原成x。
AAE的特點就在於在隱層hidden layer中引入了對抗的思想來優化隱層的z