循环神经网络模型RNN

学习序列模型rnn实现从X到Y的映射。

最简单的NN模型,将九个输入变量输出9个0或1的结果。

但是这样不好,因为输入输出长度不一定相同。

单纯的神经网络并不能分享从不同位置学到的特征。如识别不同位置的人名。

RNN

读到第二个单词时候不是只通过当前的词x<2>就预测出y<2> 的,

也会输入一些来自时间步(time-step)1的信息。时间步1的激活值就会传递到时间步2。

one-hot向量~如上

输入下一个单词x<3>,rnn试图预测y<3>。

rnn传递一个激活值到下一个时间步用于计算。

初始化a<0>有很多方法。如赋值为0。


(一些文章中这样表示循环神经网络但是没有上面展开的图清晰)

每一步使用相同的参数w_ax,

激活值,也就是水平参数,是由参数w_aa决定的,

每一个time-step使用相同的w_aa。

每一个输出由w_ya决定。

rnn的缺点是只用到了当前预测节点之前的输入的信息。位于其之后的输入信息都没有被利用。


某一时刻的预测没有使用序列后部分的信息。可以使用双向循环神经网络(BRNNs)解决这个问题。

整洁版rnn:


首先输入零向量a0。为了计算a1,使用激活函数g

rnn使用的激活函数经常是tanh,reLU也会用但前者更常用。

使用何种激活函数取决与问题种类。

二分类:sigmoid

k类别分类:softmax

命名体识别(输出是0或1):sigmoid

计算a<1>、y<1>标准式


通用计算公式:


简化符号:

把waa,wax合并成一个矩阵。

如waa是100x100,wax是100x10000

所以wa是100x10100的矩阵。


a<t-1>与x<t>竖着摞起来。


总体:


正确。

重写输出y<t>的表达式:



猜你喜欢

转载自blog.csdn.net/weixin_39773661/article/details/80963521