Driven to discover
  • 目录
  • 简介
  • 数学基础
    • 数学基础
      • 线性代数
      • 概率统计
        • 概率基础
        • 连续概率
        • 概率分布
        • 大数与中心极限
      • 时间序列
      • 信息理论
      • 参数估计
      • 优化降梯
        • 极大、极小和鞍点
        • 泰勒及Jacobian、Hessian
        • 连续可微
          • 无约束优化
          • 有约束优化
        • 非连续可微
      • 备查附录
  • 数据挖掘
    • 数据挖掘
      • 数据预分析
      • 数据预处理
        • 数据采样
        • 数据降维
        • 特征选择
      • 模式挖掘
        • 频繁项集
        • 多样项集
        • 基于约束的频繁项集
        • 高维及庞大项集
        • 序列模式
        • 图模式
      • 聚类分析
        • 划分聚类
        • 层次聚类
        • 密度/网格聚类
      • 文本挖掘
        • 短语挖掘与主题模型
        • 实体识别与类型标记
  • 机器学习
    • 机器学习
      • 模型评估与选择
      • 线性模型
      • 决策树模型
      • 支持向量机
      • 贝叶斯分类器
      • 集成学习
        • Bagging
        • Boosting
          • AdaBoost
          • GBDT
          • XGBoost
          • LightGBM
        • 结合策略
      • 概率图模型
        • 贝叶斯网络
        • 隐马尔可夫
        • 条件随机场
  • 网络图模型
    • 网络图模型
      • 大规模图处理
        • 社区检测与搜索
        • 中心度分析
        • 网络形成模型
        • 异构信息网络
      • 网络映射
        • 结构维持的网络映射
        • 性质维持的网络映射
        • 动态网络映射
      • Graph Neural Network
  • 深度学习
    • 深度学习
      • 深度前馈网络
        • 非线性的学习
        • 基于梯度的学习
        • 激活函数
        • 架构设计
        • 前向传播
        • 反向传播
      • 深度学习正则化
        • 参数范数惩罚
        • 作为约束的范数惩罚
        • 正则化和欠约束问题
        • 数据集增强
        • 噪声鲁棒性
        • 半监督学习
        • 多任务学习
        • 提前终止
        • 参数绑定和共享
        • 稀疏表示
        • Bagging和其他集成方法
        • Dropout
        • 对抗训练
        • 切面距离、正切传播和流形正切分类器
      • 深度学习优化
        • 学习和纯优化异同
        • 神经网络优化中的挑战
        • 优化算法
        • 参数初始化策略
        • 优化策略和元算法
      • 卷积网络
        • 卷积运算
        • 卷积动机
        • 池化
      • 循环和递归网络
        • 展开计算图
        • 循环神经网络
        • 长短期记忆
        • 注意力机制
      • 生成对抗网络
      • 多任务学习
      • 技术分析
        • Attention
        • Normalization
  • 增强学习
    • 增强学习
      • 增强学习的数学表达形式
      • 求解增强学习问题
        • 已知环境模型的问题
        • 未知环境模型的问题
  • 计算机视觉
    • 计算机视觉
      • 图像分类
        • LeNet-5
        • AlexNet
        • VGGNet
        • GoogLeNet
        • ResNet
        • DenseNet
      • 目标检测
        • 相关研究
          • 选择性搜索
          • OverFeat
        • 基于区域提名的方法
          • R-CNN
          • SPP-net
          • Fast R-CNN
          • Faster R-CNN
          • R-FCN
        • 端到端的方法
          • YOLO
          • SSD
      • 语义分割
        • 全卷积网络
          • FCN
          • DeconvNet
          • SegNet
          • DilatedConvNet
        • CRF/MRF的使用
          • DeepLab
          • CRFasRNN
          • DPN
        • 实例分割
          • Mask R-CNN
      • 图像检索的深度哈希编码
        • 传统哈希编码方法
        • CNNH
        • DSH
      • 光学字符识别
        • CTC解码
          • 前向后向
          • 目标函数
          • 基本原理
      • 人脸识别
      • 三维重建
  • 自然语言处理
    • 自然语言处理
      • 中文分词技术
      • 词性标注
        • 传统词性标注模型
        • 基于神经网络的词性标注模型
        • 基于Bi-LSTM的词性标注模型
      • 命名实体识别
      • 关键词提取
        • 词频与排序
        • 主题模型
      • 句法分析
        • 基于PCFG的句法分析
        • 基于最大间隔马尔可夫网络的句法分析
        • 基于条件随机场的句法分析
        • 基于移进-归约的句法分析
      • 文本向量化
        • Continuous Bag-of-Word
        • Skip-Gram
        • word2vec(Hierarchical Softmax与Negative Sampling)
        • GloVe
        • fastText
        • Bert
      • 情感分析
        • 文档维度情感分析
        • 句子维度情感分析
        • 方面维度情感分析
        • 其他情感分析任务
      • 机器翻译
        • 神经网络机器翻译基本模型
        • 基于Attention的神经网络机器翻译
        • 基于卷积的机器翻译
  • 搜索推荐广告
    • 搜索推荐广告
      • 搜索
        • 召回
        • 排序
          • 传统匹配模型
          • 深度学习匹配模型
            • Representation Learning
              • DNN-based
              • CNN-based
              • RNN-based
            • Matching Function Learning
              • Matching with word-level learning methods
              • Matching with attention model
            • Matching function learning&Representation learning
            • Query-Doc Relevance matching
              • Based on global distribution of matching strengths
              • Based on local context of matched terms
        • 重排
      • 推荐
        • 召回
        • 排序
          • 传统匹配模型
            • 协同过滤
            • 基于特征
          • 深度学习匹配模型
            • Representation learning
              • 协同过滤
              • 基于特征
            • Matching function learning
              • 协同过滤
              • 基于特征
        • 重排
      • 广告
        • 行业知识
        • 核心技术
          • 发展趋势
          • CTR/CVR
            • 浅层模型
            • 深度模型
          • 智能定向
          • 技术难点
        • 相关技术
  • 计算机基础
    • 计算机基础
      • 数据结构
        • 排序算法
      • 操作系统
      • 计算机网络
      • 计算机组成原理
      • python
        • pandas
      • Bash
      • Spark
      • SQL
      • Excel
  • 经验总结
    • 经验总结
      • 广告应用
        • 人群定向
        • 召回通路
      • 时序预测
        • 统计时序
        • 机器学习
        • 深度学习
      • 图谱探索
        • 标签传播
        • 图谱&网络
      • 策略评估
        • 激励策略
        • 均衡策略
