AutoEncoder (一)-認識與理解
構想 :
在處理異常偵測時。可以像PCA一樣,可以從input擷取重要特徵,代表全體。當新的測試資料進來,和這樣的代表特徵比對,就可以判斷是不是異常。
因此設計了一個非監督式學習的神經網路,其中中間的Internal Representation可以看做是對輸入的資料做壓縮(維度限制)或是加入雜訊到輸入資料
Internal Representation又稱為Bottleneck
AutoEncoder四大類型
AutoEncoder(AE)
AutoEncoder 是多層神經網絡的一種非監督式學習算法,稱為自動編碼器,它可以幫助資料分類、視覺化、儲存。
其架構中可細分為 Encoder(編碼器)和 Decoder(解碼器)兩部分,它們分別做壓縮與解壓縮的動作,讓輸出值和輸入值表示相同意義
透過重建輸入的神經網路訓練過程,隱藏層的向量具有降維的作用。特點是編碼器會建立一個隱藏層(或多個隱藏層)包含了輸入資訊的低維向量。然後有一個解碼器,會通過隱藏層的低維向量重建輸入資料。通過神經網路的訓練最後AE會在隱藏層中得到一個代表輸入資料的低維向量。
Variational Autoencoder(VAE)
VAE 是 AutoEncoder 的進階版,結構上也是由 Encoder 和 Decoder 所構成
可以看出與 AutoEncoder 不同之處在於 VAE 在編碼過程增加了一些限制,迫使生成的向量遵從高斯分佈。由於高斯分佈可以通過其mean 和 standard deviation 進行參數化,因此 VAE 理論上是可以讓你控制要生成的圖片。
VAE 的內部做法:
1. 先輸出兩個向量:mean
和 standard deviation
2. 用normal distribution
產生第三個向量
3. 把第二個向量做 exponential,之後跟第三個向量做相乘後,把它跟第一個向量相加,即成為中間層的隱含向量
總之,VAE 可以解讀隱含向量中的每一個維度(dimension)分別代表什麼意思,也因此理想上可以調整想要生成的圖片。
Denoising AE(DAE)
Denoising AE 是一種學習對圖片去噪(denoise)的神經網絡,它可用於從類似圖像中提取特徵到訓練集。實際做法是在 input 加入隨機 noise
,然後使它回復到原始無噪聲的資料,使模型學會去噪的能力。
Sparse AE(SAE)
Sparse AE 的作法是在 AutoEncoder 基礎上加上 L1 正則化
,限制每次得到的 representation
盡量稀疏,迫使自動編碼器將每個輸入表示為少量節點的組合,只有一小部分節點具有非零值,稱為活動節點。
為什麼要盡量稀疏呢?事實上在特徵稀疏的過程裡可以過濾掉無用的訊息,每個神經元都會訓練成辨識某些特定輸入的專家,因此 Sparse AE 可以給出比原始資料更好的特徵描述。
訓練方式
無監督的分類任務
自動編碼器AutoEncoder中將輸入input輸入一個編碼器encoder,得到一個中間的向量表示code,這個code也就是輸入的一個表示
為了取得中間的code輸入表示,我們將code輸入到解碼器decoder中,得到一個輸出,如果這個輸出與輸入input很像的話,那我們就可以相信這個中間向量code跟輸入是存在某種關係的,也就是存在某種映射。
那麼這個中間向量code就可以作為輸入的一個特徵向量。我們通過調整encoder和decoder的參數,使得輸入和最後的輸出之間的誤差最小,這時候code就是輸入input的一個表示。
將自動編碼器應用到有監督的分類任務:
不管是「Encoder」還是「Decoder」他們的權重是可以調整的,所以如果你將Encoder+Decoder的結構建立好並搭配Input當作Output的目標答案,它在Training的過程,Autoencoder會試著找出最好的權重來使得資訊可以盡量完整還原回去,所以Autoencoder可以自行找出了Encoder和Decoder。
Encoder的效果等同於做Dimension Reduction,Encoder轉換原本數據到一個新的空間,這個空間可以比原本Features描述的空間更能精簡的描述這群數據,而中間這層Layer的數值Embedding Code就是新空間裡頭的座標,有些時候我們會用這個新空間來判斷每筆Data之間彼此的接近程度。