數(shù)據(jù)科學(xué)家James Le以語(yǔ)言建模為背景,介紹了RNN的概念、變體、應(yīng)用。
介紹
我大三有一學(xué)期去丹麥的哥本哈根交流。我之前沒(méi)去過(guò)歐洲,去丹麥交流,讓我有機(jī)會(huì)浸入新文化,遇到新人群,去新地方旅行,以及最重要的,接觸新語(yǔ)言。我為此極度興奮。盡管英語(yǔ)不是我的母語(yǔ)(我的母語(yǔ)是越南語(yǔ)),但我很小的時(shí)候就開(kāi)始學(xué)說(shuō)英語(yǔ)了,它已經(jīng)成為我的第二本能。而丹麥語(yǔ)則極為復(fù)雜,句法結(jié)構(gòu)大不相同,語(yǔ)法也很不一樣。我在出發(fā)前通過(guò)多鄰國(guó)應(yīng)用學(xué)了一點(diǎn)丹麥語(yǔ);不過(guò),我只掌握了一些簡(jiǎn)單的短語(yǔ),像是你好(Hej)和早上好(God Morgen)。
到了丹麥之后,我需要去便利店買吃的。但是那里的標(biāo)簽都是丹麥文,我沒(méi)法分辨。我花了大概半小時(shí)都沒(méi)能分清哪個(gè)是全麥面包,哪個(gè)是白面包。這時(shí)我突然想起不久前我在手機(jī)上安裝了谷歌翻譯應(yīng)用。我拿出手機(jī),打開(kāi)應(yīng)用,將相機(jī)對(duì)準(zhǔn)標(biāo)簽……哇,丹麥單詞立刻翻譯成了英文。我發(fā)現(xiàn)谷歌翻譯可以翻譯任何相機(jī)攝入的單詞,不管是路牌,還是飯館菜單,甚至手寫數(shù)字。不用說(shuō)了,在我交流學(xué)習(xí)期間,這個(gè)應(yīng)用為我節(jié)省了大量時(shí)間。
谷歌翻譯是谷歌的自然語(yǔ)言處理研究組開(kāi)發(fā)的產(chǎn)品。這個(gè)小組專注于大規(guī)模應(yīng)用的跨語(yǔ)言、跨領(lǐng)域算法。他們的工作包括傳統(tǒng)的NLP任務(wù),以及專門系統(tǒng)的通用語(yǔ)法和語(yǔ)義算法。
從更高的層面來(lái)看,NLP位于計(jì)算機(jī)科學(xué)、人工智能、語(yǔ)言學(xué)的交匯之處。NLP的目標(biāo)是處理或“理解”自然語(yǔ)言,以便執(zhí)行有用的任務(wù),例如情緒分析、語(yǔ)言翻譯、問(wèn)題解答。完全理解和表示語(yǔ)言的含義是一項(xiàng)非常艱巨的目標(biāo);因此人們估計(jì),完美理解自然語(yǔ)言需要AI完備系統(tǒng)。NLP的第一步是語(yǔ)言建模。
語(yǔ)言建模
語(yǔ)言建模的任務(wù)是預(yù)測(cè)下一個(gè)出現(xiàn)的單詞是什么。例如,給定句子“I am writing a ……”(我正在寫),下一個(gè)單詞可能是“l(fā)etter”(信)、“sentence”(句子)、“blog post”(博客文章)……更形式化地說(shuō),給定單詞序列x1, x2, …, xt,語(yǔ)言模型計(jì)算下一個(gè)單詞xt+1的概率分布。
最基礎(chǔ)的語(yǔ)言模型是n元語(yǔ)法模型。n元語(yǔ)法是n個(gè)連續(xù)單詞。例如,給定句子“I am writing a ……”,那么相應(yīng)的n元語(yǔ)法是:
單元語(yǔ)法:“I”, “am”, “writing”, “a”
二元語(yǔ)法:“I am”, “am writing”, “writing a”
三元語(yǔ)法:“I am writing”, “am writing a”
四元語(yǔ)法:“I am writing a”
n元語(yǔ)法語(yǔ)言建模的基本思路是收集關(guān)于不同的n元語(yǔ)法使用頻率的統(tǒng)計(jì)數(shù)據(jù),并據(jù)此預(yù)測(cè)下一單詞。然而,n元語(yǔ)法語(yǔ)言建模存在稀疏問(wèn)題,我們無(wú)法在語(yǔ)料庫(kù)中觀測(cè)到足夠的數(shù)據(jù)以精確建模語(yǔ)言(特別是當(dāng)n增加時(shí))。
神經(jīng)概率語(yǔ)言模型的網(wǎng)絡(luò)架構(gòu)概覽(來(lái)源:Synced)
不同于n元語(yǔ)法方法,我們可以嘗試基于窗口的神經(jīng)語(yǔ)言模型,例如前饋神經(jīng)概率語(yǔ)言模型和循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型。這一方法將單詞表示為向量(詞嵌入),將詞嵌入作為神經(jīng)語(yǔ)言模型的輸入,從而解決了數(shù)據(jù)稀疏問(wèn)題。參數(shù)在訓(xùn)練過(guò)程中學(xué)習(xí)。詞嵌入通過(guò)神經(jīng)語(yǔ)言模型得到,語(yǔ)義相近的單詞在嵌入向量空間中更靠近。此外,循環(huán)神經(jīng)語(yǔ)言模型也能捕捉句子層面、語(yǔ)料庫(kù)層面、單詞內(nèi)部的上下文信息。
循環(huán)神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
RNN背后的想法是利用序列化信息。RNN一名中有循環(huán)(recurrent)這個(gè)單詞,這是因?yàn)镽NN在序列中的每個(gè)元素上執(zhí)行相同的任務(wù),其輸出取決于之前的計(jì)算。理論上,RNN可以利用任意長(zhǎng)度序列中的信息,但經(jīng)驗(yàn)告訴我們,RNN只限于回顧若干步。這一能力使得RNN可以解決識(shí)別連寫筆跡或語(yǔ)音之類的任務(wù)。
讓我們嘗試類比一下。假設(shè)你看了最近的《復(fù)仇者聯(lián)盟3:無(wú)限戰(zhàn)爭(zhēng)》(順便提一下,這是一部現(xiàn)象級(jí)電影)。其中有許多超級(jí)英雄,有多條故事線,缺乏漫威電影宇宙的先驗(yàn)知識(shí)的觀眾可能感到迷惑。然而,如果你按順序看過(guò)之前的漫威系列(鋼鐵俠、雷神、美國(guó)隊(duì)長(zhǎng)、銀河護(hù)衛(wèi)隊(duì)),那你就有了上下文可以正確地將所有情節(jié)聯(lián)系起來(lái)。這意味著你記住你看過(guò)的東西以理解《無(wú)限戰(zhàn)爭(zhēng)》中的混沌。
無(wú)限戰(zhàn)爭(zhēng)(圖片來(lái)源:digitalspy.com)
類似地,RNN記得一切。其他神經(jīng)網(wǎng)絡(luò)中,所有輸入都是彼此獨(dú)立的。但在RNN中,所有的輸入都彼此相關(guān)。比方說(shuō)你需要預(yù)測(cè)給定句子的下一個(gè)單詞,所以之前單詞之間的關(guān)系有助于預(yù)測(cè)更好的輸出。換句話說(shuō),RNN在訓(xùn)練自身時(shí)記住一切關(guān)系。
RNN通過(guò)簡(jiǎn)單的循環(huán)記住從之前的輸入中學(xué)到的東西。該循環(huán)接受上一時(shí)刻的信息,并將它附加到當(dāng)前時(shí)刻的輸入上。下圖顯示了基本的RNN結(jié)構(gòu)。在某一具體時(shí)步t,Xt是網(wǎng)絡(luò)的輸入,ht是網(wǎng)絡(luò)的輸出。A是一個(gè)RNN單元,其中包含類似前饋網(wǎng)絡(luò)的神經(jīng)網(wǎng)絡(luò)。

