deep learning-RNN

RNN

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
RNN是为了使网络具有记忆功能,为了实现这一目标,学习过程是把序列中的元素一个一个输入给网络进行学习,与DNN不同的是,RNN在进行学习时,把序列中的前一输入对应的隐藏层输出进行保存并作为本次输入的一部分与序列中本次输入的元素一起送入网络。
在上述例子中,输入一共有三个序列
在这里插入图片描述
每次读入序列中的一个元素,最终得到的三个序列为

在这里插入图片描述
以序列中的第一个元素为例,初始化memory中的值为0,输入第一个元素后,如果所有权重均为1,那么第一个隐藏层输出为[2,2],之后,一方面,把这个隐藏层的输出([2,2])保存在memory中,另一方面,隐藏层的输出在通过激活函数做为第一个输出。
在输入第二个元素时,memory中保存的序列([2,2])会与第二个元素相加,做为隐藏层的输入。
在这里插入图片描述
在这里插入图片描述
这样在以上两个例子中,显然但由于考虑了序列中前一个元素的输出,故此时的两个输入同为Taipei,但输出是不同的
在这里插入图片描述
上面两种网络的不同E-network是将隐藏层输出送给下一个network的隐藏层做为输入,而J-network是将网络的最终输出送给下一个network的隐藏层做为输入。

LSTM

在这里插入图片描述
由于RNN网络会一直积累之前的输出结果,故RNN网络存在梯度爆炸和梯度消失的风险。
LSTM可以解决梯度爆炸问题,这是由于LSTM会通过forgetgate控制memory cell,使其有一定概率遗忘掉之前的输出结果,通过output get 控制memory。
在这里插入图片描述
LSTM有input gate forget gate 和output gate 三个门
input signal z input gate zi forget gate zf output gate zo 会通过激活函数之后进行运算,(为了将四个输入映射到0~1之间,这里选择使用sigmod函数做为激活函数),通过激活函数之后的值记做g(z)f(zi)f(zo)f(zf)
输入门:输出为f(zi)*g(z),输入门作用,根据f(zi)的值决定输入信号是否可以进入网络,即如果f(zi)=0,则f(zi)*g(z)=0,输入信号不会进入网络,f(zi)≠1,则输入门的输出为f(zi)*g(z),f(zi) 与g(z)均为0~1之间的数
遗忘门:
c为memory中存储的初始化值 ,遗忘门的输出为
在这里插入图片描述
根据f(zf)的值决定遗忘门是否更新,也就是说f(zf)=0
在这里插入图片描述
会遗忘掉初始值c
如果f(zf)的值不为0,则遗忘门的输出变为
在这里插入图片描述
:在遗忘门有个时序问题,输入门的输出计算好之后,在写入memory之前,要首先判断遗忘门的情况,f(zf)=0 memory清0,f(zf)≠0,遗忘门输出f(zf)*c与输入门输出f(zi)*g(z)做加和运算之后存到memory里面去。
输出门:与输入门类似,决定输出结果是否会被输出(更新)
这样,在遗忘门中,过去存储的信息会被有概率得遗忘掉,最终会避免memory中累加的值越来越大,造成的梯度爆炸的问题。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
学习的目标函数,是最终属于某个slot和label的cross entropy
参数的学习,也是使用反向传播,BPTT
在这里插入图片描述
在这里插入图片描述
RNN的error surface 是高低不平的,根据上图,在使用梯度下降方法进行参数更新时会有几种情况:
1、在平坦的地方,梯度比较小,参数更新会比较慢,这时,会调整学习率,使学习的步进增加
2、在不断调整学习步进之后,学习率会变的比较大,由于RNN的 error surface是高低不平的,在学习过程中可能会跳过loss阶跃的部分,使得loss会突然增大。另外,在学习过程中,如果正好取在突变点处,这样会突然遇到一个很大的梯度,这时由于学习率也很大,其乘积也会变得更大,这样loss会急剧变化,整个参数学习的更新过程也会变得很差。
从这里可以看出RNN在进行梯度更新算法时,会遇到梯度爆炸和梯度消失两种可能的情况。
原作者通过限定梯度更新最大值的方法(clipping),如当gradient大于15,gradient就取15
在这里插入图片描述
从上图中可以看出,RNN中的w会被反复不断地应用,这样w不断累加就会出现梯度爆炸和梯度消失
LSTM可以解决梯度消失的问题
在这里插入图片描述
在训练LSTM时,大部分forget gate会被打开,即大部分memory不会被清洗掉。
在这里插入图片描述

Attention-based model

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一部分是working memory 和sensory memory沟通的部分
attention 机制每次只会关注目标的一个小部分,进行一个很短期的记忆
另外一部分是working memory 和long-term memory沟通的部分,attention机制是否会
第一部分 on seonor memory
machine translation
在这里插入图片描述
以上是没有attention 的 sequence to sequence model
使用LSTM读过整句话之后,最后一个绿色框可以代表整个句子的信息,在使用这个绿色框中的信息输出对应的翻译结果,这两个过程需要连在一起进行模型的训练
这样的模型存在一个问题,最后一个绿色框可以是否可以代表整个序列的信息?序列过长,信息会存在丢失的现象。如何进行改进呢?
可以使用attention based model

在这里插入图片描述
在这里插入图片描述
使用后向传播进行参数的学习
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值