【pytorch】循环神经网络

如果说卷积神经网络可以有效地处理空间信息,那么循环神经网络则可以更好地处理序列信息。循环神经网络通过引入状态变量存储过去的信息和当前的输入,从而可以确定当前的输出。

1 循环神经网络

隐藏层和隐状态指的是两个截然不同的概念。隐藏层是在从输入到输出的路径上(以观测角度来理解)的隐藏的层,而隐状态则是

在给定步骤所做的任何事情(以技术角度来定义)的输入,并且这些状态只能通过先前时间步的数据来计算。

1.1 无隐状态的神经网络

让我们来看一看只有单隐藏层的多层感知机。设隐藏层的激活函数为ϕ,给定一个小批量样本X ∈ Rn×d,其中批量大小为n,输入维度为d,则隐藏层的输出H ∈ Rn×h通过下式计算:

隐藏层权重参数为Wxh ∈ Rd×h,偏置参数为bh ∈ R1×h,以及隐藏单元的数目为h

接下来,将隐藏变量H用作输出层的输入。输出层由下式给出:

O ∈ Rn×q是输出变量,Whq ∈ Rh×q是权重参数,bq ∈ R1×q是输出层的偏置参数

1.2 有隐状态的循环神经网络

假设我们在时间步t有小批量输入Xt ∈ Rn×d。换言之,对于n个序列样本的小批量,Xt的每一行对应于来自该序列的时间步t处的一个样本 。接下来,用Ht ∈ Rn×h 表示时间步t的隐藏变量。与多层感知机不同的是,我们在这里保存了前一个时间步的隐藏变量Ht−1,并引入了一个新的权重参数Whh ∈ Rh×h,来描述如何在当前时间步中使用前一个时间步的隐藏变量。具体地说,当前时间步隐藏变量由当前时间步的输入与前一个时间步的隐藏变量一起计算 得出:

从相邻时间步的隐藏变量Ht和 Ht−1之间的关系可知,这些变量捕获并保留了序列直到其当前时间步的历史信息,就如当前时间步下神经网络的状态或记忆,因此这样的隐藏变量被称为隐状态(hidden state)。

对于时间步t,输出层的输出类似于多层感知机中的计算:

隐藏层的权重 Wxh ∈ Rd×h, Whh ∈ Rh×h和偏置bh ∈ R1×h,以及输出层的权重Whq ∈ Rh×q 和偏置bq ∈ R1×q。

循环神经网络在三个相邻时间步的计算逻辑如下:

在任意时间步t,隐状态的计算可以被视为:

  1. 拼接当前时间步t的输入Xt和前一时间步t − 1的隐状态Ht−1;
  2. 将拼接的结果送入带有激活函数ϕ的全连接层。全连接层的输出是当前时间步t的隐状态Ht。
相关推荐
kris000917 分钟前
人工智能知识分享第三天-机器学习中交叉验证和网格搜索
人工智能·深度学习·机器学习
当交通遇上机器学习25 分钟前
超越局部损失函数的预测-优化方法
人工智能·机器学习
因_果_律40 分钟前
AWS re:Invent 2024 - Dr. Werner Vogels 主题演讲
人工智能·科技·云计算·aws·亚马逊云科技·re invent
视觉人机器视觉1 小时前
halcon中的BLOB与灰度直方图的分析与理解
人工智能·深度学习·算法·计算机视觉·c#·自动化
CM莫问1 小时前
神经网络的初始化方式都有哪些?
人工智能·python·深度学习·神经网络·算法·torch·权重初始化
阿正的梦工坊1 小时前
PyTorch 自动混合精度AMP Grad Scaler 源码解析:_unscale_grads_ 与 unscale_ 函数
人工智能·pytorch·python
编码小哥1 小时前
OpenCV调整图像亮度和对比度
人工智能·opencv·计算机视觉
E.K.江湖念书人2 小时前
resnet分类训练
pytorch·深度学习·分类
matlabgoodboy2 小时前
python代做/tensorflow代做/pytorch代做/keras/图像/目标检测/
pytorch·python·tensorflow
前网易架构师-高司机2 小时前
铁路轨道缺陷数据集,4278张原始图片,支持YOLO,PASICAL VOC XML,COCO JSON格式的标注,可识别是否有裂缝,和间隙缺陷
xml·人工智能·yolo