日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Autoencoder 详解

發(fā)布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Autoencoder 详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文介紹了AutoEncoder。包括如下內容:

  • AutoEncoder的定義和推導。
  • Sparse AutoEncoder由來和介紹。
  • 做Deep Learning所用的unsupervised learning的方法之間的比較。

1. 數(shù)學基礎

1.1 Orthogonal Matrix

  滿足如下定義的是Orthogonal Matrix

AAT=I,AAT=I,
  以元素表示為。
(a?1)ij=aji(a?1)ij=aji

1.2 The theorem about SVD

  假設A是任意一個矩陣,SVD表示就是A=UΣVTA=UΣVT
  其中?ΣΣ?是一個對角矩陣。
  U,VU,V都是orthonormal矩陣(columns/rows are orthonormal vectors)。
  假設U.,kΣk,kVT.,kU.,≤kΣ≤k,≤kV.,≤kT作為當我們只保留最大的k個singular values的decomposition。
  這樣矩陣B,秩為k,它與A的距離就可以寫一個式子。

B?=argminBs.t.rank(B)=k||A?B||FB?=arg?minBs.t.rank(B)=k||A?B||F
  求得 B?=U.,kΣk,kVT.,kB?=U.,≤kΣ≤k,≤kV.,≤kT
  這個定理需要用在推導過程中,具體看參考文獻[3]。

2. AutoEncoder 定義

  AutoEncoder 是多層神經(jīng)網(wǎng)絡,其中輸入層和輸出層表示相同的含義,具有相同的節(jié)點數(shù)。AutoEncode學習的是一個輸入輸出相同的“恒等函數(shù)”。不過輸入和輸出相同,使得這個網(wǎng)絡的輸出沒有任何意義。AutoEncoder的意義在于學習的(通常是節(jié)點數(shù)更少的)中間coder層(最中間的那一層),這一層是輸入向量的良好表示。這個過程起到了“降維”的作用。當AutoEncoder只有一個隱含層的時候,其原理相當于主成分分析(PCA),當AutoEncoder有多個隱含層的時候,每兩層之間可以用RBM來pre-training,最后由BP來調整最終權值。網(wǎng)絡權重更新公式很容易用求偏導數(shù)的方法推導出來,算法是梯度下降法。(RBM:層內無連接,層間全連接,二分圖)。
  
  當AutoEncoder只有一個隱含層的時候,其原理相當于主成分分析(PCA)。但是 AutoEncoder 明顯比PCA的效果更好一點,尤其在圖像上。 當AutoEncoder有多個隱含層的時候,每兩層之間可以用RBM來pre-training,最后由BP來調整最終權值。

  通過unsupervised learning只對inputX(t)X(t)我們可以做下面的事情:

  • 自動獲取有意義Features
  • leverage無標注數(shù)據(jù)
  • 添加一個有數(shù)據(jù)驅動的規(guī)則化工具來幫助訓練(add a data-dependent regularizer to trainings)

  下圖是一個AutoEncoder的三層模型,Input layer,Hidden layer,和Output layer。其中W?=WTW?=WT,因為使用tied weight。

  如果是實數(shù)值作為輸入,我們要優(yōu)化的目標函數(shù)是:

L(f(X))=12i=1N(x??i?xi)2L(f(X))=12∑i=1N(x^i?xi)2
  如果是01值那么就是:

L(f(X))=?i=1N(xilog(x??i)+(1?xi)log(1?x??i))L(f(X))=?∑i=1N(xilog(x^i)+(1?xi)log(1?x^i))
  loss function的梯度可以寫成:
?a??(X(t))L(f(X(t)))=X??(t)?X(t)?a^(X(t))L(f(X(t)))=X^(t)?X(t)
  當然使用tied weight,那么是兩個 ??的和。

  具體推導在參考文獻[3],而且目前只能做有關liner AutoEncoder的推導,其他的目前是NP問題。   

3. Denoising AutoEncoder

  按照常理,hidden layer壓縮輸入,而且是一句training集的分布。hidden layer比Input layer小稱之為 undercomplete representation。
  
  overcomplete representation 就是反過來,hidden layer比Input layer要大。這個會導致無法保證hidden layer提取有用的結構信息。
  
  下圖是形成的網(wǎng)絡結構:
  

  Denoising AutoEncoder是AutoEncoder的一個變種,與AutoEncoder不同的是,Denoising AutoEncoder在輸入的過程中加入了噪聲信息,從而讓AutoEncoder能夠學習這種噪聲。直觀可見就是新的輸入層有些值變成0了。
  
  意思就是要使得我們的表達能夠足夠強壯,所以我們加入噪聲信息。
  (一) 隨機讓一些input值做為0,根據(jù)一個概率v。
  (二) 加入Gaussian噪聲。
  
  具體會重新構建X??X^使用改變過的輸入X??X~,并且loss function是使用noiseless input X。我們把noise process稱為p(X??|X)p(X~|X)

  YouTube上有視頻講的很清楚,地址。

