AMMAI

鬱金香可能是花!

昨天報告的時候講到鬱金香不是花這一神奇論述,覺得怪怪的,還是查證一下。

首先我發現我誤會論文了,上面是寫WordNet認為鬱金香不是花(見下圖),但我誤認為他寫的是百科全書中認定鬱金香不是花。這顯然就是一種簡化世界的機制帶來的認知錯誤,因為這一段的開頭提到common sense跟encyclopedic knowledge可能有衝突,我就把後面的例子都簡化成百科全書了。

1

因為有點好奇,我還是去查了一下,鬱金香是一個屬,依序是:

植物界=>被子植物門=>單子葉植物綱=>百合目=>百合科=>鬱金香屬

雖然沒有找到關於花的嚴格定義,但是鬱金香有花柱、花瓣、花蕊等等構造,應該也算是一種花吧。因為不能確定,所以標題只敢下鬱金香可能是花XD

AMMAI

Fisher Vector簡介

這禮拜因為要上台報告,發現如果沒好好弄懂這東西可能會講不清楚,想說既然有機會那就好好地學一下這個技巧,畢竟由其衍生出來的VLAD聽說是在深度學習出來前,分類準確率最高的image representation方法。

先附上兩個可以供參考的資源:

http://blog.csdn.net/breeze5428/article/details/32706507

http://www.duzhongxiang.com/fisher-vector/

不過最後幫助我弄懂的還是”Fisher Kernel on Visual Vocabularies for Image Categorization”這篇第一個把Fisher Kernel用在影像分類上的論文,如果不排斥的話,還是去看看會比較好。

先不講數學,主要觀念比較重要。Fisher Vector主要的概念是,我先用GMM來model一張影像的local descriptor分佈,所以對不同的影像來說,我都只需要用GMM就可以描述,也就是說每張影像都可以被表現成一個維度一樣的向量(維度就等於GMM的parameter數)。這邊厲害的地方在於,原本每張影像所取出的local descriptor數都不盡相同,但因為用GMM描述,就可以讓每一張影像被表示成維度相同的向量。

但Fisher Vector沒有這麼單純,他不是單純用GMM的每個參數值來表示一張影像,他是先定義一個function,這個function定義了一張影像跟GMM對這張影像的model的相似程度。然後藉由對GMM每個參數做偏微分,就可以得到每個參數變化一點點,這張影像跟GMM對這張影像的model的相似程度的變化量,把每個偏微分都定義成Vector的一個維度,就可以得到一個長度還是跟參數量一樣的Vector。最後,為了分類器的需求,再把這個vector用Fisher Information Matrix做完normalization,就可以得到Fisher vector了。

AMMAI

AMMAI(Week 15) – What does classifying more than 10,000 image categories tell us?

Paper Info

“What does classifying more than 10,000 image categories tell us?,” J. Deng, A. C. Berg, K. Li, and L. Fei-Fei, ECCV 2010.

Motivation

人類可以辨識的物體種類有成千上萬種,那如果嘗試讓電腦來辨識這麼多種的物體,會出現哪些問題?這是這篇論文主要想探討的問題。

Technical Summary&Experiment

因為這篇論文比較是討論性質的,所以重點在實驗,所以把Technical Summary跟Experiment合在一起寫。

使用的Datasets

ImageNet10K, ImageNet7K, ImageNet1K, Rand200, Ungulate183, Fungus134, Vehicle262, CalNet200

Evaluation的方法

mean accuracy, mean misclassfication cost(例如把狗分類成貓跟把狗分類成汽車的錯誤程度是不同的)

分類演算法

GIST+NN, BOW+NN, BOW+SVM, SPM+SVM

運算時間的分析

這邊他們做了滿多種方法的分析,但發現有很多方法,光是訓練分類器就要花上以年為單位的時間,然後testing需要數小時來跑完全部影像的分類,所以他們有試著去用平行運算來處理,發現如果用66個CPU的叢集一起算,只要幾個禮拜就可以訓練完,所以他們認為需要平行運算才能處理這麼多類的物體分類問題。

類別數量的分析

當類別數量增加,準確度會下降,實驗結果在下圖中呈現,有趣的地方是,原本在比較少類別的資料中表現較好的SVM居然在類別變多時輸給了簡單的NN方法。他們的猜測是,1-vs-all的分類器在種類更多的時候會有更差的表現(因為每個種類都一樣多張影像的話,種類越多,表示對的資料比例急速下降,所以分類器得到的正確範例很少,自然學不好)。

1

另外一個實驗的結果指出有些class因為彼此之間有關係,所以分類結果會相關。

1

資料庫內種類密度的分析

