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