目錄ios
本文將簡單介紹什麼是主動學習(Active Learning,AL),爲何須要主動學習,主動學習和監督學習、弱監督學習、半監督學習、無監督學習之間是什麼關係。最後再簡單介紹主動學習的分類。(這裏介紹的主動學習是機器學習的一個子領域。)算法
主動學習(Active Learning),在統計學領域有時也叫「查詢學習」(query learning)、「最優實驗設計」(optimal experimental design),是機器學習的一個子領域。oracle
主動學習背後一個關鍵的假設:less
If the learning algorithm can choose the data from which it learns, it will perform better with less training.[1]dom
主動學習之因此叫主動學習,是由於算法從數據集中主動地選擇一些不帶標籤的數據進行標註,而不是被動地選擇。在每一次標註以後,模型從新或者增量地在帶標籤的數據上訓練,而後再主動地選擇不帶標籤數據進行標註,重複這個過程,這就是主動學習的流程。機器學習
被動學習(passive learning)被認爲是從數據集中隨機選擇(randomly select)數據進行標註。工具
而主動學習選擇要標註的樣本時,有一些 criteria 進行指導,這就是主動學習和被動學習的區別。學習
不過被動學習彷佛叫的很少,通常用 random selection 與主動學習的 criteria 比較就好。設計
數據標註的成本高昂,迫使咱們想要用更少的標註數據來得到更有效的模型,這就是主動學習產生的緣由。3d
咱們根據訓練數據集標籤的狀況來劃分這幾者:(歡迎大佬指正)
而主動學習對應弱監督學習的第一種狀況,少部分數據含標籤,可是大部分數據不含標籤。
主動學習和半監督學習是什麼關係?二者均可以認爲是弱監督學習第一種狀況的處理方式,但二者也有不同的地方,好比主動學習須要人工標註數據,而半監督學習不要。
根據應用場景,將主動學習劃分爲 3 類:
第一種是「Membership query synthesis」,字面意思上很難理解,不過這種方式的 instance 是算法從整個可能的樣本空間中生成的,模型從頭開始生成一個 instance 而後送去 oracle 打標籤。
第二種是「steam-based selective sampling」,每一次咱們可以從數據流獲得一個 instance,而後判斷其是否要送去 oracle 打標籤。
第三種是「pool-based sampling」,初始時,咱們就有不少 unlabeled data,只須要從這些 unlabeled data 中選擇數據送到 oracle 打標籤。(這種狀況是最多見的。)
可能會有一個疑問,主動學習中的 oracle 是什麼?oracle 能夠是一個專家,打標籤百分之百正確;也能夠是不少擁有不一樣專業知識的人,打標籤不是百分百對,如衆包。
Example from [1]:
ALiPy (Active Learning in Python) [3] 是南京航空航天大學黃聖君老師作的一個開源的主動學習工具包,咱們能夠很輕鬆地基於該工具包開發主動學習的程序,強烈推薦。
ALiPy 主頁:http://parnec.nuaa.edu.cn/huangsj/alipy/。
[1] Burr Settles.(2009). Active Learning Literature Survey. Computer Sciences Technical Report 1648, University of Wisconsin-Madison.
[2] Zhou, Z.-H. (2018). A brief introduction to weakly supervised learning. National Science Review, 5(1), 44–53. https://doi.org/10.1093/nsr/nwx106
[3] Tang, Y.-P., Li, G.-X., & Huang, S.-J. (2019). ALiPy: Active Learning in Python, 1–5. Retrieved from http://arxiv.org/abs/1901.03802