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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

贪婪深度字典学习

發布時間:2025/3/17 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 贪婪深度字典学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

貪婪深度字典學習

原文地址:http://blog.csdn.net/hjimce/article/details/50876891

作者:hjimce

一、相關理論

近幾年深度學習聲名鵲起,一個又一個AI領域被深度學習攻破,然而現在大部分深度學習所采用的算法都是有監督學習的方法;有監督學習需要大量的標注數據,需要耗費大量的人力物力。因此當有監督學習算法達到瓶頸的時候,無監督學習必將成為未來深度學習領域的研究焦點,使得深度學習更接近于人類;畢竟無標簽數據一抓一大把、到處都是,如果我們可以搞好無監督學習,這才是牛逼人工智能。

無監督表征學習,除了自編碼、受限玻爾茲曼機之外,k-means、稀疏編碼等也是無監督表征學習的重要算法。無監督表征學習算法的應用主要分兩種:

(1)用于神經網絡的無監督預訓練。這個我們在深度學習里面經常遇到,比如自編碼、RBM就可以分別用于SAE、DBN深度網絡的預訓練;

(2)無監督特征抽取,然后用抽取到的特征做分類任務;這個說白了就是先用無監督算法抽取高層特征,然后再用SVM來訓練特征分類器,像稀疏編碼、k-means表征學習一般是這么使用的,當然AE、RBM也可以這樣使用。

本篇博文主要講解我最近所學的一篇paper:《Greedy?Deep?Dictionary?Learning》。這篇文獻主要提出了一個深度字典學習方法,字典學習也可以簡單的稱之為稀疏編碼。文獻算法主要是受了棧式自編碼、DBN訓練方法的啟發,提出逐層貪婪深度字典學習。

二、貪婪深層字典學習

之前人們所研究的算法都是針對單層字典學習(淺層字典學習),然而我們知道深層模型具有更抽象、更牛逼的表征能力。既然單層自編碼對應的DL模型“棧式自編碼”;RBM也有對應的DL模型“深度信念網絡”;于是文獻借助于這思想,也提出了單層字典學習的對應DL算法:深度字典學習。

1、字典學習相關概念

從矩陣分解角度看字典學習過程:給定樣本數據集X,X的每一列表示一個樣本;字典學習的目標是把X矩陣分解成D、Z矩陣:

X≈DZ

同時滿足約束條件:X盡可能稀疏,同時D的每一列是一個歸一化向量。這樣就相當于求解目標函數:


D稱之為字典,D的每一列稱之為原子;Z稱之為編碼矢量、特征、系數矩陣。除了上面這個損失函數之外,字典學習還有另外兩種形式的損失函數,比如k-svd字典學習算法,求解的目標函數就是:

?

具體字典學習相關概念,可以參考我的另外一篇博文《k-svd字典學習》,這邊不再啰嗦。

2、深層字典學習

我們前面講到字典學習說白了就是矩陣分解:

X=DZ

這是一個單層矩陣分解,就相當于單層神經網絡一樣。而文獻所提出的算法是多層字典學習,也就是多層矩陣分解:

X=D1*D2*Z


首先字典學習它是個非凸優化問題,多層字典學習將會變得更加復雜;另外多層字典學習的所要求解的參數大大增加,在有限的訓練樣本下,容易引起過擬合問題。因此文獻提出類似于SAE、DBN一樣,采用逐層訓練學習的思想,這樣可以保證網絡的每一層都是收斂的。算法其實非常簡單,以雙層分解為例進行逐層分解,具體示意圖如下:


(1)我們首先訓練學習出第一層特征Z1、權重D1:

X=D1*Z1

(2)然后對特征Z1進行分解,求解第二層權重D2、特征Z2:

Z1=D2*Z2

以此類推,就可以實現更深層的字典學習。OK,這就是文獻的算法,沒了……(感覺啥也沒學到的樣子,給我的感覺很low,跟文獻《A deep matrix factorization method for learning attribute representations》沒得比呀,這篇文獻至少還有整體微調階段)

3、paper使用方法

在每一層字典學習的時候,我們可以通過添加約束項,選擇稠密特征或者是稀疏特征。

(1)如果要求解稠密特征,那我們就直接求解目標函數:

?

也就是沒有了稀疏約束項。求解方法采用類似lasso,即對兩個變量Z、D交替迭代的方法:

?

(2)如果要求解稀疏特征,那么我們就用L1正則約束項:

?

然后迭代公式就是:

?

對于第二個公式Dk的求解,也是求解一個最小二乘問題。對于稀疏編碼Zk的求解采用ISAT算法,如下公式:


以前字典學習,一般字典的初始化都是從樣本中隨機抽取的,然而本文采用的是QR分解,從Q矩陣中按順序,提取出正交向量,作為初始字典。另外文獻最后采用的網絡模型是,除了最后一層采用稀疏編碼之外,其它層都采用的稠密特征。

三、與RBM、自編碼的區別、聯系

1、與RBM的聯系

RBM是損失函數是采用數據分布相似性度量,而字典學習是采用歐式距離損失函數。RBM要求數據介于0~1之間,如果數據超過這個范圍,那么就需要做歸一化處理。在大部分情況下,歸一化對于我們所要的性能可能沒啥影響,但是在某些特定的情況下它會抑制一些重要的信息。然而字典學習可以讓我們輸入任意復雜的數據。

2、與自編碼的聯系

從我們的分析來看,自編碼是學習W,使得W*X=Z,然而字典學習的目標是學習D使得X=DZ。也難怪文獻中的字典學習網絡的線是畫相反的方向。

四、試驗結果

1、淺層學習與深層學習對比

文獻對比了淺層表征學習和深層表征學習的結果,采用兩種方法進行特征Z的學習,然后采用k近鄰進行分類測試,結果如表一所示。


2、與SAE、DBN的對比

三個網絡模型都采用3層網絡,每層網絡神經元一次減半。同樣的我們利用這兩個算法進行表征學習提取高層特征,然后利用高層特征進行分類:KNN,SVM,測試結果得到表格2、3


最后再采用fune-tuning后的DBN、SAE,與本文的算法做出了對比,得到結果表格IV。可以看到,在某些情況下,即使是fine-tuning的DBN、SAE,精度也比不上文獻的算法DDL:


個人總結:這篇文獻其實非常簡單,就僅僅是講解X=D1*D2*Z的一個求解方法,然而文獻竟然啰嗦了將近10頁;而我竟讓這篇博文也寫了這么多,感覺自己快成了說書的了,越來越能扯……不過文獻所提出的算法雖然簡單,但是作者通過驗證對比,確實是非常牛逼的效果,在無監督的條件下,比自編碼、RBM都要牛逼,甚至連fine-tuning的自編碼、RBM在某些任務下,都無法與之匹敵。不過這個還是比較喜歡另外一篇文獻:《A deep matrix factorization method for learning attribute representations》,這篇文獻講的是深度非負矩陣分解,里面的創新點非常多,這樣可以學到更多的知識,感覺才比較充實。

參考文獻:

1、《Greedy?Deep?Dictionary?Learning》

2、《A deep matrix factorization method for learning attribute representations》

總結

以上是生活随笔為你收集整理的贪婪深度字典学习的全部內容,希望文章能夠幫你解決所遇到的問題。

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