畢設日記20200213-小樣本學習起步

小樣本學習暫時可以理解爲無監督或者半監督學習。下面是引用一些其他人的話,不是很官方,但是也基本可以解釋什麼是小樣本學習。

人類非常擅長通過極少量的樣本識別一個新物體,比如小孩子只需要書中的一些圖片就可以認識什麼是“斑馬”,什麼是“犀牛”。在人類的快速學習能力的啓發下,研究人員希望機器學習模型在學習了一定類別的大量數據後,對於新的類別,只需要少量的樣本就能快速學習,這就是 Few-shot Learning 要解決的問題。 

Few-shot Learning 是 Meta Learning 在監督學習領域的應用。Meta Learning,又稱爲 learning to learn,在 meta training 階段將數據集分解爲不同的 meta task,去學習類別變化的情況下模型的泛化能力,在 meta testing 階段,面對全新的類別,不需要變動已有的模型,就可以完成分類。 

形式化來說,few-shot 的訓練集中包含了很多的類別,每個類別中有多個樣本。在訓練階段,會在訓練集中隨機抽取 C 個類別,每個類別 K 個樣本(總共 CK 個數據),構建一個 meta-task,作爲模型的支撐集(support set)輸入;再從這 C 個類中剩餘的數據中抽取一批(batch)樣本作爲模型的預測對象(batch set)。即要求模型從 C*K 個數據中學會如何區分這 C 個類別,這樣的任務被稱爲 C-way K-shot 問題 

所以,實驗的中後期可以參考無監督學習中的一些方法來完成畢設,這裏有幾個不錯的回答和文章可以參考。

知乎-近期無監督或半監督行人重識別有什麼進展

Unsupervised Salience Learning for Person Re-identification

什麼是小樣本學習

知乎上關於少樣本學習的一篇文章

目前的任務還是把基本的這些代碼跑通,後面再根據小樣本學習做一下改進,學習pytorch是一個重要的目標。

今天對數據進行了一些處理,之前的理解真的很成問題,之前還想着如何把數據保存在數據庫中,我可真是一個數據庫小王子,放在科研上,這麼搞就有點累了,不如本地數據庫方便,所以我把數據基本都按照pickle文件的處理方式存放在了pkl文件中,比如隨機選取每個id的一張圖片放在了probe,剩下的放在了gallery,昨天和學姐的討論時,一般這個gallery數據集是比較大的,和英文的意思也基本相符,然後probe是比較小的,所以每個選取了一張,也和基本的測試流程一致,之後和學姐討論一下,如果可以後面的數據就先這麼處理了。

另外在今天學到不少新知識,比如對數組的處理中,pop() remove() 和extend()都是很好用的方法,和下面的圖一樣

上午還學習了pytorch,對裏面的一些基本數據類型有了瞭解,總算是把dim,shape和size搞明白了,dim爲0表示標量,dim爲1表示的是普通的向量,比如one hot這種形式,dim爲2是這樣的[[1, 2]],這個tensor實際上就是1*2的一個tensor。

今天還算充實,加油! 

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