0
本文作者: 楊曉凡 | 2017-08-04 22:12 | 專題:CVPR 2017 |
雷鋒網 AI 科技評論按:計算機視覺盛會 CVPR 2017已經結束了,雷鋒網 AI 科技評論帶來的多篇大會現(xiàn)場演講及收錄論文的報道相信也讓讀者們對今年的 CVPR 有了一些直觀的感受。
相對于 CVPR 2017收錄的共783篇論文,即便雷鋒網 AI 科技評論近期挑選報道的獲獎論文、業(yè)界大公司論文等等是具有一定特色和代表性的,也仍然只是滄海一粟,其余的收錄論文中仍有很大的價值等待我們去挖掘,生物醫(yī)學圖像、3D視覺、運動追蹤、場景理解、視頻分析等方面都有許多新穎的研究成果。
所以我們繼續(xù)邀請了宜遠智能的劉凱博士對生物醫(yī)學圖像方面的多篇論文進行解讀,延續(xù)之前最佳論文直播講解活動,陸續(xù)為大家解讀2篇的論文。
劉凱博士是宜遠智能的總裁兼聯(lián)合創(chuàng)始人,有著香港浸會大學的博士學位,曾任聯(lián)想(香港)主管研究員、騰訊高級工程師。半個月前宜遠智能的團隊剛剛在阿里舉辦的天池 AI 醫(yī)療大賽上從全球2887支參賽隊伍中脫穎而出取得了第二名的優(yōu)異成績。
在 8 月 1 日的直播分享中,劉凱博士為大家解讀了「Fine-tuning Convolutional Neural Networks for Biome?dical Image Analysis: Actively and Incrementally??」(用于生物醫(yī)學圖像分析的精細調節(jié)卷積神經網絡:主動的,增量的)這篇論文,它主要解決了一個深度學習中的重要問題:如何使用盡可能少的標注數(shù)據來訓練一個效果有潛力的分類器。以下為當天分享的內容總結。
劉凱博士:大家好,我是深圳市宜遠智能科技有限公司的首席科學家劉凱。今天我給大家介紹一下 CVPR 2017 關于醫(yī)學圖像處理的一篇比較有意思的文章,用的是 active learning 和 incremental learning 的方法。
今天分享的主要內容是,首先介紹一下這篇文章的 motivation,就是他為什么要做這個工作;然后介紹一下他是怎么去做的,以及在兩種數(shù)據集上的應用;最后做一下簡單的總結,說一下它的特點以及還有哪些需要改進的地方。
其實在機器學習,特別是深度學習方面,有一個很重要的前提是需要有足夠量的標注數(shù)據。但是這種標注數(shù)據一般是需要人工去標注,有時候標注的成本還是挺高的,特別是在醫(yī)學圖像處理上面。因為醫(yī)學圖像處理需要一些 domain knowledge,就是說醫(yī)生對這些病比較熟悉他才能標,我們一般人是很難標的。不像在自然圖像上面,比如ImageNet上面的圖片,就是一些人臉、場景還有實物,我們每個人都可以去標,這種成本低一點。醫(yī)學圖像的成本就會比較高,比如我右邊舉的例子,醫(yī)學圖像常見的兩種方式就是X光和CT。X光其實一個人一般拍出來一張,標注成本大概在20到30塊錢人民幣一張;CT是橫斷面,拍完一個人大概有幾百張圖片,標注完的成本就會高一點,標注的時間也會比較長。
舉個例子,比如標1000張,這個數(shù)據對 deep learning 來說數(shù)據量不算太大,X光需要2到3萬人民幣、3到4天才能標完;CT成本就會更長,而且時間成本也是一個很重要的問題。那要怎么解決深度學習在醫(yī)學方面、特別是醫(yī)學圖像方面的這個難題呢?就要用盡量少的標注數(shù)據去訓練一個 promising 的分類器,就是說一個比較好的分類器。
那我們就要考慮要多少訓練數(shù)據才夠訓練一個 promising 的分類器呢?這里有個例子,比如左邊這個圖,這個模型的 performance 隨著數(shù)據的增加是一個線性增長的過程,就是說數(shù)據越多,它的 performance 就越高。但在實際中,這種情況很少出現(xiàn),一般情況下都是數(shù)據量達到一定程度,它的 performance就會達到一個瓶頸,就不會隨著訓練數(shù)據的增加而增加了。但是我們有時候想的是把這個臨界點提前一點,讓它發(fā)生在更小數(shù)據量的時候。比如右邊這個圖的紅色虛線部分,用更小的數(shù)據達到了相同的 performance。這篇論文里就是介紹主動學習 active learning 的手段,找到一個小數(shù)據集達到大數(shù)據集一樣的效果。
怎么樣通過 active learning 的方式降低剛才右圖里的臨界點呢?就是要主動學習那些比較難的、容易分錯的、信息量大的樣本,然后把這樣的樣本標記起來。因為這些是比較難分的,容易分的可能幾個樣本就訓練出來了,難分的就需要大量的數(shù)據,模型才能學出來。所以模型要先去學這些難的。
怎么去定義這個“難”呢?就是“難的”、“容易分錯”、“信息量大”,其實說的是一個意思。這個“信息量大”用兩個指標去衡量,entropy大和diversity高。entropy就是信息學中的“熵”,diversity就是多樣性。這個數(shù)據里的多樣性就代表了模型學出來的東西具有比較高的泛化能力。舉個例子,對于二分類問題,如果預測值是在0.5附近,就說明entropy比較高,因為模型比較難分出來它是哪一類的,所以給了它一個0.5的概率。
用 active learning 去找那些比較難的樣本去學習有這5個步驟
首先,把所有的未標注圖片數(shù)據在大量自然圖像中訓練的網絡,大家知道現(xiàn)在有很多常用的網絡,從最初的LeNet、AlexNet、GoogLeNet、VGG、ResNet這樣的網絡中去測試一遍,得到預測值。 然后挑出來那些最難的、信息量大的樣本去標注
用這些剛剛標注了的樣本去訓練深度學習網絡,得到一個網絡N
把剩下沒有標簽的圖像用N過一遍,得到預測值,挑一遍那些最難的,用人工去給它標注
把剛剛標注了的樣本和原來已經標好的樣本一起,也就是整個標注集拿來繼續(xù)訓練這個網絡
重復3到4這個步驟,直到當前的分類器可以對選出來的比較難的圖像很好的分類了。
剛才的文字講解可能不是很直觀,我們用一個圖來看一下。這個圖從左到右看,一開始灰蒙蒙的意思是都還沒有標注,然后用一個pre-trained model去預測一遍都是哪個類。這樣每個數(shù)據上都有一個概率,可以根據這個概率去選擇它是不是難分的那個數(shù)據,就得到了中間這個圖,上面那一段是比較難的,然后我們把它標注出來。然后用一個 continuous fine-tune 的 CNN,就是在原來的模型上再做一次 fine-tune,因為有了一些標注數(shù)據了嘛,就可以繼續(xù) fine-tune了。 fine-tune后的模型對未標注的數(shù)據又有了一個預測的值,再根據這些預測值與找哪些是難標的,把它們標上。然后把這些標注的數(shù)據和之前就標注好的數(shù)據一起,再做一次 continuous fine-tune,就得到 CNN2了。然后依次類推,直到把所有的數(shù)據都標完了,或者是在沒有標完的時候模型的效果就已經很好了,因為把其中難的數(shù)據都已經標完了。
剛才提到了兩個指標來判定一個數(shù)據是不是難分的數(shù)據。entropy比較直觀,預測結果在0.5左右就認為它是比較難分的;但diversity這個值不是很好刻畫,就通過 data augmentation數(shù)據增強的方式來設計指標,就是說從一個圖像設計出一系列它的變形。這些變形就可以是靠翻轉、旋轉、平移操作等等,一個變成了好幾個甚至十幾個,增加了它的多樣性。然后對這些所有的變形去預測它們的分類結果,如果結果不統(tǒng)一的話,就說明這副圖像的diversity比較強,那么這張圖像就是比較難分的,是hard sample;反之就是比較好分的,那么就不去做它的增強了。然后對所有增強以后的數(shù)據的預測值應當是一致的,因為它們代表的是同一個東西,但是也有一些例外,如果是像我剛才說的那樣的簡單的數(shù)據增強。
這就會產生一個問題,原始的圖像,比如左邊這只小貓,經過平移、旋轉、縮放等一些操作以后得到9張圖,每張圖都是它的變形。然后我們用CNN對這9張圖求是一只貓的概率,可以看到上面三個圖的概率比較低,就是判斷不出來是一只貓,我們直觀的去看,像老鼠、狗、兔子都有可能。本來這是一個簡單的例子,很容易識別出來這是一只貓,但是增強了以后反而讓模型不確定了。這種情況是需要避免的。
所以這種時候做一個 majority selection,就是一個少數(shù)服從多數(shù)的方式,因為多數(shù)都識別出來它是一只貓了。這就是看它的傾向性,用里面的6個預測值為0.9的數(shù)據,上面三個預測值為0.1的就不作為增強后的結果了。這樣網絡預測的大方向就是統(tǒng)一的了。
這篇文章的創(chuàng)新點除了active learning之外,它在學習的時候也不是從batch開始,而是sequential learning。它在開始的時候效果就不會特別好,因為完全沒有標注數(shù)據,它是從一個ImageNet數(shù)據庫訓練出的模型直接拿到medical的應用里來預測,效果應該不會太好。然后隨著標注數(shù)據的增加,active learning的效果就會慢慢體現(xiàn)出來。這里是在每一次fine-tune的時候,都是在當前的模型基礎上的進一步fine-tune,而不是都從原始的pre-train的model做fine-tune,這樣就對上一次的模型參數(shù)有一點記憶性,是連續(xù)的學習。這種思路就跟學術上常見的sequntial learning和online learning是類似的。但是有一個缺點就是,fine-tune的參數(shù)不太好控制,有一些超參數(shù),比如learning rate還有一些其它的,其實是需要隨著模型的變化而變化的,而且比較容易一開始就掉入local minimal,因為一開始的時候標注數(shù)據不是很多,模型有可能學到一個不好的結果。那么這就是一個open的問題,可以從好幾個方面去解決,不過解決方法這篇文章中并沒有提。
這個方法在機器學習方面是比較通用的,就是找那些難分的數(shù)據去做sequntial的fine-tune。這篇論文里主要是用在了醫(yī)學圖像上面,用兩個例子實驗了結果,一個是結腸鏡的視頻幀分類,看看有沒有病變、瘤之類的。結論是只用了5%的樣本就達到了最好的效果,因為其實因為是連續(xù)的視頻幀,通常都是差不多的,前后的幀都是類似的,不需要每一幀都去標注。另一個例子也是類似的,肺栓塞檢測,檢測+分類的問題,只用1000個樣本就可以做到用2200個隨機樣本一樣的效果。
這個作者我也了解一些,他是在 ASU 的PhD學生,然后現(xiàn)在在梅奧,美國一個非常著名的私立醫(yī)院梅奧醫(yī)院做實習,就跟需要做標注的醫(yī)生打交道比較多。這相當于就是一個從現(xiàn)實需求得出來的一個研究課題。
總結下來,這篇文章有幾個比較好的亮點。
從標注數(shù)據來說,從一個完全未標注的數(shù)據集開始,剛開始的時候不需要標注數(shù)據,最終以比較少量的數(shù)據達到很好的效果;
然后,從sequntial fine-tune的方式,而不是重新訓練;
選擇樣本的時候,是通過候選樣本的一致性,選擇有哪些樣本是值得標注的;
自動處理噪音,就是剛才舉的貓的那個例子,數(shù)據增強的時候帶來的噪音,通過少數(shù)服從多數(shù)的方式把那些噪音去掉了;
在每個候選集只選少量的patches計算熵和KL距離,KL距離就是描述diversity的指標,這樣減少了計算量。傳統(tǒng)的深度學習的時候會需要在訓練之前就做數(shù)據增強,每個樣本都是同等的;這篇文章里面有一些數(shù)據增強不僅沒有起到好的作用,反而帶來了噪音,就需要做一些處理;而且還有一些數(shù)據根本不需要增強,這樣就減少了噪音,而且節(jié)省了計算。
我今天分享的大概就是這些內容。其實這里還有一個更詳細的解釋,最好還是把論文讀一遍吧,這樣才是最詳細的。
Q:為什么開始的時候 active learning 沒有比random selection好?
A:其實不一定,有時候是沒有辦法保證誰好。active learning在一開始的時候是沒有標注數(shù)據的,相當于這時候它不知道哪些數(shù)據是hard的,在這個醫(yī)學數(shù)據集上并沒有受到過訓練。這時候跟 random selection 就一樣了,正在遷移原來 ImageNet 圖像的學習效果。random selection 則有可能直接選出來 hard的那些結果,所以有可能比剛開始的active selecting要好一點,但這不是每次都是 random selection 好。就是不能保證到底是哪一個更好。
(完)
雷鋒網 AI 科技評論整理。系列后續(xù)的論文解讀分享也會進行總結整理,不過還是最希望大家參與我們的直播并提出問題。
相關文章:
雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。
本專題其他文章