自然語言處理(NLP)中的深度學習發展史和待解難題

2020-12-16 量子位

王小新 編譯自 sigmoidal量子位 出品 | 公眾號 QbitAI

自然語言處理(NLP)是指機器理解並解釋人類寫作與說話方式的能力。近年來,深度學習技術在自然語言處理方面的研究和應用也取得了顯著的成果。

技術博客Sigmoidal最近發布了一篇文章,作者是機器學習工程師Rafal。

這篇文章討論了自然語言處理方法的發展史,以及深度學習帶來的影響。量子位編譯如下:

在深度學習時代來臨前

在2006年Hinton提出深度信念網絡(DBN)之前,神經網絡是一種極其複雜且難以訓練的功能網絡,所以只能作為一種數學理論來進行研究。

在神經網絡成為一種強大的機器學習工具之前,經典的數據挖掘算法在自然語言處理方面有著許多相當成功的應用。我們可以使用一些很簡單且容易理解的模型來解決常見問題,比如垃圾郵件過濾、詞性標註等。

但並不是所有問題都能用這些經典模型來解決。簡單的模型不能準確地捕捉到語言中的細微之處,比如諷刺、成語或語境。

基於總體摘要的算法(如詞袋模型)在提取文本數據的序列性質時效果不佳,而N元模型(n-grams)在模擬廣義情境時嚴重受到了「維度災難(curse of dimensionality)」問題的影響,隱馬爾可夫(HMM)模型受馬爾可夫性質所限,也難以克服上述問題。

這些方法在更複雜的NLP問題中也有應用,但是並沒有取得很好的效果。

第一個技術突破:Word2Vec

神經網絡能提供語義豐富的單詞表徵,給NLP領域帶來了根本性突破。

在此之前,最常用的表徵方法為one-hot編碼,即每個單詞會被轉換成一個獨特的二元向量,且只有一個非零項。這種方法嚴重地受到了稀疏性的影響,不能用來表示任何帶有特定含義的詞語。

Word2Vec方法中被投射到二維空間中的單詞表徵

然而,我們可以嘗試關注幾個周圍單詞,移除中間單詞,並通過在神經網絡輸入一個中間單詞後,預測周圍單詞,這就是skip-gram模型;或是基於周圍單詞,進行預測中間單詞,即連續詞袋模型(CBOW)。當然,這種模型沒什麼用處,但是事實證明,它可在保留了單詞語義結構的前提下,用來生成一個強大且有效的向量表示。

進一步改進

儘管Word2Vec模型的效果超過了許多經典算法,但是仍需要一種能捕獲文本長短期順序依賴關係的解決方法。對於這個問題,第一種解決方法為經典的循環神經網絡(Recurrent Neural Networks),它利用數據的時間性質,使用存儲在隱含狀態中的先前單詞信息,有序地將每個單詞傳輸到訓練網絡中。

循環神經網絡示意圖

事實證明,這種網絡能很好地處理局部依賴關係,但是由於「梯度消失」問題,很難訓練出理想效果。

為了解決這個問題,Schmidhuber等人提出了一種新型網絡拓撲結構,即長短期記憶模型(Long Short Term Memory)。它通過在網絡中引入一種叫做記憶單元的特殊結構來解決該問題。這種複雜機制能有效獲取單元間更長期的依賴關係,且不會顯著增加參數量。

現有的很多常用結構也是LSTM模型的變體,例如mLSTM模型或GRU模型。這得益於提出了基於自適應簡化的記憶單元更新機制,顯著減少了所需的參數量。

在計算機視覺領域中,卷積神經網絡已經取得了很好的應用,遲早會延伸到自然語言處理研究中。目前,作為一種常用的網絡單元,一維卷積已成功應用到多種序列模型問題的處理中,包括語義分割、快速機器翻譯和某些序列轉換網絡中。由於更容易進行並行計算,與循環神經網絡相比,一維卷積在訓練速度上已提高了一個數量級。

了解常見的NLP問題

有許多任務,涉及到計算機與人類語言之間的交互,這可能對人類來說是一件簡單的小事,但是給計算機帶來了很大的麻煩。這主要是由語言中細微差異引起的,如諷刺、成語等。

