為什麼Variational Autoencoder(VAE)要有編碼器(encoder)以及解碼器(decoder)?其實這和機器學習與深度學習它們如何去用feature representation做學習是一樣的概念,接下來會從機器學習與深度學習的觀點延伸到編碼器與解碼器。
Representation在機器學習的重要性
機器學習演算法是將feature作為input並產生一些output。 我們如何表示feature對我們學習演算法的performance產生巨大影響。Deep Learning原文書的一個經典範例:
Representationy在機器學習演算法裏頭形成了一個非常重要的組成。 傳統上,許多機器學習演算法採用hand-crafted feature - 這意味著designer明確選擇了feature及其representation(feature engineering)並將它們輸入到演算法。 對於像計算機視覺這樣的複雜問題,人們想出了像HOG這樣的創新representation。
“raw input”以及input到model的features之間是有所不同的。 例如,在面部識別中,面部圖像的像素將是原始輸入,而圖像的HOG特徵可以是ML model的實際輸入。
Feature Learning
後來有人想出可以使用一種演算法來學習feature representation,恰當來說稱為feature learning。 然而,深度學習使用neural network 來完成這項任務。以下是深度學習演算法的簡單簡介:
深度學習是一類機器學習算法:
使用多層非線性處理單元的串聯進行特徵提取和轉換。 每個連續層使用前一層的輸出作為輸入。
以監督(例如,classification)和/或無監督(例如,pattern analysis)方式學習。
學習與不同抽象層次相對應的多層次表示; 層次構成了概念的層次結構。
大多數現代深度學習model都基於artificial neural network,儘管它們也可以包含在deep generative model中逐層(layer-wise)組織的propositional formula或latent variable,例如Deep Belief Networks和Deep Boltzmann Machines中的節點。
neural network的前幾層從data中提取feature,或者換句話說,將raw input映射到有效的feature representation。 接下來的幾層(通常是完全連接的層)混合併匹配並組合這些feature以產生output。
Encoder Decoder Network
一些network architecture明確指出neural networks能用來學習有效的representation。 他們使用encoder network將raw input映射到feature representation,使用decoder network將此feature representation作為input,處理它來做出決定,並產生output。 這稱為encoder-decoder network。
理論上,encoder和decoder彼此可以獨立使用。 例如,encorder RNN可用於將傳入電子郵件的feature編碼為“feature vector”,然後將其用於預測電子郵件是否是垃圾郵件。 然而,neural encoder和decoder經常一起使用由於在各種實務上它可以產生良好的performance。
CNN
在CNN中,encoder-decoder network通常看起來像這樣(CNN encoder和CNN decoder):
這是執行圖像semantic segmentation的network。 network的左半部將原始圖像pixel映射到feature vector集合的大量representation。 network的右半部取用這些feature,產生output並將output映射回“ raw”格式(在本例中為圖像pixel)。
RNN
在RNN中,encoder-decoder network網絡通常看起來像這樣(RNN encoder和RNN decoder):
http://zake7749.github.io/2017/09/28/Sequence-to-Sequence-tutorial/
這是一個預測傳入電子郵件回應的network。 network的左半部將電子郵件encode為feature vector,網絡的右半部對feature vector進行decode以產生字預測。
Mixed Style
我們也可以將CNN encoder與RNN decoder混合搭配使用,反之亦然; 任何混搭組合可以適合地被使用在特定的任務。
例如圖像字幕的Text-guided Attention Model(T-ATT):
STV指的是Skip-Thought Vectors。 STV本身就是encoder-decoder架構。T-ATT的作者使用STV的encoder來編碼字幕。 此外,在上圖中,CNN指的是VGGNet或ResNet,作者用它們來編碼圖像。 LSTM指的是decoder由pipeline生成的中間representation(在圖中顯示為“Context Vector”)來預測形成input圖像字幕的一系列單字。 因此,他們一起使用CNN encoder,RNN encoder和LSTM decoder!
參考
https://www.quora.com/What-is-an-Encoder-Decoder-in-Deep-Learning
沒有留言:
張貼留言