改變世界的七大NLP技術,你了解多少?(上)

e51af19d6bfbd86ff9933426e90374fffc13e5f9

什么是NLP

自然語言處理(NLP?是計算機科學,人工智能和語言學的交叉領域。目標是讓計算機處理或“理解”自然語言,以執行語言翻譯和問題回答等任務。

隨著語音接口和聊天機器人的興起,NLP正在成為信息時代最重要的技術之一,同時它也是人工智能的關鍵部分。充分理解和表達語言的含義是一個非常困難的目標。為什么?因為人類的語言很特別。

人類語言有什么特別之處?

1.人類語言是專門為傳達說話人的意圖而構建的系統。這不僅僅是一個環境信號,更是一個有意識的交流。
2.人類語言大多是離散/符號的/分類的信號系統,大概是因為信號可靠性更高。
3.一種語言的分類符號可以用幾種方式編碼為通信信號:聲音,手勢,寫作,圖像等。人類語言只是其中的一種。
4.人類語言是不明確的(與編程和其他正式語言不同)。?因此,在表達、學習和使用語言/情境/情境/文字/視覺知識對人類語言方面存在高度復雜性。

NLP應用到哪里?

NLP研究領域衍生出了一批快速增長的應用程序。以下是其中幾個:

1.拼寫檢查,關鍵字搜索,查找同義詞;

2.從網站提取信息,例如:產品價格,日期,地點,人員或公司名稱;

3.分類:長文檔的積極/消極情緒;

4.機器翻譯;

5.口語對話系統;

6.復雜的問答系統;

事實上,這些應用程序已經在現實中大量使用,從搜索到在線廣告匹配?;?從自動/輔助翻譯到營銷或財務/交易的情緒分析?;?從語音識別到chatbots /對話代理(自動化客戶支持,控制設備,訂購商品)。

268fe30ccc510f28d7d74cecdec2817e5f41c7bd

深度學習

大部分NLP技術都是由深度學習提供技術支持。近幾年,深度學習才開始發揮作用,主要是因為:

·大量的訓練數據;

·更快的機器和多核CPU / GPU

·性能高的新模型和算法:有效的端到端聯合系統學習、有效的使用上下文和任務間轉換的學習方法,以及正則化優化方法。

在深度學習中,表示學習試圖自動學習來自原始輸入的良好特征或表示。而在機器學習中手動設計的特征通常過多且不完整,需要花費很長時間進行設計和驗證。而且深度學習提供了一個非常靈活、通用且可學習的框架,用于呈現視覺和語言信息的世界。最初,它在語音識別和計算機視覺等領域取得突破。最近,深度學習方法在許多不同的NLP任務中表現出了非常高的性能。這些模型通常可以通過單一的端到端模型進行訓練,并且不需要傳統的,特定于任務的特征工程。

我最近完成了斯坦福大學關于自然語言處理與深度學習CS224n課程。該課程全面介紹了將深度學習應用于NLP的尖端研究。在模型方面,它涵蓋了詞向量表示、基于窗口的神經網絡、遞歸神經網絡、長期短期記憶模型、遞歸神經網絡和卷積神經網絡,以及一些涉及存儲器組件的最新模型。

在此我想分享我學習的7種主要NLP技術以及使用它們的主要深度學習模型和應用程序。

福利:你可以在GitHub獲得相關課程!

技術1:文本嵌入(Text Embeddings

在傳統的NLP中,我們將單詞視為離散符號,然后可以用one-hot向量表示。向量的維度是整個詞匯表中單詞的數量。單詞作為離散符號的問題在于,對于one-hot向量來說,沒有自然的相似性概念。因此,另一種方法是學習在向量本身中編碼相似性。核心思想是一個詞的含義是由經常出現在其旁邊的單詞給出的

文本嵌入是字符串的實值向量表示。我們為每個單詞建立一個密集的向量,選擇它以便類似于類似上下文中出現的單詞的向量。對于大多數NLP任務而言,詞嵌入被認為是一個很好的起點。它們允許深度學習在較小的數據集上也是有效的,因為它們通常是深度學習體系的第一批輸入,也是NLP中最流行的遷移學習方式。在詞嵌入中最流行的應該是Word2vec,它是由谷歌(Mikolov)開發的模型,另外一個是由斯坦福大學(彭寧頓,Socher和曼寧)開發的GloVe。接著我們重點介紹這兩種模型:

bb4685bac5fca503d1ad3c565d3bf30ffdc3fa18

Word2vec我們有一個龐大的文本語料庫,其中固定詞匯表中的每個詞都由一個向量表示。然后,我們通過文本中的每個位置t,其中有一個中心詞c和上下文詞o。接下來,我們使用字向量的相似性?ò計算的概率?給出?(或反之亦然)。我們不斷調整單詞向量來最大化這個概率。為了有效地訓練Word2vec,我們可以從數據集中去除無意義的單詞。這有助于提高模型的準確性。

Word2vec有兩個變體值得一提:

d1809a8961d50380bf031044c712ff7f0afceaa3

1.Skip-Gram我們考慮一個包含k個連續項的上下文窗口。然后,我們跳過其中一個單詞,嘗試學習一個神經網絡,該網絡可以獲得除跳過的所有術語外的所有術語,并預測跳過的術語。因此,如果兩個單詞在大語料庫中反復共享相似的上下文,那么這些術語的嵌入向量將具有相似的向量。

2.Continuous Bag of Words我們在一個大的語料庫中獲取大量的句子,每當我們看到一個詞,我們就會聯想到周圍的詞。然后,我們將上下文單詞輸入到神經網絡,并預測該上下文中心的單詞。當我們有數千個這樣的上下文單詞和中心單詞時,我們就有了一個神經網絡數據集的實例。我們訓練神經網絡,最后編碼的隱藏層輸出表示一個特定的詞嵌入。當我們通過大量的句子進行訓練時,類似上下文中的單詞會得到相似的向量。

a300e086a0811580d01303c08205f6515e3cc4ba

Skip-GramCBOW的一個吐槽就是它們都是基于窗口的模型,這意味著語料庫的共現統計不能被有效使用,導致次優的嵌入(suboptimal embeddings)。

GloVe模型旨在通過捕捉一個字與整個觀測語料庫的結構嵌入的含義來解決這個問題。為此,該模型訓練單詞的全局共現次數,并通過最小化最小二乘誤差來充分利用統計量,從而產生具有有意義子結構的單詞向量空間。這樣的做法足以保留單詞與向量距離的相似性。

除了這兩種文本嵌入外,還有許多最近開發的高級模型,包括FastTextPoincare嵌入sense2vecSkip-ThoughtAdaptive Skip-Gram,我強烈建議你學習一下。

技術2:機器翻譯

機器翻譯是語言理解的經典測試。它由語言分析和語言生成組成。大型機器翻譯系統具有巨大的商業用途,給你一些值得注意的例子:

·?????? 谷歌翻譯每天翻譯1000億字;

·?????? Facebook使用機器翻譯自動翻譯帖子和評論中的文字,以打破語言障礙,讓世界各地的人們相互交流;

·?????? 阿里巴巴使用機器翻譯技術來實現跨境貿易,連接世界各地的買家和賣家;

·?????? 微軟為Android、iOS和Amazon Fire上的最終用戶和開發人員提供基于人工智能的翻譯,無論他們是否可以訪問互聯網。

在傳統的機器翻譯系統中,我們必須使用平行語料庫:一組文本,每個文本都被翻譯成一種或多種不同于原文的其他語言。例如,給定源語言f(例如法語)和目標語言e(例如英語),我們需要建立多個統計模型,包括使用貝葉斯規則的概率公式,訓練的翻譯模型pf | e)平行語料庫和語言模型pe)在純英文語料庫上訓練。這種方法跳過了數百個重要細節,需要大量的手工特征工程,整體而言它是一個非常復雜的系統。