4. Sparse Autoencoder

  這個部分在我之前的博文里有講到,自編碼算法與稀疏性 自我學習。      

5. 幾種方法不同點

  首先Autoencoder和RBM是一類的,都屬于學習模型;而稀疏編碼更像是施加在這些基本模型上的一種優(yōu)化手段。
  
  Autoencoder和RBM的不同之處:Autoencoder的神經(jīng)元是確定型的,用的是sigmold函數(shù),就像傳統(tǒng)的ff網(wǎng)絡一樣。而RBM的神經(jīng)元是隨機的。(最基本的RBM神經(jīng)元只有0和1兩種狀態(tài),但是擴展后可以在這個區(qū)間上取任何值)由于autoencoder的確定性,它可以用BP方法來訓練。但是RBM就只能用采樣的方法來得到一個服從RBM所表示分布的隨機樣本。(Gibbs采樣,CD采樣等等)在深度學習里面,可以把autoencoder和RBM都看作是一塊塊磚頭,我們可以用許多這樣的磚頭構造出深層次的網(wǎng)絡。基本思路是前面先用這些“磚頭”搭出幾層網(wǎng)絡,自動學習出數(shù)據(jù)的一些特征后,后面再用一個分類器來分類,得到最后的結果。如果用autoencoder作磚頭,得到的就是stacked autoencoder;如果用RBM作磚頭,得到的就是deep belief network。
  
  Denoising AutoEncoder與RBM非常像,:
(1)參數(shù)一樣:隱含層偏置、顯示層偏置、網(wǎng)絡權重
(2)作用一樣:都是輸入的另一種(壓縮)表示
(3)過程類似:都有reconstruct,并且都是reconstruct與input的差別,越小越好

  Denoising AutoEncoder與RBM的區(qū)別:RBM是能量函數(shù),區(qū)別在于訓練準則。RBM是隱含層“產(chǎn)生”顯示層的概率(通常用log表示),Denoising AutoEncoder是輸入分布與reconstruct分布的KL距離。所用的訓練方法,前者是CD-k,后者是梯度下降。RBM固定只有兩層;AutoEncoder,可以有多層,并且這些多層網(wǎng)絡可以由標準的bp算法來更新網(wǎng)絡權重和偏置,與標準神經(jīng)網(wǎng)絡不同的是,AutoEncoder的輸入層和最終的輸出層是“同一層”,不僅僅是節(jié)點數(shù)目、輸出相同,而是完完全全的“同一層”,這也會影響到這一層相關的權值更新方式。總之,輸入與輸出是同一層,在此基礎上,再由輸入與輸出的差別構造準則函數(shù),再求各個參數(shù)的偏導數(shù),再用bp方式更新各個權重。

  再說稀疏編碼,它是把大多數(shù)的神經(jīng)元限制為0,只允許少量的神經(jīng)元激活,來達到“稀疏”的效果。這主要是為了模擬人眼視覺細胞的特性。在算法里,其實就是在用來優(yōu)化的目標函數(shù)里面加入一個表示稀疏的正則項,一般可以通過L1范數(shù)或者KL divergence來實現(xiàn)。并且稀疏性可以加到autoencoder上,也可以加到RBM上。稀疏編碼是訓練整個深層神經(jīng)網(wǎng)絡的一種預先訓練的方法。它是一個非監(jiān)督學習的過程,通過神經(jīng)元對feature本身作一次回歸,可以得到一個神經(jīng)元的初始參數(shù)。這些參數(shù)對再下來的監(jiān)督學習過程算是個初始化。這一步也可以用分層的監(jiān)督學習來取代。

參考文獻

[1] 維基百科:https://en.wikipedia.org/wiki/Autoencoder

[2] AutoEncoder:http://jacoxu.com/?p=1108

[3] 數(shù)學推導AutoEncoder Optimality:https://dl.dropboxusercontent.com/u/19557502/6_04_linear_autoencoder.pdf

[4] 知乎上回答地比較好的比較AutoEncoder和RBM聯(lián)系區(qū)別的回答:https://www.zhihu.com/question/22906027/answer/40628698


因為我們是朋友,所以你可以使用我的文字,但請注明出處:http://alwa.info


總結

以上是生活随笔為你收集整理的Autoencoder 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。