?????作者簡介:一位即將上大四,正專攻機器學(xué)習(xí)的保研er
??上期文章:機器學(xué)習(xí)&&深度學(xué)習(xí)—語言模型和數(shù)據(jù)集
??訂閱專欄:機器學(xué)習(xí)&&深度學(xué)習(xí)
希望文章對你們有所幫助
引入
在之前介紹了n元語法模型,其中單詞xt在時間步t的概率僅取決于前n-1個單詞。對于時間步t-(n-1)之前的打你,若我們想將其可能產(chǎn)生的影響合并到xt上,需要增加n,模型參數(shù)的數(shù)量也會指數(shù)增長,因為詞表V需要存儲|V|n個數(shù)字,因此我們不如使用隱變量:
P
(
x
t
∣
x
t
?
1
,
.
.
.
,
x
1
)
≈
P
(
x
t
∣
h
t
?
1
)
P(x_t|x_{t-1},...,x_1)≈P(x_t|h_{t-1})
P(xt?∣xt?1?,...,x1?)≈P(xt?∣ht?1?)
其中h表示隱藏變量,存儲到時間步t-1的序列信息。
h
t
=
f
(
x
t
,
h
t
?
1
)
h_t=f(x_t,h_{t-1})
ht?=f(xt?,ht?1?)
值得注意的是,隱藏層和隱狀態(tài)指的是兩個截然不同的概念。如上所述,隱藏層是在從輸入到輸出的路徑上(以觀測角度來理解)的隱藏的層,而隱狀態(tài)則是在給定步驟所做的任何事情(以技術(shù)角度來定義)的輸入,并且這些狀態(tài)只能通過先前時間步的數(shù)據(jù)來計算。
RNN是具有隱狀態(tài)的神經(jīng)網(wǎng)絡(luò)
無隱狀態(tài)的神經(jīng)網(wǎng)絡(luò)
對于只有單隱藏層的多層感知機,其隱藏層輸出為:
H
=
φ
(
X
W
x
h
+
b
h
)
H=φ(XW_{xh}+b_h)
H=φ(XWxh?+bh?)
將隱藏變量H用作輸出層的輸入,則其輸出層為:
O
=
H
W
h
q
+
b
q
O=HW_{hq}+b_q
O=HWhq?+bq?
有隱狀態(tài)的循環(huán)神經(jīng)網(wǎng)絡(luò)
有了隱狀態(tài)后,情況就完全不同了。與多層感知機不同的是, 我們在這里保存了前一個時間步的隱藏變量:
H
t
?
1
H_{t-1}
Ht?1?
并引入了一個新的權(quán)重參數(shù):
W
h
h
W_{hh}
Whh?
用來描述如何在當前時間步中使用前一個時間步的隱藏變量。
而當前時間步隱藏變量由當前時間步的輸入與前一個時間步的隱藏變量一起計算得出:
H
t
=
φ
(
X
t
W
x
h
+
H
t
?
1
W
h
h
+
b
h
)
H_t=φ(X_tW_{xh}+H_{t-1}W_{hh}+b_h)
Ht?=φ(Xt?Wxh?+Ht?1?Whh?+bh?)
這些變量捕獲并保留了序列直到其當前時間步的歷史信息,就如當前時間步下神經(jīng)網(wǎng)絡(luò)的狀態(tài)或記憶,因此這樣的隱藏變量被稱為隱狀態(tài)。
由于隱狀態(tài)使用的定義與前一個時間步中使用的定義相同,因此上式是循環(huán)的,基于上式的網(wǎng)絡(luò)就稱為循環(huán)神經(jīng)網(wǎng)絡(luò)RNN,執(zhí)行上式的層就叫做循環(huán)層。
對于時間步t,輸出層的輸出類似于多層感知機:
O
t
=
H
t
W
h
q
+
b
q
O_t=H_tW_{hq}+b_q
Ot?=Ht?Whq?+bq?
值得一提的是,即使在不同的時間步,循環(huán)神經(jīng)網(wǎng)絡(luò)也總是使用這些模型參數(shù)。因此,循環(huán)神經(jīng)網(wǎng)絡(luò)的參數(shù)開銷不會隨著時間步的增加而增加。
下面展示了RNN計算邏輯:
在任意時間步,隱狀態(tài)的計算可以被視為:
1、拼接當前時間步t的輸入和前一時間步t-1的隱狀態(tài)
2、將拼接結(jié)果送入帶有激活函數(shù)的全連接層,全連接層的輸出是當前時間步t的隱狀態(tài)
具有循環(huán)神經(jīng)網(wǎng)絡(luò)的字符級語言模型
設(shè)小批量大小為1,批量中的文本序列為“machine”。使用字符級語言模型,將文本次元化為字符而不是單詞,如下圖演示,使用當前的和先前的字符預(yù)測下一個字符:
在訓(xùn)練過程中,我們對每個時間步的輸出層的輸出進行softmax操作, 然后利用交叉熵損失計算模型輸出和標簽之間的誤差。
在實踐中,我們使用的批量大小是n>1,每個詞元都由一個d維向量表示,因此,我們在時間步t的輸入是一個n×d的矩陣。
困惑度
讓我們討論如何度量語言模型的質(zhì)量,這將在后續(xù)部分中用于評估基于循環(huán)神經(jīng)網(wǎng)絡(luò)的模型。
我們可以通過一個序列中所有的n個詞元的交叉熵損失的平均值來衡量:
1
n
∑
t
=
1
n
?
l
o
g
P
(
x
t
∣
x
t
?
1
,
.
.
.
,
x
1
)
\frac{1}{n}\sum_{t=1}^n-logP(x_t|x_{t-1},...,x_1)
n1?t=1∑n??logP(xt?∣xt?1?,...,x1?)
其中,P由語言模型給出,xt是在時間步t從該序列中觀察到的實際詞元。
而我們使用的是困惑度,是一個指數(shù):
e
x
p
(
?
1
n
∑
t
=
1
n
l
o
g
P
(
x
t
∣
x
t
?
1
,
.
.
.
,
x
1
)
)
exp(-\frac{1}{n}\sum_{t=1}^nlogP(x_t|x_{t-1},...,x_1))
exp(?n1?t=1∑n?logP(xt?∣xt?1?,...,x1?))
困惑度的最好的理解是“下一個詞元的實際選擇數(shù)的調(diào)和平均數(shù)”。
在接下來,我們將基于循環(huán)神經(jīng)網(wǎng)絡(luò)實現(xiàn)字符級語言模型,并使用困惑度來評估這樣的模型。文章來源:http://www.zghlxwxcb.cn/news/detail-642831.html
小結(jié)
1、對隱狀態(tài)使用循環(huán)計算的神經(jīng)網(wǎng)絡(luò)稱為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
2、循環(huán)神經(jīng)網(wǎng)絡(luò)的隱狀態(tài)可以捕獲直到當前時間步序列的歷史信息
3、循環(huán)神經(jīng)網(wǎng)絡(luò)模型的參數(shù)數(shù)量不會隨著時間步的增加而增加
4、我們可以使用循環(huán)神經(jīng)網(wǎng)絡(luò)創(chuàng)建字符級語言模型
5、我們可以使用困惑度來評價語言模型的質(zhì)量文章來源地址http://www.zghlxwxcb.cn/news/detail-642831.html
到了這里,關(guān)于機器學(xué)習(xí)&&深度學(xué)習(xí)——循環(huán)神經(jīng)網(wǎng)絡(luò)RNN的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!