天天看點

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

雷鋒網(公衆号:雷鋒網) ai 科技評論按:計算機視覺盛會 cvpr 2017已經結束了,雷鋒網 ai 科技評論帶來的多篇大會現場演講及收錄論文的報道相信也讓讀者們對今年的 cvpr 有了一些直覺的感受。

相對于

cvpr 2017收錄的共783篇論文,即便雷鋒網 ai

科技評論近期挑選報道的獲獎論文、業界大公司論文等等是具有一定特色和代表性的,也仍然隻是滄海一粟,其餘的收錄論文中仍有很大的價值等待我們去挖掘,生物醫學圖像、3d視覺、運動追蹤、場景了解、視訊分析等方面都有許多新穎的研究成果。

是以我們繼續邀請了宜遠智能的劉凱博士對生物醫學圖像方面的多篇論文進行解讀,延續之前最佳論文直播講解活動,陸續為大家解讀2篇的論文。

劉凱博士是宜遠智能的總裁兼聯合創始人,有着香港浸會大學的博士學位,曾任聯想(香港)主管研究員、騰訊進階工程師。半個月前宜遠智能的團隊剛剛在阿裡舉辦的天池 ai 醫療大賽上從全球2887支參賽隊伍中脫穎而出取得了第二名的優異成績。

8 月 1 日的直播分享中,劉凱博士為大家解讀了「fine-tuning convolutional neural networks for

biomedical image analysis: actively and

incrementally」(用于生物醫學圖像分析的精細調節卷積神經網絡:主動的,增量的)這篇論文,它主要解決了一個深度學習中的重要問題:如何使用盡可能少的标注資料來訓練一個效果有潛力的分類器。以下為當天分享的内容總結。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

劉凱博士:大家好,我是深圳市宜遠智能科技有限公司的首席科學家劉凱。今天我給大家介紹一下 cvpr 2017 關于醫學圖像處理的一篇比較有意思的文章,用的是 active learning 和 incremental learning 的方法。

今天分享的主要内容是,首先介紹一下這篇文章的 motivation,就是他為什麼要做這個工作;然後介紹一下他是怎麼去做的,以及在兩種資料集上的應用;最後做一下簡單的總結,說一下它的特點以及還有哪些需要改進的地方。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

其實在機器學習,特别是深度學習方面,有一個很重要的前提是需要有足夠量的标注資料。但是這種标注資料一般是需要人工去标注,有時候标注的成本還是挺高的,特别是在醫學圖像處理上面。因為醫學圖像處理需要一些

domain

knowledge,就是說醫生對這些病比較熟悉他才能标,我們一般人是很難标的。不像在自然圖像上面,比如imagenet上面的圖檔,就是一些人臉、場景還有實物,我們每個人都可以去标,這種成本低一點。醫學圖像的成本就會比較高,比如我右邊舉的例子,醫學圖像常見的兩種方式就是x光和ct。x光其實一個人一般拍出來一張,标注成本大概在20到30塊錢人民币一張;ct是橫斷面,拍完一個人大概有幾百張圖檔,标注完的成本就會高一點,标注的時間也會比較長。

舉個例子,比如标1000張,這個資料對

deep learning

來說資料量不算太大,x光需要2到3萬人民币、3到4天才能标完;ct成本就會更長,而且時間成本也是一個很重要的問題。那要怎麼解決深度學習在醫學方面、特别是醫學圖像方面的這個難題呢?就要用盡量少的标注資料去訓練一個

promising 的分類器,就是說一個比較好的分類器。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

那我們就要考慮要多少訓練資料才夠訓練一個

promising 的分類器呢?這裡有個例子,比如左邊這個圖,這個模型的 performance

随着資料的增加是一個線性增長的過程,就是說資料越多,它的 performance

就越高。但在實際中,這種情況很少出現,一般情況下都是資料量達到一定程度,它的

performance就會達到一個瓶頸,就不會随着訓練資料的增加而增加了。但是我們有時候想的是把這個臨界點提前一點,讓它發生在更小資料量的時候。比如右邊這個圖的紅色虛線部分,用更小的資料達到了相同的

