深度學習之四 常用模型和方法

2021-07-03 18:31:23 字數 2780 閱讀 6595



九、deep learning的常用模型或者方法

9.1、autoencoder自動編碼器

deep learning最簡單的一種方法是利用人工神經網路的特點,人工神經網路(ann)本身就是具有層次結構的系統,如果給定乙個神經網路,我們假設其輸出與輸入是相同的,然後訓練調整其引數,得到每一層中的權重。自然地,我們就得到了輸入i的幾種不同表示(每一層代表一種表示),這些表示就是特徵。自動編碼器就是一種盡可能復現輸入訊號的神經網路。為了實現這種復現,自動編碼器就必須捕捉可以代表輸入資料的最重要的因素,就像pca那樣,找到可以代表原資訊的主要成分。

具體過程簡單的說明如下:

1)給定無標籤資料,用非監督學習學習特徵:

在我們之前的神經網路中,如第乙個圖,我們輸入的樣本是有標籤的,即(input, target),這樣我們根據當前輸出和target(label)之間的差去改變前面各層的引數,直到收斂。但現在我們只有無標籤資料,也就是右邊的圖。那麼這個誤差怎麼得到呢?

如上圖,我們將input輸入乙個encoder編碼器,就會得到乙個code,這個code也就是輸入的乙個表示,那麼我們怎麼知道這個code表示的就是input呢?我們加乙個decoder解碼器,這時候decoder就會輸出乙個資訊,那麼如果輸出的這個資訊和一開始的輸入訊號input是很像的(理想情況下就是一樣的),那很明顯,我們就有理由相信這個code是靠譜的。所以,我們就通過調整encoder和decoder的引數,使得重構誤差最小,這時候我們就得到了輸入input訊號的第乙個表示了,也就是編碼code了。因為是無標籤資料,所以誤差的**就是直接重構後與原輸入相比得到。

那上面我們就得到第一層的code,我們的重構誤差最小讓我們相信這個code就是原輸入訊號的良好表達了,或者牽強點說,它和原訊號是一模一樣的(表達不一樣,反映的是乙個東西)。那第二層和第一層的訓練方式就沒有差別了,我們將第一層輸出的code當成第二層的輸入訊號,同樣最小化重構誤差,就會得到第二層的引數,並且得到第二層輸入的code,也就是原輸入資訊的第二個表達了。其他層就同樣的方法炮製就行了(訓練這一層,前面層的引數都是固定的,並且他們的decoder已經沒用了,都不需要了)。

3)有監督微調:

經過上面的方法,我們就可以得到很多層了。至於需要多少層(或者深度需要多少,這個目前本身就沒有乙個科學的評價方法)需要自己試驗調了。每一層都會得到原始輸入的不同的表達。當然了,我們覺得它是越抽象越好了,就像人的視覺系統一樣。

到這裡,這個autoencoder還不能用來分類資料,因為它還沒有學習如何去鏈結乙個輸入和乙個類。它只是學會了如何去重構或者復現它的輸入而已。或者說,它只是學習獲得了乙個可以良好代表輸入的特徵,這個特徵可以最大程度上代表原輸入訊號。那麼,為了實現分類,我們就可以在autoencoder的最頂的編碼層新增乙個分類器(例如羅傑斯特回歸、svm等),然後通過標準的多層神經網路的監督訓練方法(梯度下降法)去訓練。

也就是說,這時候,我們需要將最後層的特徵code輸入到最後的分類器,通過有標籤樣本,通過監督學習進行微調,這也分兩種,乙個是只調整分類器(黑色部分):

另一種:通過有標籤樣本,微調整個系統:(如果有足夠多的資料,這個是最好的。end-to-end learning端對端學習)

一旦監督訓練完成,這個網路就可以用來分類了。神經網路的最頂層可以作為乙個線性分類器,然後我們可以用乙個更好效能的分類器去取代它。

在研究中可以發現,如果在原有的特徵中加入這些自動學習得到的特徵可以大大提高精確度,甚至在分類問題中比目前最好的分類演算法效果還要好!

autoencoder存在一些變體,這裡簡要介紹下兩個:

sparse autoencoder稀疏自動編碼器:

當然,我們還可以繼續加上一些約束條件得到新的deep learning方法,如:如果在autoencoder的基礎上加上l1的regularity限制(l1主要是約束每一層中的節點中大部分都要為0,只有少數不為0,這就是sparse名字的**),我們就可以得到sparse autoencoder法。

如上圖,其實就是限制每次得到的表達code盡量稀疏。因為稀疏的表達往往比其他的表達要有效(人腦好像也是這樣的,某個輸入只是刺激某些神經元,其他的大部分的神經元是受到抑制的)。

denoising autoencoders降噪自動編碼器:

降噪自動編碼器da是在自動編碼器的基礎上,訓練資料加入雜訊,所以自動編碼器必須學習去去除這種雜訊而獲得真正的沒有被雜訊汙染過的輸入。因此,這就迫使編碼器去學習輸入訊號的更加魯棒的表達,這也是它的泛化能力比一般編碼器強的原因。da可以通過梯度下降演算法去訓練。

深度學習模型 方法之稀疏編碼

deep learning 深度學習 學習筆記整理系列 zouxy09 qq.com version 1.0 2013 04 08 宣告 1 該deep learning的學習系列是整理自網上很大牛和機器學習專家所無私奉獻的資料的。具體引用的資料請看參考文獻。具體的版本宣告也參考原文獻。3 本人才疏...

深度學習模型儲存 四種深度學習模型介紹

深度學習源於神經網路的研究,可理解為深層的神經網路。通過它可以獲得深層次的特徵表示,免除人工選取特徵的繁複冗雜和高維資料的維度災難問題。目前較為公認的深度學習的基本模型包括 dbn可用於特徵提取和資料分類等。基於rbm的dbn由多個rbm堆疊而成,其結構如下圖所示。網路前向運算時,輸入資料從低層rb...

深度學習 模型整合方法

設定為隨模型迭代輪數t t iteration,即一次批處理隨機梯度下降稱為乙個迭代輪數 改變的函式,即 t 0 2 co s m od t 1,t m t m 1 t 02 cos mod t 1,t m t m 1 0 0 若網路超引數設定得當,深度模型隨著網路的進行會逐步趨於收斂,但是不同的訓...