【Deep Learning】LSTM(Long Short-Term Memory)及变体
来源:互联网 发布:类似于知乎的app 编辑:程序博客网 时间:2024/05/21 21:01
通过对RNN理解的基础上(具体可见:【Deep Learning】循环神经网络推导和实现),可以进一步了解LSTM(LongShort-Term Memory,其出现的原因是为了解决RNN对长依赖的句子上表现不好的情况。其本质是通过合理的激活一些信息,避免距离成为信息强度的决定性因素,目前LSTM除了原来的结构外,还衍生出了很多变体。
一、RNN与LSTM结构图
通过前一节我们知道RNN的结构图如下:
LSTM的一般结构:
可以观察到, LSTM和普通的RNN相比,多了几个门。在上图中,各个节点的具体说明如下所示:
二、设计思想
LSTM引入了一个门的概念,设计LSTM的目的就是要通过“门”来控制信息的传递,从而能够实现激活long-term的信息。其中一种简单的方式就是通过两个矩阵的点乘,即将两个大小完全一致的矩阵,对应位置相乘,那么如果存在一个矩阵的数值范围是[0,1],点乘我们就可以理解为0是抑制对信息不放行,1是激活对信息放行。cell信息的位置就是水平的那条线,如下图所示:
对于上图中的每一个x表示的就是点乘,我们可以将其视为LSTM中的一个门,所以门的存在是为了阻止/放过信息的。
三、门介绍
①遗忘门,其控制cell的信息传递的,而控制cell的信息可以通过上一轮隐藏层的输出 ht−1和这一轮的输入xt决定,从名字上可以知道这个一个遗忘门,决定信息是否被记住或者是遗忘掉,所以激活函数为sigmoid,保证输出值为[0,1],如下图:
②输入门,其功能是用来控制在输入信息中( ht−1,xt )有哪些信息可以加到cell中,可以看到通过输入信息通过sigmoid函数来设置遗忘门,以及输入信息通过tanh函数,最终它们进行点乘,达到可以保留相应信息的目的,如下图:
通过上面的操作,cell的信息更新就完成了,即把上面获取的信息通过下图的方式进行操作,如下图:
③输出门,到目前为止,我们已经得到了更新后的cell的信息,输出门是决定cell中n哪些信息可以得到输出,同样先让输入信息通过sigmoid函数来设置遗忘门,然后让cell通过tanh函数,最后进行点乘决定哪些信息可以输出,如下图:
至此,纯种的LSTM就完成了,可以发现真的不难,下面是一些LSTM的变体。
四、LSTM变体
①允许三个门都能看到cell的信息,即cell中的信息参与到每一个门的创建中,如下图:
②在信息传递的过程中对于cell信息遗忘和保持是相对的,即如果了遗忘一些信息,那么就相对的另外一部分信息,在逻辑上为:输入门 = 1 - 遗忘门,如下图:
③GRU(Gated RecurrentUnit),这个结构是将cell去掉了,使用 ht−1替代了cell的功能,即cell与输出ht-1是一样的,如下图:
参考:
①Understanding LSTM Networks
- 【Deep Learning】LSTM(Long Short-Term Memory)及变体
- Introducing deep learning and long-short term memory networks
- LSTM(Long Short Term Memory) 核心入门
- Long Short-Term Memory(LSTM)
- 时间递归神经网络LSTM(Long-Short Term Memory)
- LSTM (Short-Term Memory)
- Long-Short-Term-Memories(LSTM)
- 『RNN 监督序列标注』笔记-第四章 LSTM(Long Short-Term Memory)
- 有哪些LSTM(Long Short Term Memory)和RNN(Recurrent)网络的教程?
- Python写出LSTM-RNN(Long-Short Term Memory Recurrent Neural Networks )的代码
- LSTM(Long-Short Term Memory)与GRU(Gated Recurrent Unit )
- LSTM(Long Short Term Memory)和RNN(Recurrent)教程收集 (知乎)
- 理解长短期记忆(Long Short Term Memory, LSTM)模型(colah 原文翻译)
- 循环神经网络(RNN)之LSTM(Long Short Term Memory networks)
- 有哪些LSTM(Long Short Term Memory)和RNN(Recurrent)网络的教程?
- tree-structured Long Short-Term Memory networks
- Long short-term memory 论文小记
- 论文笔记:Long Short-Term Memory
- interface
- springMVC ajax返回List<Object>
- 【R语言 数据分析】多重共线性问题
- shell中 if条件的格式要求
- Android5.0新控件RecyclerView
- 【Deep Learning】LSTM(Long Short-Term Memory)及变体
- 技术博客那些事儿
- Linux rpm 命令
- MOS-01012 PROBLEM: R3ldctl -l returned with '2' which is not a defined as a success code
- ifdef、ifndef两条件编译以及if的用法
- 常见的linux服务命令
- 第一讲, HelloWorld基础语法
- 不用ajax的局部页面跳转实现方法(iframe)
- android 程序全局自动捕获异常 专制系统奔溃,异常退出无法找到原因的问题