自編碼器介紹(Autoencoder)

本文語音介紹:Apple podcast連結Sound on連結

為何要使用自編碼器?

自編碼器是一種自監督式學習(self-supervised learning)的方法,不需要像監督式學習(supervised learning)定義每筆資料的標籤(label),因此,在訓練上是相對方便的一個技術。而待自編碼器訓練完成後,可學習資料的潛在表示法(latent representation),可應用在異常檢測(anomaly detection),圖像生成(image generation)等等領域。

自編碼器介紹

1.機器學習種類

自編碼器(autoencoder)是一種自監督式學習(self-supervised learning)的方法,自監督式學習代表學習的方式就是給定輸入的資料,預期在輸出也會同樣得到原本的輸入資料。以監督式學習的語言來說,就是代表輸入的資料特徵等於輸出的資料標籤。訓練的目標就是讓輸入等於輸出。舉例來說,像是輸入一張貓的圖形,經過自編碼器的運算後,也預期在輸出的部分重建成原本貓的圖形。因此,在自監督式學習的過程中,就不需要額外定義資料的標籤,只要一開始給定原圖就夠了,而這樣的訓練方式,就會與非監督式學習的方法很類似,因為非監督式學習也不用資料的標籤。

2.自編碼器(Autoencoder)原理

自編碼器(Autoencoder)在運作上有兩個重要的概念。

  • 自編碼器(Autoencoder)是由編碼器(encoder)與解碼器(decoder)所組成,在運算時就會有編碼與解碼的過程,連接編碼與解碼的重要關鍵就是取得資料的潛在表示法。
  • 自編碼器自監督式學習的技術訓練目標為讓輸入等於輸出,但實際上輸入不會完全剛好等於輸出,取而代之的是,輸入會逼近輸出,在這種情況下,就需要定義重建損失(reconstruction loss),以描述輸入與輸出之間的差異。

以下會針對上述的這兩個概念進行講解。

(i)編碼解碼過程

當輸入端進來後,自編碼器會先對輸入的資料進行編碼,不斷將資料壓縮後,直到到瓶頸點的部分,之後再透過解碼器解碼,將原圖重建回來。

(ii)潛在表示法(latent representation)

我們從另一個角度來了解編碼與解碼的過程,在輸入的部分,是輸入原圖進行編碼,而到了中間頻頸點的部分,此時瓶頸點代表的是學習到資料的潛在表示法,然後再依據潛在表示法進行解碼,再重建回原圖。

以整個資料的數量來看,原圖代表原始資料,此時的資料量是最多的,而潛在表示法的資料量最低,然後最終重建回原圖,資料量又變多。從資料量的角度,我們會發現在編碼的過程當中,原圖的資料量會不斷減低,這代表資料的維度會不斷的下降,因此,編碼有著資料降維(dimension reduction)的功能。

而資料降維有許多好處像是

  • 減低計算跟儲存資料的成本。
  • 維度比較少,可避免維度災難,提高模型泛化能力。
  • 資料易於可視化,也方便找出數據的規則。

而且要用這麼少的資料來表示原始資料,代表潛在表示法有擷取到原圖的關鍵特徵,因此,有特徵擷取的功用。而這個特徵擷取的功用可以應用在像是圖片生成等等的應用上。

解碼器部分就是將潛在表示法重建成原圖。對於潛在表示法而言,必須要學習的好,不然解碼的時候就會產生問題,潛在表示法必須要真正抓到資料的關鍵特徵,而不是只是單純死記答案,模型才會有高的泛化能力。

(iii)重建損失(reconstruction loss)

自編碼器訓練時採用的損失函數為重建損失,重建損失是度量輸入與輸出之間的差異度,差異度的衡量是將輸入與輸出的相減取均方根(mse),因此,如果在輸出端可以完整重建輸入的圖形,則重建損失為零,但實際上,輸入與輸出不可能完全相等,因此,重建損失會是一個很小的值。

在訓練過程中,預期重建損失會越小越好,這樣輸出才會逼近輸入。

當模型訓練完成後,在模型應用的時候,如果是針對異常檢測的應用,重建損失可當作檢測異常的度量標準。

在異常檢測的應用上,我們會輸入正常資料來對模型進行訓練,自編碼器會不斷針對正常的資料進行資料的重建。

待模型訓練完成後,在應用上,我們就可輸入新的資料來讓自編碼器做檢測,如果檢測出來的重建損失相當低,代表重建效果非常好,我們就會認為這些資料是正常的資料。

而如果檢測出來的結果,重建損失比較大,代表重建效果不佳,我們就會認為資料是偏離正常的資料,即視為是異常。

結論

自編碼器是一種自監督式學習的方法,較便於做模型的訓練。

而且自編碼器本身可應用在不同領域上,如異常檢測,圖像生成等等方面的應用。

而且在自編碼器裡面的功能,像是潛在表示法,也可以做許多後續的應用,像是資料降維,特徵擷取等等。

自編碼器是一個相當實用的機器學習工具。

[相似文章]:

1.從自編碼器(autoencoder)到ChatGPT架構:探索大型語言模型(LLM)的原理與基本概念

[參考資料]:

1.快速反應機制─類神經網路

2.機器學習與人工神經網路(二):深度學習(Deep Learning)

3.機器學習的衰頹興盛:從類神經網路到淺層學習

[類神經網路基礎系列專文]:

1.類神經網路(Deep neural network, DNN)介紹

2.類神經網路—揭開網路架構調整秘辛

3.類神經網路—啟動函數介紹(一): 深入解析Relu與Sigmoid函數:如何影響類神經網路的學習效果?

4.類神經網路—啟動函數介紹(二): 回歸 vs. 分類: 線性函數與Tanh函數之原理探索

5.類神經網路—啟動函數介紹(三): 掌握多元分類的核心技術:不可不知的softmax函數原理

6.類神經網路—啟動函數介紹(四): 如何選擇最適當的啟動函數?用一統整表格讓您輕鬆掌握

7.類神經網路—前向傳播法

8.類神經網路—反向傳播法(一): 白話文帶您了解反向傳播法

9.類神經網路—反向傳播法(二): 淺談梯度

10.類神經網路—反向傳播法(三): 五步驟帶您了解梯度下降法

11.類神經網路—反向傳播法(四): 揭開反向傳播法神秘面紗

12.機器學習訓練原理大揭秘:六步驟帶您快速了解監督式學習的訓練方法

13.類神經網路—反向傳播法(五): 用等高線圖讓您對學習率更有感

[機器學習基礎系列專文]:

1.機器學習訓練原理大揭秘:六步驟帶您快速了解監督式學習的訓練方法

2.機器學習面臨的問題種類介紹:回歸與分類

[類神經網路延伸介紹]:

1.卷積類神經網路(Convolution neural network,CNN)介紹

2.遞迴類神經網路(Recurrent neural network,RNN)介紹

[ChatGPT系列專文]:

1.淺談最近非常火紅的ChatGPT背後可能原理機制為何?

2.從ChatGPT探索GPT的原理概念:少量數據的解方—遷移學習技巧