改變世界的七大NLP技術,你了解多少?(上)
來自專欄我是程序員30 人贊了文章
摘要:這裡有改變世界的7大NLP技術,點進來了解一下吧!
什麼是NLP?
自然語言處理(NLP) 是計算機科學,人工智慧和語言學的交叉領域。目標是讓計算機處理或「理解」自然語言,以執行語言翻譯和問題回答等任務。
隨著語音介面和聊天機器人的興起,NLP正在成為信息時代最重要的技術之一,同時它也是人工智慧的關鍵部分。充分理解和表達語言的含義是一個非常困難的目標。為什麼?因為人類的語言很特別。
人類語言有什麼特別之處?
1.人類語言是專門為傳達說話人的意圖而構建的系統。這不僅僅是一個環境信號,更是一個有意識的交流。
2.人類語言大多是離散/符號的/分類的信號系統,大概是因為信號可靠性更高。
3.一種語言的分類符號可以用幾種方式編碼為通信信號:聲音,手勢,寫作,圖像等。人類語言只是其中的一種。
4.人類語言是不明確的(與編程和其他正式語言不同)。因此,在表達、學習和使用語言/情境/情境/文字/視覺知識對人類語言方面存在高度複雜性。
NLP應用到哪裡?
從NLP研究領域衍生出了一批快速增長的應用程序。以下是其中幾個:
1.拼寫檢查,關鍵字搜索,查找同義詞;
2.從網站提取信息,例如:產品價格,日期,地點,人員或公司名稱;
3.分類:長文檔的積極/消極情緒;
4.機器翻譯;
5.口語對話系統;
6.複雜的問答系統;
事實上,這些應用程序已經在現實中大量使用,從搜索到在線廣告匹配 ; 從自動/輔助翻譯到營銷或財務/交易的情緒分析 ; 從語音識別到chatbots /對話代理(自動化客戶支持,控制設備,訂購商品)。
深度學習
大部分NLP技術都是由深度學習提供技術支持。近幾年,深度學習才開始發揮作用,主要是因為:
·大量的訓練數據;
·更快的機器和多核CPU / GPU;
·性能高的新模型和演算法:有效的端到端聯合系統學習、有效的使用上下文和任務間轉換的學習方法,以及正則化優化方法。
在深度學習中,表示學習試圖自動學習來自原始輸入的良好特徵或表示。而在機器學習中手動設計的特徵通常過多且不完整,需要花費很長時間進行設計和驗證。而且深度學習提供了一個非常靈活、通用且可學習的框架,用於呈現視覺和語言信息的世界。最初,它在語音識別和計算機視覺等領域取得突破。最近,深度學習方法在許多不同的NLP任務中表現出了非常高的性能。這些模型通常可以通過單一的端到端模型進行訓練,並且不需要傳統的,特定於任務的特徵工程。
我最近完成了斯坦福大學關於自然語言處理與深度學習的CS224n課程。該課程全面介紹了將深度學習應用於NLP的尖端研究。在模型方面,它涵蓋了詞向量表示、基於窗口的神經網路、遞歸神經網路、長期短期記憶模型、遞歸神經網路和卷積神經網路,以及一些涉及存儲器組件的最新模型。
在此我想分享我學習的7種主要NLP技術以及使用它們的主要深度學習模型和應用程序。
福利:你可以在此GitHub中獲得相關課程!
技術1:文本嵌入(Text Embeddings)
在傳統的NLP中,我們將單詞視為離散符號,然後可以用one-hot向量表示。向量的維度是整個辭彙表中單詞的數量。單詞作為離散符號的問題在於,對於one-hot向量來說,沒有自然的相似性概念。因此,另一種方法是學習在向量本身中編碼相似性。核心思想是一個詞的含義是由經常出現在其旁邊的單詞給出的。
文本嵌入是字元串的實值向量表示。我們為每個單詞建立一個密集的向量,選擇它以便類似於類似上下文中出現的單詞的向量。對於大多數NLP任務而言,詞嵌入被認為是一個很好的起點。它們允許深度學習在較小的數據集上也是有效的,因為它們通常是深度學習體系的第一批輸入,也是NLP中最流行的遷移學習方式。在詞嵌入中最流行的應該是Word2vec,它是由谷歌(Mikolov)開發的模型,另外一個是由斯坦福大學(彭寧頓,Socher和曼寧)開發的GloVe。接著我們重點介紹這兩種模型:
在Word2vec中,我們有一個龐大的文本語料庫,其中固定辭彙表中的每個詞都由一個向量表示。然後,我們通過文本中的每個位置t,其中有一個中心詞c和上下文詞o。接下來,我們使用字向量的相似性?和ò計算的概率?給出?(或反之亦然)。我們不斷調整單詞向量來最大化這個概率。為了有效地訓練Word2vec,我們可以從數據集中去除無意義的單詞。這有助於提高模型的準確性。
Word2vec有兩個變體值得一提:
1.Skip-Gram:我們考慮一個包含k個連續項的上下文窗口。然後,我們跳過其中一個單詞,嘗試學習一個神經網路,該網路可以獲得除跳過的所有術語外的所有術語,並預測跳過的術語。因此,如果兩個單詞在大語料庫中反覆共享相似的上下文,那麼這些術語的嵌入向量將具有相似的向量。
2.Continuous Bag of Words:我們在一個大的語料庫中獲取大量的句子,每當我們看到一個詞,我們就會聯想到周圍的詞。然後,我們將上下文單詞輸入到神經網路,並預測該上下文中心的單詞。當我們有數千個這樣的上下文單詞和中心單詞時,我們就有了一個神經網路數據集的實例。我們訓練神經網路,最後編碼的隱藏層輸出表示一個特定的詞嵌入。當我們通過大量的句子進行訓練時,類似上下文中的單詞會得到相似的向量。
對Skip-Gram和CBOW的一個吐槽就是它們都是基於窗口的模型,這意味著語料庫的共現統計不能被有效使用,導致次優的嵌入(suboptimal embeddings)。
GloVe模型旨在通過捕捉一個字與整個觀測語料庫的結構嵌入的含義來解決這個問題。為此,該模型訓練單詞的全局共現次數,並通過最小化最小二乘誤差來充分利用統計量,從而產生具有有意義子結構的單詞向量空間。這樣的做法足以保留單詞與向量距離的相似性。
除了這兩種文本嵌入外,還有許多最近開發的高級模型,包括FastText,Poincare嵌入,sense2vec,Skip-Thought,Adaptive Skip-Gram,我強烈建議你學習一下。
技術2:機器翻譯
機器翻譯是語言理解的經典測試。它由語言分析和語言生成組成。大型機器翻譯系統具有巨大的商業用途,給你一些值得注意的例子:
· 谷歌翻譯每天翻譯1000億字;
· Facebook使用機器翻譯自動翻譯帖子和評論中的文字,以打破語言障礙,讓世界各地的人們相互交流;
· 阿里巴巴使用機器翻譯技術來實現跨境貿易,連接世界各地的買家和賣家;
· 微軟為Android、iOS和Amazon Fire上的最終用戶和開發人員提供基於人工智慧的翻譯,無論他們是否可以訪問互聯網。
在傳統的機器翻譯系統中,我們必須使用平行語料庫:一組文本,每個文本都被翻譯成一種或多種不同於原文的其他語言。例如,給定源語言f(例如法語)和目標語言e(例如英語),我們需要建立多個統計模型,包括使用貝葉斯規則的概率公式,訓練的翻譯模型p(f | e)平行語料庫和語言模型p(e)在純英文語料庫上訓練。這種方法跳過了數百個重要細節,需要大量的手工特徵工程,整體而言它是一個非常複雜的系統。
神經機器翻譯是通過一個稱為遞歸神經網路(RNN)的大型人工神經網路對整個過程進行建模的方法。RNN是一個有狀態的神經網路,它通過時間連接過去。神經元的信息不僅來自前一層,而且來自更前一層的信息。
標準的神經機器翻譯是一種端到端神經網路,其中,源語句由稱為編碼器的RNN 編碼,目標詞使用另一個稱為解碼器。RNN編碼器一次讀取一個源語句,然後在最後隱藏狀態匯總整個源句子。RNN解碼器使用反向傳播學習這個匯總並返回翻譯後的版本。神經機器翻譯從2014年的一項邊緣研究領域發展到2016年廣泛採用的領先機器翻譯方式,那麼,使用神經機器翻譯的最大成功是什麼?
1.端到端訓練:NMT中的所有參數同時被優化,以最大限度地減少網路輸出的損耗性能。
2.分散式表示的優勢:NMT更好地利用單詞和短語的相似性。
3.更好地探索上下文:NMT可以使用更多的上下文——源文本和部分目標文本以此進行更準確地翻譯。
4.更流利的文本生成:深度學習文本生成質量高於平行語料庫。
RNN的一個大問題是梯度消失(或爆炸)問題,其中取決於所使用的激活函數,隨著時間的推移信息會迅速丟失。直觀地說,這不會成為一個很大問題,因為這些只是權重而不是神經元狀態,但是時間的權重實際上是存儲過去的信息的地方,如果權重達到0或1,000,000的值,那麼以前的狀態將不會提供很多信息。因此,RNNs在記憶序列中的前幾個單詞時會表現的很困難,並且只能根據最近的單詞進行預測。
長期/短期記憶(LSTM)網路試圖通過引入門和明確定義的存儲器單元來對抗梯度消失/爆炸問題。每個神經元都有一個存儲單元和三個門:輸入、輸出和忘記。這些門的功能是通過停止或允許信息流來保護信息。
·輸入門決定了來自上一層的多少信息存儲在單元中;
·輸出層在另一端獲取任務,並確定下一層有多少單元知道該單元的狀態。
·忘記門的作用起初看起來很奇怪,但有時候忘記門是個不錯的設計:如果它正在學習一本書並開始新的一章,那麼網路可能需要忘記前一章中的一些字元。
已經證明LSTM能夠學習複雜的序列,例如像莎士比亞的寫作或者創作原始音樂。請注意,這些門中的每一個都對前一個神經元中的一個單元具有權重,因此它們通常需要更多資源才能運行。LSTM目前非常流行,並且在機器翻譯中被廣泛使用。除此之外,它是大多數序列標籤任務的默認模型,其中有大量的數據。
門控重複單元(GRU)是在LSTM的基礎上變形得來的,也是神經機器翻譯的擴展。它擁有更少的門,並且連接方式略有不同:它不是輸入、輸出和忘記門組成的,而是具有更新門。這個更新門決定了從最後一個狀態開始保留多少信息以及從上一個層開始輸入多少信息。
複位(reset)門的功能與LSTM的忘記(forget)門非常相似,但位置稍有不同。他們總是發出它們完整的狀態因為他們沒有輸出門。在大多數情況下,它們的功能與LSTM非常相似,最大的不同之處在於GRUs稍快並且更容易運行(但表現力稍差)。在實踐中,這些往往會互相抵消,因為你需要一個更大的網路來重新獲得一些表示能力,這反過來又抵消了性能的優勢。在一些情況下,GRU可以勝過LSTM。
除了這三大體系結構之外,過去幾年神經??機器翻譯系統還有進一步的改進。以下是最顯著的發展:
· 用神經網路進行序列學習的序列證明了LSTM在神經機器翻譯中的有效性。它提出了序列學習的一種通用的端到端方法,對序列結構進行了最少的假設。該方法使用多層Long Short Term Memory(LSTM)將輸入序列映射為固定維度的向量,然後使用另一個深度LSTM從向量解碼目標序列。
· 通過聯合學習對齊和翻譯的神經機器翻譯引入了NLP中的注意機制(將在下一篇文章中介紹)。認識到使用固定長度矢量是提高NMT性能的瓶頸,作者建議通過允許模型自動(軟)搜索與預測目標相關的源句子部分來擴展,而不必將這些部分明確地形成為一個固定的長度。
· 用於神經機器翻譯的循環編碼器上的卷積利用附加的卷積層增強NMT中的標準RNN編碼器,以在編碼器輸出中捕捉更廣泛的上下文。
· 谷歌的神經機器翻譯,它解決了準確性和部署方便性的問題。該模型由一個深度LSTM網路組成,該網路包含8個編碼器和8個解碼器層,使用殘餘連接以及從解碼器網路到編碼器的注意力連接。
· Facebook AI研究人員不使用遞歸神經網路,而是使用卷積神經網路序列對NMT中的學習任務進行排序。
技巧3:Dialogue和Conversations
關於會話AI的文章很多,其中大部分著重於垂直聊天機器人,商業趨勢和創業機會(比如Amazon Alexa,Apple Siri,Facebook M,Google Assistant,Microsoft Cortana)。人工智慧理解自然語言的能力仍然有限。因此,創建全自動的對話助理仍然是一個巨大的挑戰。儘管如此,下面將要介紹的內容對於想要在對話AI中尋求下一個突破的人們來說是一個很好的起點。
來自蒙特利爾、喬治亞理工學院、微軟和Facebook的研究人員構建了一個能夠產生上下文敏感的會話響應的神經網路。這種新穎的響應生成系統是在大量的非結構化Twitter對話上進行端對端訓練。循環神經網路架構用於解決將上下文信息集成到經典統計模型時出現的稀疏性問題,使系統能夠考慮以前的對話話語。該模型顯示了對上下文敏感和非上下文敏感的機器翻譯和信息檢索的所有優勢。
香港開發的神經反應機器(NRM)是一種基於神經網路的短文對話生成器。它採用通用的編碼器-解碼器框架。首先,它將響應的生成的形式化為基於輸入文本的潛在表示的解碼過程,而編碼和解碼都是用遞歸神經網路實現的。NRM通過從微博服務收集的大量談話數據進行訓練。實驗表明,NRM可以對超過75%的輸入文本產生語法正確當反應,在同樣的環境中表現優於現有技術。
最後,Google的神經會話模型是一種簡單的會話建模方法,它使用序列到序列框架。該模型通過預測對話中前一個句子的下一個句子進行對話。該模型的優勢在於它可以進行端對端訓練,因此需要的手動規則更少。
該模型可以根據一個大型的會話訓練數據集,生成簡單的會話。它能夠從領域特定的數據集以及電影字幕、嘈雜的、通用的數據集中提取知識。在特定於域的IT數據集上,該模型可以通過對話找到技術問題的解決方案。在嘈雜的開放的電影副本數據集上,該模型可以執行簡單形式的常識推理。
以上為譯文。由阿里云云棲社區組織翻譯。
譯文鏈接
文章原標題《the-7-nlp-techniques-that-will-change-how-you-communicate-in-the-future-part-i》
作者:james le 譯者:虎說八道,審校:。
文章為簡譯,更為詳細的內容,請查看原文。
更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎
本文為雲棲社區原創內容,未經允許不得轉載。
推薦閱讀:
※圖解線性代數:vector length and dot product
※支持向量機:SVM
※3張圖學習人工智慧,機器學習和深度學習有啥區別?終於能明白了
TAG:深度學習DeepLearning | 機器學習 | 科技 |