圖片來(lái)源:colah.github.io
這一循環(huán)結(jié)構(gòu)讓神經(jīng)網(wǎng)絡(luò)可以接受輸入序列。下面的展開(kāi)圖有助于你更好地理解RNN:

圖片來(lái)源:colah.github.io
首先,RNN接受輸入序列中的X0,接著輸出h0,h0和X1一起作為下一步的輸入。接著,下一步得到的h1和X2一起作為再下一步的輸入,以此類推。這樣,RNN在訓(xùn)練時(shí)得以保留上下文的記憶。
如果你偏愛(ài)數(shù)學(xué),許多RNN使用下面的等式定義隱藏單元的值:

圖片來(lái)源:lingvo-masino
其中,ht是t時(shí)刻的隱藏狀態(tài),?是激活函數(shù)(Tanh或Sigmoid),W是輸入到t時(shí)刻的隱藏層的權(quán)重矩陣,U是t-1時(shí)刻的隱藏層到t時(shí)刻的隱藏層的權(quán)重矩陣,ht-1是t時(shí)刻的隱藏狀態(tài)。
RNN在訓(xùn)練階段通過(guò)反向傳播學(xué)習(xí)U和W。這些權(quán)重決定了之前時(shí)刻的隱藏狀態(tài)和當(dāng)前輸入的重要性?;旧希鼈儧Q定了生成當(dāng)前輸出時(shí),隱藏狀態(tài)和當(dāng)前輸入所起到的作用。激活函數(shù)?給RNN加上了非線性,從而簡(jiǎn)化了進(jìn)行反向傳播時(shí)的梯度計(jì)算。
RNN的劣勢(shì)
RNN不是完美的。它有一個(gè)重大缺陷,稱為梯度消失問(wèn)題,阻止它取得高精確度。隨著上下文長(zhǎng)度的增加,展開(kāi)的RNN中的網(wǎng)絡(luò)層也增加了。因此,隨著網(wǎng)絡(luò)的加深,反向傳播中由后往前傳播的梯度變得越來(lái)越小。學(xué)習(xí)率變得很低,期望這樣的模型學(xué)習(xí)到語(yǔ)言的長(zhǎng)期依賴不太現(xiàn)實(shí)。換句話說(shuō),RNN在記憶序列中很久之前出現(xiàn)的單詞上遇到了困難,只能基于最近的一些單詞做出預(yù)測(cè)。
圖片來(lái)源:anishsingh20
RNN的擴(kuò)展
這些年來(lái),研究人員研發(fā)了更復(fù)雜的RNN變體,以應(yīng)對(duì)標(biāo)準(zhǔn)RNN模型的不足。讓我們簡(jiǎn)短地總結(jié)以下其中最重要的一些變體:
雙向RNN不過(guò)是堆疊組合了2個(gè)RNN。雙向RNN的輸出基于2個(gè)RNN的隱藏狀態(tài)得出。背后的直覺(jué)是輸出可能不僅取決于序列中之前的元素,還取決于未來(lái)的元素。
長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)現(xiàn)在相當(dāng)流行。LSTM繼承了標(biāo)準(zhǔn)RNN的架構(gòu),在隱藏狀態(tài)上做了改動(dòng)。LSTM的記憶(稱為單元)接受之前的狀態(tài)和當(dāng)前輸入作為輸入。在LSTM內(nèi)部,這些單元決定哪些信息保留在記憶中,哪些信息從記憶移除。接著,LSTM組合之前狀態(tài)、當(dāng)前記憶和輸入。這一過(guò)程有效解決了梯度消失問(wèn)題。
門控循環(huán)單元網(wǎng)絡(luò)(GRU)擴(kuò)展了LSTM,通過(guò)門控網(wǎng)絡(luò)生成信號(hào)以控制當(dāng)前輸入和之前記憶如何工作以更新當(dāng)前激活,以及當(dāng)前網(wǎng)絡(luò)狀態(tài)。閥門自身的權(quán)重根據(jù)算法選擇更新。
神經(jīng)圖靈機(jī)通過(guò)結(jié)合外部記憶資源擴(kuò)展了標(biāo)準(zhǔn)RNN的能力,模型可以通過(guò)注意力過(guò)程與外部記憶資源交互。就像阿蘭·圖靈的圖靈機(jī),有限狀態(tài)機(jī)和無(wú)限存儲(chǔ)紙帶。
使用RNN語(yǔ)言模型生成文本的有趣例子
好了,現(xiàn)在讓我們來(lái)看一些使用循環(huán)神經(jīng)網(wǎng)絡(luò)生成文本的有趣例子:
Obama-RNN(機(jī)器生成的政治演說(shuō)):這里作者使用RNN生成了模仿奧巴馬的政治演說(shuō)。模型使用奧巴馬演講稿(4.3 MB / 730895單詞)作為輸入,生成了多個(gè)版本的演說(shuō),主題廣泛,包括就業(yè)、反恐戰(zhàn)爭(zhēng)、民主、中國(guó)……極其滑稽!
Harry Potter(AI撰寫的《哈利波特》):在《哈利波特》的前4部上訓(xùn)練LSTM循環(huán)神經(jīng)網(wǎng)絡(luò),然后根據(jù)所學(xué)生成一個(gè)新章節(jié)。去看看吧。我打賭即使JK羅琳也會(huì)對(duì)此印象深刻的。
Seinfeld Scripts(計(jì)算機(jī)版本的《宋飛正傳》):使用第3季的劇本作為輸入,生成了關(guān)于主角的3頁(yè)劇本。生成的劇本風(fēng)格奇特,提問(wèn)浮夸,充斥各種術(shù)語(yǔ)——和《宋飛正傳》的風(fēng)格相匹配。
RNN的真實(shí)世界應(yīng)用
RNN的美妙之處在于應(yīng)用的多樣性。我們使用RNN的時(shí)候,可以處理多種多樣的輸入和輸出。讓我們重新回顧下開(kāi)頭提到的谷歌翻譯的例子。這是神經(jīng)機(jī)器翻譯的一個(gè)例子,通過(guò)一個(gè)巨大的循環(huán)神經(jīng)網(wǎng)絡(luò)建模語(yǔ)言翻譯。這類似語(yǔ)言建模,輸入是源語(yǔ)言的單詞序列,輸出是目標(biāo)語(yǔ)言的單詞序列。
圖片來(lái)源:sdl.com
標(biāo)準(zhǔn)的神經(jīng)機(jī)器翻譯是一個(gè)端到端的神經(jīng)網(wǎng)絡(luò),其中源語(yǔ)言的句子由一個(gè)RNN編碼(稱為編碼器),另一個(gè)RNN預(yù)測(cè)目標(biāo)單詞(稱為解碼器)。RNN編碼器逐符號(hào)地讀取源語(yǔ)言的句子,并在最后的隱藏狀態(tài)中總結(jié)整個(gè)句子。RNN解碼器通過(guò)反向傳播學(xué)習(xí)這一總結(jié),并返回翻譯好的版本。
機(jī)器翻譯方面的一些論文:
A Recursive Recurrent Neural Network for Statistical Machine Translation(用于統(tǒng)計(jì)機(jī)器翻譯的遞歸循環(huán)神經(jīng)網(wǎng)絡(luò),微軟亞研院和中科大聯(lián)合研究)
Sequence to Sequence Learning with Neural Networks(神經(jīng)網(wǎng)絡(luò)的序列到序列學(xué)習(xí),谷歌)
Joint Language and Translation Modeling with Recurrent Neural Networks(循環(huán)神經(jīng)網(wǎng)絡(luò)的語(yǔ)言、翻譯聯(lián)合建模,微軟研究院)
除了之前討論的語(yǔ)言建模和機(jī)器翻譯,RNN在其他一些自然語(yǔ)言處理任務(wù)中也取得了巨大的成功:
1 情感分析一個(gè)簡(jiǎn)單的例子是分類推特上的推文(積極、消極)。
情感分析方面的論文:
Benchmarking Multimodal Sentiment Analysis(多模態(tài)情感分析評(píng)測(cè),新加坡NTU、印度NIT、英國(guó)斯特林大學(xué)聯(lián)合研究)
2 圖像說(shuō)明
搭配卷積神經(jīng)網(wǎng)絡(luò),RNN可以用于為沒(méi)有標(biāo)注的圖像生成描述的模型。給定需要文本描述的圖像,輸出是單詞組成的序列或句子。輸入的尺寸也許是固定的,但輸出長(zhǎng)度是可變的。
關(guān)于圖像說(shuō)明的論文:
Explain Images with Multimodal Recurrent Neural Networks(使用多模態(tài)循環(huán)神經(jīng)網(wǎng)絡(luò)解釋圖像,百度研究院、UCLA聯(lián)合研究)
Long-Term Recurrent Convolutional Networks for Visual Recognition and Description(用于視覺(jué)識(shí)別和描述的長(zhǎng)期循環(huán)卷積網(wǎng)絡(luò),伯克利)
Show and Tell: A Neural Image Caption Generator(看圖說(shuō)話:神經(jīng)圖像說(shuō)明生成器,谷歌)
Deep Visual-Semantic Alignments for Generating Image Descriptions(用于生成圖像說(shuō)明的深度視覺(jué)-語(yǔ)義對(duì)齊,斯坦福)
Translating Videos to Natural Language Using Deep Recurrent Neural Networks(基于深度循環(huán)神經(jīng)網(wǎng)絡(luò)翻譯視頻至自然語(yǔ)言,德州大學(xué)、麻省大學(xué)洛威爾分校、伯克利聯(lián)合研究)
YouTube自動(dòng)生成的字幕;圖片來(lái)源:filmora.wondershare.com/vlogger
比如SoundHound和Shazam這樣的聽(tīng)音識(shí)曲應(yīng)用。
語(yǔ)音識(shí)別方面的論文:
Sequence Transduction with Recurrent Neural Networks(基于循環(huán)神經(jīng)網(wǎng)絡(luò)的序列轉(zhuǎn)換,多倫多大學(xué))
Long Short-Term Memory Recurrent Neural Network Architectures for Large-Scale Acoustic Modeling(用于大規(guī)模聲學(xué)建模的長(zhǎng)短期記憶循環(huán)網(wǎng)絡(luò)架構(gòu),谷歌)
Towards End-to-End Speech Recognition with Recurrent Neural Networks(通向端到端語(yǔ)音識(shí)別的循環(huán)神經(jīng)網(wǎng)絡(luò),DeepMind、多倫多大學(xué)聯(lián)合研究)
Shazam應(yīng)用
結(jié)語(yǔ)
復(fù)習(xí)一下本文的關(guān)鍵點(diǎn):
語(yǔ)言建模是一個(gè)預(yù)測(cè)下一個(gè)單詞的系統(tǒng)。它是一個(gè)可以幫助我們衡量我們?cè)谡Z(yǔ)言理解領(lǐng)域的進(jìn)展的基準(zhǔn)任務(wù),同時(shí)也是其他自然語(yǔ)言處理系統(tǒng)(比如機(jī)器翻譯、文本總結(jié)、語(yǔ)音識(shí)別)的子部件。
循環(huán)神經(jīng)網(wǎng)絡(luò)接受任意長(zhǎng)度的序列化輸入,在每一步應(yīng)用相同的權(quán)重,并且可以在每步生成輸出(可選)??傮w上來(lái)說(shuō),RNN是一個(gè)構(gòu)建語(yǔ)言模型的出色方法。
此外,RNN還可以用于句子分類、詞性標(biāo)記、問(wèn)題回答……
順便提一下,你看了今年的Google I/O大會(huì)嗎?谷歌基本上已經(jīng)成了一家AI優(yōu)先的公司。谷歌引入的出類拔萃的AI系統(tǒng)之一是Duplex,一個(gè)可以通過(guò)電話完成真實(shí)世界任務(wù)的系統(tǒng)。接收完成特定任務(wù)的指示(例如安排預(yù)約)后,Duplex可以和電話另一頭的人自然地對(duì)話。
Duplex的核心是基于TFX構(gòu)建的RNN,在匿名化的電話交談數(shù)據(jù)語(yǔ)料庫(kù)上訓(xùn)練,以達(dá)到高準(zhǔn)確率。RNN利用了谷歌的自動(dòng)語(yǔ)音識(shí)別技術(shù)的輸出、音頻的特征、談話的歷史、談話的參數(shù)等信息。而TFX的超參數(shù)優(yōu)化進(jìn)一步改善了模型。
很好,AI對(duì)話的未來(lái)已經(jīng)取得了第一個(gè)重大突破。這一切都要感謝語(yǔ)言建模的發(fā)電廠,循環(huán)神經(jīng)網(wǎng)絡(luò)。
-
循環(huán)神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
38瀏覽量
3223 -
rnn
+關(guān)注
關(guān)注
0文章
92瀏覽量
7352
原文標(biāo)題:語(yǔ)言建模的發(fā)電廠——循環(huán)神經(jīng)網(wǎng)絡(luò)
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
神經(jīng)網(wǎng)絡(luò)的初步認(rèn)識(shí)
自動(dòng)駕駛中常提的卷積神經(jīng)網(wǎng)絡(luò)是個(gè)啥?
CNN卷積神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)原理及在MCU200T上仿真測(cè)試
NMSIS神經(jīng)網(wǎng)絡(luò)庫(kù)使用介紹
在Ubuntu20.04系統(tǒng)中訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的一些經(jīng)驗(yàn)
CICC2033神經(jīng)網(wǎng)絡(luò)部署相關(guān)操作
人工智能工程師高頻面試題匯總:循環(huán)神經(jīng)網(wǎng)絡(luò)篇(題目+答案)
液態(tài)神經(jīng)網(wǎng)絡(luò)(LNN):時(shí)間連續(xù)性與動(dòng)態(tài)適應(yīng)性的神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)的并行計(jì)算與加速技術(shù)
基于神經(jīng)網(wǎng)絡(luò)的數(shù)字預(yù)失真模型解決方案
無(wú)刷電機(jī)小波神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)子位置檢測(cè)方法的研究
神經(jīng)網(wǎng)絡(luò)專家系統(tǒng)在電機(jī)故障診斷中的應(yīng)用
神經(jīng)網(wǎng)絡(luò)RAS在異步電機(jī)轉(zhuǎn)速估計(jì)中的仿真研究
基于FPGA搭建神經(jīng)網(wǎng)絡(luò)的步驟解析
淺析循環(huán)神經(jīng)網(wǎng)絡(luò)的概念、變體及應(yīng)用
評(píng)論