【NLP】到目前为止,机器学习与自然语言处理相遇的那些事
導讀
????????在過去的十年中,自然語言處理(NLP)有了長足的發展。本文將嘗試指出和總結直到現在的NLP領域中最關鍵和最重要的突破,同時還將重點放在仍然存在和新出現的挑戰上。
????
??????? NLP應用程序的記錄甚至可以在20世紀早期之前找到,當時人們曾嘗試使用機器翻譯將文本從一種語言翻譯成另一種語言。同時,語言學和計算機科學之間存在一些矛盾的觀點,聲稱語言本質上是生成性的,不能用數學概念來描述。????
????????在1950年,艾倫·圖靈(Alan Turing)充分的回答“機器可以思考嗎?”這個問題,通過引入“模仿游戲”的研究,計算機在不顯著改變結果的情況下進行動作和回答的模擬過程。因此,只要與機器的對話與人的對話無法區分,就認為該機器是“思考的”。實現這一目標的第一個成功嘗試是ELIZA,這是麻省理工學院數學與計算項目(“ MAC項目”)中的一個簡單程序,成功的讓人們誤以為它是心理學家,通過把問題轉向演講者來反思問題。另一個程序是PARRY(Colby,1975)模仿一個偏執型精神分裂癥患者。多年來,程序變得越來越“智能”,例如Eugene Goostman 或Cleverbot ,它們對真實對話的大型數據庫進行統計分析,以確定最佳響應。缺點是無法保持一致性和跟上新主題。圖靈測試有很多變體或替代品,例如,當人類不得不向計算機證明其非機器性質時(例如驗證碼),或者當我們使用AI創作原創藝術時。
????????在過去的十年中,NLP迅速發展,并開發了下一代應用程序,例如Siri或Alexa等虛擬助手。使用神經網絡或無監督學習開發了新的方法,以獲取Word2Vec或GloVe等單詞的向量表示。這一發展的最新里程碑是引入了基于注意力的模型,該模型使用了一種理解單詞和短語之間的上下文關聯的機制。?
??????? NLP作為AI的一個子領域,檢查并檢測數據中的模式,并將其用于更好地理解和生成自然語言。NLP有多種應用程序,其中一些是:
? ??
???
??? ??? NLP將人類語言從原始文本數據的形式轉換為結構化數據(計算機可理解的),但是在此之前,它需要通過稱為自然語言理解(NLU)的過程來基于語法、上下文感知數據并確定意圖和實體。另一方面,自然語言生成(NLG)是將計算機生成的數據轉換為人類可以理解的文本的過程。該系統通過代表人類所需的句子,使用文檔計劃(document-planning),微觀計劃(micro-planning)和實現(realization)來生成結構良好的動態文檔。
????????本文認知基于的文獻積累,是從最近10年以來Google學術搜索獲得的最高引用結果開始,同時還跟蹤引用和反向引用。搜索包括每個組中的至少一個關鍵字:機器學習(Machine Learning, Transformer, CNN, Neural Network, Recurrent, GRU, Deep Learning, Recursive, LSTM, ML)和NLP(Natural Language, NLP, NLU, NLG)。?
????????顯然,在“Transformers”的提出之后,有關該組合主題的論文數量一直在穩步增長,并發表了轉移學習的衍生模型和方法(見下圖)。
?1???NLP領域的演進
????????詞嵌入在過去十年中占有很強的地位,詞嵌入是一個具有相同含義的詞具有相似的表示形式的詞的術語。2013年,Mikolov引入了兩種不同的文本向量化技術:Skip Gram和Common Bag of Words(CBOW)。它們都以一個單獨的名稱“ Word2Vec”在庫中發布,并于同年晚些時候提出了對它們進行一些改進的嘗試,以糾正多義性。不久之前,2011年,同一位作者還介紹了一種遞歸神經網絡語言模型(RNNLM),其效率是過去方法的15倍。?
??????? 2014年,Pennington提出了一種用于檢索單詞的向量表示的無監督學習算法,稱為GloVe 。遞歸網絡和LSTM是ML的有趣的最新發展,Sutskever提出了序列到序列(seq2seq)模型。同樣在同一年,卡爾希布倫納(Kalchbrenner)提出了動態卷積神經網絡(DCNN),金(Kim)探索了各種分類任務。?
??????? Dong在2015年引入了多列卷積神經網絡(MCCNN),以從多個方面分析問題并創建其表示。Yin提出了CNN和RNN之間NLP的比較研究,總結了直到那時的進展。Upadhyay在2017年引入了一種新的方法來管理單詞嵌入中的多義性。彼得斯(Peters)在2018年建議了語言模型的嵌入。同年,Chen推出了新的LSTM,其性能優于以前的所有有關自然語言推理的模型。
介紹注意力:Transformers的時代
??????? Bahdanau基于先前提出的編碼器-解碼器體系結構,引入了術語“注意力”:基于解碼器的先前隱藏狀態和句子的當前輸入狀態,每個輸入單詞的對齊分數。使用此分數,解碼器可以決定輸入句子的哪些部分最重要,而不必將所有輸入句子編碼為固定長度的向量。?
????????遵循這個概念,Vaswani 提出了一個相當大膽的提議,導致了Transformers體系結構:在編碼器-解碼器模型中用多頭的自注意層替換了昂貴的RNN,從而顯著提高了它們的性能,設定了各種任務的新SOTA。基于這個想法,出現了全新的模型類別(下圖)。后來建議使用Transformer XL,以嘗試解決原始Transformer輸入的有限長度問題。
????????遷移學習和預訓練是另一個重要的進步。Howard 和Ruder 在2018年提出了通用語言模型微調(ULMFiT),這是一種可以應用于NLP中任何任務的遷移學習方法,包括3個階段:訓練大量文本以捕獲一般特征, 通過區分性微調和傾斜的三角形學習率對當前任務進行微調,最后添加和微調分類器層。判別性微調允許以不同的學習速率來調整每一層,而傾斜的三角形學習速率最初會線性增加學習率,然后線性降低然后再降低。
????????通過將這種新的Transformer架構的編碼器部分進行預訓練和分離的思想結合起來,并根據需要進行多次堆疊,OpenAI的團隊(Radford ,Brown )創建了3個版本的生成性預訓練模型(又名GPT-1 / 2/3)。每個版本都具有大量參數和在更大語料庫中進行預訓練,從而為諸如文本生成和每個版本的問題解答之類的任務提供了新的最新SOTA。盡管第三版仍未公開可用,但第二版已發布了具有1.17億參數的較小模型。
??????? Devlin 引入了來自transformer的雙向編碼器表示(BERT)技術,其架構類似于GPT。顧名思義,它與GPT的基本區別之一是雙向性,這有助于更好地理解上下文,從而使其比其他模型具有關鍵優勢。通過發布基本模型和(更大)模型,BERT在問答和文本分類等任務中實現了最先進的性能,并且只需微調一個很小的模型就可以將其用于多種其他NLP任務。在特定于任務的語料庫上進行微調。?
????????各種發布從最初的BERT版本中衍生出來,試圖對其進行改進或提供針對其缺點的解決方案。RoBERTa 被認為是一種更好的預訓練方法,而DistilBERT 和ALBERT 則更小,更快的替代方案與訓練速度和降低的內存消耗。
??????? Yang提出了XLNet ,這是一種自回歸(AR)模型,試圖修復BERT的MLM任務中的差異,其中掩蔽的輸入token之間的相關性被忽略了。為了實現這一目標,它使用了一種排列語言建模的目標-意味著所有token都是可以預測的,而不是僅BERT掩蔽token的15%。盡管AR模型通常可以在一個方向上訪問上下文,但是排列允許它是雙向的。在20個任務上,XLNet的性能有時甚至會大大優于BERT。?
????????百度的Sun于2019年初通過kNowledge IntEgration引入了增強表示(ERNIE),它是一種基于字符的模型,與BERT對抗,適用于當前的最新技術,其掩蔽策略略有不同-多階段而不是隨機的。后來,在2020年,百度發布了ERNIE的第二版,該版本引入了“持續預訓練”以及針對詞法、句法和語義分析的多項訓練任務,聲稱不僅在中文方面而且在英語方面都優于BERT和XLNet。(請參閱下表)。
?2???需要更多的數據!
????????通用語言理解評估(GLUE)基準是一種流行的工具,它評估了分析自然語言理解系統的能力,它有自己的排行榜。一年后,它的第二版(SuperGLUE)問世,它具有更多而艱巨的任務,可以對不斷發展的NLP模型進行更準確的評估。GLUE由11個任務和它們同等的測試數據集匯編組成,而SuperGLUE還有10個任務。?
??????? Common Crawl 是一個包含大量Web爬蟲數據的存儲庫,用作許多模型的預訓練材料。它可能很大,但是由于它是一個網絡數據集,因此很可能需要大量的預處理才能真正使用。預先訓練的模型之間其他常見的數據來源是Wikipedia頁面-許多多語言和非英語模型的主要來源-以及Reddit,IMDB或Twitter網站的已解析子集。Kaggle 是擁有大量用戶提交的數據集的另一個很好的來源,盡管由于尺寸小得多,它們可能更適合于微調,而不是實際的預訓練。
?3???開源工具
????????在下表中,總結了流行的開源NLP工具。 ?Github倉庫星標被用作流行程度的指標,同時還確保了該項目在最新/頻繁發布的版本中仍處于活動狀態。此外,Huggingface自2019年以來一直維護精心策劃的git存儲庫,其中包含許多針對PyTorch和Tensorflow的最新預訓練的Transformers,從而可以快速測試這些模型中的任何一個并將原型制作變得輕而易舉。
????????正如人們容易看到的那樣,這里有很多選擇-每個選擇都有其自身的優點和缺點。例如,AllenNLP更注重研究/教育,而spaCy可能是生產的更好選擇,而NLTK可能更難使用。最后,一切都取決于應用程序的要求以及開發團隊的個人喜好。
?4???挑戰
????????盡管NLP在過去幾年中發展了很多,但仍然存在一些挑戰。為了理解基于語法和上下文的預期含義和實體,所有非結構化上下文都需要轉換為有意義的定義數據。?
????????從數據收集開始,通過構建語料庫,文本挖掘用于識別文本數據中的非平凡模式,數據預處理使用標記化、規范化和替換的子過程來處理和操作語料庫。大多數原始數據對于定義特征通常沒有用,這些特征通常包含很多噪聲,因此ML模型往往變得無效且難以訓練。最初的目標是從帶有文本的數據塊到清理的token列表,然后進行數據探索和可視化,并在構建模型之前擁有一個更好的數據集。通過將文本拆分為句子、單詞并將其轉換為標準形式(如擴展構造并將其設置為基本樣式),非結構化數據將轉換為有用的文本。?
????????單詞、歧義、語法甚至俚語的語義含義是需要處理的。在下圖中,我們引用了NLP的一些主要挑戰。
歧義
????????如上所示,歧義存在于語言學的各個層面。在自然語言中,這是很常見的,單詞根據句子的上下文(上下文單詞)具有多種含義。相反,不同的詞可以具有相同的含義(同義詞)。Irony、sarcasm和humor可能會使用具有特定狀態的詞語,但實際上卻相反。其他一些主要的歧義類型是:詞義歧義,其中單個記號可以表示為動詞、名詞或形容詞;語義歧義是指具有多種解釋的句子中描述的概念性情況,并且當句子中的雙重含義和語言的語法原則不被允許時會發生語法歧義。此外,錯誤、錯別字、俚語和不一致會使翻譯復雜化。句子中的很多時候,實際含義和所寫內容之間存在差異。語用學是處理這種情況的研究。????????
????????當輸入數據不是文本而是語音時,會出現另一個歧義問題。語音學(Phonetics)和音系學(phonology)是指token聽起來的方式。語音學處理的是聲音的特性和感知,這意味著它們是如何產生的,音系學處理的是一種語言中彼此之間的表達關系。
更大的參數(也或許不是?)
????????隨著每一次新的發布,每個團隊都在爭奪更多參數(參見下圖),最終獲得了具有數十億參數的模型。盡管這可能會改善實際結果,但對財務和時間方面的訓練成本都將產生巨大的影響,即使只需要進行微調,在某些情況下也使得許多最新架構無法用于某些單個GPU甚至整個GPU集群。除了可能帶來的任何環境后果外,這還阻礙了它們在現實世界中的使用。
上下文分段和文本重復
????????原始的Transformer架構以及流行的派生模型都具有預定義的最大輸入序列長度-在某些情況下是由模型本身(例如BERT和GPT-1中的512,GPT-2中的1024)或整體硬件限制(即有效內存)。在某些邊際情況下,這可能會導致上下文丟失,在這種情況下,輸入會分成一個部分,其中的內容與其下一個或以前的內容相關。盡管在實踐中通常不會出現問題,但還是有一些建議,例如上述的Transformer XL可以提供幫助。
????????此外,對于問答(QA)任務或需要實際生成文本的任何其他任務,輸出在某些情況下可能是重復的,甚至是不相關的。盡管有時這是由于模型本身或訓練不足所致,但在某些情況下,原因是這種上下文分散或缺少足夠大/足夠多的數據集。
翻譯迷失(Lost in Translation)
????????如今,大多數經過預訓練的模型都將重點放在英語上,有些方法則將重點放在基于字符的語言上,例如中文或阿拉伯語。因此,極少數的多語言選項是針對具有單語言模型的本地語言的BERT或GPT的稀疏預訓練嘗試(見下圖)。經過Wikipedia語料庫訓練的BERT(或m-BERT)的多語言版本是另一個這樣的選擇,它支持104種不同的語言。但是仍然缺少足夠大、高質量、多語言的數據集,因為即使在Wikipedia中,許多語言的頁面數量也比英語要少得多(有時太少,甚至無法考慮)。
??????? XLM模型嘗試通過添加字節對編碼并一次以兩種語言訓練BERT,同時將“掩蓋語言建模”目標更改為“翻譯語言建模”,同時屏蔽兩種語言中的token,從而嘗試進一步提高多語言能力。盡管創建了可以勝過m-BERT的多語言模型,但它卻使數據可用性變得更加困難,因為現在同時需要兩種語言的相同內容。XLM-R 是XLM的后繼產品,它使用更大的數據集并以可以針對一種語言進行微調然后用于跨語言任務的規模來提高性能。?
????????盡管上述所有方法的確取得了有趣的結果,但英語和其他語言之間在問答(QA)等任務之間仍然存在巨大差距。例如,對于MLQA問答基準,英語的F1 / EM(完全匹配)分數為80.6 / 67.8,德語的分數為68.5 / 53.6。
?5??總結
????????在過去的十年中,無論是整體改進還是針對特定任務,NLP領域均取得了巨大進步。它從向量化革命開始,在每個NLP pipeline的核心都針對最重要的任務提出了新的建議,直到最近推出的Transformers和遷移學習標志著“黃金時代”的開始。?
????????在此期間,越來越多的公司開始采用Chatbot技術。從簡單的模式匹配支持代理開始,他們變得越來越復雜,逐漸開始采用機器學習技術和模型,使它們更像人類,并轉向實際的學習,遠離模式。
????????機器翻譯也在穩步發展。作為Encoder-Decoder模型及其Transformer后續產品的主要任務之一,如今的自動翻譯應用程序比以往任何時候都更加準確。隨著文本生成模型的發展,自動化的文章生成應用程序開始出現,并且虛擬文案撰寫者與人類無法區分,這可能很快就會成為現實。?
????????但是,盡管NLP已經走了這么遠,但仍有許多事情要做。多語言支持模型還有很長的路要走,最近的模型將需要進行大量的優化和縮小規模,或者更廣泛地采用有效的硬件,然后才能在實際應用中真正使用它們。下一件大事還有待觀察,而Transfoemers目前正在引領潮流。
參考資料:
[1]https://arxiv.org/pdf/2104.10213.pdf
END
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻 本站qq群851320808,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【NLP】到目前为止,机器学习与自然语言处理相遇的那些事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【推荐系统】KDD2021推荐系统论文集
- 下一篇: win10开机密码忘记了的解锁教程