[轉] 無監督特徵學習——Unsupervised feature learning and deep learning

  from:http://blog.csdn.net/abcjennifer/article/details/7804962php

無監督學習近年來很熱,前後應用於computer vision, audio classification和 NLP等問題,經過機器進行無監督學習feature獲得的結果,其accuracy大多明顯優於其餘方法進行training。本文將主要針對Andrew的unsupervised learning,結合他的視頻:unsupervised feature learning by Andrew Ng作出導論性講解。html

 

關鍵詞:unsupervised learningfeature extractionfeature learningSparse CodingSparse DBNSparse MatrixComputer VisionAudio ClassificationNLP算法

 

Unsupervised feature learning and deep learning 是斯坦福大學機器學習大牛Andrew Y Ng. 近年來研究的主要領域,他在今年的一份工做Building high-level features using large scale unsupervised learning中就經過unsupervised learning解決了從only unlabeled data上創建高維feature detectors的問題。dom

 

 

 

=========================第一部分:傳統方法Pattern Recognition=========================機器學習

 

一般的,咱們進行pattern recognition是這樣的:ide


對於不一樣類別的feature extraction都是必備的一部分,computer進行detection的 perception就是這樣的:函數


 

下面分別就這三類問題,<Object detection><Audio Classification><NLP>進行經典feature回顧:學習


 


 


 

 

人類的視覺系統、聽覺系統 應該說是很是之complex,若是想要得到咱們視覺系統看到的東西(computer perception),有兩種方法:測試

一種方法就是描述出咱們的視覺系統在觀察object的時候提取的那些特徵(好比各類不一樣物體間的parts在2D、3D中的內容,是哪些特徵讓咱們看出物體的區別,object parts之間的鏈接關係等)。ui

另外一種方法更爲general,咱們可否挖掘出一個general 的 算法,它能夠揭示大多數perception的造成(換言之,就是揭示一種人眼從看到識別出的算法)。

不知道這裏我講明白沒?

沒的話能夠參考下下面兩段:

We can try to directly implement what the adult visual (or audio) system is doing. (E.g., implement features that capture different types of invariance, 2d and 3d context, relations between object parts, …). 
Or, if there is a more general computational principal/algorithm that underlies most of perception, can we instead try to discover and implement that?  

對於下面的audio,和圖像是同樣的道理,咱們能不能用一種算法學習出其feature,對一幅圖像或者一段audio進行描述?


 

對於圖像,最直觀的描述方法及就是用pixels,傳統的方法爲supervised learning, 給定一組正樣本和一組負樣本,經過提取feature訓練進行學習,並進行識別測試:


不一樣於有監督學習,Unsupervised learning經過訓練一些列有label的和無label的數據集學習一幅圖像中的feature(學習出什麼樣的feature是motocycle的,什麼樣的feature是car的)……


 

那麼,怎樣學習有哪些feature呢?下面先介紹unsupervised learning中的一種方法——Sparse Coding,讀者能夠試着和前面我講過的壓縮感知系列相結合來想一想看。

 

 

 

 

=================第二部分:Sparse Coding——A unsupervised learning Algorithm=================

Sparse Coding 是 Unsupervised Learning Algorithm中的一種,能夠用於Feature learning.

 


下面是我對Sparse Coding的解釋,作的筆記……


 

用Sparse Coding的例子進行說明。

好比在圖像的Feature Extraction的最底層要作Edge Detector的生成,那麼這裏的工做就是從Natural Images中randomly選取一些小patch,經過這些patch生成可以描述他們的」基「,也就是右邊的8*8=64個basis組成的basis(具體選取基的方法能夠參考個人兩篇文章——壓縮感知初識壓縮感知之HelloWorld),而後給定一個test patch, 咱們能夠按照上面的式子經過basis的線性組合獲得,而sparse matrix就是a,下圖中的a中有64個維度,其中非零項只有3個,故稱」sparse「。

 

這裏可能你們會有疑問,爲何把底層做爲Edge Detector呢?上層又是什麼呢?這裏作個簡單解釋你們就會明白,之因此是Edge Detector是由於不一樣方向的Edge就可以描述出整幅圖像,因此不一樣方向的Edge天然就是圖像的basis了……

而上一層的basis組合的結果,上上層又是上一層的組合basis……(具體請往下看)

以下圖所示:


其餘的例子同理:注意看下面的文字(第二條)


下圖所示爲從爲標號的audio上學習出的20個基函數(如小波變換):


 

 

 

 

===================第三部分:Learning Features Hierachy & Sparse DBN===================

所創建的自動feature學習過程是一個自底向上逐漸學習features的sparse coding過程:


 


以Sparse DBN:Training on Faces爲例,這裏從下向上依次是上圖的hierarchy的Input Image,Model V1(Edge Detector),Model V2(Object Parts),Model V3(Object Models),具體講解見下面我作的筆記:


下面是對上圖的解釋,請對照着看:

圖中所示最下方的24個basis function用於Edge Detection, 好比最左上角的那個基用於檢測85°的edge;

中間的32個基(Object Parts)分別是 eye detector, nose detector……其之因此爲基是由於,一張face可有這些parts組合而成;

最上面一層的24個基就是face model了。

 

==========================

在不一樣object上作training是,所得的edge basis 是很是類似的,但object parts和models 就會completely different了:


當訓練數據由4類圖像組成時,上層提取出的feature會不一樣,最終生成的object model也會包含4類圖像特定的模型:


下圖是動做識別上,不一樣算法的準確率比較:


Sparse DBN on Audio同理,對於一個Spectrogram,逐層提取feature過程以下圖所示:


 


 


 

 

 

===================第四部分:技術問題——Scaling Up===================


進行Pattern Recognition的一個重大問題就是特徵提取,而上面這幅圖中咱們能夠看出不一樣算法在Features數目不一樣的狀況下,其交叉驗證(Cross Validation在ML第六課中講過)的Accuracy,可見feature越多,給出的參考信息越多,所得accuracy通常越好。那麼,有哪些方法進行feature的挖掘使得scaling up呢?有興趣的能夠研究研究,互相交流下哈!

 


 

 

 

 

===================第五部分:Learning Recursive Representations===================

這部分咱們主要以NLP爲例,看一下怎麼樣遞歸的進行語義分析,天然語言組成:

首先咱們看下用多維向量(圖中簡化爲2維)表示一個單詞的形式:


 

一句話:The cat sat on the mat. 進行自底向上的feature學習,能夠發現,有的neuron上有意義,如圖中箭頭所指的那個neuron就不make sense.


 

training process:Parsing a Sentence


 

就這樣recursively選擇make sense的neuron成爲該層新的神經元:


 

咱們在每層選取有意義的神經元后創建起最終的句型:


 

好了,說完了NLP的parsing sentence問題,咱們回頭來看image processing(IP), 其實,他們的道理相同,都是找到make sense的小patch再將其進行combine,就獲得了上一層的feature,遞歸地向上learning feature。該圖中,上面是NLP,下面是IP。


 

 

 

===================小結===================

最後咱們對Unsupervised feature Learning作一個小結:

•  Features 由 機器學習,而非人爲指定

•  找到perception下隱藏的feature基

•  Sparse coding 和 deep learning在CV和Audio Recogization上的識別率很是好,幾乎是state of art的程度。

 

Reference :

http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

Deep Learning

Sparse DBN (Deep Belief Nets)

 

A tutorial on Deep Learning

 

 

 

關於Machine Learning更多的學習資料將繼續更新,敬請關注本博客和新浪微博Sophia_qing

相關文章
相關標籤/搜索