作者們發現了一件有趣的事情,雖然很直覺,但我覺得很重要。就是資料庫內的物體種類越密集(密集度由wordnet當中這些類別之間的距離平均來計算),分類器的辨識結果就會越差。

1

利用語意的階層來幫助分類的分析

他們主要的argument很有道理,就是如果分類器把貓分成夠,這樣的錯誤應該要比把貓分成微波爐還要小,但原本的分類只有分正確或錯誤,就沒有辦法反映這個現象。所以他們定出hierarchical cost,使用WordNet的距離來定義cost(那因為貓跟狗的距離比貓跟微波爐的距離小,就可以把cost function變得更好)。

1

2

Contribution

這篇論文應該是第一個探討極大量種類的物體辨識的論文,討論的面向相當完整,而且他們有提出怎麼利用WordNet的類別來幫助改進分類器的辨識結果(利用一種hierarchical cost),我覺得有運用到人類如何做物體辨識的概念,是吸當有趣的研究。

Question

1. 是不是一定要實作出人類的認知架構才夠達到人類班的辨識水平?考慮到人類的學習其實包含視覺,觸覺等多種知覺的刺激,真的有可能只藉由影像的data得到很好的物體辨識模組嗎?

AMMAI

AMMAI(Week 14) – Text Understanding from Scratch

Paper Info

Zhang, Xiang, and Yann LeCun. “Text Understanding from Scratch.” arXiv preprint arXiv:1502.01710 (2015).

Motivation

這篇論文嘗試用Deep Learning來做各種文字分析的task, 包含ontology classification, sentiment analysis跟text categorization等。

Technical Summary

怎麼將character表示成向量

他們統一將字母用69維的向量表示,69維包含26個字母,10個數字跟33個其他符號,而如果是空白就用69維的0向量表示。而且不需要做normalization就可以達到還不錯的效果。

ConvNet model設計

他們設計了一大一小的類神經網路,兩個都是6層的conv layer,3層的FC layer。

1

2

3

Data Augmentation技巧

在理想情況下,讓人來把訓練資料裡的句子用不同的用法重新寫過會很有用,但實際上因為成本不可能這樣做,所以這邊的作法就是把句子中可以替換掉的字換成同義字,藉以增加訓練資料的多樣性。不過從實驗結果可以看出有沒有做這一步其實沒有差很多。

Experiment

因為有很多資料庫都是他們自己建的,沒有現成數據以供比較,所以他們又實作了BOW跟Word2vec來進行比較。

DBpedia Ontology Classification

1

Amazon Review Sentiment Analysis

2

3

Yahoo! Answer Topic Classification

4

News Categorization in English

5

News Categorization in Chinese

6

Contribution

他們在某種程度上證明即時沒有任何事先知道的knowledge,利用深度學習,單純靠字母level的輸入也可以做到很不錯的精準度。

AMMAI

AMMAI(Week 13) – Deep neural networks for acoustic modeling in speech recognition

Paper Info

Hinton, Geoffrey, et al. “Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups.” Signal Processing Magazine, IEEE 29.6 (2012): 82-97.

Motivation

以往的Speech recognition做法主要都是利用HMM來model聲音訊號的順序關係(frame to frame)、配合GMM來model單一frame,而這篇希望討論利用DNN來取代GMM的做法,另外也討論了DNN的其他性質和可能用法。

Technical Summary

怎麼將聲音訊號導入DNN

DNN的用法是接收MFCC或是Filter-bank的係數(也就是一個高維度的向量),然後輸出就是這個向量屬於每個state的機率。而且有趣的是,DNN+HMM的方法使用Filter-bank的係數得到的performance還比MFCC好,論文上指出說可能是因為GMM需要input的資料的每個維度彼此比較獨立,但DNN不需要。

怎麼把DNN跟HMM接起來

DNN的輸出就可以當作HMM的輸入,這是比較簡單的做法。

另外這篇論文滿詳細地說明了用RBM跟DBN來做預訓練的方法,雖然後來發現不太需要做預訓練也可以達到很好的效果。

Experiment

他們有在TIMIT上面做測試,也有在一些比較large scale的dataset測試performance。

1

2

3

Contribution

這篇論文把DNN應用於語音辨識的主要概念、方法還有跟前人的比較都做了詳盡的介紹,是一篇入門語音處理的重要論文,基本上掌握HMM-GMM跟這篇應該就對語音處理會有一個大的綱架了。

Question

1.為什麼用GMM來model球面上很接近的一些點會需要用到一堆Gaussian?

Tools Learned

Deep belief network, Restricted Boltzmann Machine

AMMAI

AMMAI(Week 12) – Rich feature hierarchies for accurate object detection and semantic segmentation

Paper Info

“Rich feature hierarchies for accurate object detection and semantic segmentation.” Girshick, Ross, et al. CVPR 2014.

