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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Autoencoder 详解

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

本文介紹了AutoEncoder。包括如下內(nèi)容:

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

1. 數(shù)學(xué)基礎(chǔ)

1.1 Orthogonal Matrix

  滿足如下定義的是Orthogonal Matrix

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

1.2 The theorem about SVD

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

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
  這個(gè)定理需要用在推導(dǎo)過程中,具體看參考文獻(xiàn)[3]。

2. AutoEncoder 定義

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

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

  • 自動(dòng)獲取有意義Features
  • leverage無標(biāo)注數(shù)據(jù)
  • 添加一個(gè)有數(shù)據(jù)驅(qū)動(dòng)的規(guī)則化工具來幫助訓(xùn)練(add a data-dependent regularizer to trainings)

  下圖是一個(gè)AutoEncoder的三層模型,Input layer,Hidden layer,和Output layer。其中W?=WTW?=WT,因?yàn)槭褂胻ied weight。

  如果是實(shí)數(shù)值作為輸入,我們要優(yōu)化的目標(biāo)函數(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)
  當(dāng)然使用tied weight,那么是兩個(gè) ??的和。

  具體推導(dǎo)在參考文獻(xiàn)[3],而且目前只能做有關(guān)liner AutoEncoder的推導(dǎo),其他的目前是NP問題。   

3. Denoising AutoEncoder

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

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

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

4. Sparse Autoencoder

  這個(gè)部分在我之前的博文里有講到,自編碼算法與稀疏性 自我學(xué)習(xí)。      

5. 幾種方法不同點(diǎn)

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

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

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

參考文獻(xiàn)

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

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

[3] 數(shù)學(xué)推導(dǎo)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


因?yàn)槲覀兪桥笥?#xff0c;所以你可以使用我的文字,但請(qǐng)注明出處:http://alwa.info


總結(jié)

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

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