【譯】NLP必讀

Language is the blood of the soul into which thoughts run and out of which they grow
‒ Oliver Wendell Holmeshtml

原文:NLP must reads 做者:Rowen Leegit

你有沒有想過谷歌翻譯或者 Siri 是如何工做的? 機器如何理解咱們所說的話? 這類問題屬於天然語言處理(NLP)領域,這是當今最使人興奮的研究領域之一。 在這篇文章中,我將分享在如今 NLP 中的技術架構。github

當時提到人工智能,腦海中浮現的每每是一些邪惡的終結者試圖毀滅世界。可是若是你不考慮部署和清洗數據帶來的混亂,人工智能模型本質上其實就是數學預測模型。 做爲一個數學模型,它須要數學輸入。所以,若是你輸入一串單詞並指望模型能夠真正讀懂它理解它,這是沒有意義的。web

這裏整個領域都在致力於尋找詞彙的正確數學表示。(但話又說回來,你如何定義"正確"?) ,我會在下一節討論。數組

單詞表示

「單詞表示」的使用近年已經成爲NLP系統成功的關鍵網絡

一種常見的方法是將一個單詞轉換爲一個向量(由數字組成的數組) ;根據流行的觀點,一個好的單詞表示法最好是考慮到語法、語義和計算需求的表示法。 本文所討論的是,分佈式表示在嘗試實現這一點:架構

一個神經機率語言模型(A Neural Probabilistic Language Model)

什麼是分佈式表示: 爲了更直觀理解,咱們將它與稀疏表示法(sparse representation)進行比較併發

稀疏表示(左)與分佈式表示(右)。 圖片來自quora post

爲何選擇分佈式表示: 在語料庫中使用單詞的稀疏表示(好比獨熱編碼(one-hot))會致使維數災難,即單詞向量的維數隨着詞彙量的增長而增長(做爲比較,想象一下若是咱們有更多的模式,上面的圖會是什麼樣子)。 所以,分佈式表示更爲可取。app

向量空間中高效的單詞表示(Efficient Estimation of Word Representations in Vector Space)

介紹word2vec模型: 它使用了一個兩層的神經網絡,將文本轉換成向量:基於包圍它的上下文單詞預測這當前詞(CBOW),以及基於單詞預測它的上下文(Skip-gram)。框架

圖片來自論文

