梳理十年Kaggle竞赛,看自然语言处理的变迁史
自2010年創辦以來,Kaggle作為著名的數據科學競賽平臺,一直都是機器學習領域發展趨勢的風向標,許多重大突破都在該平臺發生,數以千計的從業人員參與其中,每天在Kaggle論壇上都有著無數的討論。
各種類型的挑戰賽(計算機視覺、語音、表格處理等等)都會在這個在線平臺發布,而自然語言處理(NLP)問題最近亦備受關注。誠然,過去幾個月里,我們已經見證這一領域有好幾項振奮人心的創新,而目前流行的的則是transformers和預訓練語言模型。
Medium上一位從事NLP的博主就通過Kaggle競賽梳理了一遍自然語言處理的發展歷史,看看NLP這些年都是怎樣一路走來的。
左邊:動物沒有過馬路,因為它太累。右邊:動物沒有過馬路,因為它太寬。基于語境,句子的最后一詞“它”在這可指“動物”或是“馬路”,摘自谷歌transformers詞條。
2016以前:詞袋(bag of words)模型和TF-IDF算法盛行
在2016年之前,解決(或者說贏得)Kaggle自然語言處理挑戰的標準方法是采用詞袋模型(即計算文章中各個單詞出現的次數)來建立特征輸入機器學習分類器,典型的有樸素貝葉斯算法。稍微完善些的則有TF-IDF算法。
這種方法被應用在如StumbleUpon Evergreen分類挑戰。
StumbleUpon是一個推薦引擎,根據用戶的興趣向其推薦相關的網頁。網頁分為兩種,一種是暫時的,在短期內有價值的網頁,另一種是長期的,一直都有效果的網頁,該挑戰的目的就是對這兩種頁面進行二元分類。
數據集鏈接:
https://www.kaggle.com/c/stumbleupon
這里順便提一句,在2013年解決該難題的冠軍是Fran ois Chollet——就是兩年后編寫出Keras的那個人。
Fran ois Chollet
2016-2019:詞嵌入模型+Keras以及TensorFlow 的興起
在2015年,開始出現稠密詞表征(dense word representations)庫,如Gensim庫(包括Word2Vec和GloVe)。其他預訓練嵌入模型也陸續出現,像Facebook的FastTest或是Paragram。
同時,擁有大量用戶、簡單可用的神經網絡框架的首發版本也開始流行,即上文提到的Keras和TensorFlow。它們不再僅使詞袋模型,開始使用詞序模型捕獲句意。
然而要運行深度神經網絡,還有最后一項難題亟待解決:需要高處理性能。成本越來越低的GPU解決了這個難題。Kaggle平臺在2019年3月被谷歌收購后,平臺(通過合作式的Notebooks內核)可以向用戶免費提供GPU使用。
從那時起,詞嵌入和神經網絡(RNN,LSTM,GRU等等,以及基于此的改進,如attention)這些可行方案就成了解決Kaggle中自然語言處理難題的標準方法
這時候就不得不說一句:永別了,TF_IDF!
使用RNN編碼單詞序列
2018-2019:PyTorch殺出重圍
近幾個月,一個新的神經網絡框架PyTorch在數據科學界越來越受關注。
在此不討論TensorFlow和PyTorch的優劣,但可以肯定的是,在Kaggle上越來越多的人開始使用PyTorch了。平臺上經常有PyTorch的在線筆記和教程發布。
2019年:transformers和預訓練語言模型誕生
如上所述,直至目前為止,詞嵌入模型(在大量的無標注數據上進行預訓練)仍是解決自然語言處理難題的標準方法,利用此模型初始化神經網絡的第一層,然后在特定任務(可能是文本分類,問答或自然語言推斷等等)的數據上訓練其他層。
但如果仔細想想,這種方式其實并非最優。事實上,每當需解決一項新問題時,你基本需要從零開始學起。通過詞嵌入進行初始化的模型需要從零開始學習如何從單詞序列中提取含義——哪怕那是語言理解的最核心部分。
transformers出現后,這是2018年發生的關鍵范式轉變:從僅初始化模型的第一層到使用階梯式表達對整個模型進行預訓練。這也產生了新的訓練模式:將信息從預訓練語言模型轉移到下游任務(也稱為遷移學習)。
實際上,使用預訓練語言模型的最好方式是利用Hugging Face(由法國企業家創立,目前總部在美國,和我們一樣畢業于Station F微軟AI工廠的校友)開發的transformers庫。目前它與PyTorch和TensorFlow兼容。
如果你想用它更上層的封裝來完成一些諸如文本分類的簡單任務,可以看看 simple-transformer 庫。
總結
以上是生活随笔為你收集整理的梳理十年Kaggle竞赛,看自然语言处理的变迁史的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英特尔更新人工智能产品线,新品性能达到竞
- 下一篇: 继英伟达最小边缘超算,英特尔再推10倍V