一、序列數(shù)據(jù)和語言模型
1.1 序列數(shù)據(jù)
?1. 在深度學(xué)習(xí)中,序列數(shù)據(jù)(Sequence data)是指具有前后順序關(guān)聯(lián)的數(shù)據(jù)。常見的時間序列數(shù)據(jù)、文本數(shù)據(jù)(單詞序列或字符序列)、語音數(shù)據(jù)等。這種數(shù)據(jù)不僅十分常見,而且往往具有很高的應(yīng)用價值,比如我們可以通過過去的天氣數(shù)據(jù)來預(yù)測未來的天氣狀況,通過以往的股票波動數(shù)據(jù)來推測股票的漲跌等。
比如:Cats average 15 hours of sleep a day.
其中第一個元素 “Cats” 和第三個元素 “15” 就具有關(guān)聯(lián)性。
?2. 序列數(shù)據(jù)的特點(diǎn)主要有以下兩點(diǎn):
- 時序關(guān)系:序列數(shù)據(jù)中的元素之間存在著時間上的依賴關(guān)系,每個元素都與其前面或后面的元素有關(guān)聯(lián)。
- 變長性:序列數(shù)據(jù)的長度是可變的,不同序列可能包含不同數(shù)量的元素。
1.2 語言模型
?1. 在自然語言處理中,語言模型是一種重要的技術(shù),它的主要任務(wù)是估測一些詞的序列的概率,即預(yù)測給定一個詞的序列后,接下來可能出現(xiàn)的詞的概率。
?2. 自然語言處理中最常見的數(shù)據(jù)是文本數(shù)據(jù)。我們可以把一段自然語言文本看做一段離散的時間序列。假設(shè)一段長度為T的文本中的詞依次為w1, w2, …, wT,那么在離散的時間序列中,wt(1 ≤ t ≤ T)可看做在時間步t的輸出或者標(biāo)簽。
?3. 給定一個長度為T的詞的序列w1, w2, …, wT,語言模型將計算該序列的概率,即P(w1, w2, …, wT)。這個概率可以用來評估該詞序列出現(xiàn)的可能性,從而在語言識別和機(jī)器翻譯等任務(wù)中起到重要作用。
比如說一句話:“ chu fang li de shi you yong wan le ”。
那這句話是 “ 廚房里的石油用完了 ”還是 “ 廚房里的食油用完了 ”?
那語言模型要做的事是計算這兩句序列的概率大小,比較并輸出。即:P ( 廚 , 房 , 里 , 的 , 石 , 油 , 用 , 完 , 了 ) < P ( 廚 , 房 , 里 , 的 , 食 , 油 , 用 , 完 , 了)。
?4. 語言模型計算序列概率的公式:
?例如,一段含有4個詞的文本序列的概率:
例如:P (我 , 在 , 聽 , 課) = P (我) * P (在 | 我) * P (聽 | 我 , 在) * P (課 | 我 , 在 , 聽)
?5. 語言模型缺點(diǎn):時間步 t 的詞需要考慮 t - 1步的詞,其計算量隨 t 呈指數(shù)增長。那我們可以利用循環(huán)神經(jīng)網(wǎng)絡(luò)來解決這一缺點(diǎn)。
二、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
2.1 概述
?1. 循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent neural networks,簡稱RNN)是針對序列數(shù)據(jù)而生的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),核心在于循環(huán)使用網(wǎng)絡(luò)層參數(shù),避免時間步增大帶來的參數(shù)激增,并引入隱藏狀態(tài)(Hidden State)用于記錄歷史信息,有效的處理數(shù)據(jù)的前后關(guān)聯(lián)性。
考慮這樣一個問題,如果要預(yù)測句子的下一個單詞是什么,一般需要用到當(dāng)前單詞以及前面的單詞,因為句子中前后單詞并不是獨(dú)立的。比如,當(dāng)前單詞是“很”,前一個單詞是“天空”,那么下一個單詞很大概率是“藍(lán)”。
循環(huán)神經(jīng)網(wǎng)絡(luò)的來源就是為了刻畫一個序列當(dāng)前的輸出與之前信息的關(guān)系。從網(wǎng)絡(luò)結(jié)構(gòu)上,循環(huán)神經(jīng)網(wǎng)絡(luò)會記憶之前的信息,并利用之前的信息影響后面結(jié)點(diǎn)的輸出。也就是說,循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏層之間的結(jié)點(diǎn)是有連接的,隱藏層的輸入不僅包括輸入層的輸出,還包括上時刻隱藏層的輸出。
?2. 一個簡單的循環(huán)神經(jīng)網(wǎng)絡(luò)如下所示,它由輸入層、一個隱藏層和一個輸出層組成:
?3. 如果我們把上面的圖展開,循環(huán)神經(jīng)網(wǎng)絡(luò)也可以畫成下面這個樣子:
?現(xiàn)在看上去就比較清楚了,這個網(wǎng)絡(luò)在t時刻接收到輸入Xt之后,隱藏層的值是St,輸出值是Ot。關(guān)鍵一點(diǎn)是,St的值不僅僅取決于Xt,還取決于St-1。
?4. 我們可以用下面的公式來表示循環(huán)神經(jīng)網(wǎng)絡(luò)的計算方法:
?這里的激活函數(shù)通常選擇Tanh函數(shù),Tanh函數(shù)公式和圖像如下所示,它解決了Sigmoid函數(shù)的不以0為中心輸出問題。
?5. 用一個具體案例來看看RNN如何工作:
?(1)用戶說了一句“what time is it?”,我們的神經(jīng)網(wǎng)絡(luò)會先將這句話分為五個基本單元(四個單詞+一個問號),如下所示:
?(2)然后,按照順序?qū)⑽鍌€基本單元輸入RNN網(wǎng)絡(luò),先將 “what”作為RNN的輸入,得到輸出01:
?(3)隨后,按照順序?qū)ⅰ皌ime”輸入到RNN網(wǎng)絡(luò),得到輸出02:
?(4)以此類推,我們可以看到,前面所有的輸入產(chǎn)生的結(jié)果都對后續(xù)的輸出產(chǎn)生了影響(可以看到圓形中包含了前面所有的顏色):
?(5)當(dāng)神經(jīng)網(wǎng)絡(luò)判斷意圖的時候,只需要最后一層的輸出05,如下圖所示:
2.2 門控循環(huán)單元(GRU)
?1. 門控循環(huán)單元(Gate Recurrent Unit)是引入門的循環(huán)網(wǎng)絡(luò),用來緩解RNN梯度消失帶來的問題。引入門的概念,來控制信息流動,使模型更好的記住長遠(yuǎn)時期的信息,并緩解梯度消失。
- 重置門:哪些信息需要遺忘,用于遺忘上一時間步隱藏狀態(tài)。
- 更新門:哪些信息需要注意,用于更新當(dāng)前時間步隱藏狀態(tài)。
- 激活函數(shù)為:Sigmoid,值域為( 0 , 1 ),0表示遺忘,1表示保留。
?2. 候選隱藏狀態(tài):輸入與上一時間步隱藏狀態(tài)共同計算得到候選隱藏狀態(tài),用于隱藏狀態(tài)計算。通過重置門,對上一時間步隱藏狀態(tài)進(jìn)行選擇性遺忘,可以對歷史信息更好地選擇。
圓圈里加一點(diǎn)符號這里表示逐個元素相乘。
?3. 隱藏狀態(tài)由候選隱藏狀態(tài)及上一時間步隱藏狀態(tài)組合得來。
?4. GRU特點(diǎn):(1)門機(jī)制采用Sigmoid激活函數(shù),使門值為(0,1),0表示遺忘,1表示保留。(2)若更新門自第一個時間步到t-1時間過程中,一直保持為1,則信息可有效傳遞到當(dāng)前時間步。
2.3 長短期記憶網(wǎng)絡(luò)(LSTM)
?1. 長短期記憶網(wǎng)絡(luò)(Longshort-termmemory,簡稱LSTM)引入3個門和記憶細(xì)胞,控制信息傳遞。
- 遺忘門:哪些信息需要遺忘。
- 輸入門:哪些信息需要流入當(dāng)前記憶細(xì)胞。
- 輸出門:哪些記憶信息流入隱藏狀態(tài)。
- 記憶細(xì)胞:特殊的隱藏狀態(tài),記憶歷史信息。
?2. 候選記憶細(xì)胞:可理解為特殊隱藏狀態(tài),存儲歷史時刻信息。
?3. 記憶細(xì)胞由候選記憶細(xì)胞及上一時間步記憶細(xì)胞組合得來。輸出門控制記憶細(xì)胞信息流入隱藏狀態(tài)。
?4. 總結(jié):LSTM引入3個門和記憶細(xì)胞,控制信息傳遞。
文章來源:http://www.zghlxwxcb.cn/news/detail-730114.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-730114.html
到了這里,關(guān)于深度學(xué)習(xí)(2)---循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!