LSTM 单元的理解

从RNN说起

所谓的RNN就是想要记住一些过去的信息,所以它具有环(loops)的形式,如下所示
上面的模块A 的输入为xt ,输出为ht  ,记忆体现在它将当前步的信息又送入下一步中,如果我们沿时间轴来看,RNN长这样
这一结构考虑了过去的信息,但是随着时间间隔的增大,RNN其实记不住太久之前发生的信息了
比如上图中的t+1 时刻的输出可能与t0,t1 时刻的输入相关,但是由于时间间隔太大,RNN无法为它们建立起连接。(这也叫做长距离依赖

LSTM它来了

LSTM的设计就是为了避免长距离依赖的问题,lstm的结构也是和上面RNN一样的链式结构,只是将模块A替换成了一个更加复杂的模块
乍一眼确实复杂,一步步解开就清楚了。
LSTM中的创新在于引入了cell这个状态,cell 的状态是一个向量,是有多个数字构成。
可以理解为这就像是长期记忆,如果你不对状态进行修改,它就会直接一直往后传递。但是记忆总会有所改变吧,所以需要增加一些修正记忆的模块,这里就是加入一些“门”的概念,门就是让一些信息能通过,一些信息被门给过滤了
比如说通过sigmoid层输出一个数值都在0到1之间的向量,将这个向量和cell状态进行向量的逐点相乘(这就是个信息过滤的操作),在lstm中有三个这样的“门”结构。
输入假设(仅为说明模型参数计算,输入为什么这样,可以参考下一篇解释。)
假设现有一个样本,Shape=(13,5),时间步是13,每个时间步的特征长度是5(比如一个句子分为13个词组成,每个词用维度为5的特征向量表示)。形象点,我把一个样本画了出来:
每个时间 步经过LSTM后,得到的中间隐向量是10维(意思是5->10维),13个时间步的数据进去得到的是(13*10)的数据.
每个时间步对应神经元个数(参数个数)一样.也就是算一个LSTM中神经元个数,算一个时间步中参与的神经元个数即可.下面将对LSTM每个计算部分进行神经元分析.

遗忘门

就像一个人的记忆有限,首先你需要遗忘掉一些信息,才能记住新的信息,所以遗忘门首先出现了
根据上一时刻的输出状态h t-1 和当前时刻的输入xt ,我们需要确定有多少长期记忆Ct-1 需要抹掉,这个遗忘的比率就是

图中公式的 是上一个状态的隐向量(已设定隐向量长度为10), 为当前状态的输入(长度为5),那么 的长度就是10+5=15了. 为该层的参数.
该层输出是中间隐向量的长度(10),经过 激活前后的长度不变.只需要考虑 里面的操作得到10维特征即可.
是(1,15)的向量,与 相乘得到(1,10)的向量,根据矩阵相乘规律,得到 是(15,10)的矩阵,得到(1,10)矩阵后,与该门层偏置相加,偏置也应该有相同的形状,即 是(1,10)的矩阵.
即:该层神经元为:

输入门

忘了点东西总要再补充点进去,因此输入门紧接其后
当前时刻接收到的信息可以表示为

但是一次性都记住太吃力了,所以也要有选择地记住,选择的比率就是

那么将选择记忆的比率乘以当前时刻接收到的信息就是本次要放进cell里的信息了。也就是有选择地保留一些过去的信息   ,然后有选择地记住一些当前的信息   ,即
上面这个式子就是记忆的遗忘和补充的过程了。
可以看到,这里公式和前面的一样的, 都是激活函数,不影响参数个数.
同理这过程的神经元个数是:
更新过程
公式中的四个值,均是前面计算得到的结果,因此该过程没有参数需要学习. 

输出门

记忆更新完后就到了输出的时候了
在这里我们同样不能直接把cell中所有记忆都输出,仍然是有选择输出,这个选择率的计算和上面一样的
经过选择后输出的记忆就是选择率乘以cell中的记忆了
一样的公式,神经元个数一样.即个数为:

LSTM小结

1、过程:
可以类比为人记忆的容量有限,每个时刻遗忘掉一些旧的知识,再输入(记住)一些新的知识,最后根据需要输出一些知识(就像考试一样有选择地输出)。
2、 上一次的状态 h(t-1)是怎么和下一次的输入 x(t) 结合(concat)起来的?
concat, 直白的说就是把 二者直接拼起来 ,比如 x是28位的向量,h(t-1)是128位的,那么拼起来就是156位的向量。
3、cell 权重共享。
三个绿色的大框,代表三个 cell 对吧,但是实际上,它只是代表了 一个 cell 在不同时序时候的状态 ,所有的数据只会通过一个 cell,然后不断更新它的权重。
2一层的 LSTM 的参数有多少个?
参数的数量是由 cell 的数量决定的,这里只有一个 cell,所以参数的数量就是这个 cell 里面用到的参数个数
把公式(1),(2),(3)的神经元加起来,就是该LSTM的神经元个数了.
其实,我们可以把这个问题一般化,不看这个例子,假设你一个时间步的特征长度是n,经过该LSTM得到的长度是m,这样就可以算出该LSTM层的神经元个数为:
加上输出的时候的激活函数的参数,假设是10个类的话,就是m*10的 W 参数和10个bias 参数
5、cell 和 ht的理解。
cell 最上面的一条线的状态即 s(t) 代表了 长时记忆 ,而下面的 h(t)则代表了 工作记忆或短时记忆。 长期状态由Tanh函数激活,然后通过输出门过滤后得到短期状态,而用来输入到全连接层计算模型输出的是短期状态。 h t 一方面往上传递去计算当前时刻的模型输出,另一方面顺时间传递去计算下一个隐状态h t-1。

LSTM的变种

  • Peephole LSTM:无论计算遗忘、输入、还是输入的选择率时都要考虑cell的状态
  • 耦合遗忘门和输入门:就是遗忘率和输入率总和为1
  • GRU: 遗忘和输入合并 为更新,c ell状态和隐藏状态合并
参考链接:
  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TigerZ*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值