Glove: 詞表示的全局向量ーー斯坦福 NLP(GloVe: Global Vectors for Word Representation — Stanford NLP

一個全局方法: 在整個語料庫中考慮了詞-詞同現機率的詞向量表示。 它克服了 word2vec 模型只考慮相鄰詞而不考慮整個語料統計的缺點。

如今咱們已經有了詞的數學表示,接下來咱們要作什麼呢? RNN要上場了。

循環神經網絡——RNN(Recurrent Neural Networks)

語言是有序列的,所以在天然語言處理問題中經常使用的模型之間具備類似的性質,也就不足爲奇了。 一個使用普遍的模型是 RNN,Andrej Karpathy 在他的博客中稱之爲"magical"。 你能夠把它想象成一次只能輸入一個單詞的機器。 它會記住你以前輸入到"記憶"(有時稱爲隱含向量)中的全部單詞。

如下是我從他的博客文章中得出的主要結論::

  • 普通神經網絡和卷積網絡的主要問題,是它們每次的輸入和輸出向量(單詞)必須是固定長度的
  • 而在循環網絡中,輸入和輸出向量的尺寸能夠不是固定的。能夠想象,在語言翻譯任務中,須要翻譯的句子長度是不一樣的。

  • RNN 的一個侷限性是,若是它有太多的"內存",也就是若是隱藏層向量尺寸的話,它的計算成本會很是高。 解決這個問題的一個嘗試是一個叫作神經圖靈機(Neural Turing Machine)的模型 。它有一個外部內存系統,容許它讀寫特定的內存位置。在涉及複製和排序數據序列的任務中,NTM 的性能優於普通的LSTM。然而,我並無聽到不少人在語言建模任務中使用 NTM。

語言翻譯任務( Language Translation Tasks)

端到端的神經機器翻譯系統(Neural machine translation by jointly learning to align and translate)

什麼是神經機器翻譯: 這是一個神經網絡在翻譯任務中的實際應用。 一種流行的方法是使用編碼器和解碼器系統,正如這篇文章使用 RNN 編解碼器進行統計機器翻譯,從而學習短語表示(Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation)中所討論的。 然而,當輸入序列太長時,系統就會出現問題,由於網絡須要將太多的信息壓縮成一個向量。

編碼器和解碼器的行爲: 黑紫色圓圈是解碼器的輸出。它們是由編碼器輸出(淺紫色圓圈)和上一步解碼器輸出造成的。爲了簡單起見,這裏只顯示前兩個單詞的箭頭

主要觀點: 在語言翻譯任務中,輸入詞和輸出詞之間存在"對齊"關係。 具體來講,每一個翻譯出來的單詞都與輸入文本中的特定單詞存在相關性。

一種新的技術: 文章介紹了一種稱爲RNNSearch的新模型,其中解碼器具備注意力機制。 這減輕了編碼器不得不在源語句中存儲全部信息的負擔。

注意事項: 文章不涉及未知或罕見詞語的表示。

法語和英語之間的翻譯。 較淺的顏色代表詞對之間的關係更密切。 圖片來自論文

基於循環注意力建模的機器翻譯 (Neural Machine Translation with Recurrent Attention Modeling)

文章介紹了一種新技術。 考慮每一個單詞在翻譯過程當中應該更關注原句中哪一些關鍵性詞語,從而達到優化模型的目的。

結果: 該模型在英德翻譯和中英翻譯任務中的表現優於RNNSearch

基於注意力的機器翻譯(Effective approaches to attention-based neural machine translation)

創新點: 文章介紹了兩種基於注意力的模型:一種是全局模型,其中全部源詞都被注意; 另外一種是局部模型,其中每次只考慮源詞的子集。

它與現有的模型相好比何? 全局注意力的概念相似於RNNSearch模型中使用的概念,可是進行了一些簡化。對於局部注意力,它是一個軟和硬注意力模型的混合,正如這篇文章顯示,關注和講述: 視覺注意的神經圖像標題生成(Show, attend and tell: Neural image caption generation with visual attention)所討論的。

注意力纔是你須要的(Attention is All You Need)

此次有什麼不一樣: 典型的神經機器翻譯模型使用 RNN 做爲編解碼系統的底層框架。 這種方法存在兩個主要問題:

  • (1)因爲 RNNs 的順序特性,不可能進行並行處理;
  • (2) RNNs 不能創建長期依賴關係的模型。

關鍵點: 翻譯任務不只僅是將一個單詞映射到另外一個單詞。咱們須要注意多種關係,即輸入單詞之間的依賴關係

  • (1)輸入單詞與輸出單詞之間的依賴關係
  • (2)輸出單詞之間的依賴關係
  • (3)與經過編碼器的潛在狀態學習這些依賴關係不一樣,咱們能夠經過注意力機制這樣作。

A new type of attention. This paper introduces the transformer model, which replaces the RNN with a multi-head attention that consist of multiple attention layers.

提出一種新型的注意力: 文章介紹了transformer模型,由多個注意力層組成的「多頭注意力」來代替RNN

爲何它受到如此多的關注: 這是第一個徹底基於注意力的序列映射模型。 因爲模型中缺乏循環層,其訓練速度明顯加快,甚至優於之前發表的全部模型。

谷歌機器翻譯系統: 跨越人機翻譯的鴻溝(Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation)

動機和目標: 典型的神經機器翻譯模型不能擴展到大型數據集,缺少魯棒性,難以部署。 這種翻譯模式旨在克服這些問題,並在翻譯質量方面超越當前的翻譯水平。

谷歌多語種機器翻譯系統: 實現Zero-Shot翻譯(Google’s Multilingual Neural Machine Translation System: Enabling Zero-Shot Translation)

谷歌是如何改進以前的模型的? 以前由 Google 引入的最早進的 GNMT(Google’s Neural Machine Translation),很難擴展到多種語言。經過在輸入語句中引入一個附加標記來指定目標語言,該模型能夠實現零鏡頭翻譯。

什麼是zero-shot翻譯? 在語言對之間進行翻譯的能力是該模型從未見過的。 例如,若是使用日本英語和韓國英語的例子來訓練模型,它也可以在測試期間進行韓國日語翻譯。

也許... 這個模型發現了一種"通用的語言表示"?

實現人文平等的漢英新聞自動翻譯(2018)(Achieving Human Parity on Automatic Chinese to English News Translation (2018))

主要貢獻: 本文介紹了一種新的衡量翻譯質量的方法,描述了實現中英文翻譯任務的技術。

潛在的限制: 所描述的技術可能不適用於其餘語言之間的翻譯。

情感分析

學習生成評論並發現情緒(Learning to Generate Reviews and Discovering Sentiment

這是什麼意思呢: 做者首次使用非監督式學習來生成評論文本的表示。他們最終發現了一個學習表徵的單元,能夠至關準確地傳達情緒。所以,訓練好的模型能夠做爲情感分類器。

相似的方法:對監督式學習問題引入"預訓練"步驟並非什麼新鮮事ー參見這篇文章半監督序列學習(Semi-supervised sequence learning)。 或者,能夠優化單詞嵌入,使其捕獲情感信息,好比這篇文章Refining Word embedding for Sentiment Analysis中討論的那樣。

缺點:這種表示學習對它們所受訓練的數據分佈很是敏感。例如,咱們可能沒法使用不一樣的訓練數據復現實驗結果。

研究人員發現,一個單位的文本表徵可以至關準確地傳達情緒。綠色高亮表示積極情緒,紅色表示消極情緒。 圖片來自論文

梯度問題 Gradient problems

要理解一篇文章或一段音頻,你必須鏈接如今和過去的信息,即捕捉長程的依賴關係。 Rnn 是目前使用反向傳播捕獲依賴關係的最早進方法。然而,它會致使梯度消失或梯度爆炸,特別是對於深層網絡和長序列數據。 一個解決方案是使用 lstm,這是 RNN 的一個更復雜的變體。然而,它可能會變得過於複雜而難以訓練。所以,大多數研究人員堅持使用 RNN,但進行了一些有效的訓練調整:

  • 貝葉斯RNN(Bayesian RNN) , 採用後驗逼近(posterior approximation )和截斷梯度的方法,提升了 RNN 的性能

  • 基於時間序列截斷反向傳播(BPTT)和引入額外的無監督損失,迫使 RNN 重建或預測部分記憶:

    截斷反向傳播並加上一個輔助的無監督損失

  • Recurrent Highway Networks,是RNNs的一個變種,它引入了Highway層,使得訓練很是深刻的前饋網絡成爲可能

可能RNN並無那麼好?

訓練RNN是很困難的,由於它們須要大量的內存和計算能力。因此主張使用 CNN 或在 RNN 模型上引入注意力機制的人愈來愈多:

用於序列建模的通用卷積和遞歸網絡的實證評價(An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling)

這篇文章是對序列建模問題中,經常使用的遞歸和卷積結構進行了系統性評價。論證了RNN網絡在序列建模任務中不如卷積網絡的應用,指出須要從新考慮RNN在序列建模任務中表現的其實並很差。

深度卷積網絡文本分類(Very Deep Convolutional Networks for Text Classification)

文章介紹了一種新的天然語言處理問題的體系結構,包括多個卷積和最大池化層(max pooling layers.)。 它強調體系結構深度有助於在 NLP 問題中得到更好的結果。

結語

全部的模型都是錯誤的,只不過有些模型看上去有用而已 - George E. P. Box

人類的語言是複雜的。

與圖像能夠用明確的數字像素表示不一樣,語言不只僅是在紙上組合起來的彎彎曲曲的標記或大聲把它讀出來就能夠。在交織在一塊兒的人物和文字之間,有一種微妙的情感、歷史和文化的暗示,這些數學模型可能有點太簡單了,他們難以理解真正的語言(他們真的能理解嗎?)

也許高級聊天機器人(好比電影《她》中的薩曼莎)的出現還須要一些時間。

相關文章
相關標籤/搜索