Unsupervise learning——Unsupervised feature learning and deep learning

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


關鍵詞: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的問題。




=========================第一部分:傳統方法Pattern Recognition=========================


通常的,我們進行pattern recognition是這樣的:


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



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








人類的視覺系統、聽覺系統 應該說是非常之complex,如果想要獲得我們視覺系統看到的東西(computer perception),有兩種方法:

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

另一種方法更爲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的程度。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章