神經機器翻譯是通過一個稱為遞歸神經網絡RNN)的大型人工神經網絡對整個過程進行建模的方法。RNN是一個有狀態的神經網絡,它通過時間連接過去。神經元的信息不僅來自前一層,而且來自更前一層的信息。

2c17a658d8c714d10bdbd94975328c71867ff4a5

標準的神經機器翻譯是一種端到端神經網絡,其中,源語句由稱為編碼器RNN?編碼,目標詞使用另一個稱為解碼器RNN編碼器一次讀取一個源語句,然后在最后隱藏狀態匯總整個源句子。RNN解碼器使用反向傳播學習這個匯總并返回翻譯后的版本。神經機器翻譯從2014年的一項邊緣研究領域發展到2016年廣泛采用的領先機器翻譯方式,那么,使用神經機器翻譯的最大成功是什么?

1.端到端訓練NMT中的所有參數同時被優化,以最大限度地減少網絡輸出的損耗性能。

2.分布式表示的優勢NMT更好地利用單詞和短語的相似性。

3.更好地探索上下文NMT可以使用更多的上下文——源文本和部分目標文本以此進行更準確地翻譯。

4.更流利的文本生成:深度學習文本生成質量高于平行語料庫。

RNN的一個大問題是梯度消失(或爆炸)問題,其中取決于所使用的激活函數,隨著時間的推移信息會迅速丟失。直觀地說,這不會成為一個很大問題,因為這些只是權重而不是神經元狀態,但是時間的權重實際上是存儲過去的信息的地方,如果權重達到01,000,000的值,那么以前的狀態將不會提供很多信息。因此,RNNs在記憶序列中的前幾個單詞時會表現的很困難,并且只能根據最近的單詞進行預測。

