【王树森】RNN模型与NLP应用(4/9):LSTM模型(个人向笔记)

前言

LSTM是对Simple RNN的改进,可以避免梯度消失的问题,能够有更长的记忆力。


LSTM

在这里插入图片描述

1. LSTM:Conveyor Belt

过去的信息 C t − 1 C_{t-1} Ct1 通过一个传输带直接输送到下一个状态 C t C_t Ct,不会发生太大的变化,由此来避免梯度消失的问题。
在这里插入图片描述

2. LSTM:Forget Gate

  • 上一次的特征向量 h t − 1 h_{t-1} ht1 和 本次输入的向量 x t x_t xt 经过与 W f W_f Wf 的变换后输入sigmoid函数进行激活(输出在0到1)得到 f t f_t ft f t f_t ft 即为遗忘门的向量。其中 W t W_t Wt 是需要被训练的参数
    在这里插入图片描述
  • 遗忘门向量再与上一个 c t − 1 c_{t-1} ct1 进行点乘,其中遗忘门向量为0表示彻底遗忘,遗忘门向量为1则为完全保留
    在这里插入图片描述

3. LSTM:Input Gate

  • i t : i_t: it i t i_t it 的计算方法和 f t f_t ft 一样,但是参数矩阵 W i W_i Wi 不一样,这个参数矩阵也是需要被训练的, i t i_t it 决定了下面的 C t ~ \tilde{C_t} Ct~ 有多少会被作用到传送带
    在这里插入图片描述
  • c t ~ : \tilde{c_t}: ct~ 把上面的激活函数换成了 tanh,输出范围变为 [ − 1 , 1 ] [-1,1] [1,1] ,其中 W c W_c Wc 是需要被训练的矩阵, c t ~ \tilde{c_t} ct~ 是在和 i t i_t it 点乘后加到传送带的向量
    在这里插入图片描述

4. LSTM:Update the Conveyor Belt

将上面算出的三个向量都用来更新 c t c_t ct
在这里插入图片描述

5. LSTM:Output Gate

  • o t o_t ot:决定 c t c_{t} ct 有多少作用到 h t h_t ht
    在这里插入图片描述

6. LSTM: Update State

c t c_t ct 丢进双曲正切函数进行激活,将元素的数值压到 [ − 1 , 1 ] [-1,1] [1,1],将激活过的数值与 o t o_t ot 点乘得到 h t h_t ht
这里有两份 h t h_t ht ,一份传到了下一步,另一份作为输出
在这里插入图片描述

7. LSTM:Number of Parameters

一共有4个参数据矩阵,其中参数矩阵的计算方法和上节课 Simple RNN 一样。

  • 行数:状态向量 h 的维度
  • 列数:状态向量 h 的维度 + 输入 x 的维度
  • 总参数:4 * (状态向量 h 的维度 + 输入 x 的维度)* 状态向量 h 的维度
    在这里插入图片描述

LSTM for IMDB Review

代码与上节课的 Simple RNN 几乎完全一致,只需要把 RNN 的模型改成 LSTM即可:
在这里插入图片描述
结构和参数量如下:
在这里插入图片描述
模型的效果:比 Simple RNN 有提升
在这里插入图片描述
使用Dropout 并不能提升准确率,为什么?

  • 虽然过拟合在LSTM中存在,但是LSTM只有八千多个参数
  • 而Embedding层有32W个参数,固在这里对LSTM用Dropout没啥用,应该对Embedding层用Dropout
  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值