performance。這篇論文裡就是介紹主動學習 active learning 的手段,找到一個小資料集達到大資料集一樣的效果。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

怎麼樣通過

active learning

的方式降低剛才右圖裡的臨界點呢?就是要主動學習那些比較難的、容易分錯的、資訊量大的樣本,然後把這樣的樣本标記起來。因為這些是比較難分的,容易分的可能幾個樣本就訓練出來了,難分的就需要大量的資料,模型才能學出來。是以模型要先去學這些難的。

怎麼去定義這個“難”呢?就是“難的”、“容易分錯”、“資訊量大”,其實說的是一個意思。這個“資訊量大”用兩個名額去衡量,entropy大和diversity高。entropy就是資訊學中的“熵”,diversity就是多樣性。這個資料裡的多樣性就代表了模型學出來的東西具有比較高的泛化能力。舉個例子,對于二分類問題,如果預測值是在0.5附近,就說明entropy比較高,因為模型比較難分出來它是哪一類的,是以給了它一個0.5的機率。

用 active learning 去找那些比較難的樣本去學習有這5個步驟

首先,把所有的未标注圖檔資料在大量自然圖像中訓練的網絡,大家知道現在有很多常用的網絡,從最初的lenet、alexnet、googlenet、vgg、resnet這樣的網絡中去測試一遍,得到預測值。 然後挑出來那些最難的、資訊量大的樣本去标注

用這些剛剛标注了的樣本去訓練深度學習網絡,得到一個網絡n

把剩下沒有标簽的圖像用n過一遍,得到預測值,挑一遍那些最難的,用人工去給它标注

把剛剛标注了的樣本和原來已經标好的樣本一起,也就是整個标注集拿來繼續訓練這個網絡

重複3到4這個步驟,直到目前的分類器可以對選出來的比較難的圖像很好的分類了。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

剛才的文字講解可能不是很直覺,我們用一個圖來看一下。這個圖從左到右看,一開始灰蒙蒙的意思是都還沒有标注,然後用一個pre-trained

model去預測一遍都是哪個類。這樣每個資料上都有一個機率,可以根據這個機率去選擇它是不是難分的那個資料,就得到了中間這個圖,上面那一段是比較難的,然後我們把它标注出來。然後用一個

continuous fine-tune 的 cnn,就是在原來的模型上再做一次 fine-tune,因為有了一些标注資料了嘛,就可以繼續

fine-tune了。 fine-tune後的模型對未标注的資料又有了一個預測的值,再根據這些預測值與找哪些是難标的,把它們标上。然後把這些标注的資料和之前就标注好的資料一起,再做一次 continuous

fine-tune,就得到

cnn2了。然後依次類推,直到把所有的資料都标完了,或者是在沒有标完的時候模型的效果就已經很好了,因為把其中難的資料都已經标完了。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

剛才提到了兩個名額來判定一個資料是不是難分的資料。entropy比較直覺,預測結果在0.5左右就認為它是比較難分的;但diversity這個值不是很好刻畫,就通過

data

augmentation資料增強的方式來設計名額,就是說從一個圖像設計出一系列它的變形。這些變形就可以是靠翻轉、旋轉、平移操作等等,一個變成了好幾個甚至十幾個,增加了它的多樣性。然後對這些所有的變形去預測它們的分類結果,如果結果不統一的話,就說明這副圖像的diversity比較強,那麼這張圖像就是比較難分的,是hard

sample;反之就是比較好分的,那麼就不去做它的增強了。然後對所有增強以後的資料的預測值應當是一緻的,因為它們代表的是同一個東西,但是也有一些例外,如果是像我剛才說的那樣的簡單的資料增強。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

這就會産生一個問題,原始的圖像,比如左邊這隻小貓,經過平移、旋轉、縮放等一些操作以後得到9張圖,每張圖都是它的變形。然後我們用cnn對這9張圖求是一隻貓的機率,可以看到上面三個圖的機率比較低,就是判斷不出來是一隻貓,我們直覺的去看,像老鼠、狗、兔子都有可能。本來這是一個簡單的例子,很容易識别出來這是一隻貓,但是增強了以後反而讓模型不确定了。這種情況是需要避免的。