長期/短期記憶LSTM網絡試圖通過引入門和明確定義的存儲器單元來對抗梯度消失/爆炸問題。每個神經元都有一個存儲單元和三個門:輸入、輸出和忘記。這些門的功能是通過停止或允許信息流來保護信息。

·輸入門決定了來自上一層的多少信息存儲在單元中;

·輸出層在另一端獲取任務,并確定下一層有多少單元知道該單元的狀態。

·忘記門的作用起初看起來很奇怪,但有時候忘記門是個不錯的設計:如果它正在學習一本書并開始新的一章,那么網絡可能需要忘記前一章中的一些字符。

已經證明LSTM能夠學習復雜的序列,例如像莎士比亞的寫作或者創作原始音樂。請注意,這些門中的每一個都對前一個神經元中的一個單元具有權重,因此它們通常需要更多資源才能運行。LSTM目前非常流行,并且在機器翻譯中被廣泛使用。除此之外,它是大多數序列標簽任務的默認模型,其中有大量的數據。

05b16b6bb566445f934dd3c07809944137423ce9

門控重復單元GRU)是在LSTM的基礎上變形得來的,也是神經機器翻譯的擴展。它擁有更少的門,并且連接方式略有不同:它不是輸入、輸出和忘記門組成的,而是具有更新門。這個更新門決定了從最后一個狀態開始保留多少信息以及從上一個層開始輸入多少信息。

復位(reset)門的功能與LSTM的忘記(forget)門非常相似,但位置稍有不同。他們總是發出它們完整的狀態因為他們沒有輸出門。在大多數情況下,它們的功能與LSTM非常相似,最大的不同之處在于GRUs稍快并且更容易運行(但表現力稍差)。在實踐中,這些往往會互相抵消,因為你需要一個更大的網絡來重新獲得一些表示能力,這反過來又抵消了性能的優勢。在一些情況下,GRU可以勝過LSTM

a69565f6b94ccb846947f01079c4f6504a3c8cda

除了這三大體系結構之外,過去幾年神經??機器翻譯系統還有進一步的改進。以下是最顯著的發展:

·?????? 用神經網絡進行序列學習的序列證明了LSTM在神經機器翻譯中的有效性。它提出了序列學習的一種通用的端到端方法,對序列結構進行了最少的假設。該方法使用多層Long Short Term Memory(LSTM)將輸入序列映射為固定維度的向量,然后使用另一個深度LSTM從向量解碼目標序列。

·?????? 通過聯合學習對齊和翻譯的神經機器翻譯引入了NLP中的注意機制(將在下一篇文章中介紹)。認識到使用固定長度矢量是提高NMT性能的瓶頸,作者建議通過允許模型自動(軟)搜索與預測目標相關的源句子部分來擴展,而不必將這些部分明確地形成為一個固定的長度。

·?????? 用于神經機器翻譯的循環編碼器上的卷積利用附加的卷積層增強NMT中的標準RNN編碼器,以在編碼器輸出中捕捉更廣泛的上下文。

·?????? 谷歌的神經機器翻譯,它解決了準確性和部署方便性的問題。該模型由一個深度LSTM網絡組成,該網絡包含8個編碼器和8個解碼器層,使用殘余連接以及從解碼器網絡到編碼器的注意力連接。

·?????? Facebook AI研究人員不使用遞歸神經網絡,而是使用卷積神經網絡序列對NMT中的學習任務進行排序。

技巧3DialogueConversations

關于會話AI的文章很多,其中大部分著重于垂直聊天機器人,商業趨勢和創業機會(比如Amazon AlexaApple SiriFacebook MGoogle AssistantMicrosoft Cortana)。人工智能理解自然語言的能力仍然有限。因此,創建全自動的對話助理仍然是一個巨大的挑戰。盡管如此,下面將要介紹的內容對于想要在對話AI中尋求下一個突破的人們來說是一個很好的起點。

