GAN研究筆記(1)_自編碼器(Auto-Encoder)跟變分自編碼器(VAE)

 

自編碼器(Auto-Encoder)

  • 是一種神經網路又可稱其為重建(構)模型,本身並不算生成模型。
  • 使用自身的高階特徵編碼自己,壓縮成一個高階向量。是透過壓縮與還原圖像,來重建與輸入圖像相似圖像的模型。
  • 其網路架構分為三部分:輸入層、隱藏層、輸出層。輸入層與輸出層通常具有相同維度,而隱藏層的維度會被設為比輸入層更小,從而達成資訊壓縮。
  • 輸入層到隱藏層這部分稱為 編碼器(Encoder),負責將圖像壓縮為低維表示。
  • 隨後從隱藏層到輸出層的部分稱為 解碼器(Decoder),其目的是還原圖像,使其盡量接近輸入圖像。
  • 目標是使用稀疏的高階特徵重新組合來重構自己。
  • 其輸入、輸出是一致的。是一種數據壓縮算法,其中數據的壓縮和解壓縮函數是和數據本身相關、有損的,從樣本中自動學習。
  • 屬於無監督式學習。因為會和訓練數據息息相關,只能重構那些與壓縮訓練數據類似的數據。但本身要求輸入、輸出愈相近愈好這個目標,算監督式學習特性。

主要流程:Original Input -> Encoder -> Compressed -> Decoder -> Reconstructed input


Encoder(編碼器):把圖像給編碼成向量
Decoder(解碼器/生成器):透過接收一個向量來產生一張圖像。
損失函數(Loss Function):透過比較輸入圖像與重建圖像的像素差異(逐像素)來計算損失,
此損失稱為「重建誤差(Reconstruction Loss)」,可用以下公式表示:

此公式中的 Xi為網路的輸入,Yi  為輸出。
該損失函數透過計算這兩者之間的交叉熵,來求出需最小化的參數。

輸出值的決定公式:
此處的參數如下:
𝑊1,𝑏1:編碼器的權重與偏差
𝑊2,𝑏2:解碼器的權重與偏差

簡略地可記作:



自編碼器設計方式
Step1.搭建Encoder
Step2.搭建Decoder
Step3.定義損失函數->重構圖片越接近原本圖片越好

十分不靈活,會受限於已知的數據樣本,無法給定隨機圖片的隨機向量。

自編碼器應用
1.數據去噪音
2.降維度
3.生成圖片

自動編碼器透過圖像壓縮的過程,能夠抽取圖像的特徵資訊。假若輸入圖像中有雜訊或缺損,也可能無法完全復原原始圖像。
但正因這樣的特性,自動編碼器也常被應用於圖像異常偵測中。


VAE(變分自編碼器) Variational Autoencoder
  • 變分編碼器可以隨機產生隱含變數提高網路的泛化能力
  • 比普通的自動編碼器好,屬於生成模型。
  • 缺點就是生成的圖片會有點模糊
  • 目標是找出讓模型機率分布 p(x) 具有最大似然的參數。
  • VAE 是透過對觀測資料進行潛在變數 z 的建模與推論來實現的。

在實際情境中,我們只能觀測到資料 x,而潛在變數 z 無法直接取得。
所以,我們嘗試透過對 p(x) 建立估計公式如下:

這裡的 p(x∣z) 表示在給定潛在變數 z 的條件下產生資料 x 的機率。
這是一個邊際化積分公式,表示所有潛在變數可能導致的輸出加總起來的機率密度。

在傳統自動編碼器中,潛在變數是通過壓縮輸入資料獲得的定值。

但在 VAE 中,潛在變數會被視為一組服從機率分布的變數,並透過推論得到其機率分布(例如正態分布)。因此,VAE 並不是單純的重建模型,而是一種生成模型,可以從潛在空間中隨機抽樣來產生新的資料樣本,達成資料生成的效果。









留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header