劉霄宇,左劼,孫頻捷
(1.四川大學計算機學院,成都610065;2.上海政法學院,上海200000)
隨著機器學習與深度學習技術的高速發展,圖像分類算法已經在各個領域中體現出了它的應用價值。但對于機器學習與深度學習來說,都需要大量的標注數據進行驅動,讓算法模型見過的數據越多,它的分類效果就會越精準。而在實際情況下,標注數據需要巨大的工作量,極其耗費人力、物力、財力資源。主動學習算法所解決的正是標注成本問題,它的目的是通過模型與標注人員的交互,使用少量的數據獲取與大量數據相同的模型準確率。主動學習的概念早在90 年代便被學者提出[4],其最早主要應用于機器學習的方法中,僅使用簡單的選擇策略便可以獲得較好的效果[4],如使用不確定性的主動學習方法[5],使用委員會投票的方法[6],期望模型最大提升的方法[7],期望錯誤減小的方法[8]和期望變化減小的方法[9]。隨著深度學習的發展,模型復雜度的增加,主動學習的傳統方法在深度學習模型中并沒有體現出其優秀的表現。在2017 年,Zhu J J 等人提出了借用生成對抗網絡的主動學習方法[12]。在2018 年,Ozan Sener 等人[1]提出了使用核心集的方法,通過數據在特征空間上的代表性來選擇標注數據。2019 年,Donggeun Yoo 等人[2]提出了通過學習損失函數的值的方式來進行標注數據的選擇。2019 年,Samarth Sinha 等人[3]提出了使用變分自編碼器的表征學習方式來學習已標注數據和未標注數據的差異來選擇標注數據。這些主動學習方法在公開的數據集上都取得了優秀的效果,進一步的證明了主動學習的研究價值。
上世紀90 年代,主動學習的概念便被學者提出并進行應用。它的步驟如圖1 所示。第一步是由專家對少部分樣本進行標注,第二部是針對少部分樣本對目標模型進行訓練,第三步是使用主動學習算法對未標注樣本進行選擇,第四步是將選擇出的樣本送回給專家繼續標注并重復上述步驟。主動學習的核心問題是尋找出最有用的樣本,對于最有用的樣本的定義一般分為兩種,基于不確定性選擇的樣本和基于差異性選擇的樣本。對于不確定性,我們可以理解為去尋找模型最難以判斷的樣本。如樣本的信息熵越大,它的不確定性越大,模型置信度越低,選擇此類樣本可以獲取得到豐富的信息量,以便模型進行判斷。對于差異性,我們可以理解為針對數據本身選擇其最有代表性的樣本,如使用聚類的方法對樣本進行處理,再選擇聚類中心進行標注,則可獲取到就數據本身而言的最具代表性的樣本。不論哪種方式對樣本的選擇,都脫離不了樣本的信息量的概念,因此對于主動學習算法的研究,也是對數據所攜帶信息的提取與表示上的研究。

圖1 主動學習流程
使用預聚類的方法是收到了無監督學習的啟發,該方法的核心思想是在每一輪的數據選擇之前提前對數據進行聚類,以獲取多個數據簇及聚類中心,再對聚類中心或數據簇中的數據使用主動學習算法進行選擇。該類方法的最新研究成果是核心集方法[1]。
該方法包含了兩種具體的實現方式,第一種是KCenter-Greedy 的方法。它將已標注數據定義為集合s,在每一輪的迭代中選擇budget 個樣本。在每一輪標注中,順序選擇k 個聚類中心中,與集合s 距離最遠的點u 加入集合s。其中u 與集合s 定義為u 與集合中各個點距離的最小值,距離使用L2-norm 距離。其具體算法如表1 所示。第二種方法是Robust K-Center方法,其在K-Center-Greedy 的基礎上進行了修改。它通過計算得到無標記點與集合s 的最遠距離,設為δ2?OPT,此時所有的樣本點都會在包括在這個半徑δ2-OPT 內。通過計算Feasible 函數,去找到一組符合Feasible 函數的解,使得Feasible 內所有約束條件都滿足,如果找到了,那么說明此時的半徑δ不會使outlier的數量超過自己定的界限Ξ,半徑δ可以縮小,即縮小上界ub;如果沒有找到,那么說明此時的半徑δ會使得outlier 數量超過界限Ξ,需要擴大半徑,即擴大下界lb。直到最后,ub?lb 相等或者相差不大,算法停止。Feasible 公式如下所示,Robust K-Center 的具體算法如表2 所示。

