RNN, LSTM

# 矩阵代表变换方式,相当于加减乘除。值就是值。
# :param varname: jsDoc风格的注释,用于说明参数的作用

LSTM笔记、个人理解:

设定:先遗忘→再输入门→输出门
C_t-1负责长时记忆,h_t-1负责短时记忆

image

遗忘门

\(f_t=\sigma(\mathbf{W}_f[\mathbf{h}_{t-1},\mathbf{x}_t]+b_f)\)
[h_t-1,x_t]代表纵向堆叠:\(\begin{bmatrix} h_{t-1}\\x_t \end{bmatrix}\)

输入门

\( \boldsymbol{i}_t=\sigma\left(\boldsymbol{W}_i\left[\boldsymbol{h}_{t-1},\boldsymbol{x}_t\right]+b_i\right) \)
\( \tilde{\boldsymbol{c}}_t=tanh\left(\boldsymbol{W}_c\left[\boldsymbol{h}_{t-1},\boldsymbol{x}_t\right]+b_c\right) \)

长时记忆更新

\(\boldsymbol{c}=\boldsymbol{f}_t \cdot \boldsymbol{c}_{t-1}+\boldsymbol{i}_t \cdot \widetilde{\boldsymbol{c}}_t\)
\(f_t\)的乘法比后面加法影响更大

输出门

输出:\( \boldsymbol{o}_t=\sigma(\boldsymbol{W}_o \cdot [\boldsymbol{h}_{t-1},\boldsymbol{x}_t]+b_o) \)
隐藏层:\( \boldsymbol{h}_t=\boldsymbol{o}_t \cdot tanh(c_t) \)

与RNN对比

本文假设都用:
sigmoid \(\sigma\) 函数:做输出层激活函数
tanh函数:隐藏层激活函数

\(o_t=\sigma(W_o \cdot h_t + b_o)\)
\(h_t=tanh(W_{in} \cdot x_t+W_h \cdot h_{t-1})\)

posted @ 2024-04-11 16:59  Nolca  阅读(1)  评论(0编辑  收藏  举报