PCA和自動編碼器:每個人都能理解的算法

本文的主要重點是為主成分分析(PCA)和自動編碼器數據轉換技術提供易於理解的直覺。我不打算深入研究支撐這些模型的數學理論,因為已有大量資源可供使用。

PCA和自動編碼器:每個人都能理解的算法

介紹:

自動編碼器通過組合數據最重要的特徵將它們被饋送的數據映射到較低維度的空間。它將原始數據編碼為更緊湊的表示。它還決定了數據的組合方式,因此Autoencoder中的auto也是如此。我們將這些編碼特徵稱為潛在變量。

這樣做有幾個原因可能有用:

  • 1.減少維度可以減少培訓時間。
  • 2.使用潛在特徵表示可以增強模型性能。

像機器學習(ML)中的許多概念一樣,Autoencoders看起來很神秘。潛在變量本質上是某些數據的隱含特徵。這是一個未被直接觀察或測量的變量。例如,幸福是一個潛在的變量。我們必須使用像問卷調查的方法來推斷個人的幸福水平。

與自動編碼器模型一樣,主成分分析(PCA)也被廣泛用作降維技術。但是,PCA以與自動編碼器不同的方式映射輸入。

直覺:

假設你有一個很棒的跑車Lego套裝,你想把它送給你的朋友過生日,但你擁有的盒子不夠大,不適合所有的樂高積木。你決定收拾最重要的樂高碎片 - 這些碎片在製造汽車時貢獻最大,所以你扔掉了一些像門把手和擋風玻璃刮水器一樣的小碎片; 幷包裝車輪和車架等零件。然後,您將盒子運送給您的朋友。收到包裹後,你的朋友在沒有說明的情況下對各種樂高樂隊感到困惑。儘管如此,他們組裝了這套裝置,並且能夠認識到它是一種可駕駛的車輛。

上面的類比是有損數據壓縮算法的一個例子。數據質量未得到完美保留。因此,它是一種有損算法,因為一些原始數據(即樂高積木)已經丟失。雖然使用PCA和自動編碼器來降低維數是有損的,它並沒有準確描述這些算法 - 它描述了一種特徵選擇算法。特徵選擇算法丟棄數據的某些特徵並保留顯著特徵。它們保留的特徵通常是出於統計原因而選擇的,例如屬性和目標標籤之間的相關性。

主成分分析:

假設一年過去了,你朋友的生日即將來臨。你決定讓他們買另一輛樂高汽車,因為他們去年告訴你他們多麼喜歡他們的禮物。你也可以通過購買一個小的盒子再次犯錯。這一次,您認為通過將Legos系統地切割成更小的部分,您可以更好地利用它們。Legos的細粒度使您可以比上次更多地填充盒子。以前,無線電天線太高而無法放入盒子中,但現在你把它切成三等分幷包括三個中的兩個。當您的朋友通過郵件收到禮物時,他們通過將某些部件組合在一起來組裝汽車。他們能夠將擾流板和一些輪轂蓋粘在一起,因此汽車更容易識別。接下來,我們將探索這個類比背後的數學概念。

PCA和自動編碼器:每個人都能理解的算法

闡述:

PCA通過將輸入數據投影到數據的協方差矩陣的特徵向量上來工作。協方差矩陣量化數據的方差以及每個變量相對於彼此變化的程度。特徵向量就是通過線性變換保持跨度的簡單向量,也就是說,它們在變換之前和之後指向相同的方向。協方差矩陣將原始的基向量轉換成每個變量之間的協方差方向。簡單來說,特徵向量允許我們重新構建原始數據的方向,以不同的角度查看它,而無需實際轉換數據。當我們將數據投影到這些向量上時,我們實質上是提取每個變量的組件,導致最大的方差。

PCA和自動編碼器:每個人都能理解的算法

原始數據(左)第一主成分和數據(右)

這些投影產生新的空間,其中每個基向量封裝最多的方差(即特徵值最大的特徵向量上的投影具有最多的方差,第二個特徵向量上的投影具有第二大方差,等等)。這些新的基向量被稱為主要組成成分。我們希望主成分面向最大方差方向,因為更大的屬性值方差可以帶來更好的預測能力。例如,假設您嘗試使用兩個屬性來預測汽車的價格:顏色和品牌。假設所有汽車都有相同的顏色,但其中有很多品牌。在這個例子中,基於其顏色來猜測汽車的價格 - 一個零方差的特徵 - 幾乎是不可能的。然而,如果我們考慮到一個更多樣化的特徵,如品牌,我們將能夠提出更好的價格估計,因為奧迪和法拉利往往定價高於本田和豐田。PCA產生的主成分是輸入變量的線性組合——就像粘合的樂高積木是原始積木的線性組合一樣。這些主成分的線性特徵也允許我們解釋轉換後的數據。

