使用 BERT 加速:NLP 優化模型
已發表: 2022-03-11使用 BERT 加速 NLP:數據量減少 100 倍的世界級結果
構建深度學習自然語言處理 (NLP) 分類模型時存在兩個主要困難。
- 數據收集(獲取數千或數百萬個分類數據點)
- 深度學習架構和訓練
我們構建能夠理解語言複雜性的複雜深度學習模型的能力通常需要在這些領域擁有多年的經驗。 你的問題越難,你的輸出就越多樣化,你需要花在每個步驟上的時間就越多。
數據收集繁重、耗時、昂貴,並且是 NLP 項目成功的第一大限制因素。 即使有才華橫溢的機器學習工程師,準備數據、構建彈性管道、在數百個潛在的準備選項中做出選擇以及“準備好模型”也很容易花費數月的時間。 最後,訓練和優化深度學習模型需要結合直覺理解、技術專長和解決問題的能力。
在本文中,我們將介紹
- NLP 深度學習的趨勢:遷移學習如何讓世界級模型開源
- BERT 簡介:迄今為止最強大的 NLP “工具”簡介——來自轉換器 (BERT) 的雙向編碼器表示
- BERT 的工作原理以及為什麼它將改變公司執行 NLP 項目的方式
深度學習趨勢
自然地,這個過程的優化從提高準確性開始。 LSTM(長短期記憶)網絡徹底改變了許多 NLP 任務,但它們曾經(並且現在)非常需要數據。 在大型且昂貴的機器上優化和訓練這些模型可能需要幾天或幾週的時間。 最後,在生產中部署這些大型模型既昂貴又麻煩。
為了減少這些複雜性的產生因素,計算機視覺領域長期以來一直在使用遷移學習。 遷移學習是使用為不同但相似的任務訓練的模型來加速新解決方案的能力。 與訓練一個從頭開始識別灌木的新模型相比,重新訓練一個已經可以對樹木進行分類的模型所花費的精力要少得多。
想像一個場景,有人從未見過灌木,但在他們的生活中見過很多樹。 你會發現用他們對樹木的了解來向他們解釋灌木的樣子要比從頭開始描述灌木要容易得多。 遷移學習是一種非常人性化的學習方式,因此直觀地說這將適用於深度學習任務。
BERT 意味著您需要更少的數據、更少的訓練時間,並獲得更多的商業價值。 任何企業都能打造的 NLP 產品質量已經成為世界一流。
BERT 來了
BERT 使用所謂的轉換器,旨在生成句子編碼。 本質上,BERT 是一種基於特定深度學習模型的語言模型。 它是專門為提供一個句子或一串句子的上下文、數字、表示而設計的。 該數字表示是淺層和簡單模型的輸入。 不僅如此,結果通常更好,並且需要一小部分輸入數據來完成尚未解決的任務。
想像一下,能夠花一天而不是一年的時間收集數據,並且能夠圍繞數據集構建模型,否則您將永遠沒有足夠的數據來創建 LSTM 模型。 對於以前無法負擔所需開發時間和專業知識的企業來說,NLP 任務的數量是驚人的。
BERT 的工作原理
在傳統的 NLP 中,模型訓練的起點是詞向量。 詞向量是一個數字列表 [0.55, 0.24, 0.90, ...],試圖用數字表示該詞的含義。 通過數字表示,我們可以在訓練複雜模型中使用這些詞,並且通過大詞向量,我們可以將有關詞的信息嵌入到我們的模型中。
BERT 做了類似的事情(實際上,它的起點是詞向量),但它創建了整個輸入句子(或多個句子)的數字表示。
與 LSTM 模型相比,BERT 做了很多不同的事情。
- 它一次讀取所有單詞,而不是從左到右或從右到左
- 在訓練期間隨機選擇 15% 的詞進行“掩碼”(字面意思是用 [MASK] 標記替換)
- 10% 的隨機選擇的單詞保持不變
- 10% 的蒙面詞被隨機詞替換
- (a) 和 (b) 共同作用,迫使模型預測句子中的每個單詞(模型很懶惰)
- 然後 BERT 嘗試預測句子中的所有單詞,只有被屏蔽的單詞對損失函數有貢獻——包括未更改和隨機替換的單詞
- 該模型在下一句預測上進行了微調。 在這一步中,模型嘗試確定給定句子是否是文本中的下一個句子
收斂速度慢,BERT 需要很長時間來訓練。 但是,它可以更好地學習文本中的上下文關係。 詞向量是非常淺的表示,限制了它們可以建模的複雜性——BERT 沒有這個限制。