Motivation

之前的論文主要是將DNN應用在global的影像分類上,但如果我們想將影像中的物體一個個的locate出來並貼上標籤,那就是完全不同的task,所以這篇論文被提出來處理這個問題。

Technical Summary

主要架構圖

1

從主要架構圖可以看出,其實在經過region proposal之後,後面做的事情就像是一般的image classification(不過這篇是使用linear SVM來做分類)。所以在test stage,他們用selective search的方法產生2000個左右的region,接著把每個region都直接warp成227×227的影像,餵進CNN後就都變成同樣長度的特徵向量,再提供給SVM做最後的分類。

能夠做warping的理由也滿直觀的,我覺得warping後的結果依然可以被人所辨識,這表示重要的特徵其實是還留著的,所以CNN理論上也可以萃取出來。

1

另外一點值得關注的點是,他們在training的時候用到了ILSVRC的data來幫忙訓練,因為CNN需要大量的訓練資料,所以不太可能只由PASCAL VOC的data來訓練。他們證明可以先用比較general的大量資料來做預訓練、再用小量的domain specific資料來做訓練。(ILSVRC有1000類、PASCAL VOC只有21類)

Experiment

這個方法在PASCAL VOC上的mAP比之前最好的結果多了30%,非常厲害。

3

2

Contribution

1. 他們把CNN的架構跟bottom up的region proposal方法結合起來,使得CNN也可以處理物體定位跟辨識的問題。

2. 當training data不多的時候,他們也可以利用ILSVRC的data來做pre-training,再用僅有的一些data做fine tuning也可做到不錯的結果。

Question

1. 能不能不要做warping,直接把影像放進227×227的大小,其他塞0就好? 這樣效果會如何?

Tools Learned

Selective search, R-CNN, Region proposal方法(2.1中列了很多)

AMMAI

AMMAI(Week 11) –ImageNet Classification with Deep Convolutional Neural Networks

Paper Info

“ImageNet Classification with Deep Convolutional Neural Networks,” Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton, NIPS 2012.

Motivation

這篇論文嘗試把DNN的架構用在ImageNet的比賽上,討論了其中的做法跟需要考慮的設計因素。

Technical Summary

整體的架構圖

1

上面的架構圖是這篇論文的精髓,一開始從最左邊輸入一張224×224影像,然後第一層我們用48個kernel(每個都是11x11x3的大小),所以到第一層會有48張55×55的feature map。然後Max pooling的意思是把值比較大的區塊再取出來(有點取response最強的部分的味道)。之後4層都是一樣的意思。

經過5層的conv跟pooling,最後會得到一個feature vector。接下來再用3層的Fully connected NN來訓練1000種的分類,最後得到分類的結果。所以前面的5層主要是萃取特徵、後面的3層是要做分類。

避免overfitting

他們主要使用了Dropout跟Data augmentation的方法來減少overfitting。

Experiment

他們用ILSVRC的performance來比較

0

2

他們的方法用來作query的效果也很好

1

Contribution

這篇論文算是開啟DNN應用於影像分類的經典論文,之前雖然陸續有一些研究,但都沒有辦法做到這麼好的效果,這篇算是真的用DNN做出很好結果的第一篇。

Tools Learned

CNN, Dropout, Pooling

AMMAI

AMMAI(Week 10) – Story-driven summarization for egocentric video

Paper Info

Z. Lu and K. Grauman. Story-driven summarization for egocentric video. CVPR 2013.

Motivation

這篇論文主要是想把一個egocentric的影片(例如用google glass或go pro拍的影片)所說的故事做一個摘要,這個摘要用幾張字影片截取出的圖片呈現。

Technical Summary

要做到這樣的一個摘要,這篇論文是把影片中重要的影像(subshot)取出來,再把這些影像的因果關係理出來。所以第一個重點就是要怎麼表示subshot,第二個重點就是要怎麼判斷一串subshot好不好。

Goal Definition

首先這篇論文把一個影片表示n個subshot的組合

1

然後假設只取其中K個當作摘要

 2

 所以如果有某種評分的函數,目標就是要挑選最大化這個函數的摘要

3

其中要注意的是他使用了story, importance, diversity當作評分機制

4

Subshot表示法

他們首先將一連串的frame都分成三類中的其中一類-static, transit(人在移動), moving the head(注意力轉移),其中移動跟注意力轉移只要看光流方向就可以決定。接著用MRF把label變得比較smooth,例如static=>transit=>static=>transit這種轉移發生的機率就很低,然後把一串同一個label的frame變成一個subshot。(這就是他們的subshot segmentation方法)

剩下的就只是偵測subshot中有出現的物體,如果有比較多見過的物體就用預先train好的物體模型、如果沒有就用unsupervised的visual word表示。

評分機制

story的評分方式是最有趣的,主要精神是要讓subshot之間的影響大的chain評分高,所以他們定義了objective function:

1

我覺得最有趣的地方在於他們把subshot跟object連成一個bipartite graph,然後從subshot A開始random walk,如果”常常”走到subshot B,表示A跟B之間的連結性很高。(當然這種graph要好,其中的重點就在於edge的權重要怎麼定,這裡是定成object在subshot中出現的頻率)

importance是參考其他paper的方法來計算,而diversity就只是算畫面的差異程度,都不是太重要。

Experiment

我覺得這篇論文的實驗滿值得一看的,因為要是我來做這樣的一個題目,我還真不知道要怎麼量化來比較我的結果是好還是不好。我初步的想法是可以先建立一個資料庫,讓很多人一起來評分,先建立起一個大家普遍覺得好的摘要,然後再用相似性來比較我的摘要跟資料庫提供的正確摘要是不是夠像。

後來發現他們是讓使用者去評分哪一段summary最好,藉以跟其他方法比較。

1

1

Contribution

跟傳統的方法比較起來,這篇論文提出的摘要方法更傾向把影片中事件發生的因果關係找出來。在戲劇的理論中有提到故事跟情節的差異,故事是一串事件的描述,而情節是包含這些事件之間的因果關係,有因果關係才有很多變化可以延伸,有些因果合理卻鮮少發生是造成戲劇張力的重要因素,而電腦怎麼去把這種摘要提升到藝術層次,了解因果是重要的第一步,這是這篇論文的重要貢獻。

Tools Learned

Bipartite graph的設計方法

AMMAI

AMMAI(Week 9) – Latent Dirichlet allocation

Paper Info

“Latent Dirichlet allocation,” D. Blei, A. Ng, and M. Jordan. . Journal of Machine Learning Research, 3:993–1022, January 2003.

Motivation

這篇論文的目標是要改進PLSA方法的缺陷(當training data很多的時候,矩陣會變得很大,造成計算上的麻煩)。

Technical summary

LDA主要概念

1

先看看上圖可以知道LDA跟PLSA的差異在於LDA在document到 topic之間的model變成α-θ-z 的關係,此外,在產生w的機率分佈時也加上β這個機率分佈。

整個流程是

1.透過α產生document的主題機率分佈θ
2.從θ中取樣生成第n個字的主題z(假設有k個主題,那z就是k個裡面的其中一個)
3.透過β跟z產生最後的word

訓練的方法待補

Experiment

比較模型的perplexity(perplexity低表示這個模型較佳)

1

比較分類結果

2

Contribution

LDA這個方法的topic是用機率分佈產生的,所以model 需要 train 的參數也跟著大幅減少(因為不用記每個 document 的topic分布)。

Question

1.為什麼要用Dirichlet distribution當作 p(z|d)的機率分佈?直觀上怎麼理解?

2.加上β的好處是什麼?他跟z的機率分佈差在哪裡?

Tools Learned

LDA

AMMAI

AMMAI HW1 – L1 General學習筆記

最近的事多到有一點誇張啊,趁今天心情不錯來玩一下作業zz

基本上要解Part III需要用到”Semi-supervised face image retrieval using sparse coding with identity constraint”上的第一個reference,也就是L1 General這個工具:http://www.cs.ubc.ca/~schmidtm/Software/L1General.html

乍看之下不知道要怎麼上手,不過幸好他有提供範例,範例永遠是你的好朋友XDDD

我是從Lasso的範例切入:http://www.cs.ubc.ca/~schmidtm/Software/L1General/examples.html#2

基本作法很簡單,就是一直把指令丟進去Matlab然後直接看結果理解就好了哈哈。例如X跟Y的指令我根本就看不懂,不過把指令輸進去之後會發現X是250*50的一個矩陣,Y是一個250*1的向量,所以顯然我們希望用X當作字典來表示Y。

1

再把式子寫出來以利之後比對

2

經過上面的猜測,接下來再看code應該比較好理解。

% LASSO
lambda = 100*ones(nVars,1); %是一個50*1的向量,值都一樣,表示X中每個basis的懲罰是一樣的
funObj = @(w)SquaredError(w,X,y); 
%這個funObj包含了3個重要的項-(wX-y)^2, gradient跟Hessian以利L1General2_PSSgb呼叫

w_init = wRR; %初始值,用在我們的例子的話就是作業Part II得到的sparse representation
wLASSO = L1General2_PSSgb(funObj,w_init,lambda); %然後就算出來了呵呵(這時已經有點崩潰

接下來的問題就是怎麼把下面那個可愛的式子的前兩項寫成funObj了,明天再來想想好了。

1