理解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
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
RNN(Recurrent Neural Network) 是一种递归神经网络,它能够处理序列数据,并具有记忆能力,适用于自然语言处理和时间序列数据的建模等任务。而Attention机制是一种特殊的机制,能够在RNN中关注与当前任务更相关的部分,提升模型性能。 RNN中Attention机制的引入,可以使模型在处理长序列数据时,更加关注与当前任务相关的信息。它通过计算每个输入和输出的注意力权重,将关注点放在对当前输出更有倾向的输入上。这样,就能够在翻译任务中,对于较长的句子主要关注其中最重要的单词,提高翻译质量;或在语音识别任务中,对于长音频序列更注重关键的语音片段,提高识别准确率。 CTC(Connectionist Temporal Classification)是一种用于序列分类的方法,常用于语音识别中。CTC的特点是无需对齐标签和输入,只需要输入和输出序列之间的对应关系。通过将输出序列与输入序列对齐的所有可能对应关系进行求和,最终得到最可能的输出序列。这种方法不仅可以处理单个输入序列与输出序列的对齐问题,还能够应对多对一、多对多等复杂情况。 RNN Attention CTC的结合应用在语音识别任务中。首先,RNN作为基础模型,对输入音频序列进行特征提取和语音信息的建模。其次,Attention机制用于根据当前输出的建议,选择与其最相关的输入部分进行关注。最后,CTC用于将该输出序列的所有对齐与输入的可能对应关系进行求和,得到最可能的输出序列。通过Attention机制的引入,模型可以更加关注与当前输入相关的部分,提高语音识别的准确率。 总结来说,RNN Attention CTC是一种在语音识别中常用的方法,它充分利用了RNN的记忆能力,结合Attention机制进行关注,再通过CTC进行序列分类。这种方法在序列数据处理中具有很好的效果,提高了模型的性能和准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值