自動編碼器 Autoencoder:理論篇

MAPLELEAF3659大约 4 分鐘人工智慧深度學習生成式模型自動編碼器理論

自動編碼器 Autoencoder:理論篇

沒有畫作的藝術展

請想像有一個藝術展覽,但完全沒有任何一幅畫作展出,只有一個畫家小明和一個超大牆壁,而牆壁包含X軸與Y軸,且布滿了很多小點(圖1)。

包含XY軸的超大牆壁
圖1 包含XY軸的超大牆壁

其中的特別之處在於,這面牆壁並不單純。上面的每一個小點代表一幅畫作,是由工作人員所整理的XY分布圖。而小明也非等閒之輩,他可以記下所有XY座標所代表的畫作,並現場繪製出來。每當客人要看畫作時,小明就在牆壁上選一個點,並且記下(X,Y)的資訊。依照(X,Y)資料,小明可以繪製出一個對應的畫作,如圖2。

展覽的運作方式
圖2 展覽的運作方式

自動編碼器

以上的故事是來自D. Foster的《Generative deep learning》這本書中的經典案例[1],而這個藝術展就是一個自動編碼器(Autoencoder),包含了:

  • 編碼器(Encoder):負責將圖像壓縮成低維的資料。(工作人員)
  • 表徵向量(Representation Vector):一個用於分析的低維資料,是一種隱含空間(Latent Space)。依照上面的範例來說,是一個表示畫作與(X,Y)之對應關係的2維資料。(超大牆壁)
  • 解碼器(Decoder):負責從低維的資料轉換回圖像。(小明的工作)

為何要將所有圖像的對應關係轉成低維的資料,而又轉回圖像呢?這是為了要找出圖像的特徵,而進行降維。也就是說,編碼器將畫作不必要的成分去除掉,只留下重要的特徵,這時分析畫作就變得十分容易,而這個動作稱為瓶頸(Bottleneck)。分析完畢後,機器就可以得知其中的規律,此時就可以透過解碼器將畫作重新畫出來。(圖3)

而因為這個結構可以自動地將圖像編碼,找到其中的特徵,並產生表徵向量,故得其名。從這個流程來看,我們可以發現自動編碼器是一個非監督式學習(Unsupervised learning)的機器學習模型(Model)。

自動編碼器結構圖
圖3 自動編碼器結構圖

用途

自動編碼器可用於以下任務:

  • 特徵辨識:利用瓶頸的特性,自動編碼器能夠高效率地抓到圖片的特徵,進而分辨圖像。
  • 圖片降噪:自動編碼器可提取圖像中的重要部分,以此把噪點去除。這同樣也是應用了瓶頸特性。
  • 生成資料:自動編碼器可嘗試生成與輸入的資料相似的新資料,如圖片、文字或音訊等。

損失函數(Loss Function)

自動編碼器的常用損失函數有以下兩種,用來評估原始圖像(Original Images)和重建圖像(Reconstructed Images)之間的差異:

  • 均方根誤差(Root Mean Squared Error, RMSE)

RMSE=t=1T(yt^yt)2T RMSE= \sqrt{ \frac{ \sum_{t=1}^T {(\hat{y_{t}}- y_{t}})^{2}}{T} }

  • 二元交叉熵(Binary Cross-entropy)

Hp(q)=1Ni=1Nyilog(p(yi))+(1yi)log(1p(yi)) H_{p} (q)=- \frac{1}{N} \sum_{i=1}^N y_{i} \bullet log(p(y_{i}))+(1-y_{i}) \bullet log(1-p(y_{i}))

其中二元交叉熵對於極端的情況會施加更重的懲罰,使表示向量(潛在空間)分布往中間集中,這將導致生成的圖像不太生動。但實際的運用方式須依照不同的任務作不同的選擇,而非一定得用兩者其中一種。[1:1]

延伸變體

  • 降噪自動編碼器(Denoise Autoencoder, DAE):以含有雜訊的圖集做訓練,並找出其中的隱含特徵,捨棄不重要的雜訊。[2]
  • 自動上色自動編碼器:以灰階圖像訓練,並要求輸出產生彩色圖片。這可使自動編碼器找出隱藏結構(利用瓶頸特性),並將原始灰階圖像上色。[2:1]
  • 變分自動編碼器(Variational Autoencoder, VAE):利用變分推斷,使其具備可解譯的潛在編碼來產生連續的潛在編碼映射。[2:2]
  • 稀疏自動編碼器(Sparse Autoencoder, SAE):以稀疏性限制來達成瓶頸的效果。

資料來源


  1. D. Foster, Generative deep learning: Teaching machines to paint, write, compose and play. Sebastopol, CA: O’Reilly Media, 2019. ↩︎ ↩︎

  2. Atienza R., 深度學習|使用Keras. 碁峰資訊股份有限公司, 2019. ↩︎ ↩︎ ↩︎