自編碼器(英語:autoencoder)也稱自動編碼器,是一種人工神經網絡,用於學習無標籤數據的有效編碼;屬一種無監督學習。
此條目可參照英語維基百科相應條目來擴充。 |
自編碼(autoencoding)的目的是:學習對高維度數據做低維度「表示」(「表徵」或「編碼」);因此, 通常用於降維。最近,自編碼的概念廣泛地用於數據的生成模型。[1][2] 自2010年以來,一些先進的人工智能在深度學習網絡中採用了採用堆疊式稀疏自編碼。[3]
基本結構
自編碼器有兩個主要部分組成:編碼器用於將輸入編碼,而解碼器使用編碼重構輸入。
實現這個功能最簡單的方式就是重複原始信號。然而,自編碼器通常被迫近似地重構輸入信號,重構結果僅僅包括原信號中最相關的部分。
自編碼器的思想已經流行了幾十年,其首次應用可以追溯到20世紀80年代。[4][5][6]自編碼器最傳統的應用是降維或特徵學習,現在這個概念已經推廣到用於學習數據的生成模型。.[1][2]21世紀10年代的一些最強大的人工智能在深度神經網絡中採用了自編碼器。[3]
最簡單的自編碼器形式是一個前饋的、非循環的神經網絡,用一層或多層隱藏層連結輸入和輸出。輸出層節點數和輸入層一致。其目的是重構輸入(最小化輸入和輸出之間的差異),而不是在給定輸入的情況下預測目標值,所以自編碼器屬於無監督學習。
最簡單的自編碼器形式是一個前饋的、非循環的神經網絡,類似於多層感知器(MLP)中的單層感知器,用一層或多層隱藏層連結輸入和輸出。輸出層具有與輸入層相同數量的節點(神經元)。輸出層節點數和輸入層一致。其目的是重構輸入(最小化輸入和輸出之間的差異),而不是在給定輸入的情況下預測目標值, 所以自編碼器屬於無監督學習。
自編碼器由編碼器和解碼器組成,二者可以被分別定義為變換 和 ,使得:
在最簡單的情況下,給定一個隱藏層,自編碼器的編碼階段接受輸入並將其映射到:
像通常表示編碼、潛變量或潛在表示。是一個逐元素的激活函數(例如sigmoid函數或線性整流函數)。是權重矩陣,是偏置向量。權重和偏置通常隨機初始化,並在訓練期間通過反向傳播迭代更新。自編碼器的解碼階段映射到重構(與形狀一致):
其中解碼器部分的 可能與編碼器部分的無關。
自編碼器被訓練來最小化重建誤差(如平方誤差),通常被稱為 "損失":
其中通常在訓練集上平均。
如前所述,和其它前饋神經網絡一樣,自編碼器的訓練是通過誤差的反向傳播進行的。
當特徵空間的維度比輸入空間低時,特徵向量可以看作時輸入的壓縮表示,這就是不完備自動編碼(undercomplete autoencoders)的情況。如果隱藏層大於(過完備)或等於輸入層的數量,或者隱藏單元的容量足夠大,自編碼器就可能學會恆等函數而變得無用。然而,實驗結果表明過完備自編碼器(overcomplete autoencoders)仍然可能學習到有用的特徵。[7]在理想情況下,編碼的維度和模型容量可以根據待建模數據分佈的複雜性來設定,採用這種方式的一種途徑是正則化自編碼器。[4]
另見
參考
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.