雜訊資料是機器學習中常見的問題之一,自動編碼器是解決這類問題的有效方法。本文將介紹自動編碼器的結構和正確訓練方法。
自動編碼器是一種無監督學習的人工神經網絡,用於學習資料的編碼。其目標是透過訓練網路來捕捉輸入影像的關鍵特徵,並將其轉換為低維表示,常用於降維處理。
自動編碼器由3部分組成:
#1 .編碼器:將訓練-驗證-測試集輸入資料壓縮成編碼表示的模組,通常比輸入資料小幾個數量級。
2.瓶頸:包含壓縮知識表示的模組,因此是網路中最重要的部分。
3.解碼器:幫助網路「解壓縮」知識表示並從其編碼形式重構資料的模組。然後將輸出與地面實況進行比較。
整個架構看起來像這樣,如下圖:
#編碼器
編碼器是一組卷積塊,後面是池化模組,將模型的輸入壓縮到稱為瓶頸的緊湊部分。
瓶頸之後是解碼器,它由一系列上取樣模組組成,用於將壓縮後的特徵恢復為影像形式。在簡單的自動編碼器的情況下,輸出預計與雜訊降低的輸入相同。
然而,對於變分自動編碼器,它是一個全新的圖像,由模型作為輸入提供的資訊形成。
瓶頸
作為神經網路中最重要的部分,會限制訊息從編碼器流向解碼器,只允許最重要的訊息通過。
由於瓶頸的設計是為了捕捉影像所擁有的特徵訊息,我們可以說瓶頸幫助形成輸入的知識表示。編碼器-解碼器結構幫助我們以資料的形式從圖像中提取更多信息,並為網路中的各種輸入之間建立有用的相關性。
作為輸入的壓縮表示的瓶頸會進一步防止神經網路記憶輸入和對資料的過度擬合。瓶頸越小,過度擬合的風險就越低。但非常小的瓶頸會限制可儲存的資訊量,這會增加重要資訊從編碼器的池化層中漏出的機會。
解碼器
最後,解碼器是一組上取樣和卷積塊,用於重建瓶頸的輸出。
由於解碼器的輸入是壓縮的知識表示,因此解碼器充當「解壓縮器」並從其潛在屬性重建圖像。
了解完自動編碼器的結果和關係後,我們接著來看如何正確訓練自動編碼器。
在訓練自動編碼器之前需要設定4個超參數:
1.程式碼大小
程式碼大小或瓶頸大小是用於調整自動編碼器的最重要的超參數。瓶頸大小決定了必須壓縮多少資料。這也可以作為正規化項。
2.層數
與所有神經網路一樣,調整自動編碼器的一個重要超參數是編碼器和解碼器的深度。雖然較高的深度會增加模型的複雜性,但較低的深度處理速度較快。
3.每層節點數
每層節點數定義了我們每層使用的權重。通常,節點的數量隨著自動編碼器中每個後續層的減少而減少,因為這些層中的每一個的輸入在層中變得更小。
4.重建損失
我們用來訓練自動編碼器的損失函數高度依賴我們希望自動編碼器適應的輸入和輸出類型。如果我們處理影像數據,最受歡迎的重建損失函數是MSE損失函數和L1損失函數。如果輸入和輸出在[0,1]範圍內,就像在MNIST資料集中一樣,我們也可以使用二元交叉熵作為重建損失。
以上是了解自動編碼器的訓練方法:從架構探究開始的詳細內容。更多資訊請關注PHP中文網其他相關文章!