1.反向传播

RNN使用链式法则是RNN中的反向传播算法与传统神经网络中的算法的不同吗 rnn 反向传播_AI

  1. 首先对所有的y值进行loss计算
  2. 再通过梯度下降法右到左进行传播,不断更新w_y,b_y,w_a,b_a

没错,就是这么简单的两步
而且这个神经网络的有个很有意思的特点,它像一个时间一样,正向传播一个神经网络接收不同的输入,输出不同的输出,反向传播,输出的误差又不断的更新这个神经网络。所以RNN的反向传播又有一个很酷的名字:时间回溯传播(backpropagation through time)

2.使用RNN来建立一个语言模型(自动补齐)

RNN使用链式法则是RNN中的反向传播算法与传统神经网络中的算法的不同吗 rnn 反向传播_神经网络_02


平时在输入一个字或者一段话的时候,输入法会进行自动补齐,接下来,我们来使用RNN来实现这个算法

1.我们需要建立一个字典来记录单词(假设为10000个单词)

这个字典里面可以添加EOS和UNK标识
EOS(end of sqenuce):序列结束标记,可以让神经网络判断这个句子是否结束
UNK(unknow):句子里出现字典里面没有的标记为UNK,可以避免神经网络出现一些识别错误

2.关于数据集的标注

RNN使用链式法则是RNN中的反向传播算法与传统神经网络中的算法的不同吗 rnn 反向传播_反向传播_03


和之前的人名提取的标注差不多

3.神经网络

RNN使用链式法则是RNN中的反向传播算法与传统神经网络中的算法的不同吗 rnn 反向传播_机器学习_04


因为第一个单词不需要预测,所以输入的a_0和x_1为全0的向量

输出的y值为长度为10002的概率值,分别对应了每个单词会成为下个单词的概率,再取最大值,得出预测单词

返回的y_1值将作为下一步的x_2值,与a_1一起输入,返回y_2,再将y_2作为下一步的x_3,与a_2一起输入,直到句子结束。

算loss,梯度回归

如果你看过我的上一篇博客,你就应该发现了这是vector-to-sequence种类的RNN