6763891df3eb6a8f33fc8591e34163003aad0c23

來自蒙特利爾、喬治亞理工學院、微軟和Facebook的研究人員構建了一個能夠產生上下文敏感的會話響應神經網絡。這種新穎的響應生成系統是在大量的非結構化Twitter對話上進行端對端訓練。循環神經網絡架構用于解決將上下文信息集成到經典統計模型時出現的稀疏性問題,使系統能夠考慮以前的對話話語。該模型顯示了對上下文敏感和非上下文敏感的機器翻譯和信息檢索的所有優勢。

香港開發的神經反應機器NRM)是一種基于神經網絡的短文對話生成器。它采用通用的編碼器-解碼器框架。首先,它將響應的生成的形式化為基于輸入文本的潛在表示的解碼過程,而編碼和解碼都是用遞歸神經網絡實現的。NRM通過從微博服務收集的大量談話數據進行訓練。實驗表明,NRM可以對超過75%的輸入文本產生語法正確當反應,在同樣的環境中表現優于現有技術。

eb1acf4c7963829f05be4c04f219a5b21a82abbb

最后,Google神經會話模型是一種簡單的會話建模方法,它使用序列到序列框架。該模型通過預測對話中前一個句子的下一個句子進行對話。該模型的優勢在于它可以進行端對端訓練,因此需要的手動規則更少。

該模型可以根據一個大型的會話訓練數據集,生成簡單的會話。它能夠從領域特定的數據集以及電影字幕、嘈雜的、通用的數據集中提取知識。在特定于域的IT數據集上,該模型可以通過對話找到技術問題的解決方案。在嘈雜的開放的電影副本數據集上,該模型可以執行簡單形式的常識推理。

??數十款阿里云產品限時折扣中,趕緊點擊領劵開始云上實踐吧!

以上為譯文。

本文由北郵@愛可可-愛生活老師推薦,阿里云云棲社區組織翻譯。

文章原標題《the-7-nlp-techniques-that-will-change-how-you-communicate-in-the-future-part-i》,

作者:james le 譯者:虎說八道,審校:。

文章為簡譯,更為詳細的內容,請查看原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254301.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254301.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254301.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MINI類-結構體

文章目錄結構體的定義和使用實例類和結構體的關系博主寫作不容易,孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 結構體與類相似,通常用來封裝小型的相關變量組,例如,學生的學號、姓名、性別、年齡等。結構是一種值類型&am…

由.def文件生成lib文件[轉]

最近在學習curl庫時,碰到一個問題,從官網上下載了一個lib版的,卻發現只有.dll,沒有lib文件,感覺很奇怪,google了之后才知道,原來庫作者的用意是讓用戶自己生成lib文件,下載到的lib文…

union 和 union all 有什么不同?

假設我們有一個表 Student, 包括以下字段與數據:drop table student;create table student( idint primary key,name nvarchar2(50) not null,score number not null);insert into student values(1,Aaron,78);insert into student values(2,Bill,76);in…

暴風影音硬件加速播放高清影片

近年來,高清視頻因為畫面清晰、視覺效果好,越來越受到眾多電腦用戶的厚愛。暴風影音3.6版本在高清的支持上,筆者必須得說,是暴風影音在高清方面的一個大跨越,在這個技術上,暴風把KMP等播放器都遠遠的拋在后…

SSL雙向認證的實現

2019獨角獸企業重金招聘Python工程師標準>>> 環境 系統:archlinux/centOS nginx:nginx/1.12.2 瀏覽器:火狐firefox 前提:1.安裝nginx。    2.安裝openssl。 生成證書 新建工作目錄 首先建立一個工作目錄&#x…

partial 分部類-龐大類的瘦身計劃

文章目錄使用情況語法博主寫作不容易,孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 一般來說,一個類、結構或者接口位于一個源文件中,但是某些情況,比如大型項目、特殊部署時,可能需要把一個類、結構或者接口放…

scroll-view——小程序橫向滾動

這是官方給的布局代碼 <view class"section"><view class"section__title">vertical scroll</view><scroll-view scroll-y style"height: 200px;" bindscrolltoupper"upper" bindscrolltolower"lower"…

二期設計

電子鎖管理 設備管理 設備管理 1 信息編輯;回收電子鎖發放 電子鎖初始化&#xff0c;發放 4 記錄車輛在發車時使用的電子鎖電子鎖開鎖聯系人管理 電子鎖開鎖聯系人管理 1 根據訂單路線中的投點&#xff0c;設置每個投遞點的開鎖聯系人&#xff0c;通過短信的方式下發給你開…