PCA和自動編碼器:每個人都能理解的算法

數據投射到第一主成分

PCA優點:

  • 減少維數
  • 可解釋
  • 運行時間快

PCA缺點:

  • 無法學習非線性特徵表示

Autoencoder

PCA和自動編碼器:每個人都能理解的算法

自動編碼器架構

Autoencoders讓事情變得有些奇怪。您不必僅僅切割碎片,而是開始完全融化,拉伸和彎曲樂高積木,使得最終的碎片代表汽車最重要的特徵,但仍然符合盒子的限制。這樣做不僅可以讓你將更多的樂高積木裝入盒子中,還可以讓你創建定製的碎片。但你的好友不知道(如果包裹到貨時)該如何處理。對他們來說,它看起來就像一堆隨機操縱的樂高積木。事實上,這些部件是如此不同,以至於你需要用幾輛車重複這個過程無數次,才能以一種系統的方式將原來的部件轉換成可以由你的朋友組裝成汽車的部件。

闡述:

希望上面的類比有助於理解Autoencoders與PCA的相似之處。在Autoencoders的上下文中,您是編碼器,您的朋友是解碼器。您的工作是以解碼器可以解釋和重建的方式轉換數據,並且誤差最小。

自動編碼器本質上只是一種改變用途的前饋神經網絡。簡而言之,神經網絡是大規模的非線性函數,其參數通過使用向量微積分的優化方法來學習。我不打算深入研究這裡的細節,但請查看相關深度學習書籍,以更全面地瞭解神經網絡的數學理論。

雖然他們能夠學習複雜的特徵表示,但Autoencoders最大的缺陷在於它們的可解釋性。就像你的朋友收到扭曲的樂高積木時一樣無能為力,我們不可能想象和理解非可視數據的潛在特徵。接下來我們將研究稀疏自動編碼器。

自動編碼器優點:

  • 能夠學習非線性特徵表示
  • 減少維度

自動編碼器缺點:

  • 計算成本昂貴的訓練
  • 極度無法解釋
  • 基礎數學更復雜
  • 容易過度擬合,雖然這可以通過正則化來緩解

稀疏自動編碼器:

PCA和自動編碼器:每個人都能理解的算法

稀疏自動編碼器損失函數

大腦中突觸的稀疏性可能是稀疏自動編碼器的靈感來源。整個神經網絡中的隱藏神經元學習輸入數據的分層特徵表示。當它看到它正在尋找的輸入數據的特徵時,我們可以想到神經元“觸發”。Vanilla Autoencoders通過其不完整的體系結構強制學習潛在的特徵(不完整的僅僅意味著隱藏的層包含比輸入層更少的單元)。稀疏自動編碼器背後的想法是我們可以通過與架構無關的約束強制模型學習潛在的特徵表示 - 稀疏性約束。

稀疏性約束是我們想要的平均隱藏層激活,並且通常是接近零的浮點值。稀疏約束超級分配器在上面的函數中用希臘字母rho表示。Rho hat j表示隱藏單元j的平均激活。

我們實施這個約束模型使用KL散度和權重由β進行實施。總之,KL散度度量了兩個分佈的不同。在損失函數中加入這一項可以激勵模型優化參數,使激活值分佈與稀疏參數均勻分佈之間的KL散度最小化。

約束激活接近於零意味著神經元只有在最優化精度時才會觸發。KL發散項意味著神經元也會因為過於頻繁的Firing而受到懲罰。

結論:

在本文中,我們深入研究了PCA和自動編碼器背後的概念。不幸的是,沒有一個整體上更好的模型。PCA和Autoencoder模型之間的決定必須在環境的基礎上進行。在許多情況下,PCA更優越——它更快,更易於解釋,並且可以像自動編碼器一樣減少數據的維數。如果你可以使用PCA,你應該這樣做。但是,如果您處理的數據需要一個高度非線性的特性表示,以獲得足夠的性能或可視化,那麼PCA可能不夠。在這種情況下,花費精力訓練自動編碼器可能是值得的。另外,即使自動編碼器產生的潛在特徵提高了模型性能,這些特徵的模糊性也會對知識發現造成障礙。


分享到:


相關文章: