RNN神经网络的细节(九)

RNN递归神经网络

上篇讲过了RNN的基本构造。

RNN神经网络的细节(九)

传入其实是由两个参数,一个是传入的参数,另一个是上一次传过来的旧值,用这两个参数来进行前向传播。

前向传播:

Xt就是表示第几个输入,输入乘上一个权值,也就是一个矩阵U,中间的St-1就是上一个值传进来的,乘于W,就是对应的权值,相加之后减去一个偏置值,可以设置为1,就是(UXt + WSt-1-1),之后再把所有值进行一个非线性函数,比如一个relu,当然不一定就是relu函数,可以是其他的非线性函数,就是得到了当前的一个St值,刚刚那个是St-1,是上一个传过来的值,最后得到的一个St乘于一个V权值。Ot就是一个输出的分类了,多分类自然就是使用一个softmax函数了,就是softmax(VSt)得到各个分类的一个得分。


反向传播:

反向传播其实也是一个求导过程。有多少个权值就是要更新多少个,而且是要和前向传播反方向的。

可以看到有三个权值,V,W,U。那就要更新三个了。

首先就是要更新V值了,更新V值之前还要进行一个对softmax分类器的求导,也就是减一除N了。求导自然也是对VSt求V的导,也就是St。这个就是V要改变的量。而其他的权值也是一样的,而按照链式法则要一步一步向下传的。所以就要求St的梯度了。然后一步一步的向下传。

RNN神经网络的细节(九)

最后更新下去。


但是这样就有一个问题,这样不断的衰减导数值就会导致,更新的梯度有可能为零,而且计算量就会很大。所以我们一般只会让他更新一部分信息。比如RNN神经网络的细节(九),这样其实我们要得到的就是最后的Love后面的信息,或者是I的信息,之前的很多或者是比较远的信息其实就是没有必要的了。