音視頻同步系列文章之------時間戳與時間尺度(time scale)

根據一些文章我自己推敲了一下幾個概念如下&#xff1a; 采樣頻率是每秒鐘抽取聲波幅度樣本的次數。8000 幀率是每秒顯示幀數。 20 時間戳單位&#xff1a;時間戳計算的單位不為秒之類的單位&#xff0c;而是由采樣頻率所代替的單位&#xff0c;這…

30秒無需編碼完成一個REST API服務

JSON Server 30秒內無需編碼快速完成一個模擬的REST API服務。 這個服務主要是給那些需要快速的模擬原型后端接口的前端人員使用的 GitHub&#xff1a;github.com/typicode/js… 安裝 $ npm install -g json-server 復制代碼Example 新建一個 db.json 文件 {"posts":…

namespace-C#命名空間

博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 C#程序是利用命名空間組織起來的。命名空間既做程序的內部組織系統&#xff0c;又用做外部組織系統。就像一個國家為了便于管理&#xff0c;分成多個省份一樣。 聲明命名空間 命名空間是.NET …

NKU 專題一 題解

A - Flip Game 總的情況數只有2^16次方種&#xff0c;顯然直接bfs就可以了 1 #include<iostream>2 #include<queue>3 #include<cstring>4 using namespace std;5 int W,B,start;6 bool have[1000000];7 struct plot{8 int n,step;9 }; 10 void input(int…

僵尸進程(轉)

前面的文章中&#xff0c;我們已經了解了父進程和子進 程的概念&#xff0c;并已經掌握了系統調用exit的用法&#xff0c;但可能很少有人意識到&#xff0c;在一個進程調用了exit之后&#xff0c;該進程并非馬上就消失掉&#xff0c;而是留下一個稱為僵尸進 程&#xff08;zomb…

ComblockEngine 引擎實踐

comblockEngine 參考資料 官方網址 學習備注 熟悉內容 1.python 的字符串操作 2.flags 屬性的作用域 flags等 問題每天 1 1.基本數據類型 基本類型 2.數據庫表的操作 操作1 3.屬性的定義在.def中。self.出來之后&#xff0c;在繼承多個類的時候會不會重復。應該是子類的屬性覆蓋…

王陽明詩歌集

此心光明&#xff0c;夫復何求。&#xff08;王陽明死前對弟子的遺言&#xff09; 0. 非常少年、非常父子 山近月遠覺月小&#xff0c;便道此山大于月。若人有眼大如天&#xff0c;當見山高月更闊。—— 《蔽月山房》&#xff0c;作于12歲&#xff1b;1. 中秋 吾心自有光明月&a…

子承父業-C#繼承

文章目錄繼承的定義和使用實例繼承的特性繼承的可傳遞性繼承的單一性繼承中的訪問修飾符base和this關鍵字basethis實例博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 繼承是軟件復用的一種形式。使用繼承可以復用現在類的數據和行為&#xff…

MAVEN創建并打包web項目

maven項目是由一個maven project和多個maven module組成的&#xff0c;以下簡介一下maven webapp的創建和打包&#xff0c;前提是你已經安裝配置好maven了。打開eclipse。依照例如以下操作&#xff1a; 我們首先當然要先創建一個project。如上圖選擇。 如今maven project已經創…

GNU gcc的編譯工具用法(轉)

對大多數不從事Linux平臺C語言開發的人來說&#xff0c;GNU gcc的一套工具和Linux平臺的共享庫的使用還是十分陌生的&#xff0c;其實我也不太熟悉&#xff0c;姑且寫點基礎知識&#xff0c;權當做備忘吧。 一、GNU gcc的編譯工具用法 我們先來寫一個簡單的C程序&#xff1a;…

學界 | CVPR 2018頒布五大獎項,何愷明獲年輕學者獎

年度計算機視覺和模式識別盛會CVPR&#xff08;Conference on Computer Vision and Pattern Recognition&#xff09;在美國鹽湖城開幕啦&#xff01; 據統計&#xff0c;本屆大會有超過3309篇大會論文投稿&#xff0c;接收979篇論文。 面對如此多的論文評審任務&#xff0c;CV…

virtual、override-蝌蚪和青蛙-C#多態

文章目錄多態的概念多態的實現方法重載、重寫、隱藏重載重寫隱藏博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 多態的概念 什么是多態&#xff1f; 多態一次最早用于生物學&#xff0c;指同一種族的生物具有不同的特性。比如青蛙小時候是蝌…