摘要: 這裏有改變世界的7大NLP技術,點進來了解一下吧!
天然語言處理(NLP) 是計算機科學,人工智能和語言學的交叉領域。目標是讓計算機處理或「理解」天然語言,以執行語言翻譯和問題回答等任務。算法
隨着語音接口和聊天機器人的興起,NLP正在成爲信息時代最重要的技術之一,同時它也是人工智能的關鍵部分。充分理解和表達語言的含義是一個很是困難的目標。爲何?由於人類的語言很特別。編程
人類語言有什麼特別之處?網絡
1.人類語言是專門爲傳達說話人的意圖而構建的系統。這不只僅是一個環境信號,更是一個有意識的交流。
2.人類語言大可能是離散/符號的/分類的信號系統,大概是由於信號可靠性更高。
3.一種語言的分類符號能夠用幾種方式編碼爲通訊信號:聲音,手勢,寫做,圖像等。人類語言只是其中的一種。
4.人類語言是不明確的(與編程和其餘正式語言不一樣)。 所以,在表達、學習和使用語言/情境/情境/文字/視覺知識對人類語言方面存在高度複雜性。架構
從NLP研究領域衍生出了一批快速增加的應用程序。如下是其中幾個:框架
1.拼寫檢查,關鍵字搜索,查找同義詞;機器學習
2.從網站提取信息,例如:產品價格,日期,地點,人員或公司名稱;分佈式
3.分類:長文檔的積極/消極情緒;函數
4.機器翻譯;性能
5.口語對話系統;學習
6.複雜的問答系統;
事實上,這些應用程序已經在現實中大量使用,從搜索到在線廣告匹配 ; 從自動/輔助翻譯到營銷或財務/交易的情緒分析 ; 從語音識別到chatbots /對話代理(自動化客戶支持,控制設備,訂購商品)。
大部分NLP技術都是由深度學習提供技術支持。近幾年,深度學習纔開始發揮做用,主要是由於:
在深度學習中,表示學習試圖自動學習來自原始輸入的良好特徵或表示。而在機器學習中手動設計的特徵一般過多且不完整,須要花費很長時間進行設計和驗證。並且深度學習提供了一個很是靈活、通用且可學習的框架,用於呈現視覺和語言信息的世界。最初,它在語音識別和計算機視覺等領域取得突破。最近,深度學習方法在許多不一樣的NLP任務中表現出了很是高的性能。這些模型一般能夠經過單一的端到端模型進行訓練,而且不須要傳統的,特定於任務的特徵工程。
我最近完成了斯坦福大學關於天然語言處理與深度學習的CS224n課程。該課程全面介紹了將深度學習應用於NLP的尖端研究。在模型方面,它涵蓋了詞向量表示、基於窗口的神經網絡、遞歸神經網絡、長期短時間記憶模型、遞歸神經網絡和卷積神經網絡,以及一些涉及存儲器組件的最新模型。
在此我想分享我學習的7種主要NLP技術以及使用它們的主要深度學習模型和應用程序。
福利:你能夠在此GitHub中得到相關課程!
在傳統的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,我強烈建議你學習一下。
機器翻譯是語言理解的經典測試。它由語言分析和語言生成組成。大型機器翻譯系統具備巨大的商業用途,給你一些值得注意的例子:
在傳統的機器翻譯系統中,咱們必須使用平行語料庫:一組文本,每一個文本都被翻譯成一種或多種不一樣於原文的其餘語言。例如,給定源語言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。
除了這三大致繫結構以外,過去幾年神經機器翻譯系統還有進一步的改進。如下是最顯着的發展:
關於會話AI的文章不少,其中大部分着重於垂直聊天機器人,商業趨勢和創業機會(好比Amazon Alexa,Apple Siri,Facebook M,Google Assistant,Microsoft Cortana)。人工智能理解天然語言的能力仍然有限。所以,建立全自動的對話助理仍然是一個巨大的挑戰。儘管如此,下面將要介紹的內容對於想要在對話AI中尋求下一個突破的人們來講是一個很好的起點。
來自蒙特利爾、喬治亞理工學院、微軟和Facebook的研究人員構建了一個可以產生上下文敏感的會話響應的神經網絡。這種新穎的響應生成系統是在大量的非結構化Twitter對話上進行端對端訓練。循環神經網絡架構用於解決將上下文信息集成到經典統計模型時出現的稀疏性問題,使系統可以考慮之前的對話話語。該模型顯示了對上下文敏感和非上下文敏感的機器翻譯和信息檢索的全部優點。
香港開發的神經反應機器(NRM)是一種基於神經網絡的短文對話生成器。它採用通用的編碼器-解碼器框架。首先,它將響應的生成的形式化爲基於輸入文本的潛在表示的解碼過程,而編碼和解碼都是用遞歸神經網絡實現的。NRM經過從微博服務收集的大量談話數據進行訓練。實驗代表,NRM能夠對超過75%的輸入文本產生語法正確當反應,在一樣的環境中表現優於現有技術。
最後,Google的神經會話模型是一種簡單的會話建模方法,它使用序列到序列框架。該模型經過預測對話中前一個句子的下一個句子進行對話。該模型的優點在於它能夠進行端對端訓練,所以須要的手動規則更少。
該模型能夠根據一個大型的會話訓練數據集,生成簡單的會話。它可以從領域特定的數據集以及電影字幕、嘈雜的、通用的數據集中提取知識。在特定於域的IT數據集上,該模型能夠經過對話找到技術問題的解決方案。在嘈雜的開放的電影副本數據集上,該模型能夠執行簡單形式的常識推理。
本文做者:【方向】
閱讀原文本文爲雲棲社區原創內容,未經容許不得轉載。