按照複雜程度,下面列出了當前還處於探索階段的多個NLP領域:

最常見的領域是情緒分析(Sentiment Analysis),這方面也許最為簡單。它通常可歸結為確定說話者/作者對某個特定主題的態度或情感反應。這種情緒可能是積極的、中性的和消極的。文末的連結1給出了一篇關於使用深度卷積神經網絡學習Twitter情緒的經典文章。連結2的一個有趣實驗偶然發現,深度循環網絡也可用來辨識情緒。

生成對話網絡中的多個激活神經元。明顯看出,即使進行無監督訓練,網絡也能分辨出不同情緒類別。

我們可以將這種方法應用到文件分類(Document Classification)中,這是一個普通的分類問題,而不是為每篇文章打幾個標籤。連結3的論文通過仔細比較算法間差異,得出深度學習也可作為一種文本分類方法的結論。

接下來將要介紹一個真正有挑戰的領域——機器翻譯(Machine Translation)。這是一個與先前兩個任務完全不同的研究領域。我們需要一個預測模型,來輸出一個單詞序列,而不是一個標籤。在序列數據研究中,深度學習理論的加入給這個領域帶來了巨大的突破。通過連結4的博文中,你可以了解更多關於循環神經網絡在機器翻譯中的應用。

我們可能還想要構建一個自動文本摘要(Text Summarization)模型,它需要在保留所有含義的前提下,提取出文本中最重要的部分。這需要一種算法來了解全文,同時能夠鎖定文章中能代表大部分含義的特定內容。在端到端方法中,可以引入注意力機制(Attention Mechanisms)模塊來很好地解決這個問題。

關於注意力機制的詳細內容可參考量子位先前編譯過的文章《自然語言處理中的注意力機制是幹什麼的?

最後一個領域為自動問答(Question Answering),這是一個與人工智慧極其相關的研究方向。相關模型不僅需要了解所提出的問題,而且需充分了解文本中的關注點,並準確地知道在何處尋找答案。關於深度學習在自動問答中的詳細說明,請查看連結5的相關博文。

GNMT英譯法的注意力機制示意圖。

由於深度學習為各種數據(如文本和圖像)提供相應的向量表徵,你可以利用不同的數據特性構建出不同模型。

於是,就有了圖片問答(Visual Question Answering)研究。這種方式比較簡單,你只需要根據給出圖像,回答相應問題。這項工作簡單到聽起來好像一個七歲小孩就能完成,但是深層模型在無監督情況下不能輸出任何合理的結果。連結6的文章給出了相關模型的結果和說明。

總結

我們可以發現,深度學習在自然語言處理中也取得了很好的效果。但是由於計算和應用等問題,我們仍需要進一步了解深度神經網絡,一旦可以掌控深度學習,這將永遠改變遊戲規則。

相關連結

1.Twitter情緒分類:

http://casa.disi.unitn.it/~moschitt/since2013/2015_SIGIR_Severyn_TwitterSentimentAnalysis.pdf

2.基於深度循環網絡的文本情緒辨識:

https://blog.openai.com/unsupervised-sentiment-neuron/

3.基於RNN網絡的文本分類:

https://arxiv.org/pdf/1703.01898.pdf

4.循環神經網絡在機器翻譯中的應用:

https://medium.com/@ageitgey/machine-learning-is-fun-part-5-language-translation-with-deep-learning-and-the-magic-of-sequences-2ace0acca0aa

5.深度學習在自動問答中的應用:

https://einstein.ai/research/state-of-the-art-deep-learning-model-for-question-answering

6.圖片問答中的文本表徵:

https://arxiv.org/pdf/1705.06824.pdf

【完】

