RNN与LSTM

前言

循环神经网络,循环神经网络与卷积神经网络有很大的不同。就是有“记忆暂存”功能,可以把过去的输入内容产生的影响量化后与当前时间输入一起反应到网络中参与训练。

RNN理解

个人理解,RNN还是在模仿人类。在模仿人类的学习的过程。根据前言所述,当前输入对未来可能会有影响。那么当前的输出应该也跟之前的输入和当前的输入有关系。
举个生活中的例子:例子背景就是在学校念书读小学。在这里把神经元比做自己,输入Xt比做当前年纪学习的知识,那么X就分为X1,X2、X3、X4、X5、X6。(小学有6个年级)。输出Y比做是一个学年的期末考试。那么Y也有Y1,Y2、Y3、Y4、Y5、Y6。就假装我们上三年级,那么输入就是X3,要想知道Y3。意思就是说我们学完了三年级要去考试了,那么考试的结果不应该只与我们三年级学习的知识有关,还应该跟二年级乃至一年级有关系。接着这个故事背景来看一下具体的RNN算法。

RNN与BPTT

RNN一般是用来作NLP的,因为语言相关的问题往往跟前后输入有关,比如说输入法的自动补充。我们简单输入几个字,输入法会帮我们猜测下一个字可能是什么。

RNN网络结构

直接看图
image.png
这里的W、U、V是权重向量。而且整个RNN中共享这三个变量。X是输入、Y为输出,S为记忆神经元,下标都为时间戳。我们很容易看出输出Yt与前一个记忆神经元和当前输入有关系。
image.png
其中的 f()是一个激活函数,一般用tanh激活函数。这个函数可以把连续函数离散到0~1的值。
仔细观察,看到Yt只与记忆体有关。因为这个输出可能是每个词的概率,所以这里一般使用sigmax激活函数(sigmax激活函数有个特性,输出的种类概率的和是1)
image.png

误差传递

BPTT算法跟BP神经网络是一个思路,就是先正向传递然后得到预测值与真实值计算误差然后进行反向传播进行调整!(细节不做赘述)这里要明确的是,RNN神经网络是共享三个参数变量(W,V,U)。而且误差跟时间 有关系。
image.png
简化一下就是这样的。其中E就是误差。
用E2做样例分析(使用平方损失函数)
image.png

再重复一次
W 是记忆体的权重。
U 是输入的权重。
V 是输出的权重。
那么求 输入部分的权重偏导。
image.png
这好像并不难,每次的loss跟输入有关系。

但是我们再看看对W求偏导,简直是个灾难。
image.png

这里面竟然有个S1 ,因为S1=f(WS0+UX1)这个公式得来的,S1还有W,根据链式法则还要对S1求导。这样看求E2的loss还好,但是要对E1000求导呢。那就。。
需要求出1000前面所有的偏W,这简直会爆炸的。。
所以,RNN在理论上说得通,在实际中效果肯定不是很理想的。

LSTM算法

LSTM模型

说明文中论述都来自https://colah.github.io/posts/2015-08-Understanding-LSTMs/
与RNN 类似,LSTM的模型为
image.png

其中A为记忆体 ,这里称为Cell(细胞)。放大一点可以看到内部结构。
image.png
这与电子电路中的电路板有点像,有点像门电路那种东西。所以也有地方称这是LSTM 是忘记门,其实这个描述很形象,LSTM其实就是每次传播的时候就会忘记一些没有用的东西。
还是拿考试做比方,不是学的每个知识点都要考,我们脑容量有限,可以忘掉一些知识从而学习到更多的知识来应付考试(应试教育都这样)。构成忘记门最重要的单元就是:
image.png
其中黄色的就是sigmoid激活函数,sigmoid会产生一个概率值s, 通过概率值确定留下多少。比如s=0.8 那么输出留下输入的0.8 。如果s=0就说这部分输入不要。如果是s=1代表十分重要,要全部保留。(X 就是乘法,+ 是加法)

LSTM传输过程

Step 1

浅显的理解就是根据当前的输入,和上一个时序的输出选择性忘记一点东西。例子就是,根据初一的期末考试和初二学习的,忘记一点初一的内容。
image.png
其中参数:
ht-1 就是上一次的输出。
xt 就是当前的输入
[ht-1,xt] 就是矩阵的合并。
bf 是偏置项
Wf 是权重项
ft 输出的概率值

Step 2

浅显的理解就是当前输入的信息什么重要,我们决定留下什么。例子就是,根据初一的期末考试和初二学习的,选择性的忘记一点初二的内容。
image.png
参数:
不用解释了吧。
其中it是一个概率值,Ct是一个矩阵。

Step 3

浅显的理解就是,把上一个记忆体中剩下的和新信息剩下的相加形成一个新的记忆体 就是初一的重点+初二的重点 就可以去参加初二的考试了。
image.png

Step 4

浅显的理解就是要根据当前的状态在记忆体中选择要输出的内容。 要考试了,应该从脑海中拿出什么呢,还是得看考试问题问什么吧。
image.png
其中的ht就是输出,同样的作为下一层的输入。

总结

反向传播比较麻烦,还没有弄清楚,这里给出一篇别人理解的博客。https://www.jianshu.com/p/4e285112b988。不过现在的tensorflow 已经帮忙弄好了,用不是问题了。这只是对LSTM浅显的理解。路还很长,加油。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值