欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何运用RNN(循环神经网络)模型与前向后向传播法操作详解

最编程 2024-07-24 21:51:16
...

在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系。今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Recurrent Neural Networks ,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域。

1. RNN概述

在前面讲到的DNN和CNN中,训练样本的输入和输出是比较的确定的。但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不一,比如基于时间的序列:一段段连续的语音,一段段连续的手写文字。这些序列比较长,且长度不一,比较难直接的拆分成一个个独立的样本来通过DNN/CNN进行训练。

而对于这类问题,RNN则比较的擅长。那么RNN是怎么做到的呢?RNN假设我们的样本是基于序列的。比如是从序列索引1到序列索引ττ的。对于这其中的任意序列索引号tt,它对应的输入是对应的样本序列中的x(t)x(t)。而模型在序列索引号tt位置的隐藏状态h(t)h(t),则由x(t)x(t)和在t1t−1位置的隐藏状态h(t1)h(t−1)共同决定。在任意序列索引号tt,我们也有对应的模型预测输出o(t)o(t)。通过预测输出o(t)o(t)和训练序列真实输出y(t)y(t),以及损失函数L(t)L(t),我们就可以用DNN类似的方法来训练模型,接着用来预测测试序列中的一些位置的输出。

下面我们来看看RNN的模型。

2. RNN模型

RNN模型有比较多的变种,这里介绍最主流的RNN模型结构如下:

上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。我们重点观察右边部分的图。

这幅图描述了在序列索引号tt附近RNN的模型。其中:

1)x(t)x(t)代表在序列索引号tt时训练样本的输入。同样的,x(t1)x(t−1)x(t+1)x(t+1)代表在序列索引号t1t−1t+1t+1时训练样本的输入。

2)h(t)h(t)代表在序列索引号tt时模型的隐藏状态。h(t)h(t)x(t)x(t)h(t1)h(t−1)共同决定。

3)o(t)o(t)代表在序列索引号

上一篇: Transformer中的前向传递反馈神经网络:理解和应用反向传播机制

下一篇: Hinton新发现:神经网络的前景在双向连接算法 | NeurIPS 2022特别讲座