日期:2021-118 11:03:11
自然語言是指人類日常使用的語言,如漢語、英語、日語等。自然語言靈活多變,是人類社會的重要組成部分,但卻無法被計算機很好的理解。為了用自然語言實現人與計算機之間的交流,自然語言處理誕生了。自然語言處理(NLP)是壹個結合了語言學、計算機科學、數學等學科的領域。它不僅研究語言學,還研究如何讓計算機處理這些語言。主要分為兩個方向:自然語言理解(NLU)和自然語言生成(NLG)。前者是聽和讀,後者是說和寫。
本文將從自然語言處理的歷史和發展入手,然後分析當前深度學習在自然語言處理領域的研究進展,最後探討自然語言處理未來的發展方向。
1950年,計算機科學之父圖靈提出“圖靈測試”,標誌著人工智能領域的開始。此時,美蘇冷戰期間,美國政府為了更方便地破譯蘇聯相關文件,致力於機器翻譯的研究,自然語言處理從此興起。從此,自然語言處理主要采用基於規則的方法,這種方法依賴於語言學。它通過分析詞匯和語法信息,總結出這些信息之間的規律,從而達到翻譯的效果。這種類似於專家系統的方法,通用性差,不易優化,最後進展緩慢,達不到預期效果。
上世紀八九十年代,互聯網飛速發展,電腦硬件也有了顯著提升。同時,將統計機器學習算法引入到自然語言處理中,基於規則的方法逐漸被統計的方法所取代。在這個階段,自然語言處理取得了實質性的突破,走向了實際應用。
從2008年左右開始,隨著深度學習神經網絡在圖像處理和語音識別領域的顯著成果,也被應用到自然語言處理領域。從最初的單詞嵌入、word2vec,到RNN、GRU、LSTM等神經網絡模型,再到最近的註意機制、預訓練語言模型等等。在深度學習的加持下,自然語言處理也迎來了飛速的進步。
接下來我將介紹自然語言處理和深度學習結合後的相關進展。
在自然語言中,詞是最基本的單位。為了讓計算機理解和處理自然語言,我們必須首先對單詞進行編碼。因為自然語言的單詞數是有限的,所以可以給每個單詞分配壹個唯壹的序列號。比如英文單詞的序號可以是1156。為了便於計算,通常將序號轉換成統壹的向量。簡單的方法是對單詞序號進行one-hot編碼,每個單詞對應壹個長度為n(單詞總數)的向量(壹維數組)。向量中只有單詞序號對應位置的元素值是1,其他都是0。
雖然使用壹鍵編碼構造單詞向量非常容易,但這不是壹個好方法。主要原因是詞的語義不能很好的表達。比如蘋果和橘子是相似的詞(都是水果),但是壹熱向量不能反映這種相似關系。
為了解決上述問題,Google的Mikolov等人在2013 [1][2]發表了兩篇與word2vec相關的原創論文。Word2vec將詞表示為定長向量,通過上下文學習詞的語義信息,使這些向量能夠表達詞的特征、詞與詞之間的關系等語義信息。Word2vec包括兩種模型:skip-gram模型[1]和連續詞袋模型[2]。它們的功能是通過中心詞預測語境,通過語境預測中心詞。比如有壹句話“我喝蘋果汁”。Skip-gram模型用apple預測其他詞,CBOW模型用其他詞預測Apple。
首先介紹CBOW模型,這是壹個通過上下文預測中心詞的三層神經網絡。以某個訓練數據“我喝蘋果汁”為例,可以把蘋果作為標簽值先去掉,把“我喝果汁”作為輸入,把蘋果作為要預測的頭詞。
Skip-gram模型類似於CBOW,也是三層神經網絡模型。不同的是,它通過中心詞預測上下文,也就是通過“蘋果”預測“我喝果汁”。接下來,簡要介紹Skip-gram模型中的層:
兩個模型訓練完成後,將作為詞向量矩陣,第I行代表詞庫中第I個詞的詞向量。可以使用詞向量來計算詞之間的相似度(詞向量點乘)。比如妳輸入I drink _ juice的上下文,預測出頭詞是蘋果和橘子的概率可能很高,因為蘋果和橘子對應的詞向量非常相似,也就是相似度高。詞向量還可以用於機器翻譯、命名實體識別、關系抽取等。
其實這兩個模型的原型在2003年就已經出現[3],Mikolov在13的論文主要是對模型進行了簡化,提出了負采樣和序列softmax方法,使訓練更加高效。
在提出詞向量的同時,深度學習RNN框架也被應用到NLP中,與詞向量相結合,取得了很大的成果。但是,RNN網絡也存在壹些問題,如:難以並行化,難以建立長距離和層次依賴關系。這些問題在2017發表的論文《註意力是妳需要的全部》中得到了有效的解決。本文提出了變壓器模型。傳統復雜的CNN和RNN在《變形金剛》中被拋棄,整個網絡結構完全由註意力機制組成。
《變形金剛》的核心內容是自我註意機制,是註意機制的變種。註意力的作用是從大量的信息中選擇少量的重要信息,並對其進行關註。比如,人們在看壹幅圖像時,會把註意力集中在更吸引人的部分,而忽略其他信息,這就是註意力的體現。但註意機制會註意全局信息,即輸入數據和輸出數據以及中間產品之間的相關性。自我關註機制減少了對其他外部數據的關註,只關註輸入數據本身,更善於捕捉數據的內在關聯。
自我關註機制的算法流程如下:
自我註意機制不僅在輸入數據中建立單詞之間的關系,而且並行高效地計算每個單詞的輸出。
變壓器的整體架構如下:
它分為兩部分:編碼器和解碼器。
編碼器的輸入是單詞向量加上位置碼(表示單詞所在的位置),然後通過多頭關註和前饋得到輸出。其中,多頭自我註意是指每個輸入單詞對應多組Q、K、V,各組之間互不影響。最後,每個字產生多個輸出B值,形成壹個向量。編碼器是變壓器的核心,通常有多層。前壹層的輸出將作為下壹層的輸入,最後壹層的輸出將作為解碼器輸入的壹部分。
解碼器由兩種不同的多頭自註意操作(掩蔽多頭註意和多頭註意)和前饋組成。解碼器將運行幾次,每次只輸出壹個單詞,直到輸出完整的目標文本。輸出部分將被組合作為下壹個解碼器的輸入。其中,掩蔽多頭註意是將輸入中沒有得到的部分掩蓋起來,然後進行多頭自註意操作。例如,如果有五個輸入,但每次只有兩個輸入,那麽q1和q2只會乘以k1和k2。
如果說深度學習的應用讓NLP有了第壹次飛躍。預訓練模式的出現,讓NLP有了第二次飛躍。前期訓練通過自監督學習(無標註)從大規模語料數據中學習出強大的語言模型,然後通過微調遷移到具體任務中,最終取得顯著效果。
預培訓模式的優勢如下:
預訓練模型有三個關鍵技術:
關於預訓練模型的結構,以Bert為例:輸入為單詞的壹熱編碼向量,乘以單詞向量矩陣,再經過多層變換器中的編碼器模塊,最後得到輸出。
介紹了NLP領域的熱門研究進展,其中變換器和預訓練模型的出現具有劃時代的意義。但隨著前期訓練模型越來越龐大,也會觸及硬件瓶頸。此外,NLP在閱讀理解和文本推理等壹些任務中的表征也不盡如人意。總之,NLP領域還是有很大的前景和挑戰的,還需要我們長期的努力。
米科洛夫,t .,蘇茨基弗,I .,陳,k .,科拉多,G. S .,& amp院長,J. (2013)。詞和短語的分布式表示及其組合性。《神經信息處理系統進展》(第3111-3119頁)。
[2]米科洛夫,t .,陳,k .,科拉多,g .,& amp院長,J. (2013)。向量空間中單詞表示的有效估計。arXiv預印本arXiv:1301.3781。
[3]約舒阿·本吉奧,R?埃簡·杜查姆、帕斯卡爾·文森特和克裏斯蒂安·賈文。壹種神經概率語言模型。《機器學習研究雜誌》,3:1137–1155,2003年。
[4]Vaswani A,Shazeer N,Parmar N,等.註意力是妳所需要的壹切[C]//神經信息處理系統的進展.2017: 5998-6008.
[5]Peters M E,Neumann M,Iyyer M,等.深層語境化的詞匯表征[J].arXiv預印本arXiv:1802.05365,2018。
[6]拉德福德,納拉辛汗,薩利曼斯,等.通過生成性預訓練提高語言理解能力[J].2018.
[7]Devlin J,Chang M W,Lee K,等. Bert:用於語言理解的深度雙向變換器的預訓練[J].arXiv預印本arXiv:1810.04805,2018。
[8]Houlsby N,Giurgiu A,Jastrzebski S,等.面向NLP的參數高效遷移學習[C]//機器學習國際會議,PMLR,2019: 2790-2799。