自編碼器(autoencoder)是什麼?為何我們需要知道這樣的知識?
自編碼器(autoencoder)是基於類神經網路的一種技術,在應用上有特別的用途,像是異常檢測方面的應用等等。
由於在大型語言模型的原理當中,有著編碼與解碼的技術,因此,此處會先介紹自編碼器,主要是讓大家對編碼與解碼有一定的概念,才能更進一步了解大型語言模型的原理。
自編碼器(autoencoder)架構
自編碼器(autoencoder)架構如下所示
自編碼器(autoencoder)是由許多層的網路節點所組成,而此網路結構的特點是一個左右對稱的形式。
我們舉個例子,一般的自編碼器(autoencoder)的在各個層的節點數目,一開始左邊輸入進來的是原圖,也就是原始資料,接下來節點數目會不斷遞減,節點數目就會變成500,然後到中間的節點數目降為10,為最少的節點數目,接下來繼續往右,節點數目又再增加到500,最終又再輸出原圖,也就是在節點數目1000的部分。
我們用一個架構圖簡化自編碼器在做的事情,自編碼器(autoencoder)其實就是輸入原圖後,經由自編碼的運算,再輸出原圖。
大家可能會有疑問,就是為何要這樣做?輸入原圖,輸出也是原圖,這樣做有意義嗎?事實上,這樣的作法可以讓我們做後續的應用,像是一開始提到異常檢測的應用,不過此處我們先暫且不多談,我們持續來了解自編碼器的架構。
從剛剛的自編碼器(autoencoder)網路架構,我們進一步了解到以中間節點數目10為基準,左右兩側是一個對稱的樣式,左邊在做的其實就是編碼器(encoder),右邊在做的就是解碼器(decoder)。而自編碼器的動作就是先編碼再解碼就可以得到原圖。
編碼器(encoder)
我們進一步來看編碼器(encoder)的結構,編碼器(encoder)的意義為何?為什麼節點數目會不斷遞減?
事實上編碼器(encoder)做的事情就是在壓縮維度,當原圖輸入進來之後就不斷的把原圖進行壓縮,壓縮的意思就是把資料不斷簡化(也就是節點數目不斷降低),壓縮到最小的資料量也就是10個節點數目的部分,在10個節點數的地方就稱為瓶頸點(botttleneck),這10個節點上面的數值,就可組成是10維度的向量,這10維度的向量代表的是特徵的表示法。
這代表的從原圖輸入的部分有1000個節點,後續不斷的壓縮資訊,最終只用10個節點就可以擷取到1000個節點原圖的關鍵特徵。
編碼器致力於在做的就是將原圖萃取出關鍵特徵,我們就可以不用那麼大的維度去描述同一張圖,例如原本要用1000個節點去描述,現在只要用10個節點就可以描述了。
解碼器(decoder)
而解碼器(decoder)就是基於編碼器壓縮完成的關鍵特徵,將此關鍵特徵重建成原圖,因此,在操作上會不斷的把維度還原回來,也就是節點數目會不斷增大,節點數目從10到500最終到1000,資訊量不斷增加,最終重建成原圖。
結論
這邊是簡單介紹自編碼器(autoencoder)的架構以及講解編碼(encoder)與解碼(decoder)的原理,在大型語言模型開發的部分,就是基於編碼與解碼的概念去發展。因此,為了要了解大型語言模型在做的事情,第一步要先對編碼與解碼有初步的概念。
[參考資料]:
2.機器學習與人工神經網路(二):深度學習(Deep Learning)
[類神經網路基礎系列專文]:
1.類神經網路(Deep neural network, DNN)介紹
3.類神經網路—啟動函數介紹(一): 深入解析Relu與Sigmoid函數:如何影響類神經網路的學習效果?
4.類神經網路—啟動函數介紹(二): 回歸 vs. 分類: 線性函數與Tanh函數之原理探索
5.類神經網路—啟動函數介紹(三): 掌握多元分類的核心技術:不可不知的softmax函數原理
6.類神經網路—啟動函數介紹(四): 如何選擇最適當的啟動函數?用一統整表格讓您輕鬆掌握
8.類神經網路—反向傳播法(一): 白話文帶您了解反向傳播法
10.類神經網路—反向傳播法(三): 五步驟帶您了解梯度下降法
11.類神經網路—反向傳播法(四): 揭開反向傳播法神秘面紗
12.機器學習訓練原理大揭秘:六步驟帶您快速了解監督式學習的訓練方法
13.類神經網路—反向傳播法(五): 用等高線圖讓您對學習率更有感
[機器學習基礎系列專文]:
1.機器學習訓練原理大揭秘:六步驟帶您快速了解監督式學習的訓練方法
[類神經網路延伸介紹]:
1.卷積類神經網路(Convolution neural network,CNN)介紹
2.遞迴類神經網路(Recurrent neural network,RNN)介紹
[ChatGPT系列專文]:
自動引用通知: 類神經網路(Deep neural network, DNN)介紹 – 李彼德之家