是以這種時候做一個 majority selection,就是一個少數服從多數的方式,因為多數都識别出來它是一隻貓了。這就是看它的傾向性,用裡面的6個預測值為0.9的資料,上面三個預測值為0.1的就不作為增強後的結果了。這樣網絡預測的大方向就是統一的了。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

這篇文章的創新點除了active

learning之外,它在學習的時候也不是從batch開始,而是sequential

learning。它在開始的時候效果就不會特别好,因為完全沒有标注資料,它是從一個imagenet資料庫訓練出的模型直接拿到medical的應用裡來預測,效果應該不會太好。然後随着标注資料的增加,active

learning的效果就會慢慢展現出來。這裡是在每一次fine-tune的時候,都是在目前的模型基礎上的進一步fine-tune,而不是都從原始的pre-train的model做fine-tune,這樣就對上一次的模型參數有一點記憶性,是連續的學習。這種思路就跟學術上常見的sequntial

learning和online

learning是類似的。但是有一個缺點就是,fine-tune的參數不太好控制,有一些超參數,比如learning

rate還有一些其它的,其實是需要随着模型的變化而變化的,而且比較容易一開始就掉入local

minimal,因為一開始的時候标注資料不是很多,模型有可能學到一個不好的結果。那麼這就是一個open的問題,可以從好幾個方面去解決,不過解決方法這篇文章中并沒有提。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

這個方法在機器學習方面是比較通用的,就是找那些難分的資料去做sequntial的fine-tune。這篇論文裡主要是用在了醫學圖像上面,用兩個例子實驗了結果,一個是結腸鏡的視訊幀分類,看看有沒有病變、瘤之類的。結論是隻用了5%的樣本就達到了最好的效果,因為其實因為是連續的視訊幀,通常都是差不多的,前後的幀都是類似的,不需要每一幀都去标注。另一個例子也是類似的,肺栓塞檢測,檢測+分類的問題,隻用1000個樣本就可以做到用2200個随機樣本一樣的效果。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

這個作者我也了解一些,他是在 asu 的phd學生,然後現在在梅奧,美國一個非常著名的私立醫院梅奧醫院做實習,就跟需要做标注的醫生打交道比較多。這相當于就是一個從現實需求得出來的一個研究課題。

總結下來,這篇文章有幾個比較好的亮點。

從标注資料來說,從一個完全未标注的資料集開始,剛開始的時候不需要标注資料,最終以比較少量的資料達到很好的效果;

然後,從sequntial fine-tune的方式,而不是重新訓練;

選擇樣本的時候,是通過候選樣本的一緻性,選擇有哪些樣本是值得标注的;

自動處理噪音,就是剛才舉的貓的那個例子,資料增強的時候帶來的噪音,通過少數服從多數的方式把那些噪音去掉了;

在每個候選集隻選少量的patches計算熵和kl距離,kl距離就是描述diversity的名額,這樣減少了計算量。傳統的深度學習的時候會需要在訓練之前就做資料增強,每個樣本都是同等的;這篇文章裡面有一些資料增強不僅沒有起到好的作用,反而帶來了噪音,就需要做一些處理;而且還有一些資料根本不需要增強,這樣就減少了噪音,而且節省了計算。

CVPR 2017精彩論文解讀:顯著降低模型訓練成本的主動增量學習 | 分享總結

q:為什麼開始的時候 active learning 沒有比random selection好?

a:其實不一定,有時候是沒有辦法保證誰好。active

learning在一開始的時候是沒有标注資料的,相當于這時候它不知道哪些資料是hard的,在這個醫學資料集上并沒有受到過訓練。這時候跟

random selection 就一樣了,正在遷移原來 imagenet 圖像的學習效果。random selection 則有可能直接選出來

hard的那些結果,是以有可能比剛開始的active selecting要好一點,但這不是每次都是 random selection

好。就是不能保證到底是哪一個更好。

(完)

雷鋒網 ai 科技評論整理。系列後續的論文解讀分享也會進行總結整理,不過還是最希望大家參與我們的直播并提出問題。

繼續閱讀