iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 15
0

今日目標

  • 了解 Autoencoder 概念
  • 了解 Autoencoder 用於無監督訓練

Autoencoder

Autoencoder 是一種無監督 (unsupervised) 的訓練方式,也就是說在訓練的時候是不需要給定目標的,那它是怎麼做到的呢?

閱讀了一些材料以後,找到 Hinton 的開山 paper) .它的概念可以從以下的圖來說明.可以看到有兩個部分 Encoder 以及 Decoder,而中間有一個重疊的 code layer.模型輸入是從 Encoder 輸入,輸出則是 Decoder 輸出.而 Encoder 中有許多的 hidden layer (隱層),其中節點數量是遞減的;相對應的 Decoder 則是遞增的.

在這樣對稱的網路結構中,給定的訓練條件是輸出越接近輸入越好,

圖片來自 Hinton 的 paper Reducing the Dimensionality of Data with Neural Networks

訓練的過程用 backpropagation 即可,而當訓練完成以後,我們把 Decoder 移除,只剩下 Encoder (包含 Code layer).

無監督學習

很有趣的如果只剩下 Encoder,可以看到它有很類似 PCA 的 Dimension Reduction 效果.因為 2000 維輸入變成了 30 維.不同的是它是一個非線性的降維方法取出了原始輸入的必要特徵.

來看看取出的特徵和 PCA 的做對照:

第一列為原始圖片

第二列為 Autoencoder 降維結果

第三列為 PCA 降維結果

圖片來自 Hinton 的 paper Reducing the Dimensionality of Data with Neural Networks

可以看到 Autoencoder 的效果比 PCA 來得好.

那如果用 MNIST 的資料投影到二維的視覺化圖形來看,左邊是 PCA,右邊是 Autoencoder,也可以看到它比較成功的輸入依據特徵不同做分類.但這段過程都是無監督的情下完成的,也可以說是

它自動地學會了如何區分每個手寫數字


圖片來自 Hinton 的 paper Reducing the Dimensionality of Data with Neural Networks

而在實用的時候,網路的最後面會接一個 softmax 之類的分類器,因為理論上已經找出了輸入的特徵,這時候加上分類器,才是人類真正告訴它你分類出的結果是什麼.

心得

今天閱讀的內容是關於 Autoencoder 的理論,這樣的方法感覺起來很強大,因為它可以自己對輸入做分類,而不需要外界介入.但這樣的作法 (encoder + softmax) 跟 (cnn + softmax) 能做到的事情非常像,那究竟有什麼不一樣的效果呢?還是有效率上的差異,這是我還在找資料學習的困惑之處.

學習資源連結


上一篇
Tensorflow Day14 Fine Tuning
下一篇
Tensorflow Day16 Autoencoder 實作
系列文
tensorflow 學習筆記 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言