Active Learning主動(dòng)學(xué)習(xí)是機(jī)器學(xué)習(xí) (ML) 的一個(gè)研究領(lǐng)域,旨在通過以智能方式查詢管道的下一個(gè)數(shù)據(jù)來降低構(gòu)建新機(jī)器學(xué)習(xí)解決方案的成本和時(shí)間。在開發(fā)新的 AI 解決方案和處理圖像、音頻或文本等非結(jié)構(gòu)化數(shù)據(jù)時(shí),我們通常需要人工對(duì)數(shù)據(jù)進(jìn)行注釋,然后才能使用它們來訓(xùn)練我們的模型。這個(gè)數(shù)據(jù)注釋過程非常耗時(shí)且昂貴。它通常是現(xiàn)代 ML 團(tuán)隊(duì)中最大的瓶頸之一。
通過主動(dòng)學(xué)習(xí),您可以創(chuàng)建一個(gè)反饋循環(huán),您可以在注釋、訓(xùn)練和選擇之間進(jìn)行迭代。使用良好的選擇算法,您可以減少訓(xùn)練模型以達(dá)到所需精度所需的數(shù)據(jù)量。
2. 不同的Active learning方法
在進(jìn)行主動(dòng)學(xué)習(xí)時(shí),我們通常使用模型的預(yù)測。每當(dāng)利用模型進(jìn)行預(yù)測時(shí),我們還會(huì)獲得相關(guān)的預(yù)測概率。由于模型天生就無法了解自身的局限性,因此我們嘗試在研究中使用其他技巧來克服這些局限性。在計(jì)算機(jī)視覺中,Active Learning 是一種主動(dòng)學(xué)習(xí)方法,它可以通過最小化標(biāo)記數(shù)據(jù)的量來提高機(jī)器學(xué)習(xí)模型的準(zhǔn)確性和效率。以下是一些常見的 Active Learning 方法:
Uncertainty Sampling:選擇那些讓模型不確定的樣本進(jìn)行標(biāo)記,如模型輸出的概率值最大的前幾個(gè)樣本,或者模型預(yù)測結(jié)果的方差最大的前幾個(gè)樣本。
Query-by-Committee:從多個(gè)訓(xùn)練好的模型中挑選出相互矛盾的樣本進(jìn)行標(biāo)記,以期望在后續(xù)的訓(xùn)練中降低模型的誤差。
Expected Model Change:通過計(jì)算在當(dāng)前模型下對(duì)標(biāo)記某個(gè)樣本的貢獻(xiàn),選擇那些最有可能改善模型性能的樣本進(jìn)行標(biāo)記。
Diversity Sampling:選擇那些與當(dāng)前已經(jīng)標(biāo)記的樣本差異最大的樣本進(jìn)行標(biāo)記,以期望能夠提高模型的泛化能力。
Information Density Sampling:選擇那些在當(dāng)前模型下信息密度最大的樣本進(jìn)行標(biāo)記,即選擇對(duì)模型最有幫助的樣本。
Active Transfer Learning:在已經(jīng)標(biāo)記的數(shù)據(jù)集和目標(biāo)任務(wù)的數(shù)據(jù)集之間進(jìn)行遷移學(xué)習(xí),以期望能夠提高模型的泛化能力和訓(xùn)練效率。
這些方法可以單獨(dú)或結(jié)合使用,具體選擇哪種方法取決于具體的問題和應(yīng)用場景。
舉個(gè)例子,我們不僅可以考慮單個(gè)模型,還可以考慮一組模型(集成)。這為我們提供了有關(guān)實(shí)際模型不確定性的更多信息。如果模型組都同意預(yù)測,則不確定性很低。如果他們都不同意,那么不確定性就很高。但是擁有多個(gè)模型非常昂貴。像“Training Data Subset Search with Ensemble Active Learning, 2020”這樣的論文使用了 4 到 8 種不同的集成方法模型。
繪圖來自“使用集成主動(dòng)學(xué)習(xí)訓(xùn)練數(shù)據(jù)子集搜索,2020”論文,展示了他們的不同方法與 ImageNet 上的隨機(jī)基線相比如何。
我們可以通過使用 Monte Carlo dropout 來提高效率,我們在模型的最后幾層之間添加了 dropout。這允許我們使用一個(gè)模型來創(chuàng)建多個(gè)預(yù)測(使用 Dropout),類似于使用模型集成。但是,這樣做的缺點(diǎn)是我們需要更改模型架構(gòu)并添加 dropout 層。
3. 在Active Learning中利用embedding
插圖來自“目標(biāo)檢測的可擴(kuò)展主動(dòng)學(xué)習(xí),2020”
最近,論文也開始使用embedding。通過embedding,我們可以了解不同樣本的相似程度。在計(jì)算機(jī)視覺中,我們可以使用嵌入來檢查相似的圖像甚至相似的對(duì)象。然后我們可以在embedding空間中使用距離度量,例如歐幾里德距離或余弦相似度,并將其與預(yù)測的不確定性結(jié)合起來。
然而,使用來自同一個(gè)模型的embedding和預(yù)測有一個(gè)缺點(diǎn),即兩者都依賴于模型學(xué)習(xí)到的相同特征。通常,嵌入是預(yù)測前一層或幾層模型的輸出。為了克服這個(gè)限制,我們開始使用來自其他模型的嵌入,而不是我們所說的“任務(wù)”模型。任務(wù)模型就是您想要使用主動(dòng)學(xué)習(xí)改進(jìn)的實(shí)際模型。
我們自己的基準(zhǔn)和與自動(dòng)駕駛、衛(wèi)星想象、機(jī)器人技術(shù)和視頻分析等領(lǐng)域的數(shù)十家公司合作的經(jīng)驗(yàn)表明,使用使用自我監(jiān)督學(xué)習(xí)訓(xùn)練的模型具有最強(qiáng)大的嵌入。最近的模型,如 CLIP 或 SEER 都在使用自監(jiān)督學(xué)習(xí)。
4. 我們可以利用active learning做什么?
首先,請注意主動(dòng)學(xué)習(xí)是一種工具,與您使用的大多數(shù)其他工具一樣,您必須微調(diào)一些參數(shù)才能從中獲得最大價(jià)值。經(jīng)過廣泛的研究并嘗試從最近的主動(dòng)學(xué)習(xí)研究中復(fù)制許多論文,我們觀察到這些基本規(guī)則似乎適用于我們認(rèn)為是“好的”訓(xùn)練數(shù)據(jù):
選擇多樣化的數(shù)據(jù)——擁有多樣化的數(shù)據(jù)(多樣化的圖像、多樣化的對(duì)象)是最重要的因素
平衡數(shù)據(jù)集——確保數(shù)據(jù)在你的模式(天氣、性別、一天中的時(shí)間)之間保持平衡
與模型架構(gòu)無關(guān)— 根據(jù)我們自己的實(shí)驗(yàn),看起來大型 ViT 模型的好數(shù)據(jù)對(duì)小型 ResNet 也有幫助
前兩點(diǎn)表明,我們的目標(biāo)應(yīng)該是從所有模式中獲取等量的多樣化數(shù)據(jù)。第三點(diǎn)很高興知道。這意味著,我們今天可以用一個(gè)模型選擇訓(xùn)練數(shù)據(jù),一年后訓(xùn)練一個(gè)全新的模型時(shí),我們?nèi)匀豢梢灾赜孟嗤臄?shù)據(jù)。請注意,這些只是觀察。如果實(shí)施得當(dāng),主動(dòng)學(xué)習(xí)可以顯著提高模型的準(zhǔn)確性。
我們評(píng)估了結(jié)合 AL、多樣性和平衡選擇在檢測鮭魚片問題任務(wù)中的性能。目標(biāo)是提高鮭魚“血腫”的模型準(zhǔn)確性,因?yàn)檫@是最關(guān)鍵的類別。
5. Active Learning Algorithms的簡單Implement
以下是一個(gè)簡單的Active Learning偽代碼:
#假設(shè)我們已經(jīng)有了一批標(biāo)記好的數(shù)據(jù)集合和一個(gè)未標(biāo)記的數(shù)據(jù)池 labeled_dataset=... unlabeled_pool=... #在每一輪迭代中,我們都會(huì)選擇一些未標(biāo)記的數(shù)據(jù)點(diǎn)并請求標(biāo)記 whilelen(unlabeled_pool)>0: #從未標(biāo)記的數(shù)據(jù)池中選擇一些樣本 selected_samples=select_samples(unlabeled_pool) #請求這些樣本的標(biāo)簽 labeled_samples=query_labels(selected_samples) #將新標(biāo)記的樣本添加到已標(biāo)記的數(shù)據(jù)集中 labeled_dataset=labeled_dataset+labeled_samples #更新未標(biāo)記的數(shù)據(jù)池,移除已經(jīng)被標(biāo)記的樣本 unlabeled_pool=remove_labeled_samples(unlabeled_pool,labeled_samples) #訓(xùn)練模型,根據(jù)當(dāng)前的已標(biāo)記數(shù)據(jù)集和模型更新策略 model=train_model(labeled_dataset) #在驗(yàn)證集上評(píng)估模型表現(xiàn) validation_accuracy=evaluate_model(model,validation_dataset) #如果模型的表現(xiàn)已經(jīng)滿足了停止準(zhǔn)則,則停止訓(xùn)練 ifstopping_criterion(validation_accuracy): break
以上偽代碼中的主要步驟包括:
從未標(biāo)記的數(shù)據(jù)池中選擇一些樣本
請求這些樣本的標(biāo)簽
將新標(biāo)記的樣本添加到已標(biāo)記的數(shù)據(jù)集中
移除已經(jīng)被標(biāo)記的樣本,更新未標(biāo)記的數(shù)據(jù)池
根據(jù)當(dāng)前的已標(biāo)記數(shù)據(jù)集和模型更新策略訓(xùn)練模型
在驗(yàn)證集上評(píng)估模型表現(xiàn)
如果模型的表現(xiàn)已經(jīng)滿足了停止準(zhǔn)則,則停止訓(xùn)練。
6. Active Learning的應(yīng)用場景
Active Learning在計(jì)算機(jī)視覺中具有廣泛的應(yīng)用前景。以下是一些可能的應(yīng)用:
目標(biāo)檢測:在目標(biāo)檢測任務(wù)中,每個(gè)圖像都可能包含多個(gè)對(duì)象。Active Learning可以幫助減少需要手動(dòng)標(biāo)注的對(duì)象數(shù)量,從而降低人力成本。
語義分割:語義分割任務(wù)涉及將每個(gè)像素標(biāo)記為特定的對(duì)象或類別。Active Learning可以幫助減少需要手動(dòng)標(biāo)注的像素?cái)?shù)量,從而減少人工標(biāo)注的工作量。
人臉識(shí)別:在人臉識(shí)別任務(wù)中,Active Learning可以幫助識(shí)別出哪些人的圖像需要被標(biāo)記,以及哪些特征可以提高識(shí)別準(zhǔn)確性。
圖像分類:在圖像分類任務(wù)中,Active Learning可以幫助選擇需要標(biāo)注的圖像,以便提高模型的準(zhǔn)確性。
總之,Active Learning在計(jì)算機(jī)視覺中的應(yīng)用前景非常廣泛,可以幫助降低人力成本、提高模型準(zhǔn)確性和提高算法的效率。隨著技術(shù)的進(jìn)步和數(shù)據(jù)集的不斷擴(kuò)大,Active Learning將變得越來越重要。
審核編輯:劉清
-
人臉識(shí)別
+關(guān)注
關(guān)注
76文章
4002瀏覽量
81678 -
計(jì)算機(jī)視覺
+關(guān)注
關(guān)注
8文章
1694瀏覽量
45901 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8353瀏覽量
132315 -
Clip
+關(guān)注
關(guān)注
0文章
30瀏覽量
6641
原文標(biāo)題:計(jì)算機(jī)視覺中的主動(dòng)學(xué)習(xí)(Active Learning)
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論