大多數企業可以利用使用多個 GPU 的預訓練模型,並花費數天時間來訓練他們的應用程序。 在少數情況下,現有的 BERT 模型無法就地使用或調整到特定用例。 BERT 允許團隊將解決方案加速十倍。 人們可以著手確定業務解決方案,構建概念證明,並最終在很短的時間內將該概念投入生產。
實施 BERT 並比較業務價值
由於本文側重於構建真實產品的業務和工程應用,因此我們將創建和訓練兩個模型以更好地了解比較價值。
- BERT:最直接的 BERT 流水線。 我們以標準方式處理文本,生成 BERT 句子編碼,然後將這些句子編碼輸入淺層神經網絡
- LSTM:標準的嵌入 - 編碼 - 參加 - 預測架構(如上圖所示)
任務? 根據 IMDB 中的情節預測電影的起源。 我們的數據集涵蓋了來自美國、澳大利亞、英國、加拿大、日本、中國、韓國和俄羅斯的電影以及其他 16 部電影,總共 24 個來源。 我們總共有不到 35,000 個訓練示例。
這是一個情節的示例片段。
數千年前,荒原狼和他的 Parademons 軍團試圖用三個母盒的綜合能量接管地球。 他們被包括奧林匹亞諸神、亞馬遜人、亞特蘭蒂斯人、人類和綠燈軍團在內的統一軍隊挫敗。 在擊退荒原狼的軍隊後,母盒被分離並隱藏在地球上的各個位置。 目前,人類正在為超人哀悼,超人的死觸發了母盒重新激活,荒原狼返回地球,努力重新獲得主人達克賽德的青睞。 荒原狼旨在收集文物以形成“統一”,這將破壞地球的生態並將其改造為……
如果你沒有猜到,這就是美國電影《正義聯盟》的情節。
結果
我們訓練了一組不同的參數,以了解結果如何響應不同數量的數據和模型大小。 正如我們所說,BERT 最重要的附加值是對數據的需求要少得多。
對於 LSTM 模型,我們在 GPU 上訓練了最大的模型,並改變了詞彙的大小和詞長,以找到性能最佳的模型。 對於 BERT 模型,我們只有一層。
我們修復了所有這些樣本的測試集,因此我們始終對相同的訓練集進行評分。
在這項任務中,使用 BERT 句子編碼訓練的模型僅在 1000 個樣本後就達到了令人印象深刻的 0.84 的 F1 分數。 LSTM 網絡從不超過 0.60。 更令人印象深刻的是,訓練 BERT 模型的時間平均是準備 LSTM 模型的 1/20 。
結論
無論以何種標準衡量,這些結果都表明了 NLP 的一場革命。 使用少 100 倍的數據和少 20 倍的訓練時間,我們取得了世界級的成果。 在幾秒鐘或幾分鐘內而不是幾小時或幾天內訓練高質量模型的能力在以前無法提供的領域開闢了 NLP。
BERT 的用途比本文中的要多得多。 有多語言模型。 它可用於解決許多不同的 NLP 任務,可以像本文中那樣單獨解決,也可以同時使用多個輸出。 BERT 句子編碼將成為未來許多 NLP 項目的基石。
這篇文章背後的代碼可以在 Github 上找到。 我還鼓勵讀者查看 Bert-as-a-service,這是為這篇文章構建 BERT 句子編碼的基石。