背景
SimpleRNN有一定局限性,
-
圖片上的文字內(nèi)容:
- 圖片標(biāo)題提到“SimpleRNN是一種基礎(chǔ)模型。它用于解決序列型問(wèn)題,其中的每一步的輸出會(huì)影響到下一步的結(jié)果。圖中的公式和結(jié)構(gòu)圖都展示了這種關(guān)系?!?/li>
- 下面給出了四行偽代碼,描述了SimpleRNN的計(jì)算方式。簡(jiǎn)化為以下形式:
- out1和ht1是通過(guò)輸入x1、前一時(shí)刻的狀態(tài)h(t-1)、權(quán)重w1、u1以及偏置項(xiàng)bias進(jìn)行某種激活函數(shù)的計(jì)算得到的。
- out2和ht2是通過(guò)輸入x2、前一時(shí)刻的狀態(tài)ht1、權(quán)重w2、u2以及偏置項(xiàng)bias進(jìn)行計(jì)算得到的。
- out3和ht3是通過(guò)輸入x3、前一時(shí)刻的狀態(tài)ht2、權(quán)重w3、u3以及偏置項(xiàng)bias進(jìn)行計(jì)算得到的。
- out4和ht4的計(jì)算方式未完整給出,但可以推測(cè)其與之前的計(jì)算方式類(lèi)似。
-
圖片中的圖示內(nèi)容:
- 圖中展示了一個(gè)序列型的網(wǎng)絡(luò)結(jié)構(gòu),其中每個(gè)時(shí)間步都有一個(gè)輸入和一個(gè)輸出。
- 從左到右,我們可以看到數(shù)據(jù)是如何流動(dòng)的。每個(gè)時(shí)間步的輸入都被標(biāo)記為“輸入”,每個(gè)時(shí)間步的輸出被標(biāo)記為“輸出”,并且每個(gè)時(shí)間步之間都有一個(gè)狀態(tài)“狀態(tài)”。
- 圖中還展示了這些狀態(tài)是如何從一個(gè)時(shí)間步傳遞到下一個(gè)時(shí)間步的,表現(xiàn)了RNN的“記憶”特性。
-
解讀SimpleRNN的工作機(jī)制:
- SimpleRNN在每個(gè)時(shí)間步都接受一個(gè)輸入,并產(chǎn)生一個(gè)輸出。但與一般的神經(jīng)網(wǎng)絡(luò)不同,SimpleRNN還維護(hù)一個(gè)“狀態(tài)”,這個(gè)狀態(tài)從一個(gè)時(shí)間步傳遞到下一個(gè)時(shí)間步。
- 這個(gè)狀態(tài)可以被視為網(wǎng)絡(luò)的“記憶”,它攜帶了過(guò)去的信息,并用于影響當(dāng)前時(shí)間步的計(jì)算。
- 偽代碼展示了每個(gè)時(shí)間步輸出和狀態(tài)的計(jì)算方法,這兩者都依賴(lài)于當(dāng)前的輸入、前一時(shí)間步的狀態(tài)、權(quán)重和偏置。
-
識(shí)別圖中的位置:
- 在圖中,“我、愛(ài)、祖國(guó)”被分別標(biāo)注在每一個(gè)時(shí)間步的上方。它們與每個(gè)時(shí)間步的“計(jì)算”模塊相連接。
- “記憶”則被標(biāo)注在每個(gè)時(shí)間步的中心,并在時(shí)間步之間傳遞。
-
解釋它們?cè)赟impleRNN中的角色:
- “我、愛(ài)、祖國(guó)”:這些詞分別代表每個(gè)時(shí)間步的輸入。在這個(gè)例子中,我們可以認(rèn)為是在處理一個(gè)文本序列,即“我 愛(ài) 祖國(guó)”。在每一個(gè)時(shí)間步,“計(jì)算”模塊會(huì)接收這些詞作為輸入。
- “記憶”:這代表SimpleRNN的內(nèi)部狀態(tài)或“隱藏狀態(tài)”。它會(huì)在時(shí)間步之間傳遞,并保存之前時(shí)間步的信息。在每一個(gè)時(shí)間步,“記憶”會(huì)被更新,并用于下一個(gè)時(shí)間步的計(jì)算。
所以,答案是“我、愛(ài)、祖國(guó)”是輸入,而“記憶”代表SimpleRNN的內(nèi)部狀態(tài)。如果您有其他問(wèn)題或需要進(jìn)一步的澄清,請(qǐng)隨時(shí)告訴我。
簡(jiǎn)而言之,圖片展示了SimpleRNN如何在每個(gè)時(shí)間步接受輸入,并根據(jù)前一時(shí)間步的“記憶”產(chǎn)生輸出的過(guò)程。
simpleRNN的局限性
-
什么是神經(jīng)網(wǎng)絡(luò)和simpleRNN?
- 神經(jīng)網(wǎng)絡(luò)是一種用于數(shù)據(jù)處理和模式識(shí)別的計(jì)算模型。它們通常用于諸如圖像識(shí)別、自然語(yǔ)言處理等任務(wù)。
- simpleRNN(簡(jiǎn)單循環(huán)神經(jīng)網(wǎng)絡(luò))是一種特殊類(lèi)型的神經(jīng)網(wǎng)絡(luò),用于處理序列數(shù)據(jù),比如文本或時(shí)間序列數(shù)據(jù)。
-
simpleRNN的主要局限性以及簡(jiǎn)短解釋
-
梯度消失和梯度爆炸問(wèn)題: 在處理長(zhǎng)序列時(shí),simpleRNN很難學(xué)習(xí)到早期信息的重要性,這主要是因?yàn)樘荻龋从糜诟履P蜋?quán)重的信號(hào))會(huì)隨時(shí)間減?。ㄏВ┗蛟龃螅ūǎ?。
-
短期記憶: simpleRNN通常只能記住短期的信息,這意味著它不擅長(zhǎng)處理具有長(zhǎng)期依賴(lài)關(guān)系的任務(wù)。
-
計(jì)算效率: 盡管結(jié)構(gòu)相對(duì)簡(jiǎn)單,但simpleRNN在處理非常長(zhǎng)的序列時(shí)可能會(huì)變得計(jì)算密集和低效。
-
過(guò)擬合: 因?yàn)槟P洼^簡(jiǎn)單,所以它容易過(guò)擬合,即在訓(xùn)練數(shù)據(jù)上表現(xiàn)很好,但在未見(jiàn)過(guò)的數(shù)據(jù)上表現(xiàn)差。
-
這些是簡(jiǎn)單循環(huán)神經(jīng)網(wǎng)絡(luò)(simpleRNN)的主要局限性。
LSTM
手寫(xiě)一下sigmoid例子
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-5.0, 5.0, 0.1)
print(x)
y = 1 / (1 + np.exp(-x))
print(y)
plt.plot(x, y)
plt.show()
支持長(zhǎng)記憶的神經(jīng)網(wǎng)絡(luò)
解讀并給出圖片中所示網(wǎng)絡(luò)結(jié)構(gòu)的流程解釋。
-
識(shí)別圖中的關(guān)鍵部分:
- A: 網(wǎng)絡(luò)的核心計(jì)算單元。
- X t ? 1 X_{t-1} Xt?1?, X t X_t Xt?, X t + 1 X_{t+1} Xt+1?: 輸入序列中的各個(gè)時(shí)間步。
- h t ? 1 h_{t-1} ht?1?, h t h_t ht?, h t + 1 h_{t+1} ht+1?: 對(duì)應(yīng)時(shí)間步的輸出或隱藏狀態(tài)。
- “tanh”激活函數(shù),加法和乘法運(yùn)算。
-
為每一部分提供描述:
- A: 它是網(wǎng)絡(luò)的核心部分,負(fù)責(zé)進(jìn)行所有的計(jì)算。接收輸入和前一個(gè)時(shí)間步的隱藏狀態(tài),輸出當(dāng)前時(shí)間步的隱藏狀態(tài)。
- X t ? 1 X_{t-1} Xt?1?, X t X_t Xt?, X t + 1 X_{t+1} Xt+1?: 這些是順序輸入到網(wǎng)絡(luò)中的數(shù)據(jù),分別對(duì)應(yīng)于連續(xù)的時(shí)間步。
- h t ? 1 h_{t-1} ht?1?, h t h_t ht?, h t + 1 h_{t+1} ht+1?: 這些是網(wǎng)絡(luò)在各個(gè)時(shí)間步的輸出或隱藏狀態(tài)。它們包含了之前時(shí)間步的信息,并在連續(xù)的時(shí)間步中傳遞。
- “tanh”是一種激活函數(shù),用于非線性轉(zhuǎn)換。
-
描述整個(gè)流程:
- 開(kāi)始于時(shí)間步t-1,輸入 X t ? 1 X_{t-1} Xt?1?和隱藏狀態(tài) h t ? 2 h_{t-2} ht?2?被提供給單元A。
- 在單元A內(nèi),進(jìn)行了乘法、加法和“tanh”激活函數(shù)的計(jì)算。
- 輸出結(jié)果為隱藏狀態(tài) h t ? 1 h_{t-1} ht?1?,這個(gè)狀態(tài)同時(shí)也是這一時(shí)間步的輸出,并且會(huì)被傳遞到下一個(gè)時(shí)間步。
- 對(duì)于時(shí)間步t,該過(guò)程重復(fù),輸入 X t X_t Xt?和隱藏狀態(tài) h t ? 1 h_{t-1} ht?1?被提供給單元A,輸出為 h t h_t ht?。
- 同樣的流程繼續(xù)進(jìn)行,對(duì)于時(shí)間步t+1,輸入為 X t + 1 X_{t+1} Xt+1?和隱藏狀態(tài) h t h_t ht?,輸出為 h t + 1 h_{t+1} ht+1?。
整體而言,這是一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的簡(jiǎn)化表示,用于處理序列數(shù)據(jù)。每個(gè)時(shí)間步接收一個(gè)輸入和前一個(gè)時(shí)間步的隱藏狀態(tài),產(chǎn)生一個(gè)輸出,并將該輸出傳遞到下一個(gè)時(shí)間步。
解讀3重門(mén)
上圖中,i=input o=output f=forget
這是一個(gè)展示長(zhǎng)短時(shí)記憶(Long Short-Term Memory, LSTM)網(wǎng)絡(luò)中某一單元的計(jì)算過(guò)程的圖片。
1. 描述圖片的主要部分
- 圖片標(biāo)題:“三重門(mén)機(jī)制”。
- 圖中給出了幾個(gè)公式,描述了LSTM中的輸入門(mén)(i)、遺忘門(mén)(f)和輸出門(mén)(o)的計(jì)算,以及記憶細(xì)胞的更新方式。
- 圖片下方展示了LSTM單元中數(shù)據(jù)流的方向。
2. 解釋LSTM的工作原理
- LSTM設(shè)計(jì)用于解決梯度消失和梯度爆炸的問(wèn)題,這在傳統(tǒng)的RNN中是一個(gè)挑戰(zhàn)。
- LSTM通過(guò)三個(gè)門(mén)(輸入門(mén)、遺忘門(mén)和輸出門(mén))和一個(gè)記憶細(xì)胞來(lái)工作,從而實(shí)現(xiàn)長(zhǎng)期記憶。
3. 根據(jù)圖片內(nèi)容提供額外的補(bǔ)充和解讀
- 輸入門(mén)(i): 控制新輸入信息的量。計(jì)算公式為
i = sigmoid(wt * xt + ut * ht-1 + b)
。 - 遺忘門(mén)(f): 決定哪些信息從記憶細(xì)胞中被拋棄或遺忘。計(jì)算公式為
f = sigmoid(wt * xt + ut * ht-1 + b)
。 - 輸出門(mén)(o): 控制從記憶細(xì)胞到隱藏狀態(tài)的輸出信息量。計(jì)算公式為
o = sigmoid(wt * xt + ut * ht-1 + b)
。 - ?C:當(dāng)前輸入信息的候選值。計(jì)算公式為
?C = tanh(wt@xt + ht-1@wh + b)
。 - Ct: 更新的記憶細(xì)胞。計(jì)算公式為
Ct = f * Ct-1 + i * ?C
,表示遺忘門(mén)選擇遺忘的信息和輸入門(mén)選擇的新信息的結(jié)合。 - ht: 當(dāng)前的隱藏狀態(tài)。計(jì)算公式為
ht = o * tanh(Ct)
。
這些門(mén)的作用使LSTM能夠?qū)W習(xí)和記住長(zhǎng)期的依賴(lài)關(guān)系,從而在各種序列預(yù)測(cè)任務(wù)中取得了成功。
讓我們先逐步解讀LSTM的計(jì)算過(guò)程,然后將其與傳統(tǒng)RNN進(jìn)行比較。
1. LSTM的計(jì)算過(guò)程
a. 輸入:
- x t xt xt:當(dāng)前時(shí)間步的輸入。
- $ht-1$:前一時(shí)間步的隱藏狀態(tài)。
- C t ? 1 Ct-1 Ct?1:前一時(shí)間步的記憶細(xì)胞。
b. 遺忘門(mén)(f):
計(jì)算哪些先前的記憶需要被保留或遺忘。
f
=
s
i
g
m
o
i
d
(
w
t
?
x
t
+
u
t
?
h
t
?
1
+
b
)
f = sigmoid(wt * xt + ut * ht-1 + b)
f=sigmoid(wt?xt+ut?ht?1+b)
c. 輸入門(mén)(i) 和 記憶候選值(?C):
決定更新哪些新的記憶。
i
=
s
i
g
m
o
i
d
(
w
t
?
x
t
+
u
t
?
h
t
?
1
+
b
)
i = sigmoid(wt * xt + ut * ht-1 + b)
i=sigmoid(wt?xt+ut?ht?1+b)
?
C
=
t
a
n
h
(
w
t
@
x
t
+
h
t
?
1
@
w
h
+
b
)
?C = tanh(wt@xt + ht-1@wh + b)
?C=tanh(wt@xt+ht?1@wh+b)
d. 更新記憶細(xì)胞(Ct):
結(jié)合遺忘門(mén)的輸出和輸入門(mén)的輸出,更新記憶細(xì)胞。
C
t
=
f
?
C
t
?
1
+
i
?
?
C
Ct = f * Ct-1 + i * ?C
Ct=f?Ct?1+i??C
e. 輸出門(mén)(o):
計(jì)算下一個(gè)隱藏狀態(tài)應(yīng)該是什么。
o
=
s
i
g
m
o
i
d
(
w
t
?
x
t
+
u
t
?
h
t
?
1
+
b
)
o = sigmoid(wt * xt + ut * ht-1 + b)
o=sigmoid(wt?xt+ut?ht?1+b)
f. 計(jì)算隱藏狀態(tài)(ht):
h
t
=
o
?
t
a
n
h
(
C
t
)
ht = o * tanh(Ct)
ht=o?tanh(Ct)
2. LSTM與傳統(tǒng)RNN的區(qū)別
a. 記憶細(xì)胞與隱藏狀態(tài):
- LSTM: 有一個(gè)稱(chēng)為“記憶細(xì)胞”的附加狀態(tài),它可以存儲(chǔ)跨多個(gè)時(shí)間步的信息。
- RNN: 只有一個(gè)隱藏狀態(tài)。
b. 門(mén)機(jī)制:
- LSTM: 使用三個(gè)門(mén)(輸入、輸出和遺忘門(mén))來(lái)控制信息的流動(dòng)。
- RNN: 沒(méi)有這些門(mén),信息簡(jiǎn)單地在每個(gè)時(shí)間步被傳遞和變換。
c. 長(zhǎng)期依賴(lài):
- LSTM: 由于其門(mén)機(jī)制和記憶細(xì)胞,LSTM可以處理長(zhǎng)期依賴(lài),記住信息超過(guò)數(shù)百個(gè)時(shí)間步。
- RNN: 很難處理長(zhǎng)期依賴(lài),因?yàn)樾畔⒃诿總€(gè)時(shí)間步都會(huì)逐漸丟失或被稀釋。
d. 梯度問(wèn)題:
- LSTM: 設(shè)計(jì)來(lái)緩解梯度消失和爆炸問(wèn)題。
- RNN: 更容易遭受梯度消失或梯度爆炸問(wèn)題。
總結(jié): 雖然LSTM和RNN都是遞歸神經(jīng)網(wǎng)絡(luò)的變體,但LSTM通過(guò)其門(mén)機(jī)制和記憶細(xì)胞設(shè)計(jì),使其能夠更好地處理長(zhǎng)期依賴(lài),而不受梯度消失或梯度爆炸問(wèn)題的困擾。
內(nèi)部結(jié)構(gòu):文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-736392.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-736392.html
到了這里,關(guān)于NLP之LSTM原理剖析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!