柚子快報(bào)邀請碼778899分享:人工智能 神經(jīng)網(wǎng)絡(luò)之lstm
文章目錄
1. LSTM簡介1.1 定義與起源1.2 與傳統(tǒng)RNN的比較
2. LSTM的結(jié)構(gòu)與工作原理2.1 記憶單元(Memory Cell)2.2 遺忘門(Forget Gate)2.3 輸入門(Input Gate)2.4 輸出門(Output Gate)
3. LSTM的數(shù)學(xué)模型3.1 公式描述3.2 激活函數(shù)的選擇
4. LSTM的應(yīng)用領(lǐng)域4.1 語言模型與文本生成4.2 機(jī)器翻譯4.3 時(shí)間序列預(yù)測
5. LSTM的變體5.1 帶孔LSTM(Peephole LSTM)5.2 門控循環(huán)單元(GRU)
6. LSTM的實(shí)現(xiàn)與優(yōu)化6.1 編碼實(shí)現(xiàn)6.2 梯度消失與爆炸問題
7. 總結(jié)與展望7.1 技術(shù)優(yōu)勢與應(yīng)用領(lǐng)域7.2 研究進(jìn)展與挑戰(zhàn)7.3 未來發(fā)展方向7.4 結(jié)論
1. LSTM簡介
1.1 定義與起源
長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory, LSTM)是一種特殊類型的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),由 Hochreiter 和 Schmidhuber 于 1997 年提出。LSTM 旨在解決傳統(tǒng) RNN 在處理長序列數(shù)據(jù)時(shí)遇到的梯度消失或梯度爆炸問題。
LSTM 網(wǎng)絡(luò)的核心是三個(gè)門的機(jī)制:遺忘門(forget gate)、輸入門(input gate)、輸出門(output gate)。這些門通過自適應(yīng)的方式控制信息的流動(dòng),從而實(shí)現(xiàn)對長期依賴信息的捕捉。
1.2 與傳統(tǒng)RNN的比較
與標(biāo)準(zhǔn) RNN 相比,LSTM 引入了更為復(fù)雜的結(jié)構(gòu)來維護(hù)和更新內(nèi)部狀態(tài),即細(xì)胞狀態(tài)(cell state)。標(biāo)準(zhǔn) RNN 的更新公式為:
h
t
=
tanh
?
(
W
h
h
h
t
?
1
+
W
x
h
x
t
+
b
h
)
h_t = \tanh(W_{hh} h_{t-1} + W_{xh} x_t + b_h)
ht?=tanh(Whh?ht?1?+Wxh?xt?+bh?) 其中,$ h_t$ 是當(dāng)前時(shí)間步的隱藏狀態(tài),
x
t
x_t
xt? 是輸入,
W
W
W 和
b
b
b 分別是權(quán)重和偏置。
LSTM 則通過以下公式更新其細(xì)胞狀態(tài)
C
t
C_t
Ct? 和隱藏狀態(tài)
h
t
h_t
ht?:
f
t
=
σ
(
W
h
f
x
t
+
W
h
f
h
t
?
1
+
b
f
)
f_t = \sigma(W_{hf} x_t + W_{hf} h_{t-1} + b_f)
ft?=σ(Whf?xt?+Whf?ht?1?+bf?)
i
t
=
σ
(
W
h
i
x
t
+
W
h
i
h
t
?
1
+
b
i
)
i_t = \sigma(W_{hi} x_t + W_{hi} h_{t-1} + b_i)
it?=σ(Whi?xt?+Whi?ht?1?+bi?)
C
~
t
=
tanh
?
(
W
h
c
x
t
+
W
h
c
h
t
?
1
+
b
c
)
\tilde{C}_t = \tanh(W_{hc} x_t + W_{hc} h_{t-1} + b_c)
C~t?=tanh(Whc?xt?+Whc?ht?1?+bc?)
C
t
=
f
t
?
C
t
?
1
+
i
t
?
C
~
t
C_t = f_t * C_{t-1} + i_t * \tilde{C}_t
Ct?=ft??Ct?1?+it??C~t?
h
t
=
tanh
?
(
C
t
)
h_t = \tanh(C_t)
ht?=tanh(Ct?)
o
t
=
σ
(
W
h
o
x
t
+
W
h
o
h
t
?
1
+
b
o
)
o_t = \sigma(W_{ho} x_t + W_{ho} h_{t-1} + b_o)
ot?=σ(Who?xt?+Who?ht?1?+bo?)
h
t
=
o
t
?
tanh
?
(
C
t
)
h_t = o_t * \tanh(C_t)
ht?=ot??tanh(Ct?) 其中,
f
t
f_t
ft?、
i
t
i_t
it? 、
o
t
o_t
ot? 分別是遺忘門、輸入門和輸出門的激活值,
C
~
t
\tilde{C}_t
C~t? 是候選記憶細(xì)胞,
σ
\sigma
σ 是 sigmoid 激活函數(shù),* 表示逐元素乘法。
LSTM 的這種設(shè)計(jì)顯著提高了網(wǎng)絡(luò)在處理長序列數(shù)據(jù)時(shí)的性能,使其成為許多序列建模任務(wù)的首選模型。
2. LSTM的結(jié)構(gòu)與工作原理
2.1 記憶單元(Memory Cell)
記憶單元是LSTM網(wǎng)絡(luò)的核心,負(fù)責(zé)在整個(gè)序列處理過程中保持和更新長期依賴信息。記憶單元的結(jié)構(gòu)相對簡單,主要由一個(gè)或多個(gè)神經(jīng)元組成,其狀態(tài)通過時(shí)間步傳遞,僅通過線性方式更新。
2.2 遺忘門(Forget Gate)
遺忘門的目的是決定在每個(gè)時(shí)間步中,哪些信息應(yīng)該從記憶單元中被遺忘或保留。它通過以下公式進(jìn)行計(jì)算:
f
t
=
σ
(
W
f
?
[
h
t
?
1
,
x
t
]
+
b
f
)
f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)
ft?=σ(Wf??[ht?1?,xt?]+bf?) 其中,
σ
\sigma
σ 是邏輯激活函數(shù),
W
f
W_f
Wf? 和
b
f
b_f
bf? 分別是遺忘門的權(quán)重矩陣和偏置項(xiàng),
[
h
t
?
1
,
x
t
]
[h_{t-1}, x_t]
[ht?1?,xt?] 是前一時(shí)間步的隱藏狀態(tài)和當(dāng)前時(shí)間步的輸入。
2.3 輸入門(Input Gate)
輸入門由兩部分組成:一個(gè)sigmoid層決定哪些值將要更新,一個(gè)tanh層創(chuàng)建一個(gè)新的候選值向量,該向量將被加入到狀態(tài)中。輸入門的公式如下:
i
t
=
σ
(
W
i
?
[
h
t
?
1
,
x
t
]
+
b
i
)
i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)
it?=σ(Wi??[ht?1?,xt?]+bi?)
C
~
t
=
tanh
?
(
W
C
?
[
h
t
?
1
,
x
t
]
+
b
C
\tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C
C~t?=tanh(WC??[ht?1?,xt?]+bC? 這里,
i
t
i_t
it? 是輸入門的輸出,
C
~
t
\tilde{C}_t
C~t? 是候選記憶單元狀態(tài),
W
i
,
W
C
W_i, W_C
Wi?,WC? 和
b
i
,
b
C
b_i, b_C
bi?,bC? 分別是相關(guān)權(quán)重和偏置。
2.4 輸出門(Output Gate)
輸出門負(fù)責(zé)決定記憶單元狀態(tài)的哪一部分將被輸出到隱藏狀態(tài),同時(shí)通過以下公式計(jì)算:
o
t
=
σ
(
W
o
?
[
h
t
?
1
,
x
t
]
+
b
o
)
o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)
ot?=σ(Wo??[ht?1?,xt?]+bo?)
h
t
=
o
t
?
tanh
?
(
C
t
)
h_t = o_t * \tanh(C_t)
ht?=ot??tanh(Ct?) 其中,
o
t
o_t
ot? 是輸出門的sigmoid函數(shù)的輸出,
C
t
C_t
Ct? 是更新后的記憶單元狀態(tài),
h
t
h_t
ht? 是最終的隱藏狀態(tài)輸出。
上圖展示了LSTM網(wǎng)絡(luò)在時(shí)間步
t
t
t 的結(jié)構(gòu),其中各個(gè)門的交互和記憶單元狀態(tài)的更新清晰可見。通過遺忘門、輸入門和輸出門的協(xié)同工作,LSTM能夠有效地處理序列數(shù)據(jù)中的長期依賴問題。
3. LSTM的數(shù)學(xué)模型
3.1 公式描述
長短期記憶網(wǎng)絡(luò)(LSTM)是一種特殊類型的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),它能夠?qū)W習(xí)到長期依賴關(guān)系。LSTM的核心思想是通過引入三個(gè)門來控制信息的流動(dòng):遺忘門(forget gate)、輸入門(input gate)和輸出門(output gate)。
遺忘門決定從單元狀態(tài)中丟棄哪些信息,其公式如下:
f
t
=
σ
(
W
f
?
[
h
t
?
1
,
x
t
]
+
b
f
)
f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)
ft?=σ(Wf??[ht?1?,xt?]+bf?)
輸入門由兩部分組成:一個(gè)sigmoid層決定哪些值將被更新,一個(gè)tanh層創(chuàng)建一個(gè)新的候選值向量,公式如下:
i
t
=
σ
(
W
i
?
[
h
t
?
1
,
x
t
]
+
b
i
)
i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)
it?=σ(Wi??[ht?1?,xt?]+bi?)
C
~
t
=
tanh
?
(
W
C
?
[
h
t
?
1
,
x
t
]
+
b
C
)
\tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C)
C~t?=tanh(WC??[ht?1?,xt?]+bC?)
單元狀態(tài)的更新結(jié)合了遺忘門和輸入門的信息:
C
t
=
f
t
?
C
t
?
1
+
i
t
?
C
~
t
C_t = f_t * C_{t-1} + i_t * \tilde{C}_t
Ct?=ft??Ct?1?+it??C~t?
輸出門決定輸出哪些信息,同時(shí)輸出的值會(huì)通過tanh函數(shù)進(jìn)行縮放:
o
t
=
σ
(
W
o
?
[
h
t
?
1
,
x
t
]
+
b
o
)
o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)
ot?=σ(Wo??[ht?1?,xt?]+bo?)
h
t
=
o
t
?
tanh
?
(
C
t
)
h_t = o_t * \tanh(C_t)
ht?=ot??tanh(Ct?)
其中,
σ
\sigma
σ表示sigmoid函數(shù),
?
\cdot
?表示向量或矩陣的點(diǎn)積,
x
t
x_t
xt?是t時(shí)刻的輸入,
h
t
h_t
ht?是t時(shí)刻的隱藏狀態(tài),
C
t
C_t
Ct?是t時(shí)刻的單元狀態(tài),
W
W
W和
b
b
b分別是權(quán)重和偏置。
3.2 激活函數(shù)的選擇
在LSTM中,激活函數(shù)的選擇對網(wǎng)絡(luò)性能有重要影響。常見的激活函數(shù)包括:
Sigmoid函數(shù):用于遺忘門、輸入門和輸出門的門控機(jī)制,其公式為:
σ
(
x
)
=
1
1
+
e
?
x
\sigma(x) = \frac{1}{1 + e^{-x}}
σ(x)=1+e?x1? Sigmoid函數(shù)能夠輸出0到1之間的值,適合用作門控機(jī)制的激活函數(shù)。 Tanh函數(shù):用于候選記憶細(xì)胞的激活,其公式為:
tanh
?
(
x
)
=
e
x
?
e
?
x
e
x
+
e
?
x
\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
tanh(x)=ex+e?xex?e?x? Tanh函數(shù)輸出-1到1之間的值,能夠提供零中心化的激活,有助于數(shù)據(jù)的處理。 ReLU函數(shù):雖然在標(biāo)準(zhǔn)的LSTM中不常用,但在某些變體中,如Leaky ReLU,可以用于加速訓(xùn)練過程:
Leaky?ReLU
(
x
)
=
max
?
(
0.01
x
,
x
)
\text{Leaky ReLU}(x) = \max(0.01x, x)
Leaky?ReLU(x)=max(0.01x,x)
選擇激活函數(shù)時(shí),需要考慮函數(shù)的導(dǎo)數(shù)、計(jì)算效率、梯度消失或爆炸問題等因素。例如,Sigmoid函數(shù)雖然在梯度上容易飽和,但其平滑的導(dǎo)數(shù)有助于反向傳播;而Tanh函數(shù)的零中心化特性則有助于減少學(xué)習(xí)過程中的偏移。
4. LSTM的應(yīng)用領(lǐng)域
4.1 語言模型與文本生成
LSTM在語言模型和文本生成領(lǐng)域的應(yīng)用是其最為顯著的成就之一。通過學(xué)習(xí)語言的長期依賴關(guān)系,LSTM能夠有效地捕捉文本中的語義信息,從而生成連貫且符合語境的文本。
LSTM通過記憶單元來維持長期依賴關(guān)系,其核心公式如下:
f
t
=
σ
(
W
f
?
[
h
t
?
1
,
x
t
]
+
b
f
)
i
t
=
σ
(
W
i
?
[
h
t
?
1
,
x
t
]
+
b
i
)
C
~
t
=
tanh
?
(
W
C
?
x
t
+
b
C
)
C
t
=
f
t
?
C
t
?
1
+
i
t
?
C
~
t
o
t
=
σ
(
W
o
?
[
h
t
?
1
,
x
t
]
+
b
o
)
h
t
=
o
t
?
tanh
?
(
C
t
)
\begin{aligned} \mathbf{f}_t &= \sigma(\mathbf{W}_f \cdot [\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf_f) \\ \mathbf{i}_t &= \sigma(\mathbf{W}_i \cdot [\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf_i) \\ \tilde{\mathbf{C}}_t &= \tanh(\mathbf{W}_C \cdot \mathbf{x}_t + \mathbf_C) \\ \mathbf{C}_t &= \mathbf{f}_t * \mathbf{C}_{t-1} + \mathbf{i}_t * \tilde{\mathbf{C}}_t \\ \mathbf{o}_t &= \sigma(\mathbf{W}_o \cdot [\mathbf{h}_{t-1}, \mathbf{x}_t] + \mathbf_o) \\ \mathbf{h}_t &= \mathbf{o}_t * \tanh(\mathbf{C}_t) \end{aligned}
ft?it?C~t?Ct?ot?ht??=σ(Wf??[ht?1?,xt?]+bf?)=σ(Wi??[ht?1?,xt?]+bi?)=tanh(WC??xt?+bC?)=ft??Ct?1?+it??C~t?=σ(Wo??[ht?1?,xt?]+bo?)=ot??tanh(Ct?)? 其中,
f
t
\mathbf{f}_t
ft?,
i
t
\mathbf{i}_t
it?,
o
t
\mathbf{o}_t
ot? 分別代表在時(shí)間步
t
t
t 的遺忘門、輸入門和輸出門的激活值,
C
t
\mathbf{C}_t
Ct? 是在時(shí)間步
t
t
t 的細(xì)胞狀態(tài),
h
t
\mathbf{h}_t
ht? 是隱藏狀態(tài)。 在文本生成中,LSTM可以根據(jù)給定的初始文本序列生成新的文本序列。例如,給定一個(gè)故事的開頭,LSTM能夠續(xù)寫故事,生成一個(gè)連貫且符合原文風(fēng)格的結(jié)尾。
4.2 機(jī)器翻譯
LSTM在機(jī)器翻譯領(lǐng)域的應(yīng)用也是其重要成就之一。LSTM能夠處理長距離依賴問題,使得翻譯結(jié)果更加準(zhǔn)確和自然。
機(jī)器翻譯中的LSTM模型通常采用編碼器-解碼器架構(gòu),其中編碼器將源語言文本轉(zhuǎn)換為固定長度的向量,解碼器再將該向量轉(zhuǎn)換為目標(biāo)語言文本。 以下是一個(gè)簡化的序列到序列(Sequence to Sequence, Seq2Seq)模型的示意圖:
#mermaid-svg-x1PFzWl1lErz1TZT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-x1PFzWl1lErz1TZT .error-icon{fill:#552222;}#mermaid-svg-x1PFzWl1lErz1TZT .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-x1PFzWl1lErz1TZT .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-x1PFzWl1lErz1TZT .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-x1PFzWl1lErz1TZT .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-x1PFzWl1lErz1TZT .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-x1PFzWl1lErz1TZT .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-x1PFzWl1lErz1TZT .marker{fill:#333333;stroke:#333333;}#mermaid-svg-x1PFzWl1lErz1TZT .marker.cross{stroke:#333333;}#mermaid-svg-x1PFzWl1lErz1TZT svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-x1PFzWl1lErz1TZT .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-x1PFzWl1lErz1TZT .cluster-label text{fill:#333;}#mermaid-svg-x1PFzWl1lErz1TZT .cluster-label span{color:#333;}#mermaid-svg-x1PFzWl1lErz1TZT .label text,#mermaid-svg-x1PFzWl1lErz1TZT span{fill:#333;color:#333;}#mermaid-svg-x1PFzWl1lErz1TZT .node rect,#mermaid-svg-x1PFzWl1lErz1TZT .node circle,#mermaid-svg-x1PFzWl1lErz1TZT .node ellipse,#mermaid-svg-x1PFzWl1lErz1TZT .node polygon,#mermaid-svg-x1PFzWl1lErz1TZT .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-x1PFzWl1lErz1TZT .node .label{text-align:center;}#mermaid-svg-x1PFzWl1lErz1TZT .node.clickable{cursor:pointer;}#mermaid-svg-x1PFzWl1lErz1TZT .arrowheadPath{fill:#333333;}#mermaid-svg-x1PFzWl1lErz1TZT .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-x1PFzWl1lErz1TZT .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-x1PFzWl1lErz1TZT .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-x1PFzWl1lErz1TZT .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-x1PFzWl1lErz1TZT .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-x1PFzWl1lErz1TZT .cluster text{fill:#333;}#mermaid-svg-x1PFzWl1lErz1TZT .cluster span{color:#333;}#mermaid-svg-x1PFzWl1lErz1TZT div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-x1PFzWl1lErz1TZT :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
編碼
初始化
生成
生成
輸入序列
編碼器
上下文向量
解碼器
輸出序列1
輸出序列2
輸出序列...
結(jié)束標(biāo)記
LSTM在機(jī)器翻譯中的關(guān)鍵優(yōu)勢在于其能夠捕捉長距離依賴關(guān)系,這使得翻譯結(jié)果能夠更好地保留原文的語義信息。
4.3 時(shí)間序列預(yù)測
LSTM在時(shí)間序列預(yù)測方面表現(xiàn)出色,特別是在金融市場預(yù)測、氣象預(yù)測等領(lǐng)域。
時(shí)間序列預(yù)測模型通常需要處理大量具有時(shí)間依賴性的數(shù)據(jù)點(diǎn)。LSTM通過其內(nèi)部的細(xì)胞狀態(tài)來記憶長期的信息,從而能夠預(yù)測未來的數(shù)據(jù)點(diǎn)。 一個(gè)簡單的時(shí)間序列預(yù)測模型可以表示為:
y
^
t
=
f
(
h
t
?
1
,
x
t
)
\hat{y}_t = f(\mathbf{h}_{t-1}, \mathbf{x}_t)
y^?t?=f(ht?1?,xt?) 其中,
y
^
t
\hat{y}_t
y^?t? 是在時(shí)間步
t
t
t 的預(yù)測值,
h
t
?
1
\mathbf{h}_{t-1}
ht?1? 是前一時(shí)間步的隱藏狀態(tài),
x
t
\mathbf{x}_t
xt? 是當(dāng)前時(shí)間步的輸入。 LSTM在時(shí)間序列預(yù)測中的關(guān)鍵優(yōu)勢在于其能夠自動(dòng)學(xué)習(xí)數(shù)據(jù)中的模式和趨勢,而無需手動(dòng)特征工程。 下圖展示了一個(gè)LSTM網(wǎng)絡(luò)在時(shí)間序列預(yù)測中的結(jié)構(gòu):
5. LSTM的變體
5.1 帶孔LSTM(Peephole LSTM)
帶孔LSTM(Peephole LSTM)是在標(biāo)準(zhǔn)LSTM的基礎(chǔ)上增加了一種機(jī)制,允許門控單元觀察到細(xì)胞狀態(tài)。這種機(jī)制通過在遺忘門、輸入門和輸出門中增加對細(xì)胞狀態(tài)的反饋連接,從而提高了LSTM的記憶能力。
在標(biāo)準(zhǔn)的LSTM中,遺忘門
f
t
f_t
ft?、輸入門
i
t
i_t
it?和輸出門
o
t
o_t
ot?的計(jì)算公式如下:
f
t
=
σ
(
W
f
?
[
h
t
?
1
,
x
t
]
+
b
f
)
f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)
ft?=σ(Wf??[ht?1?,xt?]+bf?)
i
t
=
σ
(
W
i
?
[
h
t
?
1
,
x
t
]
+
b
i
)
i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)
it?=σ(Wi??[ht?1?,xt?]+bi?)
o
t
=
σ
(
W
o
?
[
h
t
?
1
,
x
t
]
+
b
o
)
o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)
ot?=σ(Wo??[ht?1?,xt?]+bo?)
而在帶孔LSTM中,這些門的計(jì)算會(huì)考慮細(xì)胞狀態(tài)
C
t
?
1
C_{t-1}
Ct?1?:
f
t
=
σ
(
W
f
?
[
h
t
?
1
,
x
t
]
+
U
f
?
C
t
?
1
+
b
f
)
f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + U_f \cdot C_{t-1} + b_f)
ft?=σ(Wf??[ht?1?,xt?]+Uf??Ct?1?+bf?)
i
t
=
σ
(
W
i
?
[
h
t
?
1
,
x
t
]
+
U
i
?
C
t
?
1
+
b
i
)
i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + U_i \cdot C_{t-1} + b_i)
it?=σ(Wi??[ht?1?,xt?]+Ui??Ct?1?+bi?)
o
t
=
σ
(
W
o
?
[
h
t
?
1
,
x
t
]
+
U
o
?
C
t
?
1
+
b
o
)
o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + U_o \cdot C_{t-1} + b_o)
ot?=σ(Wo??[ht?1?,xt?]+Uo??Ct?1?+bo?) 其中,
U
f
U_f
Uf?,
U
i
U_i
Ui?,和
U
o
U_o
Uo? 是額外的權(quán)重矩陣,用于細(xì)胞狀態(tài)的反饋。
5.2 門控循環(huán)單元(GRU)
門控循環(huán)單元(Gated Recurrent Unit,GRU)是LSTM的一個(gè)變體,由Cho等人在2014年提出。GRU簡化了LSTM的結(jié)構(gòu),將遺忘門和輸入門合并為一個(gè)單一的“更新門”,并且合并了細(xì)胞狀態(tài)和隱藏狀態(tài)。
GRU的核心思想是減少模型參數(shù),同時(shí)保持對長短期依賴的記憶能力。GRU的更新門
z
t
z_t
zt?和重置門
r
t
r_t
rt?的計(jì)算公式如下:
z
t
=
σ
(
W
z
?
[
h
t
?
1
,
x
t
]
+
b
z
)
z_t = \sigma(W_z \cdot [h_{t-1}, x_t] + b_z)
zt?=σ(Wz??[ht?1?,xt?]+bz?)
r
t
=
σ
(
W
r
?
[
h
t
?
1
,
x
t
]
+
b
r
)
r_t = \sigma(W_r \cdot [h_{t-1}, x_t] + b_r)
rt?=σ(Wr??[ht?1?,xt?]+br?)
更新門控制信息的流動(dòng),而重置門則決定了之前的記憶有多少應(yīng)該被保留。新的候選記憶
h
~
t
\tilde{h}_t
h~t?和更新后的隱藏狀態(tài)
h
t
h_t
ht?的計(jì)算如下:
h
~
t
=
tanh
?
(
W
?
[
r
t
?
h
t
?
1
,
x
t
]
+
b
)
\tilde{h}_t = \tanh(W \cdot [r_t * h_{t-1}, x_t] + b)
h~t?=tanh(W?[rt??ht?1?,xt?]+b)
h
t
=
(
1
?
z
t
)
?
h
t
?
1
+
z
t
?
h
~
t
h_t = (1 - z_t) * h_{t-1} + z_t * \tilde{h}_t
ht?=(1?zt?)?ht?1?+zt??h~t?
GRU通過這種方式,實(shí)現(xiàn)了對信息的動(dòng)態(tài)過濾和更新,同時(shí)減少了模型的復(fù)雜性。由于其結(jié)構(gòu)的簡化,GRU在某些任務(wù)上能夠更快地訓(xùn)練,并且在某些情況下能夠與LSTM相媲美或甚至更優(yōu)。
6. LSTM的實(shí)現(xiàn)與優(yōu)化
6.1 編碼實(shí)現(xiàn)
LSTM(Long Short-Term Memory)是一種特殊類型的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),它能夠?qū)W習(xí)到長期依賴關(guān)系。LSTM的結(jié)構(gòu)由以下三個(gè)主要部分組成:遺忘門(Forget Gate)、輸入門(Input Gate)和輸出門(Output Gate)。
遺忘門的目的是決定從單元狀態(tài)中丟棄哪些信息。遺忘門的公式如下:
f
t
=
σ
(
W
f
?
[
h
t
?
1
,
x
t
]
+
b
f
)
f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)
ft?=σ(Wf??[ht?1?,xt?]+bf?)
其中,
σ
\sigma
σ是邏輯函數(shù),
W
f
W_f
Wf? 是權(quán)重矩陣,
[
h
t
?
1
,
x
t
]
[h_{t-1}, x_t]
[ht?1?,xt?] 是前一個(gè)時(shí)間步的隱藏狀態(tài)和當(dāng)前時(shí)間步的輸入,
b
f
b_f
bf? 是偏置項(xiàng)。
接著是輸入門,它由兩部分組成:更新候選值的sigmoid層和更新狀態(tài)的tanh層:
i
t
=
σ
(
W
i
?
[
h
t
?
1
,
x
t
]
+
b
i
)
i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)
it?=σ(Wi??[ht?1?,xt?]+bi?)
C
~
t
=
tanh
?
(
W
C
?
[
h
t
?
1
,
x
t
]
+
b
C
)
\tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C)
C~t?=tanh(WC??[ht?1?,xt?]+bC?)
然后,我們將遺忘門和輸入門的結(jié)果結(jié)合起來更新單元狀態(tài):
C
t
=
f
t
?
C
t
?
1
+
i
t
?
C
~
t
C_t = f_t * C_{t-1} + i_t * \tilde{C}_t
Ct?=ft??Ct?1?+it??C~t?
最后是輸出門,它決定了輸出的隱藏狀態(tài):
o
t
=
σ
(
W
o
?
[
h
t
?
1
,
x
t
]
+
b
o
)
o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)
ot?=σ(Wo??[ht?1?,xt?]+bo?)
h
t
=
o
t
?
tanh
?
(
C
t
)
h_t = o_t * \tanh(C_t)
ht?=ot??tanh(Ct?)
6.2 梯度消失與爆炸問題
在標(biāo)準(zhǔn)的RNN中,梯度消失或爆炸問題是一個(gè)常見的問題,這會(huì)導(dǎo)致網(wǎng)絡(luò)難以學(xué)習(xí)長期依賴關(guān)系。LSTM通過引入門控機(jī)制來解決這個(gè)問題。
梯度消失意味著隨著時(shí)間的推移,梯度值逐漸減小,導(dǎo)致網(wǎng)絡(luò)權(quán)重更新非常緩慢。梯度爆炸則是指梯度值隨著時(shí)間的推移而變得非常大,導(dǎo)致權(quán)重更新過于劇烈,從而影響學(xué)習(xí)過程。
LSTM通過以下方式緩解這些問題:
遺忘門允許網(wǎng)絡(luò)有選擇性地保留或遺忘信息,這有助于防止無關(guān)信息的積累。輸入門允許網(wǎng)絡(luò)更新單元狀態(tài),但僅當(dāng)新輸入與單元狀態(tài)相關(guān)時(shí)。通過這種方式,LSTM可以維持梯度在一個(gè)合理的范圍內(nèi),避免消失或爆炸。
此外,現(xiàn)代的優(yōu)化算法,如Adam或RMSprop,也可以有效緩解這些問題,它們通過調(diào)整學(xué)習(xí)率來適應(yīng)每個(gè)參數(shù)的更新需求。
上圖展示了LSTM的基本結(jié)構(gòu)圖,其中包含了遺忘門、單元狀態(tài)和輸出門的交互。通過這種方式,LSTM能夠有效地處理序列數(shù)據(jù),并在各種序列建模任務(wù)中取得優(yōu)異的性能。
7. 總結(jié)與展望
LSTM(Long Short-Term Memory)網(wǎng)絡(luò)作為一種特殊類型的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),自1997年由Hochreiter和Schmidhuber提出以來,已經(jīng)在處理序列數(shù)據(jù)方面取得了顯著的成就。LSTM通過引入三個(gè)關(guān)鍵的門控機(jī)制——遺忘門、輸入門和輸出門,有效解決了傳統(tǒng)RNN在處理長序列數(shù)據(jù)時(shí)的梯度消失或梯度爆炸問題。
7.1 技術(shù)優(yōu)勢與應(yīng)用領(lǐng)域
LSTM的核心技術(shù)優(yōu)勢在于其能夠?qū)W習(xí)長期依賴關(guān)系,這一點(diǎn)在自然語言處理(NLP)、語音識(shí)別、時(shí)間序列預(yù)測等多個(gè)領(lǐng)域得到了廣泛應(yīng)用。例如,在語言模型中,LSTM能夠捕捉到文本中的語法和語義信息,為機(jī)器翻譯、文本摘要等任務(wù)提供了強(qiáng)大的支持。
7.2 研究進(jìn)展與挑戰(zhàn)
近年來,LSTM的研究不斷深入,出現(xiàn)了多種變體,如Peephole LSTM、Coupled Input-Forget Gate LSTM等,這些變體在不同的應(yīng)用場景下展現(xiàn)出了各自的優(yōu)勢。然而,LSTM模型也面臨著一些挑戰(zhàn),如模型參數(shù)眾多導(dǎo)致的計(jì)算復(fù)雜性,以及在某些任務(wù)上對超參數(shù)敏感等問題。
7.3 未來發(fā)展方向
展望未來,LSTM及其變體的研究方向可能包括但不限于以下幾個(gè)方面:
模型優(yōu)化:進(jìn)一步簡化LSTM的結(jié)構(gòu),減少參數(shù)數(shù)量,提高模型的運(yùn)行效率。學(xué)習(xí)機(jī)制:探索更有效的門控機(jī)制,以提高LSTM對長短期信息的捕捉能力。與其他模型的融合:結(jié)合注意力機(jī)制等其他深度學(xué)習(xí)技術(shù),以增強(qiáng)模型的表達(dá)能力和泛化能力。應(yīng)用創(chuàng)新:開發(fā)更多基于LSTM的創(chuàng)新應(yīng)用,如在醫(yī)療健康、金融風(fēng)控等領(lǐng)域的深入應(yīng)用。
7.4 結(jié)論
LSTM作為一種強(qiáng)大的時(shí)間序列預(yù)測模型,在多個(gè)領(lǐng)域內(nèi)展現(xiàn)出了其獨(dú)特的價(jià)值和潛力。隨著研究的不斷深入和技術(shù)的持續(xù)進(jìn)步,LSTM有望在未來解決更多的實(shí)際問題,推動(dòng)人工智能技術(shù)的發(fā)展。
柚子快報(bào)邀請碼778899分享:人工智能 神經(jīng)網(wǎng)絡(luò)之lstm
文章鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。