【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。
相关推荐
那个村的李富贵13 小时前
光影魔术师:CANN加速实时图像风格迁移,让每张照片秒变大师画作
人工智能·aigc·cann
腾讯云开发者15 小时前
“痛点”到“通点”!一份让 AI 真正落地产生真金白银的实战指南
人工智能
CareyWYR15 小时前
每周AI论文速递(260202-260206)
人工智能
hopsky15 小时前
大模型生成PPT的技术原理
人工智能
禁默16 小时前
打通 AI 与信号处理的“任督二脉”:Ascend SIP Boost 加速库深度实战
人工智能·信号处理·cann
心疼你的一切16 小时前
昇腾CANN实战落地:从智慧城市到AIGC,解锁五大行业AI应用的算力密码
数据仓库·人工智能·深度学习·aigc·智慧城市·cann
AI绘画哇哒哒17 小时前
【干货收藏】深度解析AI Agent框架:设计原理+主流选型+项目实操,一站式学习指南
人工智能·学习·ai·程序员·大模型·产品经理·转行
数据分析能量站17 小时前
Clawdbot(现名Moltbot)-现状分析
人工智能
那个村的李富贵17 小时前
CANN加速下的AIGC“即时翻译”:AI语音克隆与实时变声实战
人工智能·算法·aigc·cann
二十雨辰17 小时前
[python]-AI大模型
开发语言·人工智能·python