使用 AutoNLP 與 Prodigy 進行主動學習

Hugging Face 展示了一種在機器學習中實施主動學習的工作流程,使用 AutoNLP 進行自動化模型訓練,並使用 Prodigy 進行迭代式數據標註。

此流水線允許使用者透過將人力集中在數據標註而非模型架構與超參數調優上,來建立尖端 (SOTA) 模型。

使用 AutoNLP 進行自動化模型訓練

AutoNLP 是一個旨在以極少程式碼建立 SOTA 深度學習模型的框架。它利用了 Hugging Face 現有的生態系統,包括 transformersdatasetsinference-api 函式庫。

AutoNLP 的關鍵能力包括:

  • 廣泛的任務支持:它支持二元分類、回歸、多類別分類、標記分類(例如 NER 或詞性標記)、問答與摘要。
  • 多語言支持:它支持包括英文、法文、德文、西班牙文、印地文與荷蘭文在內的語言,並為不支持的語言提供自定義模型與分詞器 (tokenizers) 的選項。
  • 自動化優化:AutoNLP 會自動處理模型選擇、超參數調優,以及訓練多個候選模型以找出最佳表現者。

使用 Prodigy 進行即時數據標註

Prodigy 由 Explosion 開發,是一款商業化的網頁式標註工具,可實現即時數據標註。雖然主要用於 NER 與文本分類等 NLP 任務,但它也支持電腦視覺與自定義任務創建。

在主動學習流水線中,Prodigy 作為人類迭代標註原始文本以建立 AutoNLP 所需訓練集的介面。

個案研究:BBC 新聞分類與 NER

為了演示此流水線,Hugging Face 將這些工具應用於 Kaggle 的 BBC News Classification 數據集,該數據集包含五類新聞文章:businessentertainmentpoliticssporttech

多類別分類

使用 AutoNLP,針對現有類別訓練了一個分類模型。過程包括上傳數據集並允許 AutoNLP 訓練 15 個不同的模型。最終的最佳模型達到了 98.67% 的準確度。

透過主動學習進行命名實體識別 (NER)

由於 BBC 數據集缺乏實體標籤,因此實施了主動學習過程來增加 NER 能力(標籤:PERSONORGPRODUCTLOCATION):

  1. 初始標註:在 Prodigy 中標註了約 20 個樣本的小型集合。初始的 AutoNLP 模型顯示 86% 的準確度,但精準度 (precision) 與召回率 (recall) 皆為 0,這表明模型尚未學會模式。
  2. 迭代增長:隨著標註的數據集增長到 70 個樣本,準確度上升至 92%,精準度為 0.52,召回率為 0.42。
  3. 性能突破:在約 150 個樣本時,模型達到了 95.7% 的準確度、0.64 的精準度與 0.76 的召回率,顯示在檢測未見文本中的實體時有顯著改進。
  4. 最終優化:在標註約 250 個樣本後,過程達到了一個最佳結果的平台期,準確度約為 95.9%,精準度 0.73,召回率 0.79。

技術實施與工作流程

由於 Prodigy 不會直接以 AutoNLP 格式導出數據,因此使用了一個結合 spacyprodigy.components.db 的自定義 Python 腳本,將 Prodigy 的標註轉換為 JSONL 檔案。該檔案隨後被上傳到 AutoNLP 的「Token Classification」任務下。

此工作流程將技術負擔從模型工程轉移到數據品質。透過使用 AutoNLP,開發者可以避免手動選擇優化器 (optimizers)、調度器 (schedulers) 或進行手動預處理與後處理,從而使他們能夠完全專注於標註數據的品質。

Sources

相關

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch