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的维度

相关推荐
皮皮学姐分享-ppx1 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
GIS数据转换器1 小时前
基于3D GIS的监控视频精准标定平台
人工智能·物联网·3d·音视频·无人机·知识图谱
珺毅同学1 小时前
YOLO生成预测json标签迁移问题
python·yolo·json
骑士雄师2 小时前
18.4 长期记忆可修改版
python
专注VB编程开发20年2 小时前
AI 生成C# WinForm 窗体 = 目前就是垃圾
开发语言·人工智能·c#
深小乐2 小时前
Claude Fable5 尝鲜,效果挺不错
人工智能
~小先生~2 小时前
Python从入门到放弃(一)
开发语言·python
Nayxxu2 小时前
Gemini + RAG 企业知识库教程:从文档切片到答案生成
运维·人工智能
冬奇Lab2 小时前
真正的 AI-Native Workflow 是什么?——四个判断测试
人工智能·agent
冬奇Lab2 小时前
每日一个开源项目(第128篇):Agent Skills - 给 AI 编程 Agent 装上工程纪律
人工智能·开源·资讯