理解RNN的结构+特点+计算公式

引入

在某一些情况下,我们是无法使用标准的全连接神经网络的。比如,预测句子中哪几个单词是人名,如果使用标准的全连接神经网络,网络结构如下:

在这里插入图片描述

如果使用这种结构,会存在两个问题

  1. 输入句子长度和输出向量的维度,可能会不一样。对不同的样本,其输入/输出维度都不同。
  • 当然你可以采用zero padding,将每个句子都填充到最大长度,但仍然不是一种很好的方式
  1. 改结构无法共享从文本不同位置上学到的特征
  • 举例来说,比如该网络已经学到了x位置上的单词为人名,但下一次该单词出现在了另一个位置,这种网络就不认识它了
  1. 网络参数很多
  • 如果直接按字典进行单词词向量提取,则每个x,可能都是100000维的向量,这会导致该网络有一个非常庞大的输入层

RNN基本原理

在本例中,输入句子中的单词数Tx,与输出向量维度Ty相等。(若不相等,如下的RNN结构就要做一些改变了)

下图表示一个普通的全连接层神经网络,网络的输入只有一个单词,输出label也是一个类别数。当其读到句子中的第一个单词,就根据这个单词预测一个输出值,如下图所示:

在这里插入图片描述

当读到句子中的第二个单词,就不仅仅是根据第二个单词,来预测第二个输出值了。它会根据第二个单词,以及上一个时间步中的激活函数输出值a<1>,来预测y<2>,如下图所示:

在这里插入图片描述

后面的y预测与之同理,但一般会为y<1>的预测,增加一个输入a<0>,一般a<0>为零向量,或随机数。RNN完整过程如下所示

在这里插入图片描述

对y<3>进行预测时,考虑的x<3>与a<2>。而a<2>考虑了x<2>与a<1>,a<1>又考虑了x<1>。所以y<3>预测其实考虑了x<1>, x<2>, x<3>。这可以推理到一般的情况,预测y时,RNN是根据x<1>到x来进行预测的。

RNN的表示

上一节最后一幅图(第1种表示法),就是RNN的一种常用表示法。出了这种表示,还有另一种(第2种表示法),如下所示:

在这里插入图片描述

该图展开后,就跟我们的第1种表示法是一样的,如下图。Andrew Ng认为,第2种表示法容易让人迷惑,所以他更喜欢第一种表示法。

在这里插入图片描述

第1种表示法,虽然看上去网络结构很大,但其实真实的网络结构只是第2种表示法中那部分。所以第1种表示法中的大部分权重是相同的,如下图所示,红色字体表示权重:

在这里插入图片描述

RNN的缺点/问题

这种传统的RNN,有一个缺点,就是在预测y时,只用了之前的x<1>,x<2>,…,x的信息,而没有参考之后的x<k+1>, …, x的信息。

这会导致预测的结果可能不准确。具体举例来说,比如给定如下两句话,让你判断Teddy是不是人名中的一部分:

  • (1)He said, “Teddy Roosevelt was a great President.”
  • (2)He said, “Teddy bears are on sale.”

句子(1)中的Teddy是人名的一部分;句子(2)中的Teddy是泰迪熊的意思,并不是人名。

如果用RNN来预测Teddy是不是人名,它只会根据这三个单词(He, said, Teddy)来进行预测,而这3个单词是无法预测准确的。

要准确预测,就必须考虑Teddy之后的信息,而传统的RNN并不会考虑之后的信息。(后面会讲到BRNN就能解决这个问题)

RNN的前向计算

所谓Forward Propagation,就是给定RNN的参数(Waa, Wax, Wya)后,计算具体的y值的过程。计算过程与计算公式如下:

在这里插入图片描述

其中g()为激活函数,这个y的计算公式,相对好理解。这个计算公式,还可以被简化为如下表示

在这里插入图片描述

这里用Wa,Wy两个参数矩阵,来简化表示。这种记法的好处是,将两个参数矩阵(Waa, Wax)压缩成一个(Wa)。所以当我们要建立复杂模型时,这就简化了我们要用到的符号。

RNN的优点

本文描述了这样一个RNN模型:输入一个单词,输出一个label。

这种模型的第一个优点,是无论你输入多少个单词,它都能给出相应的输出。这就很好的解决了不定长输入的问题。对RNN模型来说,输入不同字数的句子,它也能很好的匹配输入。

第二个优点,是它可以将先前的信息链接到当前的任务。即上面讲的预测y时,RNN是根据x<1>到x来进行预测的。所以,相同的单词,出现在句子中不同的位置,它都能根据该单词之前的信息,来进行准确的预测。

参考

  • [1] Andrew Ng. deep learning class. sequence model.
  • [2] 本文的符号,及其表示方法,请参考https://blog.csdn.net/ybdesire/article/details/102963683
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值