最简单的循环神经网络RNN


本文是 李宏毅机器学习视频中循环神经网络部分的一点笔记。

1 Simple Recurrent Neural Network

1.1 Elman Network & Jordan Network

在这里插入图片描述
传说,Jordan Network的performance好一些,因为Elman Network存在memory里的隐含层不包含target的信息,不好控制;Jordan Network将output的值存在memory里,而这output的值包含target信息,所以存在network中的信息更清晰。
附一张Elman Network的例子:
在这里插入图片描述

1.2 Bidirectional RNN

在这里插入图片描述
双向的RNN,可以让RNN把前前后后都看了之后再输出output。例如,在自然语言处理中,双向RNN看到整句话后,再输出句子里的各单词含义。

Simple RNN 可以随时把值存入memory,也可以随时把值从memory中取出来。

2 Long Short-term Memory (LSTM)

2.1 LSTM Memory Cell

在这里插入图片描述
LSTM输入、输出、忘记时,需要相应gate打开。
一个LSTM的cell有4个input和1个output。input包含一个希望存入memory的信息,三个控制gate开关的输入。
具体计算流程如下:
在这里插入图片描述
上图中c是上一步LSTM cell的值,c’是这一步LSTM cell的值。forget gate关闭(为0)时,会遗忘;若forget gate打开(不为0)时,则前面的LSTM cell会被传下去。
请添加图片描述
上图例子中,蓝色为外界输入,x1、x2、x3为输入门、遗忘门、输出门,y为对应输出。
可以手动计算以下例子,注意即使output为0,LSTM cell的值也会更新。
在这里插入图片描述

2.2 LSTM Network

一般的Neural Network长这样:
在这里插入图片描述

把上图中的neurons替换为LSTM Cell,即为LSTM Network:
在这里插入图片描述

因为每个LSTM Cell都要4个不同的input才能有一个output,所以当neurons数目一样时,LSTM Network的参数量会是一般Neural Network的4倍

在这里插入图片描述

输入Xt,乘上4个不同的矩阵,进行线性变换,得到4个vectors Z,四个Z的维数与cell数目一致,分别操控各个cell的input。
在这里插入图片描述
这里,不是矩阵内积,而是元素对应相乘(element wise)。
真正的LSTM cell并不是只input x t x^{t} xt,而是会在每一个cell的input中同时考虑 c t − 1 、 h t − 1 、 x t c^{t-1}、h^{t-1}、x^{t} ct1ht1xt
在这里插入图片描述
LSTM is quite standard now.
Don’t worry if you cannot understand this. Keras can handle it. Keras supports “LSTM”, “GRU”, “SimpleRNN” layers

2.3 Why LSTM?

用于解决RNN梯度消失的问题。
RNN:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如上图,RNN中的memory与input相乘,替换掉先前的memory,导致 ω \omega ω的 gradient vanishing 与 gradient explode,不好设置learning rate。
在这里插入图片描述
LSTM 中memory与input相加,所以前期input的影响不会消失,即梯度不会消失,可以把learning rate设得小一些。
同时,要注意forget gate 需要比较大的bias,保证大部分时候gate打开,input能保留下来。

3 Gated Recurrent Unit (GRU)

LSTM有4个input,GRU只有3个input,参数更少,更鲁棒,overfitting情况更少。
具体而言,GRU将input gate与 forget gate联动起来,即input gate打开,forget gate就会关闭,也就是忘记以前的值,才能记下新的值。 简言之,旧的不去,新的不来

相关链接:

  1. 李宏毅机器学习(2020)视频-Bilibili
  2. 循环神经网络讲义-李宏毅
  3. 李宏毅课程主页
  4. 人人都能看懂的LSTM - 知乎
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值