🎨
Bible-DeepLearning
  • Introduction
  • 第6章 深度前馈网络
    • 6.1 例子:学习XOR
    • 6.2 基于梯度的学习
      • 6.2.1 代价函数
        • 6.2.1.1 使用最大似然学习条件分布
        • 6.2.1.2 学习条件统计量
      • 6.2.2 输出单元
        • 6.2.2.1 用于高斯输出分布的线性神单元
        • 6.2.2.2 用于Bernoulli输出分布的sigmoid单元
        • 6.2.2.3 用于Multinoulli输出分布的softmax单元
    • 6.3 隐藏单元
      • 6.3.1 ReLU及其扩展
      • 6.3.2 logistic sigmoid与双曲正切函数
      • 6.3.3 其他隐藏单元
      • 李宏毅补充 SELU
    • 6.4 架构设计
    • 6.5 反向传播和其他的微分算法
      • 6.5.1 计算图
      • 6.5.2 微积分中的链式法则
      • 6.5.3 递归地使用链式法则来实现反向传播
      • 6.5.4 全连接MLP中的反向传播计算
      • 6.5.5 符号到符号的导数
      • 6.5.6 一般化的反向传播
      • 6.5.7 实例:用于MLP 训练的反向传播
      • 6.5.8 复杂化
  • 第7章 深度学习中的正则化
    • 7.1 参数范数惩罚
      • 7.1.1 L2参数正则化
      • 7.1.2 L1参数正则化
    • 7.2 作为约束的范数惩罚
    • 7.3 正则化和欠约束问题
    • 7.4 数据集增强
    • 7.5 噪声鲁棒性
    • 7.6 半监督学习
    • 7.7 多任务学习
    • 7.8 提前终止
    • 7.9 参数绑定和参数共享
    • 7.10 稀疏表示
    • 7.11 Bagging 和其他集成方法
    • 7.12 Dropout
    • 7.13 对抗训练
    • 7.14 切面距离、正切传播和流形正切分类器
    • Ag补充 一些能用于提升比赛成绩的方法
  • 第8章 深度模型中的优化
    • 8.1 学习和纯优化有什么不同
      • 8.1.1 经验风险最小化
      • 8.1.2 代理损失函数和提前终止
      • 8.1.3 批量算法和小批量算法
    • 8.2 神经网络优化中的挑战
      • 8.2.1 病态
      • 8.2.2 局部极小值
      • 8.2.3 8.2.3 高原、鞍点和其他平坦区域
      • 8.2.4 悬崖和梯度爆炸
      • 8.2.5 长期依赖
      • 8.2.6 非精确梯度
    • 8.3 基本算法
      • 8.3.1 随机梯度下降
      • 8.3.2 动量
      • 8.3.3 Nesterov 动量
    • 8.4 参数初始化策略
    • 8.5 自适应学习率算法
      • 8.5.1 AdaGrad
      • 8.5.2 RMSProp
      • 8.5.3 Adam
      • 8.5.4 选择正确的优化算法
    • 8.6 二阶近似方法
      • 8.6.1 牛顿法
      • 8.6.2 共轭梯度
      • 8.6.3 BFGS
    • 8.7 优化策略和元算法
      • 8.7.1 批标准化
      • 8.7.2 坐标下降
      • 8.7.3 Polyak 平均
      • 8.7.4 监督预训练
      • 8.7.5 设计有助于优化的模型
  • 第9章 卷积网络
    • 9.1 卷积运算
    • 9.2 动机
    • 9.3 池化
    • 9.4 卷积与池化作为一种无限强的先验
    • 9.5 基本卷积函数的变体
    • 9.6 结构化输出
    • 9.7 数据类型
  • 第10章 序列建模:循环和递归网络
    • 10.1 展开计算图
    • 10.2 循环神经网络
      • 10.2.1 导师驱动过程和输出循环网络
      • 10.2.2 计算循环神经网络的梯度
      • 10.2.3 作为有向图模型的循环网络
      • 10.2.4 基于上下文的RNN序列建模
    • 10.3 双向RNN
    • 10.4 基于编码 - 解码的序列到序列架构
    • 10.5 深度循环网络
    • 10.6 递归神经网络
    • 10.7 长期依赖的挑战
    • 10.9 渗漏单元和其他多时间尺度的策略
    • 10.10 长短期记忆和其他门控RNN
      • 10.10.1 LSTM
      • 10.10.2 其他门控RNN
    • 10.11 优化长期依赖
      • 10.11.1 梯度截断
      • 10.11.2 引导信息流的正则化
    • 10.12 外显记忆
  • 第11章 实践方法论
    • 11.1 性能度量
    • 11.2 默认的基准模型
    • 11.3 决定是否收集更多数据
    • 11.4 选择超参数
      • 11.4.1 手动选择超参数
      • 11.4.3 网络搜索
      • 11.4.4 随机搜索
    • 11.5 调试策略
