【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。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做自己的偶像

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值