該方法利用了CNN 提取到的特征進行聚類,并使用核心集的方法進行篩選,在深度學習的特征中選擇了與已標注樣本最遠的數據點,因此該方法既考慮到了特征的代表性,又考慮到了樣本的不確定性。

使用學習損失的主動學習方法[2]是由Donggeun Yoo 等人在2019 年提出。該方法的核心思想是使用了當前流行的多分支神經網絡結構進行多任務學習。其結構如圖2 所示。

圖2
該方法使用了多分支網絡,在學習目標任務的同時,增加一個分支進行loss 數值的學習。在該方法中,在神經網絡提取特征的部分,將每一個大的網絡塊的特征進行提取并進行全局平均池化,使得各個層的特征值的維度統一,再將其進行連接并通過全連接層輸出,得到預測的loss 數值。這樣的方法能夠提取到多尺度的特征,這意味著可以對圖像的細節特征進行捕捉。其結構如圖3 所示。

圖3
在進行多任務學習時,該網絡將會對任務本身的目標loss 值和預測loss 數值的loss 值進行加權整合,其公式為:

其中Ltarget為目標任務的loss,Lloss為學習loss 數值的loss。
由于在模型訓練過程中,真實的loss 數值會不斷變化,因此不能拿真實loss 數值本身作為預測loss 的真實值。該方法提出了一種新的loss 函數,對于每一個批次的B 個數據,將其分為兩部分,成對進行計算,其公式為:

對于這個函數我們分析一下考慮第一種情況li>lj且模型預測的結果也滿足那么損失值加上一個ξ后小于0,那么loss 取0 說明模型的預測關系是對的,不進行權重更新。如果li>lj但模型的預測的結果則損失函數值大于0 進行權重更新。這個損失函數則說明損失預測模型的實際目的是得到對應數據的損失值的大小關系而不是確定的損失值。
使用表征學習的主動學習方法由Samarth Sinha 等人[3]于2019 年首先提出,后在2020 年又基于此,由Ali Mottaghi 等人提出了對抗表征主動學習[10],和Beichen Zhang 等人提出了狀態重標注表征主動學習[11]。它的主要思想是使用了表征學習中變分自編碼器的思想,再加上深度學習中多任務學習以及多分支網絡的形式,進行主動學習。該方法的基本結構如圖4 所示。

圖4
該方法的目的是尋找出已標注數據和未標注數據的差異。它利用了變分自編碼器進行特征提取,這樣做的目的是為了在無數據標注的情況下,使用表征學習的方式將數據映射到一個潛層空間,數據在潛層空間的表示就是它的特征。同時它使用了一個判別器對數據是否是已標注數據進行打分,分值接近1 的為已標注數據,分值接近0 的為未標注數據。該方法使用了對抗式的訓練方式,首先將判別器的參數進行固定,將數據的潛層空間特征都以標簽為訓練數據的形式送入判別器,進行變分自編碼器的訓練。再固定變分自編碼器的參數,將數據的真實來源送入判別器進行判別器的訓練。以此方式提取到的特征,對于較為接近訓練集的未標注數據,會欺騙判別器使其打出高分,反之則會使判別器打出低分。再以此方式進行排序選擇。
該方法使用了無監督學習的思想,挖掘了數據本身的特征,同時又無需修改目標模型本身,這意味著該方法具有很強的通用性,同時又在主動學習的過程中有著很好的效果。
本文綜述了在主動學習領域中三種最新的,同時又具有代表性的方法。三者的共同點在于:在深度學習的大背景下,試圖尋找出最具有代表性的數據進行標注。不同點在于:基于預聚類的主動學習方法是通過對特征的聚類來選擇最具有代表性特征的數據;基于學習損失的主動學習方法是通過模型的學習,學習到對模型來說最不確定的數據;而基于表征學習的主動學習方法是試圖學習到數據的原始特征,在與目標模型無關的情況下進行數據的選擇。從以上的內容介紹可以看出,基于主動學習的機器學習算法已經得到了廣泛的關注,在深度學習高度發展的情況下,主動學習算法受到了越來越新的挑戰。目前對于主動學習的探索仍然在朝著各個方向多面發展,而越來越新的方法在所發表的文獻中所呈現出的實驗結果,也證明了主動學習算法的研究價值。