PCA & Autoencoders通俗解析
來源:FK Films
自動編碼器(Autoencoder)通過將資料對映到低維空間,提取資料的顯著特徵。該過程會對資料進行壓縮編碼,即“encoder”, “auto” 則體現在其能決定如何重組資料。其中編碼特徵被稱為潛在變數。
為什麼這樣做:
- 降低資料維度從而縮短訓練時間
- 挖掘潛在特徵從而提高模型效能
潛在變數本質上是一些資料的隱式特徵,它無法通過直接觀察或測量得到。幸福就好比一個潛在變數,我們必須使用類似問卷調查的方式才有可能對一個人的幸福程度做出衡量。
與自動編碼器一樣,主成分分析(PCA,Principal Component Analysis)也是常用於降低資料維度。
舉個簡單的例子,你要送朋友一輛樂高跑車作為生日禮物。但是你用來裝禮物的盒子不夠大,無法裝下全部零件。這時你就需要根據零件對汽車的重要性來判斷是否扔掉它。像車把手和雨刷這類瑣碎的零件就可以考慮丟棄,而留下車輪和車架之類的重要部件。朋友收到包裹後,在沒有任何提示的情況下,會對組裝它感到困惑。但最終,你的朋友還是搭建好了它,並能識別出它是一輛可駕駛的汽車。只是他們不知道這輛車到底是賽車、小轎車還是越野車。
上面的例子形象的講解了有損資料壓縮演算法。由於一些原始資料(如部分樂高積木塊)的丟失,資料的質量沒有保留完整。儘管使用PCA和Autoencoders演算法進行降維是有損的,但就如同示例中進行特徵選擇一樣,二者拋棄資料中的某些特徵是為了保留更為重要的顯著特徵。
主成分分析
還是基於上述場景,假設一年過去了,你朋友的生日又快到了。你決定給他們買一輛樂高汽車,因為去年他們有告訴你非常喜歡你送的禮物。有了上次的經驗,你不會再買一個小盒子了。這一次,你想著將樂高積木系統地分割成小塊,使他們能夠更好的裝進盒子。上一次,由於天線太長了無法裝進盒子,只能丟棄,而這一次你把它分割成了三等分再裝進盒子。當你的朋友收到這份禮物時,他們會把一些零件粘合在一起從而對汽車進行組裝。他們將擾流板和輪轂蓋粘合在一起,這樣一來,就很容易辨認這是一輛樂高汽車了。
主成分分析是一種用於降維的統計方法,它藉助於一個正交變換,將其分量相關的原隨機向量轉化成其分量不相關的新隨機向量,這在代數上表現為將原隨機向量的協方差陣變換成對角形陣,在幾何上表現為將原座標系變換成新的正交座標系,然後對多維變數進行降維處理,使之能以一個較高的精度轉換成低維變數系統,再通過構造適當的價值函式,進一步把低維繫統轉化成一維繫統。
Original Data (left) 1st Principal Component & Data (right)
主成分分析把給定的一組相關變數通過線性變換轉成另一組不相關的變數,這些新的變數按照方差依次遞減的順序排列。在數學變換中保持變數的總方差不變,使第一變數具有最大的方差,稱為第一主成分,第二變數的方差次大,並且和第一變數不相關,稱為第二主成分。我們希望主成分朝向方差最大的方向,因為該方向上攜帶的原始資料資訊多,預測結果將會更為準確。好比你想預測一輛汽車的價格,有兩個屬性:顏色和品牌。所有汽車顏色相同,只是品牌有差異。那麼根據顏色來預測汽車的價格顯然不行。但當我們考慮品牌這個特性時,便能更好的預測價格,畢竟奧迪和法拉利定價總高於本田和豐田。PCA產生的主要成分是輸入變數的線性組合,就像粘合的樂高積木是原始積木的線性組合一樣。這些主要元件的線性性質能幫助我們更好的理解轉換後的資料。
Data projected onto 1st principal component (Source: Author)
主成分分析優點:
- 降低資料維度
- 易於理解
- 提升執行速度
主成分分析缺點:
- 無法學習非線性特徵
自動編碼器
Autoencoder Architecture
將自動編碼器的思想融合進剛才的例子便稍顯奇怪。由於盒子大小的限制,你可能不僅限於切割零件,甚至開始融化、拉長和彎曲部分零件,隨之產生的零件能夠代表汽車最重要的特性。這樣做能讓盒子中裝入更多的樂高積木,甚至還能夠建立屬於你自己的樂高。但是當你朋友收到這個包裹時,卻不知道如何處理這些樂高玩具。由於改裝後的零件過於與眾不同,以至於你需要用幾輛車重複這個過程無數次,才能以一種系統的方式將原來的零件轉換成可以由你的朋友組裝成汽車的零件。
希望上面的類比能夠幫助你更好的理解自動編碼器和PCA。在自動編碼器中,假設你是編碼器,你的朋友是解碼器,你的工作就是對資料進行轉換,使得你的朋友能夠最大程度的理解和重構解碼前的資料。
自動編碼器可以被看作是一種特殊的前饋神經網路,經過訓練後能嘗試將輸入複製到輸出。
自動編碼器優點:
- 能夠學習到非線性特性
- 降低資料維度
自動編碼器缺點:
- 訓練的計算成本高
- 可解釋性較差
- 背後的數學知識複雜
- 容易產生過度擬合的問題,儘管可以通過引入正則化策略緩解
稀疏自動編碼器
Sparse Autoencoder Loss Function (Source: Andrew Ng)
稀疏自動編碼器的靈感來源於大腦中突觸的稀疏。整個神經網路中隱藏的神經元會挖掘輸入資料的特徵。普通的自動編碼器通過不完全的架構(不完全是指隱藏層的神經元個數比輸入層少)學習潛在特徵。稀疏自動編碼器的思想是,通過一個與架構無關的約束——稀疏約束來學習潛在的特徵。
稀疏約束是通過設定ρ的值,通常是一個接近於零的值,使神經元的啟用值較小。公式中的ρ是一個稀疏引數,ρ hat j為隱藏單位j的平均啟用值。
我們通過新增由KL散度和權重β組成的懲罰項來最優化目標函式。KL散度度量了兩個分佈的不同。在損失函式中加入這一項可以激勵模型優化引數,使啟用值分佈與稀疏引數分佈之間的KL散度儘可能小。
通過讓啟用值更大程度趨近於零以使神經元處於抑制狀態,只在關鍵的時候觸發,從而提高準確性。
總結
本文深入講解了PCA和自動編碼器的相關概念。多數情況下,相較自動編碼器,PCA優勢更為明顯——執行速度更快,易於解釋,緩解維度災難。但如果您需要挖掘資料的非線性特性,應首選自動編碼器。值得注意的是,自動編碼器通過挖掘潛在特性提高模型效能,但這些模糊的特性或許會對知識發現的結果產生不良影響。
以上為譯文
本文由阿里云云棲社群組織翻譯。
文章原標題《PCA & Autoencoders: Algorithms Everyone Can Understand》,作者: ofollow,noindex" target="_blank">Thomas Ciha ,譯者:Elaine,審校:袁虎。
文章為簡譯,更為詳細的內容,請檢視 原文