Powered by GitBook
On this page
  • RNN长期记忆的依赖问题
  • LSTM网络
  • LSTM的核心思想
  • LSTM整体流程
  • 步骤一:遗忘
  • 步骤二:输入
  • 步骤三:更新
  • 步骤四:输出
  • BiLSTM
  • 具体例子
  • Source
  1. 深度学习
  2. 深度学习
  3. 循环和递归网络

长短期记忆

Previous循环神经网络Next注意力机制

Last updated 6 years ago

RNN长期记忆的依赖问题

RNN的一个特点就是可以结合之前的信息解决当前的任务,比如利用视频前几帧来帮助理解视频当前帧的内容。有时,我们只需要关注近邻的信息就可以解决当前任务,比如我们预测“云彩飘在天”这句话最后一个词,我们很容易得到“天”。这种情况下,相关信息与当前任务距离很小,RNN完全能利用之前信息解决问题

然而,有很多情况是需要更多地信息才能解决任务。比如我们还是预测最后一个词,但是这次是一大段话“我成长在法国。.... 我能说一口流利的法语”。近邻相关信息确定最后这个词要给一种语言,然而需要这一段的第一句话,一开头的“法国”作为有效信息才能预测出“法语”。这个距离间隔就很大了。很不幸的是,随着间隔距离增大,RNN有时不能学到那些关联的有效信息。

LSTM网络

长短期记忆网络(Long Short Term Memory networks(LSTMs))是一种特殊的RNN,旨在避免长期记忆的依赖问题。所有循环神经网络都具有神经网络重复模块链的形式。在标准RNNs中,这个重复模块有很简单的结构,比如tanh层,如下图。

LSTMs也有这样的链式结构,但是重复模块也些许区别。不同于标准RNN的一层(比如上例tanh),LSTM的更新模块具有4个不同的层相互作用,如下图。

在上图中,每一行都携带一个完整的向量,从一个节点的输出到其他节点的输入。粉色圆圈表示逐点运算,如矢量加法,而黄色框表示神经网络层。行合并表示连接,而行分叉表示其内容被复制,副本将转移到不同的位置。

LSTM的核心思想

从上一部分的图中可以看出,在每个序列索引位置 ttt 时刻向前传播的除了和RNN一样的隐藏状态 h(t)h(t)h(t) ,还多了另一个隐藏状态,如下图中上面的长横线。这个隐藏状态我们一般称为细胞状态(Cell State),是LSTM的关键。细胞状态有点像传送带。它直接沿着整个链运行,只有一些微小的线性相互作用。信息很容易沿着它不变地流动。

LSTM能够移除或添加信息到细胞状态,由称为门(Gates)的结构进行调节。门会选择性的让信息穿过。它们是由sigmoid神经网络层和逐点乘法运算组成。sigmoid层输出 000 到 111 之间的数字,描述每个组件应该通过多少。值为 000 意味着“不让任何东西通过”,而值为 111 则意味着“让一切都通过!”