Powered by GitBook
On this page
  • LSTM
  • Grid LSTM

Was this helpful?

  1. 第10章 序列建模:循环和递归网络
  2. 10.10 长短期记忆和其他门控RNN

10.10.1 LSTM

Previous10.10 长短期记忆和其他门控RNNNext10.10.2 其他门控RNN

Last updated 4 years ago

Was this helpful?

LSTM

[success] 问:长短期记忆单元到底是长期还是短期? 答:本质上的短期记忆。因为相比于普通RNN的memory(没有记忆功能,t时刻的值直接覆盖t-1时刻的memory)来说,它的记忆是长的。 long是short-term memory的形式词。

引入自循环的巧妙构思,以产生梯度长时间持续流动的路径是初始长短期记忆模型的核心贡献{cite?}。

[warning] 这句话读不通,把“以”改成“通过”貌似通顺一点。 [?]如何让梯度长时间持续流动?

其中一个关键扩展是使自循环的权重视上下文而定,而不是固定的{cite?}。

[success] LSTM包含两种循环,分别是外环和内环(下文会介绍)。 外环是h->h,是RNN本来就有的概念。 内环是s->s,内环和s都是LSTM引入的概念。 “自循环的权重”是指s->s所用到的参数。 “上下文”是指RNN的输入。 “自循环的权重视上下文而定”是指s->s的参数不是固定的,而是x有关,这点从s的公式中也可以看出。 图中Memory Cell和Forget Gate之间的循环就是内环。

门控此自循环(由另一个隐藏单元控制)的权重,累积的时间尺度可以动态地改变。

[success] 问:为什么门控可以改动时间尺度? 答:门控可以决定(1)当前输入保留多少(2)历史信息保留多少 其作用类似10.9.2中的a,只是机制更加复杂。 调整(1)、(2)就是改变时间粒度的一个表现。 当前信息保留得多,相当于时间粒度调细。 历史信息保留得多,相当于时间粒度调粗。

在这种情况下,即使是具有固定参数的LSTM,累积的时间尺度也可以因输入序列而改变,因为时间常数是模型本身的输出。

[warning] 固定参数的LSTM? 时间常数是模型本身的输出?

LSTM已经在许多应用中取得重大成功,如无约束手写识别{cite?}、语音识别{cite?}、手写生成{cite?}、机器翻译{cite?}、为图像生成标题{cite?}和解析{cite?}。

[info] 图10.16 LSTM循环网络"细胞"的框图。 LSTM循环网络"细胞"的框图。 细胞彼此循环连接,代替一般循环网络中普通的隐藏单元。 这里使用常规的人工神经元计算输入特征。 如果sigmoid输入门允许,它的值可以累加到状态。 状态单元具有线性自循环,其权重由遗忘门控制。 细胞的输出可以被输出门关闭。 所有门控单元都具有sigmoid非线性,而输入单元可具有任意的压缩非线性。 状态单元也可以用作门控单元的额外输入。 黑色方块表示单个时间步的延迟。

LSTM块如图10.16所示。 在浅循环网络的架构下,相应的前向传播公式如下。 更深的架构也被成功应用{cite?}。 LSTM循环网络除了外部的RNN循环外,还具有内部的"LSTM细胞"循环(自环),因此LSTM不是简单地向输入和循环单元的仿射变换之后施加一个逐元素的非线性。 与普通的循环网络类似,每个单元有相同的输入和输出,但也有更多的参数和控制信息流动的门控单元系统。 最重要的组成部分是状态单元$s_i^{(t)}$,与前一节讨论的渗漏单元有类似的线性自环。 然而,此处自环的权重(或相关联的时间常数)由遗忘门$f_i^{(t)}$控制(时刻$t$和细胞$i$),由sigmoid单元将权重设置为0和1之间的值:

[success] 公式中的符号 图10.16下方有4个非线性变换。每个变换对应一组参数。 LSTM共需要4组参数,每一个都包含b、U、W.这意味着它需要的参数是普通unit的4倍。 公式中右上角有标记的是各种门的参数,没有标记的是输入的参数。 公式中,$x_j^{(t)}$代表当前信息,$h_j^{(t-1)}$代表历史信息。 各种门的作用

Gate Name

