P5 循环神经网络模型

如何构建一个神经网络来实现从x到y的映射???

实现过程中的困难:

1,输入和输出对于不同的例子会有不同的长度

或许可以给每个例子一个最大长度,将不足长度的部分用0补足,但是不是最好

2,这样一个朴素的神经网络,不能共享从不同文本位置学到的特征,尤其是神经网络学到了训练集中经常出现的词汇,我们希望在序列数据中能实现:通过学习一小部分数据的处理,放到大部分数据上去处理也行得通。

在标准神经网络中,输入数据都是10000个one-hot(独热编码向量)

这是一个非常大的输入层

我们需要的循环神经网络不包含上面的缺点。

什么是循环神经网络(Recurrent Neural Networks)???

我们输入x<1>然后进入神经网络后输出y<1>

然后我们输入x<2>,这个时候神经网络就不单单通过x<2>去判断y<2>,还会把计算后第一步的计算结果a<1>运行到生成y<2>的过程中,以此类推。我们会在生成第一个y<1>前给一个激活函数a<0>,通常是0向量,也可以自己修改这个a<0>.

 RNN的特点是它每一用的参数是共享的

一共有三组参数

W_ax,W_aa,W_ay

分别代表了从输入数据到神经网络的参数,激活函数的参数,从神经网络到输出数据的参数。

 RNN的一个缺点是它做一个对xi的预测只从x1到x i-1搜集信息,而对i之后的x信息不利用。

比如He said,“Teddy Roosevelt was a great President” 

和He said,"Teddy bears are on sale"

如果只利用前面的x,是不能帮助知道Teddy是不是人名的

那么能够弥补上这个缺点的神经网络,叫做双向递归神经网络----BRNNs(bi-directional recurrent neural networks)

下一章再介绍

这边先梳理以下RNN的计算结构

 简化一下这两个计算公式:

如果说a是100,那么Waa是100x100的矩阵,Wax是100x10000的矩阵,也就是行为100,列为10100的矩阵Wa,[a<t-1>,x<t>]是纵向并列的行为10100,列为100的矩阵

这个a<t>=g(Wa[a<t-1>,x<t>]+ba)

我们就把这个问题简化成只需要关注激活函数的参数

Wa和ba表示参数矩阵

 

posted @ 2024-01-02 12:06  静听微风tom  阅读(4)  评论(0编辑  收藏  举报