加速機器學習:從主動學習到BERT和流體標註
知道創宇IA-Lab 嶽永鵬
機器學習模型程式碼優化是為了獲得更高效(時間更少、儲存更少、計算規模更大)執行的機器指令和具有更強泛化能力的模型,獲得更高效執行的機器指令可以採用多核和高頻的CPU計算,以及採用平行計算和向量化計算。而獲得具有更強泛化能力的模型不僅僅與選擇的模型有關,還與標註資料的數量和質量有關。而資料標註需要大量標註人員從事重複而枯燥的工作,這也必然會增加成本。
本文將介紹主動學習(Active Learning)以及主動學習結合Google今年釋出的流體標註(Fluid Annotation)和BERT(Bidirectional Encoder Representation from Transformers)對加速機器學習有什麼啟示。
標籤資料
按是否需要“標籤”資料(Labeled Data)可以將機器學習分為監督學習(supervised Learning)、無監督學習(unsupervised Learning)以及半監督學習(Semi-Supervised Learning)三類。其中監督的機器學習是完全依賴於標籤資料,無監督學習則不需要標籤資料,半監督學習僅部分需要標籤資料。而獲得正確的標籤資料,往往需要付出昂貴的代價,無監督學習和半監督學習雖然不需要付出獲得標籤的代價,但是對實際的問題,用監督學習的還是主流,特別是當下大紅大紫的深度學習(Deep Learning)模型,在工業界都需要大量的標籤資料,甚至有“有多少智慧,就需要多少人工”的說法,這裡的人工就是指聘請的一些訓練有素的“專家”為成千上萬的資料打標籤。倘若我們的專家不太好,我們訓練的模型也不會很好。有時,專家幾乎可以是任何人,例如MNIST手寫資料集中手寫字型僅高中生就能完成。而有時,專家必須是一些經驗豐富的行家,比如自然語言處理中的詞性、實體和關係的標註。獲得這些行家的標籤資料是非常非常昂貴,但是又是監督學習所必須的,而減小標註資料的代價又可以從兩個方面考慮。
一方面可以採用主動學習,在保證模型精度的條件下,選擇出具有代表性的點進行標註,儘量的做到少標記資料。例如對如下圖所示兩個簇(綠色和紅色)的線性分類模型,想建立一個線性的“決策邊界” 將綠色和紅色的形狀分開。而在一開始我們並不知道資料點的標籤(紅色或綠色),紅色或綠色標籤是通過取樣而得到的一小部分僱傭專家標註而得到的。
在請專家標記資料的時候會面臨如下的問題:採用什麼樣的取樣策略而得到行之有效的小部分待標註資料。比如在中圖,線性分類器在一小部分隨機取樣資料上得到的決策邊界是次優的,因為這條線明顯偏離紅色資料點並進入綠色形狀區域,這是因為標記資料點選擇不當造成的。在最右邊圖中,使用另外一種取樣策略方法選擇的一小部分資料點具有更好的決策邊界,因為它更好地分離了兩種顏色。
另一方面可以借鑑Google今年釋出BERT的Fluid Annotation的思想,首先通過大規模語料進行自然語言的模型預訓練,然後在預訓練好的模型上進行後續任務訓練,並且其可以作為主動學習過程中訓練模型的fine-tuning過程,提高模型的預測精度,讓單純的人工語料標轉變為模型先預測,人工稽核和確認的過程,從而加快標註人員的標註效率,生產出更多的標註語料,加速機器學習。
主動學習
通過上文的描述已經對主動學習有了初步的認識:主動學習是一種可以減少監督學習所需標籤資料量的方法,用更少的標註資料訓練出更好的模型。通俗的理解就是在提高模型精度的同時,讓毫無技術含量的體力標註“專家”或需要具有豐富行業知識的行家少幹一些標註資料的活兒,從而減少減小待標註資料的總量。
為了更好的理解主動學習的流程,首先先回顧一下監督學習流程。監督學習分為訓練(train)和預測(Prediction)兩個階段,在訓練階段通過標籤資料集來確認模型的引數,得到一個模型。在預測階段將無標籤的資料輸入到已經訓練好的模型,得到一個預測的標籤。
在模型的訓練階段利用這種大型資料集來訓練模型的方式也稱為被動學習(Passive Learning),一般來講被動學習所需的訓練資料集越多越好,但往往“理想是美好的,現實是殘酷的”,越多越好的標籤資料是是很難獲得的。此時將標註資料的流程和模型訓練的流程進行結合,邊標註邊訓練就構成了主動學習。
更詳細的,主動學習的流程可以分為初始化和迴圈查詢兩個階段。在初始化階段,先隨機的從無標籤資料集中選取一小部分樣本由標註者完成標註,並將這一小部分標註樣本作為初始訓練集,建立初始的機器學習模型。
在迴圈查詢階段,按照某種查詢策略從無標籤資料集中選擇樣本資料進行標註,並將已標註的資料加入到標註資料集中,重新訓練機器學習的模型,直到達到訓練停止的標準才停止迴圈。
主動學習的兩個階段中,其關鍵是如何從無標籤資料集中選擇出樣本進行標記,即選擇策略(Select Query)的確定。選擇策略方法有:
- 不確定性取樣。
- 委員會投票選擇演算法(Query-By-Committee, QBC)。
- 期望模型變化最大化。
- 方差變化最大化。
- 基於密度權重的方法。
BERT
主動學習的迴圈階段有重新訓練機器學習模型的步驟,重新訓練模型一種方式是用全部語料重新訓練模型引數,另一種方式是在已有的模型引數的基礎上做模型引數的fine-tuning。對自然語言處理Google最近釋出的BERT(Bidirectional Encoder Representation from Transformers)新模型就在在11項NLP任務中獲得了不錯的結果。Google的BERT是在33億文字的語料上訓練語言模型,再分別在不同的下游任務(實體識別、意圖理解等等)上微調,這樣的模型在不同的任務均得到了目前為止最好的結果,並且有一些結果相比此前的最佳成績得到了幅度不小的提升。
流體標註
對影象分類標註的模型預訓練可以採用語義分割模型(Mask R-CNN)預先生成約1000個影象片段及其分類標籤和置信度分數,即Google 的流體標註(Fluid Annotation)。置信度分數最高的片段用於對標籤的初始化,呈現給標註者。然後,標註者可以:
1)從機器生成的候選標籤中為當前片段選擇標籤。
2)對機器未覆蓋到的物件通過滑鼠左鍵新增分割段。機器會識別出最可能的預生成段,標註者可以從中選擇質量最高的一個。
3)通過滑鼠右鍵刪除現有段,從而實現機器預生成片段的修改。
4)通過滾動滑鼠來改變重疊段的深度順序。
ofollow,noindex" target="_blank">Google Fluid Annotation Demo