NLP学习15_RNN、LSTM

RNN

CV中对图片的处理,我们可以把图片理解为一个静态数据
而比如股票、天气、语音、文本等,都是随时间在变化的数据,叫做时序数据,
要处理这些变化的数据,需要RNN这种可以处理时序数据的模型,
不同人说“你好”的时长也不一样,所以RNN也可以处理不同时长的数据
在这里插入图片描述
原始的RNN模型:存在梯度爆炸和消失问题,所以推出了LSTM
原理:每个时刻都有一个输入,每个输入都会得到一个中间的表示h,在第二个时刻的h表示会使用到第一个时刻的h
最后每一时刻输入都会产生预测y,并计算出损失
在这里插入图片描述
RNN和HMM区别
HMM中对于状态的表示是使用one-hot,是稀疏的表示,比如6维的向量只能表示6中不同的状态,
而在RNN中,状态的表示采样分布式表示,向量中的值都是学习得到的,可能6维向量就可以表示100中状态
在这里插入图片描述
在语言模型中,
比如有句子s,要通过语言模型来计算概率p(s),也就是计算句子单词的联合概率,联合概率又可以写成连乘概率的形式
也就是要通过前边词来预测接下来词
在这里插入图片描述
构建一个语言模型来预测句子接下来是什么单词
首先将单词的one-hot表示形式经过一个embedding部分转换成词向量的表示形式x,然后得到预测结果预测下一个单词
在这里插入图片描述
RNN是在不同时间输入不同的单词,所以在时间维度上,它是一个深度模型。
而在隐式层,如果我每个单词都是经过多层的处理,那么也是一个深度模型。
所以这是从两个方面去看RNN,都是深度模型,这与CNN是有区别的
在这里插入图片描述

RNN的梯度爆炸和梯度消失

RNN中反向传播是沿着时序方向的,BPTT:BP Through Time。
其实就是有最终计算出的损失值,要计算梯度并反向传播,比如计算组中的损失loss对h1的梯度,那么我要考虑到中间h2、h3、h4的梯度
通过一个链式法则的推导可以求得loss对h1的梯度
在这里插入图片描述
在计算梯度的时候,因为计算loss对h1的梯度是考虑中间项的梯度的,也就是中间梯度的一个连乘,
那么,如果中间很多项的范数是小于1,那整个的乘积就会非常小,导致到达h1的梯度就不存在了。h1 = 0.10.10,1*,
如果中间很多范数大于1,那整个的乘积会变得非常大,导致h1的梯度爆炸.h1 = 1.11.11.1*…
在这里插入图片描述

gradient clipping

解决梯度爆炸问题:当梯度超过某个阈值时,进行归一化的操作,乘以阈值除以范数
在这里插入图片描述

LSTM

LSTM和RNN流程没区别,只是在计算每个h时,LSTM内部加了三个控制开关:forget gate、input gate、output gate
通过这三个门的开关来选择性地保留之前文本的信息,这样可以解决梯度爆炸和消失的问题,可以处理更长的文本数据。
但是并不是说使用了这个模型就可以保证不出现梯度爆炸和消失问题。
在这里插入图片描述
应用场景
第一个没有使用时序的模型,所以不是RNN,没有时序信息。这种更适合于处理图像,对图像进行识别或者分类
第二个适用于看图说话,输入图像,然后输出文本
第三个多输入,一个输出,适用于情感分析
第四个适用于机器翻译
第五个 适合于NER
在这里插入图片描述

参考博客

在这里插入图片描述

Bi-directional LSTM

在LSTM基础上,增加了反向的计算过程,这样一个h的计算表示是综合上下文得到的

在这里插入图片描述
在下边这个实验中,可以看出使用双向的LSTM会学到文本中的更多关键信息,效果优于RNN、LSTM
在这里插入图片描述

GRU

提出时间晚于LSTM
比LSTM简单,效果差不多,计算过程少于LSTM,所以计算速度更快
包含:update gate、reset gate
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值