手机网站打开微信支付功能,做网站的边框素材,模仿网站制作,百度排行榜风云目录
1 LSTM 的简图
2 LSTM 的整体结构
2.1 结构图
2.2 流程图
3 举个例子
3.1 简单看看
3.2 代入 LSTM
4 Original Network v.s. LSTM
5 细看 LSTM 原视频#xff1a;李宏毅 2020#xff1a;Recurrent Neural Network (Part I) 1 LSTM 的简图
LSTM 实际…目录
1 LSTM 的简图
2 LSTM 的整体结构
2.1 结构图
2.2 流程图
3 举个例子
3.1 简单看看
3.2 代入 LSTM
4 Original Network v.s. LSTM
5 细看 LSTM 原视频李宏毅 2020Recurrent Neural Network (Part I) 1 LSTM 的简图
LSTM 实际上就是一种特殊的神经元只是长得比较复杂罢了。可以看出它就是在 memory 的基础上加了三个门输入门Input Gate、遗忘门Forget Gate和输出门Output Gate四者关系如下图所示 LSTM 三个门的作用
输入门Input Gate控制 LSTM 是否接收当前的输入遗忘门Forget Gate控制 LSTM 是否丢掉 memory 中的内容输出门Output Gate控制 LSTM 是否允许对处理结果进行输出
三个门的开或闭均由信号signal控制这些信号均来自网络的其他部分。
LSTM 的特点是
四个输入图中用红线表示输入均来自网络的其他部分一个输出图中用绿线表示输出也将送往网络的其他部分 如何理解 Long Short-term Memory 这个名称它的意思就是 Long 的 Short-term 的 Memory即虽然长但毕竟还是短期的记忆。在 RNN 中一旦计算出当前时刻隐层的输出那么 memory 中的内容会立马被冲掉或者说是被替换掉。而在 LSTM 中有了输入门Input Gate和遗忘门Forget Gate的控制memory 中的内容可能不变也可能只变一部分。因此在一定程度上LSTM 延长了对某些信息的记忆时间所以是 Long 的。 2 LSTM 的整体结构
这一节来看 LSTM 具体长啥样。
2.1 结构图
下图就是把 LSTM 中的内容细化了没有想象的那么复杂 图中的黑色虚线指明了输入门Input Gate、遗忘门Forget Gate和输出门Output Gate其实就是激活函数的输出。这里的激活函数用的是 Sigmod输出的值在 0 到 1 之间用于表示开门的程度。 门不是想象中的要么开要么闭而是可以半开半闭。 2.2 流程图
下图使用各种变量符号标注了 LSTM 的处理流程 可以看出LSTM 门控的方式就是 “乘法”multiply。乘的数字越接近于 1输入、记住、或输出的越多乘的数字越接近于 0输入、记住、或输出的越少。 遗忘门Forget Gate是反着来的越接近于 1 遗忘的越少越接近于 0 遗忘的越多。 3 举个例子
李宏毅老师先是直接让我们感受各个门的作用然后才是代入 LSTM 中进行说明。
3.1 简单看看
下图中x_1、x_2 和 x_3 是一个输入向量的不同维度并不是三个输入。这里没有让我们通过激活函数算各个门的值而是用底部的三句话指明了处理规则 三句话的含义
若 x_2 1则把 x_1 的值送入 memory 中与其内容相加若 x_2 -1则把 memory 中的内容清空即进行遗忘若 x_3 1则输出处理结果否则不输出
根据这三条规则我们便画出了上图。 3.2 代入 LSTM
假设这是我们训练好的 LSTM黑色箭头上的数字表示这条线权重 我们可以先来看看。对于左上角的那组权重如果 x_3 较大那么经 Sigmoid 处理的结果就会接近于 1表示输出门Output Gate打开。反之如果 x_3 较小那么经 Sigmoid 处理的结果就会接近于 0表示输出门Output Gate关闭。 由于画图过于痛苦所以这里只演示一组处理过程 为了简化例子李宏毅老师还是假设除 Sigmoid 以外的激活函数均为线性函数并且权重均为 1 。 4 Original Network v.s. LSTM
或许我们会认为 LSTM 这么复杂看起来和 FFN 没有什么关系啊事实上LSTM 只是把 FFN 中的神经元替换为了 LSTM 单元罢了并且 LSTM 单元也就是个特殊的神经元。
在 FFN 中一个神经元只要求 x_1 和 x_2 输入一次。而在 LSTM 中一个 LSTM 单元要求 x_1 和 x_2 输入四次 同样地x_1 和 x_2 是一个输入向量的不同维度而不是两个输入。此外图中相同颜色的连线只表示 x_1 和 x_2 使用的是同一组权重而不代表它们各自乘的权值相同。 5 细看 LSTM
t 时刻的输入 x_t 是一个输入向量而不是一个维度。x_t 与不同的权值矩阵相乘后得到 z_f、z_i、z、z_oz_f、z_i、z、z_o 也是一个向量而不是一个维度。最后分别把 z_f、z_i、z、z_o 的各个维度送入到各个 LSTM 单元的不同门处 c_{t-1} 也是一个向量而不是一个维度它是 t-1 时刻所有 memory 内容的集合。 有请神图 1 号登场 通过这张图可以看出从输入 x_t 到输出 y_t 都是用的矩阵运算。即每次处理的对象都是整个矩阵而不是挨个输入 x_t 的每个维度再挨个计算。 有请神图 2 号登场 这张图完美诠释了 LSTM 是怎么将不同时刻的输入关联起来的。 图中的红色虚线是指在高级的 LSTM 中memory 的内容 c_t 和隐层输出 h_t 也会被拉来和 x_{t1} 一起当输入。 写完这篇再也不想画图了bushi