弱弱開發女子 / 機器學習虛心學系列

重新認識 AutoEncoder,以及訓練 Stacked AutoEncoder 的小技巧

Hands-on ML with Sklearn and Tensorflow Chapter 15: Autoencoders / 1

--

前份工作曾經利用 AutoEncoder(以下簡稱 AE)做異常偵測。那件專案的經驗是,AE的準確率可以達到超過八成,相較於 KNN 的五成以及 SVM 的七成來說,表現最好。(不過客戶對八成這樣的數字當然是不會滿意的,如何將異常偵測的準確率提高到99.99%?那就是後續的故事了。)

離職後成天在家,老公怕我無聊所以會一直找我閒聊。有天聊到 AE 這個玩意兒(沒錯我們的閒聊就是這種),他就問一句:「AE 是什麼?」

我說:「AE 可以用在異常偵測啊。它就像 PCA 一樣,可以從 input 擷取重要特徵,代表全體。當新的測試資料進來,和這樣的代表特徵比對,就可以判斷是不是異常。」

老公:「那它的原理是什麼呢?」。

奶奶我居然解釋不出來。
覺得實在是太丟臉了,用過居然不會解釋。於是我又把內容有提到 AE 的參考書重新K一次,決定痛改前非,好好再認識 AE 一番。

以下內容皆出自於<Hands-On Machine Learning with Scikit-Learn and TensorFlow by Aurélien Géron>這本書,我只是讀過,然後把其中的精華摘要出來而已。

如求學習成效更完美,建議購買原文書籍

AutoEncoder 做一件事,就是把輸入資料,複製一份到輸出。聽起來就是複製而已,好像很簡單。不過,典型的 AE 還會有所謂的內部表示層 (Internal Representation),透過對內部表示層的一些維度限制、或加入雜訊到輸入資料,讓整個AE的結構更加複雜,整個流程就不是只有「複製輸入到輸出」,這樣單純而已了。

AE 的結構跟 MLP (Multilayer perceptron) 可說是如出一徹,但是有幾點限制:

  • 輸出的數量(神經元)要跟輸入一樣。
  • 輸出的數量(神經元)要跟輸入一樣。
  • 輸出的數量(神經元)要跟輸入一樣。

(也就這一點為了佔篇幅所以說三次 ^O^)

--

--