什么是自編碼器?對機器學習有什么影響?
機器學習是研究怎樣使用計算機模擬或實現(xiàn)人類學習活動的科學,是人工智能中最具智能特征,最前沿的研究領域之一。自20世紀80年代以來,機器學習作為實現(xiàn)人工智能的途徑,在人工智能界引起了廣泛的興趣,特別是近十幾年來,機器學習領域的研究工作發(fā)展很快,它已成為人工智能的重要課題之一。機器學習不僅在基于知識的系統(tǒng)中得到應用,而且在自然語言理解、非單調(diào)推理、機器視覺、模式識別等許多領域也得到了廣泛應用。一個系統(tǒng)是否具有學習能力已成為是否具有“智能”的一個標志。機器學習的研究主要分為兩類研究方向:第一類是傳統(tǒng)機器學習的研究,該類研究主要是研究學習機制,注重探索模擬人的學習機制;第二類是大數(shù)據(jù)環(huán)境下機器學習的研究,該類研究主要是研究如何有效利用信息,注重從巨量數(shù)據(jù)中獲取隱藏的、有效的、可理解的知識。
自編碼器(autoencoder,AE)是一類在半監(jiān)督學習和非監(jiān)督學習中使用的人工神經(jīng)網(wǎng)絡(Artificial Neural Networks,ANNs),其功能是通過將輸入信息作為學習目標,對輸入信息進行表征學習(representation learning)。
自編碼器包含編碼器(encoder)和解碼器(decoder)兩部分。按學習范式,自編碼器可以被分為收縮自編碼器(contractive autoencoder)、正則自編碼器(regularized autoencoder)和變分自編碼器(Variational AutoEncoder,VAE),其中前兩者是判別模型、后者是生成模型。按構筑類型,自編碼器可以是前饋結構或遞歸結構的神經(jīng)網(wǎng)絡。
自編碼器具有一般意義上表征學習算法的功能,被應用于降維(dimensionality reduction)和異常值檢測(anomaly detection)。包含卷積層構筑的自編碼器可被應用于計算機視覺問題,包括圖像降噪(image denoising)[3]、神經(jīng)風格遷移(neural style transfer)等。
自編碼器在其研究早期是為解決表征學習中的“編碼器問題(encoder problem)”,即基于神經(jīng)網(wǎng)絡的降維問題而提出的聯(lián)結主義模型的學習算法。1985年,David H.Ackley、Geoffrey E.Hinton和Terrence J.Sejnowski在玻爾茲曼機上對自編碼器算法進行了首次嘗試,并通過模型權重對其表征學習能力進行了討論。在1986年反向傳播算法(Back-Propagation,BP)被正式提出后,自編碼器算法作為BP的實現(xiàn)之一,即“自監(jiān)督的反向傳播(Self-supervised BP)”得到了研究,并在1987年被Jeffrey L.Elman和David Zipser用于語音數(shù)據(jù)的表征學習試驗。自編碼器作為一類神經(jīng)網(wǎng)絡結構(包含編碼器和解碼器兩部分)的正式提出,來自1987年Yann LeCun發(fā)表的研究[5]。LeCun(1987)使用多層感知器(Multi-Layer Perceptron,MLP)構建了包含編碼器和解碼器的神經(jīng)網(wǎng)絡,并將其用于數(shù)據(jù)降噪。此外,在同一時期,Bourlard and Kamp(1988)使用MLP自編碼器對數(shù)據(jù)降維進行的研究也得到了關注。1994年,Hinton和Richard S.Zemel通過提出“最小描述長度原理(Minimum Description Length principle,MDL)”構建了第一個基于自編碼器的生成模型。
AutoEncoder的基本思想是利用神經(jīng)網(wǎng)絡來做無監(jiān)督學習,就是把樣本的輸入同時作為神經(jīng)網(wǎng)絡的輸入和輸出。本質(zhì)上是希望學習到輸入樣本的表示(encoding)。早期AutoEncoder的研究主要是數(shù)據(jù)過于稀疏、數(shù)據(jù)高維導致計算復雜度高。比較早用神經(jīng)網(wǎng)絡做AutoEncoder的可以追溯到80年代的BPNN和MLP以及當時Hinton推崇的RBM。后來到了2000年以后還堅持在做的只剩下Hinton的RBM了。從2000年以后,隨著神經(jīng)網(wǎng)絡的快速興起,AutoEncoder也得到快速發(fā)展,基本上有幾條線:稀疏AutoEncoder、噪音容忍AutoEncoder、卷積AutoEncoder、變分AutoEncoder。最新的進展是結合對抗思想的對抗AutoEncoder。
稀疏AutoEncoder在學習輸入樣本表示的時候可以學習到相對比較稀疏的表示結果,這在Overcomplete AutoEncoder(就是學習得到高維表示)方法中尤為重要。代表性人物包括斯坦福大學的Andrew Ng和蒙特利爾的Yoshua Bengio教授。具體方法就是在原來的損失函數(shù)中加一個控制稀疏化的正則化項,通過控制優(yōu)化過程來實現(xiàn)。
Denoising AutoEncoder的核心思想就是提高Encoder的魯棒性,本質(zhì)上就是避免可能的overfitting。一個辦法是在輸入中加入隨機噪音(比如隨機置0一些輸入,或者隨機把部分輸入變?yōu)閙arked),這些思想后來在BERT等模型中也有廣泛使用;另一個辦法就是結合正則化的思想,比如在目標函數(shù)中加上eEncoder的Jacobian范數(shù)。Jacobian范數(shù)可以讓學習到的特征表示更具有差異性。
著名研究者Jurgen Schmidhuber提出了基于卷積網(wǎng)絡的AutoEncoder以及后來的LSTM AutoEncoder。Max Welling基于變分思想提出變分AutoEncoder方法VAE,這也是一個里程碑式的研究成果。后面很多研究者在這個工作上進行了擴展,包括info-VAE、beta-VAE和factorVAE等。最近還有人借鑒Ian Goodfellow等人提出的對抗建模思想提出Adversarial AutoEncoder,也取得了很好的效果。這和之前的噪音容忍的AE學習也有一定呼應。除了上面的思想,就是可以把上面的各種方法stacking起來。