Day07-RNN层(循环网络层)

一、RNN网络原理

文本数据是具有序列特性的

例如: "我爱你", 这串文本就是具有序列关系的,"爱" 需要在 "我" 之后,"你" 需要在 "爱" 之后, 如果颠倒了顺序,那么可能就会表达不同的意思。

为了表示出数据的序列关系,需要使用循环神经网络(Recurrent Nearal Networks, RNN) 来对数据进行建模,RNN 是一个作用于处理带有序列特点的样本数据。

RNN 计算过程是什么样的呢?

h 表示隐藏状态, 保存了序列数据中的历史信息,并将这些信息传递给下一个时间步,从而允许RNN处理和预测序列数据中的元素。

每一次的输入包含两个值: 上一个时间步的隐藏状态、当前状态的输入值x。

每一次的输出也会包含两个值:当前时间步的隐藏状态、当前时间步的预测结果y。

隐藏状态作用:

1、记忆功能:隐藏状态就像RNN的记忆,它能够在不同的时间步之间传递信息。当一个新的输入进入网络时,当前的隐藏状态会结合这个新输入来生成新的隐藏状态。

2、上下文理解:由于隐藏状态携带了过去的信息,它可以用于理解和生成与上下文相关的输出。这对于语言模型、机器翻译等任务尤其重要。

3、连接不同时间步:隐藏状态通过网络内部的循环连接将各个时间步连接起来,使得网络可以处理变长的序列数据。

上面一共画了 3 个神经元, 但是实际上只有一个神经元,"我爱你" 三个字是重复输入到同一个神经元中。

我们举个例子来理解上图的工作过程,假设我们要实现文本生成,也就是输入 "我爱" 这两个字,来预测出 "你",其如下图所示:

将上图展开成不同时间步的形式,如下图所示:

首先初始化出第一个隐藏状态h0,一般都是全0的一个向量,然后将 "我" 进行词嵌入,转换为向量的表示形式,送入到第一个时间步,然后输出隐藏状态 h1,然后将 h1 和 "爱" 输入到第二个时间步,得到隐藏状态 h2, 将 h2 送入到全连接网络,得到 "你" 的预测概率。

RNN神经元内部是如何计算的呢?

计算隐藏状态:每个时间步的隐藏状态h_t是根据当前输入x_t和前一时刻的隐藏状态h_{t-1}计算的。

上述公式中:

1、Wih 表示输入数据的权重

2、bih 表示输入数据的偏置

3、Whh 表示输入隐藏状态的权重

4、bhh 表示输入隐藏状态的偏置

5、ht-1 表示输入隐藏状态

6、ht 表示输出隐藏状态

最后对输出的结果使用 tanh 激活函数进行计算,得到该神经元你的输出隐藏状态。

计算当前时刻的输出:网络的输出yt是当前时刻的隐藏状态经过一个线性变换得到的。

词汇表映射:

输出yt是一个向量,该向量经过全连接层后输出得到最终预测结果Ypred,Ypred中每个元素代表当前时刻生成词汇表中某个词的得分(或概率,通过激活函数如softmax)。词汇表有多少个词,Ypred就有多少个元素值,最大元素值对应的词就是当前时刻预测生成的词。

神经元工作机制总结:

1、**接收输入:**每个RNN神经元接收来自输入数据xt和前一时刻的隐藏状态ht-1。

2、**更新隐藏状态:**神经元通过一个加权和(由权重矩阵和偏置项组成)更新当前时刻的隐藏状态ht,该隐藏状态包含了来自过去的记忆以及当前输入的信息。

3、**输出计算:**基于当前隐藏状态ht,神经元生成当前时刻的输出yt,该输出可以用于任务的最终预测。

文本生成示例:

二、PyTorch RNN层的使用

1、API介绍

2、输入数据和输出结果

将RNN实例化就可以将数据送入其中进行处理,处理的方式如下所示:

3、输入数据:输入主要包括词嵌入的x 、初始的隐藏层h0

(1)x的表示形式为[seq_len, batch, input_size],即[句子的长度,batch的大小,词向量的维度]

(2)h0的表示形式为[num_layers, batch, hidden_size],即[隐藏层的层数,batch的大,隐藏层h的维数]

4、输出结果:主要包括输出结果output,最后一层的hn

(1)output的表示形式与输入x类似,为[seq_len, batch, hidden_size],即[句子的长度,batch的大小,输出向量的维度]

(2)hn的表示形式与输入h0一样,为[num_layers, batch, hidden_size],即[隐藏层的层数,batch的大,隐藏层h的维度]

相关推荐
海蓝可知天湛16 分钟前
Agent&IELTS雅思口语专属语料库
人工智能·github·rag·ielts·skills
随身数智备忘录25 分钟前
什么是设备管理体系?设备管理体系包含哪些核心模块?
网络·数据库·人工智能
彦为君30 分钟前
Agent 安全:从权限提示到沙箱隔离
python·ai·ai编程
OpenBayes贝式计算32 分钟前
涵盖 OCR 与多轮对话:1.3B 端侧多模态模型 MiniCPM-V-4.6 正式发布;百万级智能体数据集 AgentTrove 开源!包含代码修复及数学求解
人工智能
189228048611 小时前
NY352固态MT29F32T08GWLBHD6-24QJ:B
大数据·服务器·人工智能·科技·缓存
南屹川1 小时前
【数据库】PostgreSQL实战:从基础到高级特性
人工智能
zhangxingchao1 小时前
多 Agent 架构到底怎么选?从 Claude Agent Teams、Cognition/Devin 到工程落地原则
前端·人工智能·后端
不开大的凯20771 小时前
麦当秀AiPPT战略转向:从SaaS订阅迈向Token经济,AI办公定价模式迎来新探索
大数据·人工智能
Mr数据杨1 小时前
【CanMV K210】显示交互 LCD1602 I2C 通信与滚动文本显示
人工智能·交互·硬件开发·canmv k210
IT_陈寒1 小时前
SpringBoot那个自动配置的坑,害我排查到凌晨三点
前端·人工智能·后端