從詞袋到 Transformer:自然語言處理實踐的十年

自2010年創立以來,著名的數據科學競賽平臺Kaggle一直是機器學習趨勢演變的絕佳觀察平臺。在這裡已經產生了幾代的重大突破,吸引了成千上萬的從業者以及數百萬的論壇討論。


從詞袋到 Transformer:自然語言處理實踐的十年

根據上下文(這裡是句子的最後一個詞)的不同,“它”可以指“動物”或“街道”。 來源Google提出的transformer.


在平臺上發佈的各種類型的挑戰(計算機視覺,語音,表格等)中,自然語言處理(NLP)如今受到了越來越多的關注。確實,近幾個月以來,該領域正在見證數項令人興奮的重大創新。最近的一個創新便是預訓練語言模型transformer的問世。


近日,Zelros AI公司的團隊研究人員通過Kaggle平臺視角,在Medium上撰文簡要概述了NLP技術的發展簡史。


2016年之前:詞袋和TF-IDF的絕對統治


在2016年之前,解決(並贏得)Kaggle NLP挑戰的標準方法是使用詞袋(基本上計算單詞在文檔中出現的次數)來創建特徵,以供機器學習分類器使用,例如典型的Naive Bayes。TF-IDF略有改進。


例如,在StumbleUpon Evergreen 分類挑戰賽中便使用了這種方法(順便說一句,FrançoisChollet在2013年贏得了比賽……他就是之後兩年創建Keras的人)。


2016–2019年:詞嵌入+ Keras和Tensorflow的興起


2015年,出現了用於密集單詞表示的庫,例如Gensim(包括Word2vec和GloVe)。隨後出現了其他預訓練的嵌入,例如Facebook FastText或Paragram。


同時,易於使用的神經網絡框架的第一個版本獲得了普及:Keras和Tensorflow。有了它們,就可以開始按單詞序列捕獲含義,而不再僅按單詞袋捕獲。


運行深度神經網絡,要解決的最後一個大障礙是:獲得高速處理能力。這通過使用低成本GPU得以解決。Kaggle在2017年3月被Google收購後,通過Kaggle在其平臺上免費(通過協作Notebooks內核)免費提供了它們。


從那時起,單詞嵌入和神經網絡(RNN,LSTM,GRU等…以及諸如注意力機制的改進)成為解決Kaggle上NLP任務的標準方法。

從詞袋到 Transformer:自然語言處理實踐的十年

用遞歸神經網絡編碼單詞序列 2018–2019年:PyTorch的突破


近幾個月來,一種新的神經網絡框架在數據科學界越來越受關注:PyTorch。


我們不會參加Tensorflow VS PyTorch辯論,但是可以肯定的是,一個活躍的PyTorch實踐者社區正在Kaggle上成長。PyTorch筆記和教程定期在平臺上發佈。

從詞袋到 Transformer:自然語言處理實踐的十年

Google中的Tensorflow(藍色)與PyTorch(紅色)搜索趨勢(來源:Google Trend)
2019:transformer和預訓練語言模型的誕生


如前幾節所述,到目前為止,解決NLP任務的標準方法是使用單詞嵌入(在大量未標記的數據上進行預訓練),使用它們來初始化神經網絡的第一層,並在其上訓練其他層基於特定任務的數據(可能是文本分類,問題解答,自然語言推斷等)。


仔細想想,問題是這個方法不是最優的。事實上,無論何時你有一個新任務要解決,你都必須重新學習幾乎一切從零開始。使用單詞嵌入初始化的模型總是需要從頭開始學習如何從單詞序列中得出含義,——儘管這是語言理解的核心方面。 transformer來了,這是2018年出現的關鍵範式轉變:從僅初始化模型的第一層到使用分層表示對整個模型進行預訓練。


這將打開新的工作方法:把從預訓練語言模型到下游任務的信息(又名遷移學習)。

從詞袋到 Transformer:自然語言處理實踐的十年

《transformer—模型架構》(摘自《 Attention Is All You Need 》的論文)


在實踐中,如今,利用預訓練語言模型的最佳方法是使用Hugging Face(由現在居住在美國的法國企業家和Station F Microsoft AI Factory的校友創建)的出色的transformer庫。


現在它與PyTorch和TensorFlow兼容。如果您想在其上方使用wrapper來完成諸如文本分類之類的簡單任務,則可以看看simple-transformers。


而且,如果您專注於非英語文本,那麼另一個值得關注的庫是fast.ai,該庫旨在合併針對不同語言的預訓練模型。它是由Kaggle的前總裁兼首席科學家Jeremy Howard創建的。 其實,每個人都可以使用具有上一代預訓練語言模型的現成庫。這樣可以進行快速實驗,並可以最先進地使用NLP技術。


跟蹤如何在未來的Kaggle NLP比賽中使用它們將很有趣。像最近的TensorFlow 2.0問題解答挑戰一樣,可以識別有關Wikipedia頁面內容的真實用戶問題的答案。
​​​​

免責聲明:以上內容來自網絡,僅供交流學習之用。如有任何疑問或異議,請留言與我們聯繫。


分享到:


相關文章: