Pytorch神经网络实战学习笔记_22 循环神经网络结构:概述+BP算法+BPTT算法

1 循环神经网络结构概述

循环神经网络(Recurrent Neural Network,RNN)是一个具有记忆功能的网络模型。它可以发现样本彼此之间的相互关系。它多用于处理带有序列特征的样本数据。

1.1 生物大脑中的循环神经网络

当获得“我找你来玩游”信息后,大脑的语言模型会自动预测后一个字为“戏”,而不是“乐”“泳”等其他字。

每个预测的结果都会放到下个输入里面进行运算,与下一次的食人鱼一起来生成下一次的结果。

链式地、有顺序地存储信息”很节省空间,对于中间状态的序列,大脑没有选择直接记住,而是存储计算方达。当我们需要取值时,直接将具体的数据输入,通过计算得出相应的给果。

1.2 循环神经网络的应用领域

对于序列化的特征任务,适合用循环神经网路来解决。这类任务包括情感分析、关键字提取、语音识别、机器翻译和股票分析等。

1.3 循环神经网络的正向传播过程

假设有3个时序t1,t2,t3,如图7-26所示,循环神经网络的处理过程可以分解成以下3个步骤:
(1)开始时t1通过自己的输入权重和0作为输入,生成了out1;
(2)out1通过自己的权重生成了h1,然后和t2与经过输入权重转化后一起作为输入,生成了out2;
(3)out2通过同样的隐藏层权重生成了h2,然后和t3经过输入权重转化后一起作为输入,生成了out3。
使得模型的结果既有该样本之前序列的信息,又含有该样本身的数据信息,从而使网络具有记忆功能。

2 BP算法与BPTT算法的原理剖析

2.1 BP算法==》卷积神经网络

假设有一个包含一个隐藏层的神经网络,隐藏层只有一个节点。该神经网络在BP算法中具体的实现过程如下。
(1)有一个批次的数据,含有3个数据A、B、C,批次中每个样本有两个数(x1、x2)通过权重(w1、w2)来到隐藏层H并生成批次h,如图7-27中w1和w2所在的两条直线方向。
(2)该批次的h通过隐藏层权重p1生成最终的输出结果y。
(3)y与最终的标签p比较,生成输出层误差loss(y,p)。
(4)loss(y,p)与生成y的导数相乘,得到DeL_y。DeL_y为输出层所需要的修改值。
(5)将h的转置与DeL_y相乘得到DeL_p1,这是源于h与p1相乘得到的y(见第2步.
(6)最终将该批次的DeL_p1,求和并更新到p1。
(7)同理,再将误差反向传递到上一层:计算Del_h。得到Del_h后再计算权重(w1,w2)的Del值并更新。

2.2 BPTT算法(BP算法+序列序列)==》循环神经网络

在图7-28中,同样是一个批次的数据ABC,按顺序进入循环神经网络。正向传播的实例是,B正在进入神经网络的过程,可以看到A的h参与了进来,一起经过p1生成了B的y。因为C还没有进入,为了清晰,所以这里用灰色(虚线方框)来表示。

当所有块都进入之后,会将p标签与输出进行Del_y的运算。由于C块中的y值是最后生成的,因此我们先从C块开始对h的输出传递误差Del_h。

图7-28中的反向传播是表示C块已经反向传播完成,开始B块反向传播的状态,可以看到B块Del_h是由B块的Del_y和C块的Del_h(图7-28中的fur _Del_h)通过计算得来的。

2.3 对比

这就是与BP算法不同的地方(在BP算法中Del_h直接与自己的Del_y相关,不会与其他的值有联系)。作为一个批次的数据,正向传播时是沿着4BC的顺序升当反向传播时,就按照正向传播的相反顺序接照每个节点的CBA顺序,挨个计算并传递梯度。

2.4 代码代补充  P149

猜你喜欢

转载自blog.csdn.net/qq_39237205/article/details/123530791