相關焦點

  • 【獨家】自然語言處理(NLP)入門指南
    v=nfoudtpBV68&list=PL6397E4B26D00A269 •  斯坦福CS224d:自然語言處理的深度學習[更高級的機器學習算法、深度學習和NLP的神經網絡架構]http://cs224d.stanford.edu/syllabus.html •  Coursera:自然語言處理簡介[由密西根大學提供的NLP
  • 史丹福大學NLP組Python深度學習自然語言處理工具Stanza試用
    幾年前我曾基於斯坦福Java工具包和NLTK寫過一個簡單的中文分詞接口:Python自然語言處理實踐: 在NLTK中使用斯坦福中文分詞器,不過用起來也不是很方便。深度學習自然語言處理時代,史丹福大學自然語言處理組開發了一個純Python版本的深度學習NLP工具包:Stanza - A Python NLP Library for Many Human Languages,前段時間,Stanza v1.0.0 版本正式發布,算是一個裡程碑:
  • 斯坦福NLP團隊發布最新自然語言處理Python庫
    【導讀】斯坦福NLP團隊,於1月29日發布了新版的自然語言處理Python庫:StandfordNLP,不同於以前java系的CoreNLP,
  • 國內自然語言處理(NLP)研究組
    /natural-language-computing/www.microsoft.com百度自然語言處理百度自然語言處理 - 理解語言,擁有智能,改變世界nlp.baidu.com阿里巴巴達摩院語言技術實驗室
  • Awesome-Chinese-NLP:中文自然語言處理相關資料
    HanLP (Java)SnowNLP (Python) Python library for processing Chinese textYaYaNLP (Python) 純python編寫的中文自然語言處理包,取名於「牙牙學語」小明NLP (Python) 輕量級中文自然語言處理工具DeepNLP (Python) Deep
  • 實踐入門NLP:基於深度學習的自然語言處理
    特別是最近兩年,基於深度學習的自然語言處理逐漸取得了一定進展,在人機對話、問答系統、語言翻譯等方向的應用也一直是自然語言處理中的熱門話題,而這些應用的實現,基本依賴於底層技術和模型的進步,再加上自然語言處理領域也算是一個多學科交叉的行業,自然語言處理的未來發展對於很多相關學科和方向都具有深遠的影響力。
  • 帶新手走進自然語言處理,7本NLP專業書
    基於深度學習的自然語言處理老K推薦語:「這本書側重於神經網絡模型在自然語言處理中的應用。本文首先介紹了有監督機器學習和前饋神經網絡的基本知識,如何將機器學習方法應用到自然語言處理中,以及詞向量表示(而不是符號表示)的應用。然後介紹了更為專業化的神經網絡結構,包括一維卷積神經網絡、循環神經網絡、條件生成模型和基於注意的模型。然後,對樹網絡、結構化預測和多任務學習的發展前景進行了展望。
  • 自然語言處理NLP快速入門
    本文提供了一份簡要的自然語言處理介紹,幫助讀者對自然語言處理快速入門。我們感受到了閱讀這些東西所引發的情感,我們經常想像現實生活中那東西會是什麼樣子。 自然語言處理 (NLP) 是人工智慧的一個子領域,致力於使計算機能夠理解和處理人類語言,使計算機更接近於人類對語言的理解。計算機對自然語言的直觀理解還不如人類,他們不能真正理解語言到底想說什麼。簡而言之,計算機不能在字裡行間閱讀。
  • 從語言學到深度學習NLP,一文概述自然語言處理
    本文從兩篇論文出發先簡要介紹了自然語言處理的基本分類和基本概念,再向讀者展示了深度學習中的 NLP。這兩篇論文都是很好的綜述性入門論文,希望詳細了解自然語言處理的讀者可以進一步閱讀這兩篇論文。本文第一部分介紹了自然語言處理的基本概念,作者將 NLP 分為自然語言理解和自然語言生成,並解釋了 NLP 過程的各個層級和應用,這一篇論文很適合讀者系統的了解 NLP 的基本概念。
  • 自然語言處理 NLP 的百年發展史
    這一系列顛覆性的研究成果在學術界引發轟動,激發了人工智慧(AI)的思潮,同時也催生了自然語言處理(NLP)和計算機技術的發展。人們最早對 NLP 的探索始於對機器翻譯的研究。1947年,美國科學家韋弗(W. Weaver)博士和英國工程師布斯(A. D.
  • 深度學習的NLP工具
    為什麼去年可以工作的代碼和最新發布的深度學習框架不適配?為什麼一個很直白的基線這麼難以建立?在今天的世界中,這些都是自然語言處理(NLP)的研究員遇到的問題。我們來看一個假想的博士學生。我們叫它亞歷山大,他剛開始機械翻譯(NMT)的研究。
  • 快速掌握 Spacy 在 Python 中進行自然語言處理
    (點擊上方公眾號,可快速關注)轉自:數據派THU  英文:Paco Nathan  翻譯:笪潔瓊本文與配套的Domino項目,簡要介紹了如何使用
  • 深度學習在NLP中的運用?從分詞、詞性到機器翻譯、對話系統
    本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。自然語言是人類知識的抽象濃縮表示,而自然語言理解是人工智慧研究領域中極具挑戰的一個分支。上次,《自然語言處理在 2017 年有哪些值得期待的發展?
  • NLP自然語言處理組
    黃書劍 副教授、博士生導師、江蘇省優青主頁:http://nlp.nju.edu.cn/huangsj/        分析理解人類語言是人工智慧的重要問題之一。南京大學自然語言處理課題組從事NLP領域研究工作近40年,國內最早從事該領域研究的科研團體之⼀,先後承擔過該領域的國家科技攻關項目、863項目、國家自然科學基金和江蘇省自然科學基金以及對外合作項目的研製,積累了大量的該領域研究工作所涉及到的理論、技術和經驗。
  • 【NLP】自然語言處理基礎微課程|語言學午餐
    小編痛下決心,同黑龍江大學自然語言處理實驗室(微信公眾號ID:hlju_nlp,在今天的另一則推送中專文介紹)的小夥伴們合作,計劃在本學期完成一門介紹自然語言處理的「微課程」。該課程將於下周三(9月17日)正式上線。下文是課程大綱,歡迎大家按時「上課」!
  • 從《統計自然語言處理》序言看NLP領域發展史(馮志偉)
    》序言,對經驗主義和理性主義的分析非常精彩,基本是NLP領域的發展史。近年來,由於自然語言處理的發展,不同學科的專家絡繹不絕地參加到自然語言處理的隊伍中來。這些來自不同學科領域的專家,對於他們自己原來的本行,當然都是精研通達的內行,但是,他們當中的很多人,對於自然語言處理這個交叉學科本身,並沒有接受過專門的學習和訓練,有必要進行更新知識的再學習,除了學習不同於他們自己本學科的相關學科的知識之外,還有必要學習自然語言處理這個交叉學科本身的知識。
  • 元學習與自然語言處理
    元學習 (meta learning),又被稱作「學會學習」 (learning to learn),是近期深度學習研究界的一大關注熱點,旨在幫助新任務在缺乏訓練樣本的情況下快速學習 (rapid learning)、快速適應 (fast adaption)。目前,隨著深度學習的蓬勃發展,各類複雜模型已經能夠很好地刻畫特徵,並擬合數據集分布。那為什麼我們需要元學習呢?
  • CCCF專欄 | 自然語言處理中的深度學習:評析與展望
    為什麼深度學習能夠成為自然語言處理的強大工具?未來深度學習在自然語言處理中將如何發展?本文嘗試回答這兩個大家都關心的問題。人的語言處理人是如何進行語言處理,即語言理解和語言生成的?這個問題仍是當今科學最大的未解之迷。
  • CMU2018春季課程:神經網絡自然語言處理課程(附PPT和代碼)
    ,主要內容是教學生如何用神經網絡做自然語言處理。本文中,我們梳理了該課程的主要內容:神經網絡、詞向量、語言模型、CNNs和RNNs在NLP中的應用等等,課程涉及幾乎全部NLP問題,內容非常全面,強烈推薦給從事NLP研究的讀者。
  • 【CCCF專題】深度學習在自然語言處理中的應用
    自然語言處理中的深度學習隨著語音和圖像處理領域的突破性進展,深度學習在自然語言處理領域也越來越受到重視,並逐漸應用於自然語言處理的各種任務中。然而自然語言處理任務有其自身的特點,與語音和圖像處理之間的不同主要體現在以下兩方面。語音和圖像在處理過程中的輸入信號可以在向量空間內表示,而自然語言處理通常在詞彙一級進行。