对于RNN(循环神经网络)的课堂笔记总结

这次的文章对RNN做一个详细的总结,文章里的插图来源于视频:
https://www.bilibili.com/video/av9770302?from=search&seid=11028515671612362426

首先看下面两句话,里面都有Taipei这个地名,可是从语用的角度来说,意思大不相同,一个是目的地,一个是出发地。所以这就是为什么我们希望模型对Taipei前面的词有一个记忆。
这里写图片描述

RNN的网络图具体用图像来表示如下:
每一个词输入后得到的隐藏层a都会被当作下一次的输入;每一次循环的参数是一样的(用相同的颜色表示)。
这里写图片描述

上面所说的是把隐藏层a都会被当作下一次的输入,另外也可以把上一次的输出层当作下一次的输出:
这里写图片描述

除此之外,还有bi-RNN,也就是说对词周围的两个词都有记忆:
也就是训练两个RNN,结合两个输出作为最后的输出。
这里写图片描述

下面来看一看LSTM:
这是一个比RNN更加复杂的结构,设置了三个门,输出门,输入门以及遗忘门,每个门都有signal control。所以LSTM网络有4个输入,1个输出。
这里写图片描述

这里写图片描述

下面用实际的数据对以上流程作一简单的计算:
假设这里的g, h都是linear function,f 为sigmoid function。
这里写图片描述

但事实上每个输入都是不一样的,由c,h,x共同变化而得:
这里写图片描述
这里写图片描述

在实验中,人们发现RNN训练时loss上下浮动很大:
因为gradient descent有时会突然很大,所以会导致参数的变化突然很大。原作者用了一个小技巧:clipping, 即假如gradient descent大于某个值,就权当作等行这个值。
这里写图片描述

那为什么会出现这种情况呢?
原因很简单,在于参数的复用。假设我的输入是10000….,我们设置不同的w,虽然w变动很小,可是在经过累乘之后,最后一次输出的结果却变化很大。
这里写图片描述

而LSTM可以改善这种情况:
这里写图片描述

下面展示几种常见的应用:
比如一个多分类问题,取最后一次循环的输出,再经过处理,便可得到分类结果。
这里写图片描述
再比如一个抽取关键词的问题,将最后一次循环的输出作为attention,再和embedding层一起作一些后续处理,即得到最后的结果。
这里写图片描述
语言生成的例子。
这里写图片描述

这次的笔记主要讲了RNN的大概流程,比较抽像,下次再结合代码的形式具体地总结一遍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值