Auto-encoder

fcmaple
Aug 3, 2021

--

輸入經過兩次轉換後還原成原本的輸入。

常見用法:

把輸出轉成vector,丟進encoder,輸出另一個向量,是一個比較簡短的向量,再拿這個向量去做你像做的任務。

就是auto-encoder的所做的downstream任務,

那麼圖片是如何變小維度又還原呢?

因為並不是所有矩陣都是圖片,圖片的變化是有限的。

隨便sample一個矩陣,通常出來都不會是一般會看到的情況,雖然看起來矩陣很大,但是實際上圖片的變化是有限的。其他類型可能根本就不是訓練時所會看到的樣子。

De-noising Auto-encoder

把原本要輸入進去的圖片加一點雜訊,一樣通過encoder,之後再進行還原,但我們要還原的是沒有加雜訊的圖片。

Feature Disentanglement

Disentangle: 把一堆原本糾纏在一起的東西解開。

把輸入變成簡短的向量,可能裡面代表的意思是這個輸入的精華。

在train一個auto-encoder的時候,同時有辦法知道這個representation的哪些維度代表哪些東西,這樣的技術就是feature disentangle

Discrete Latent Representation

目前為止我們都假設一個中間那個embedding是一個向量,那它可以是別的東西?

假如設定為binary,可以讓我們在解釋encoder輸出的時候更為容易。

Vector Quantized Variational Auto-encoder (VQVAE)

輸入一張圖片,Encoder 輸出一張向量,此向量是連續的,接下來有個Code Book(一系列的vector),Code book裡的向量也是Learn出來的。

將Encoder的輸出跟這些vector去算相似度(類似於self-attention),看哪個在CodeBook裡面的相似度最大,就拿出來用。

Anomoly Detection

假設有一堆資料, 來一筆新資料,比較跟我們之前在訓練資料所看的相不相似。

ex: 信用卡交易紀錄檢測是否有造假。

他不是一個一般的二元分類問題,因為檢測是否有問題,我們基本上都是擁有正確的資料,只有少數異常的資料,甚至有異常的資料混在正確的裡面。

這種稱為one class 的分類問題。但是通常要分類的話要有兩個類別,一個類別如何分類?

ex:要辨識是否為人臉:

將圖片放進auto encoder再還原回來,如果輸出的差異很小,代表是訓練時有看過的照片->Normal,如果有異常,model沒有遇過,輸出的差異會很大,代表異常。

#以上參考李宏毅老師講義自己做筆記使用

--

--