LSTM在在每个序列索引位置 ttt 的门一般包括遗忘门,输入门和输出门三种来保护和控制细胞状态。

LSTM整体流程

步骤一:遗忘

LSTM的第一步是确定我们将从细胞状态中丢弃的信息。这个决定是由称为“遗忘门层”的Sigmoid层决定的。这里的 σ\sigmaσ 是指Sigmoid函数,对于状态 Ct−1C_{t-1}Ct−1​ 矩阵当中每个输入的值,都会有对应的一个输出的值,输出的值在 [0,1][0,1][0,1] 之间,相当于是决定了遗忘多少部分。如果输出值为 111 ,说明全部保留,不删除原本的记忆,如果是 000 ,说明状态 Ct−1C_{t-1}Ct−1​ 矩阵对应的这个值全部删除。

步骤二:输入

下一步是确定我们将在细胞状态中存储哪些新信息。这里有两部分同时进行:第一部分使用了sigmoid激活函数,输出为 iti_tit​ ,决定哪些值我们将进行更新;第二部分使用了tanh函数创建新候选值的向量 C~t\tilde{C}_tC~t​ , 此向量可被加至状态。下一步,我们结合这两者给状态来创建一个更新。

步骤三:更新

现在更新旧细胞状态 Ct−1C_{t-1}Ct−1​ 至 CtC_tCt​ :我们将旧状态乘以 ftf_tft​ ,忘记我们之前决定忘记的事情。然后我们添加 it∗C~ti_t*\tilde{C}_tit​∗C~t​ 。这是新的候选值,根据我们决定更新每个状态的值来缩放。

步骤四:输出

最后,我们需要决定我们要输出的内容。此输出将基于我们的细胞状态,但将是过滤版本。首先,我们运行一个sigmoid来决定细胞状态的哪些部分会被输出。然后,我们将细胞状态代入tanh(将值转化到介于-1和1之间)并将其乘以sigmoid门的输出,以便我们只输出我们决定的部分。

BiLSTM

双向LSTM(BiLSTM)和双向RNN所述同理,有些时候预测可能需要由前面若干输入和后面若干输入共同决定,这样会更加准确。因此提出了双向循环神经网络,网络结构如下图。

可以看到Forward层和Backward层共同连接着输出层,其中包含了 666 个共享权值 W1,W2,W3,W4,W5,W6W_1,W_2,W_3,W_4,W_5,W_6W1​,W2​,W3​,W4​,W5​,W6​ 。

在Forward层从 111 时刻到 ttt 时刻正向计算一遍,得到并保存每个时刻向前隐含层的输出。在Backward层沿着时刻 ttt 到时刻 111 反向计算一遍,得到并保存每个时刻向后隐含层的输出。最后在每个时刻结合Forward层和Backward层的相应时刻输出的结果得到最终的输出,用数学表达式如下:

具体例子

前向的LSTM与后向的LSTM结合成BiLSTM。比如,我们对“我爱中国”这句话进行编码,模型下图所示

前向的LSTM依次输入“我”,“爱”,“中国”得到三个向量 {hL0,hL1,hL2}\{h_{L0},h_{L1},h_{L2}\}{hL0​,hL1​,hL2​} 。后向的LSTM依次输入“中国”,“爱”,“我”得到三个向量 {hR0,hR1,hR2}\{h_{R0},h_{R1},h_{R2}\}{hR0​,hR1​,hR2​} 。最后将前向和后向的隐向量进行拼接得到 {[hL0,hR2],[hL1,hR1],[hL2,hR0]}\{[h_{L0},h_{R2}],[h_{L1},h_{R1}],[h_{L2},h_{R0}]\}{[hL0​,hR2​],[hL1​,hR1​],[hL2​,hR0​]} ,即 {h0,h1,h2}\{h_0,h_1,h_2\}{h0​,h1​,h2​} 。

对于情感分类任务来说,我们采用的句子的表示往往是 [hL2,hR2][h_{L2},h_{R2}][hL2​,hR2​] 。因为其包含了前向与后向的所有信息,如下图所示。

Source

理论上,RNN完全能解决这个长期记忆的依赖问题,只需要设置合理的参数就可以。然而实际中,很困难,具体原因可见这两篇paper: and 。

Hochreiter (1991) [German]
Bengio, et al. (1994)
Understanding LSTM Networks -- colah's blog
深度学习(六):LSTM模型与前向反向传播算法_anshuai_aw1的博客-CSDN博客_lstm反向传播算法
Logo
使用Keras进行深度学习:(六)LSTM和双向LSTM讲解及实践TensorFlowNews | 磐创AI
Logo
BiLSTM介绍及代码实现机器之心
Logo
The repeating module in a standard RNN contains a single layer.
The repeating module in an LSTM contains four interacting layers.