rnn按时间展开_10分钟理解RNN中那几张经典的带“门”的图

RNN解决的很多问题,是文本相关的问题。

循环神经网络:

6bc4e4990f2d81e0fcc4d8313513c5bc.png

注意到的是,在左侧的图中有一个反馈回路,反馈回路把上一个时刻输出的信息,作为下一个时刻的输入,来进行处理。

右侧实际上是对左侧图的展开。按照时间序列展开。

Xt是时刻t的输入

St是时间t处的“记忆”,St=f(UXt+WSt-1),f可以是tanh等

Ot是时间t处的输出,比如是预测下个词的情况下,可能是softmax输出的属于每个候选词的概率

U是权重矩阵

针对输入的xt-1,以及之前的t-2时刻的t-2时刻的st-2信息,共同运算得到输出Ot-1更新当前的记忆单元st--1为下一时刻做准备

RNN存在的问题,之前的传播,随着时间的推进,信号不断的衰减。

49a24cdabaa0498ed1dbb08d622b41be.png

为了解决这种情况,出现了lstm,LSTM是RNN的一种,RNN和lstm在tensorflow里都实现了,但是在工业应用中,对于一些参数,要进行调整。

LSTM解决的问题,是长时间的信息依赖的问题。区别于RNN的是,记忆细胞被改造过。

下面是RNN和LSTM的区别:

4e4e7821d9f15a9b90b2d3e931b18444.png

4624ed494cbfb55a2281b4575a58c2d3.png

对上面这个图进行拆解:

neural network layer:对于非线性的信息进行转换

pointwise operation:点对点的运算,点乘

vector transfer:信息的传输

concatenate:汇聚

copy:对一个数据源进行分支传送

fe7c6fb8f2f466f8dd032b95084a862d.png

关键是上图所示的,Ct-1到Ct的传送。

f60c096b27c1dd30e4e73984da092413.png

通过这个“门”,来控制细胞的信息状态。这其中的sigmoid神经网络层, 就是actviation的激励层做的事情,是一个非线性的映射。pointwise的乘法,意思传递过来的信息和sigmoid激励的输出进行向量点乘得到结果。

sigmoid函数的最大的作用,就是将一个连续值压缩到0到1之间的一个概率值,来描述每个部分,0代表不允许任何信息量通过,1代表允许所有的量通过。

在lstm内部有几个块,分别负责不同的功能。

①最左侧的部分,输入是xt和ht-1,这一步处理的是要从细胞中丢弃什么信息,忘记一些信息。

Wf是一个矩阵,传统上的wx+b,w不变,x由Ht-1和xt组成,b是一个bias项,用sigmoid函数进行激励后得到的向量应该是一个0到1之间的数值的概率向量,这个概率向量和前面的Ct-1作用后确定忘掉的信息

9d52f86d72d595732cd70cb610d07c84.png

②这一步决定将留下什么“新”的信息,这部分根据输入的xt决定放什么信息,到信息状态下。也就是说确定什么样的值进行更新,到这里是记上和上面的形式是一样的,通过sigmoid决定什么样的值进行更新,运算是一样的,但是权重不一样。tanh创建一个新的向量。

8104e07acf735b8fcf32a015b6b1371d.png

③对细胞状态进行更新。根据旧的状态和新的状态的结合,对当前状态进行更新。

336204ae370118e2b8830c2978a619de.png

④根据更新了的记忆体的Ct,通过sigmoid运算确定输出的部分,通过tanh处理细胞状态。

bdab47ddf0edbeeefa36e668a4712327.png

ht在这里被认为是当前状态的输出。ot是一个概率向量,用来确定细胞状态的哪一部分输出。

下面是另一种表述形式,和上面的表述,本质上是相同的,只不过这里对输出门,输入门,忘记门,做了更清楚的标注。

d18a9361f880acba0bc8c24f57542ef5.png

这就是对RNN的中几个比较经典的图解的说明,对于具体应用将持续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值