RNN与LSTM 3D演示

这篇文章的内容来自B站UP主“梗直哥丶 ”的视频

RNN

简单的神经网络一般这样,输入层x进入隐藏层神经元s,再经过输出产生最后的结果y,通过调整权重\(W_{in}\)\(W_{out}\)就可以实现学习的效果。

image-20220428195630938

通常情况下,深度神经网络都是水平方向延伸的,比如卷积神经网络CNN,隐藏层数量多了,但是没有考虑单个隐层在时间上时序变化。

RNN则不同,它关注隐层每个神经元在时间维度上的不断成长与进步。体现在图上,变换一下3D的视角,网络结构不变,没有添加新的神经元,但是沿着时间轴recurrent,也就是重复,建立时序上的关联,这里的层级扩展并非神经元数量的真实增加,而是表示隐层在不同时刻的状态。

image-20220428154750526

根据问题的需要,隐层的时间关联既可以是全连接式的,所有线都相连。

image-20220428155017152

但也可以是自己对自己

image-20220428155204261

假如用\(W_S\)来表示层级间的权重矩阵,RNN通常会假定不同的层,其实也就是不同的时刻共享一个\(W_S\),这样可以有效地减少训练参数。

对神经元模型,如果隐藏层输出\(S_i = f(\sum_{n}^N(w_{in}^i·x_n^i + b_i))\)

写成矩阵形式就是\(S = f(W_{in}·X + b)\)

对RNN而言输出就变成了\(S_t = f(W_{in}X + W_sS_{t-1} + b)\)

多了一项\(W_sS_{t-1}\)

这样就建立了隐层在不同时刻,t-1时刻和t时刻他们之间的一种迭代关系。换言之,就是让神经网络有了某种记忆的能力。

RNN本质上就是用这样一种看似是级联,但实际上却是沿着时序,反复迭代的网络结构,实现了对序列数据的学习

image-20220428160210289

LSTM

传统的RNN对时间序列的预测捉襟见肘,它虽然建立了不同时刻隐藏层之间的联系,实现了记忆效果,但只是基于前一时刻,是一种short-memory。

与RNN相比,LSTM增加了一条新的时间链,记录long-term memory,用C来表示,同时它增加了两条链间的关联关系。新增加的链条就相当于记事的日记本。

image-20220428191325396

以t时刻为例,和RNN相比,计算隐层状态\(S_t\)时,除了输入和前一时刻,还要包含当前时刻的日记信息\(C_t\)

放大\(S_t\)\(C_t\)间的关联,一条线拆成了三条线,其中包含两步更加细致的操作,删除旧日记,增添新日记。

image-20220428192021594

首先,函数f1就像是一块橡皮擦,根据昨天的记忆\(s_{t-1}\)和今天的输入\(x_t\),决定要修改日记中的那些记录,数学语言描述就是:

\(f_1 = sigmoid (w_1 \begin{bmatrix} s_{t-1} \\ x_t \end{bmatrix}+ b_1)\)

其中sigmoid函数取值在0-1之间,矩阵元素相乘时,会抹掉那些取值为零的元素,相当于选择性遗忘部分记忆,因此也常常被称为forget gate。

然后,函数f2就像是一支铅笔,再次根据昨天的记忆和今天的输入,决定要在日记本上增加那些记录,数学语言没描述就是:

\(f_2 = sigmoid (w_2 \begin{bmatrix} s_{t-1} \\ x_t \end{bmatrix}+ b_2) * tanh(\tilde{w_2}\begin{bmatrix} s_{t-1} \\ x_t \end{bmatrix}+\tilde{b_2})\)

其中sigmoid函数再次对内容进行了选择,tanh函数取值在-1到1之间,这步操作不是遗忘,而是相当于把这两天的事情进行梳理和归纳,因此也常常被称为input gate。

先用橡皮在日记本上删减,再用铅笔在日记本上增加记录,两步操作合起来,用公式表示就是

\(c_t = f_1 * c_{t-1} + f_2\)

这样就得到了新的日记\(c_t\),它除了会继续往下传递,同时会被用作更新当前短期记忆\(s_t\),最后就可以计算输出得到的\(y_t\),同时保持短期网络记忆链\(s_t\)和长期记忆链\(c_t\),并且相互更新。

把3D模型旋转90度,拉伸变形,然后把长期记忆链C投影到平面上,再扩展长短期记忆链间的关联,就对应上经典LSTM示图了。

image-20220428193548319

这个图之所以难懂,主要是因为它用二维视角看三维信息,产生了重叠,而且一下子摆上了太多的细节,极大地增加了初学者的理解难度。

和RNN相比,LSTM引入了更多的参数矩阵,因此训练起来麻烦一些,但依然可以用梯度下降算法进行。

由于深度发觉了数据时序上的有趣关联,LSTM在某种程度上模拟了大脑,关注重要片段,而忽略无关信息,这极大拓展了人工智能的领域。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章