作用

1

0

Input Gate

输入是否能写入memory

能写入

不能写入

Output Gate

是否将memory cell中的内容输入

能输出

不能输出

Forget Gate

是否保留当前memroy cell中的内容

保留

不保留

但Gate的值其实不是非0即1,而是(0,1)的值,由sigmoid函数获得,表示打开程度。 所有Gate的值都是network自己学到的,激活函数为sigmoid

其中$x^{(t)}$是当前输入向量,$h^{t}$是当前隐藏层向量,$h^{t}$包含所有LSTM细胞的输出。 $b^f, U^f, W^f$分别是遗忘门的偏置、输入权重和循环权重。 因此LSTM细胞内部状态以如下方式更新,其中有一个条件的自环权重$f_i^{(t)}$:

[success] s = 上一次的s 遗忘门 + 输入 输入门 [?] 为什么输入也要经过sigmoid变换?

其中$b, U, W$分别是LSTM细胞中的偏置、输入权重和循环权重。 \textbf{外部输入门}(external input gate)单元$g_i^{(t)}$以类似遗忘门(使用sigmoid获得一个0和1之间的值)的方式更新,但有自身的参数:

LSTM细胞的输出$h_i^{(t)}$也可以由\textbf{输出门}(output gate)$q_i^{(t)}$关闭(使用sigmoid单元作为门控):

[success] 输出 = s * 输入门

其中$b^o, U^o, W^o$分别是输出门的偏置、输入权重和循环权重。 在某些变体中,可以选择使用细胞状态$s_i^{(t)}$作为额外的输入(及其权重),输入到第$i$个单元的三个门,如\fig?所示。 这将需要三个额外的参数。

LSTM网络比简单的循环架构更易于学习长期依赖,先是用于测试长期依赖学习能力的人工数据集{cite?},然后是在具有挑战性的序列处理任务上获得最先进的表现{cite?}。 LSTM的变体和替代也已经被研究和使用,这将在下文进行讨论。

Grid LSTM

以上是2D LSTM 还可以有3D LSTM,用于影像生成。

fi(t)=σ(bif+∑jUi,jfxj(t)+∑jWi,jfhj(t−1)),\begin{aligned} f_i^{(t)} = \sigma \Big( b_i^f + \sum_j U_{i,j}^f x_j^{(t)} + \sum_j W_{i,j}^f h_j^{(t-1)} \Big), \end{aligned}fi(t)​=σ(bif​+j∑​Ui,jf​xj(t)​+j∑​Wi,jf​hj(t−1)​),​
si(t)=fi(t)si(t−1)+gi(t)σ(bi+∑jUi,jxj(t)+∑jWi,jhj(t−1)),\begin{aligned} s_i^{(t)} = f_i^{(t)} s_i^{(t-1)} + g_i^{(t)} \sigma \Big( b_i + \sum_j U_{i,j} x_j^{(t)} + \sum_j W_{i,j} h_j^{(t-1)} \Big), \end{aligned}si(t)​=fi(t)​si(t−1)​+gi(t)​σ(bi​+j∑​Ui,j​xj(t)​+j∑​Wi,j​hj(t−1)​),​
gi(t)=σ(big+∑jUi,jgxj(t)+∑jWi,jghj(t−1)).\begin{aligned} g_i^{(t)} = \sigma \Big( b_i^g + \sum_j U_{i,j}^g x_j^{(t)} + \sum_j W_{i,j}^g h_j^{(t-1)} \Big). \end{aligned}gi(t)​=σ(big​+j∑​Ui,jg​xj(t)​+j∑​Wi,jg​hj(t−1)​).​
hi(t)=tanh(si(t))qi(t),qi(t)=σ(bio+∑jUi,joxj(t)+∑jWi,johj(t−1)),\begin{aligned} h_i^{(t)} &= \text{tanh}\big( s_i^{(t)} \big) q_i^{(t)}, \\ q_i^{(t)} &= \sigma \Big( b_i^o + \sum_j U_{i,j}^o x_j^{(t)} + \sum_j W_{i,j}^o h_j^{(t-1)} \Big), \end{aligned}hi(t)​qi(t)​​=tanh(si(t)​)qi(t)​,=σ(bio​+j∑​Ui,jo​xj(t)​+j∑​Wi,jo​hj(t−1)​),​

[success] t时刻的LSTM的计算过程 相邻两个时刻的LSTM联结到一起,图上的红线连接可以没有 深度的LSTM

普通LSTM只在时间方向上有Gate。 Grid LSTM在layer方向和时间方向都有Gate。