一、序列模型-sequence model

简介: 一、序列模型-sequence model

在生活中,有许多领域都用到了序列模型,如语音识别,音乐创作,情感分类,DNA序列分析,机器翻译,视频动作检测,名称实体识别等。


1、符号定义


对于训练数据中的输入序列X和输出序列Y,令  x(i)<t>表示第  i个训练数据输入序列中,第 t个位置的序列元素;令y(i)<t>表示第  i个训练数据输出序列中,第 t个位置的序列元素;令 Tx(i)表示第 i i i个训练数据输入序列的长度;令  Ty(i)表示第 i i i个训练数据输出序列的长度。one-hot向量表示法表示 x(i)<t>:对于构建的词库vocabulary,词库中 x(i)<t>位置的取值为1,其余位置取值均为0;伪词<UNK>-Unknown Word,用来代替没有在vocabulary中出现的词。



2、构建循环神经网络-Recurrent Neural Network



使用标准神经网络(ANN)处理序列问题问题的缺陷:首先,序列问题下不同的训练数据的输入和输出很大可能下会不同;其次,也是比较重要的缺陷在于,ANN不会共享从不同文本文职学习到的特征。


循环神经网络(RNN)的结构如下图所示:

b792eae67758445c90c3ec86bdc84b97.png


其中, a<i>表示通过神经网络层和激活函数计算之后的值,其中  a<0>一般初始化为全0向量; w a x , w a a , w y a w_{ax},w_{aa},w_{ya} wax,waa,wya表示权重系数。如:

image.png

其中,g表示激活函数,计算  a时候的激活函数和计算 y时候的激活函数不一定为一种激活函数。计算 a 时候的激活函数通常使用 tanh或者 Relu;计算  y的时候,激活函数通常使用sigmoid(用于二元分类问题)或者softmax(用于多元分类问题)。上述拓展公式扩展到第 t步时的计算方法如下所示:


image.png

使用 [waa;wax]=wa,可以将上式 at的表达形式进行简化为:

image.png

使用 w y 代 替 w y a w_y代替w_{ya} wy代替wya可以将上式 y

<t>的表达形式变为:

image.png


2.1 RNN中的反向传播


  RNN正向传播的简化示意图如下图所示:


b3c40d4b72f6404caea8a5fb4ce88081.png


下面定义出序列模型的单个时间步下的交叉熵误差计算式:

image.png

所以总的误差为将所有时间步下的误差进行累和得到:



误差反向传播的示意图如下图所示:

0190cfd248de4d4b84598bfa8ebe196d.png


2.2 不同架构的RNN


多对多RNN,many-to-many,输入序列有多个元素,输出序列也有多个元素,输入输出序列长度相同的示意如下所示:


5e3d96cc746c4a4c9ce3868ae46f1d16.png


多对多RNN,many-to-many,输入序列有多个元素,输出序列也有多个元素,输入输出序列长度不同的示意如下所示:

5aadac3a746243c3b590ad7ef7d88f7a.png


多对一RNN,输入序列中有多个元素,输出序列中只有一个元素:

38b99a2689c3412abd5faaeedf8878ba.png


一对多RNN,输入序列只有一个元素,输出序列中包含多个元素:


13a7555a38b64c61b7b1adaa3365990f.png

3、语言模型的RNN架构


3.1 架构


基于RNN的语言模型的架构如下所示:


28e99ee3dfe2448dad48b9be228636be.png


损失函数使用交叉熵误差,形式如下所示:

image.png


3.2 序列采样


下图展示了怎样从一个训练好的RNN模型中提取出结果序列。

79c3f66ad80b43ef8d943be359fe733b.png




4、RNN的梯度消失问题-vanishing gradients



若输入序列的长度过长,后续RNN在预测时,对于很早之前的输入信息会变得不太“敏感”,若很早之前输入的信息对于RNN后续预测影响很大,则会使得RNN的效果变得很差,使得RNN不擅长捕捉远程依赖关系。


4.1 门控制单元-Gate Recurrent Unit

GRU通过修改RNN的隐藏层,使得RNN可以更好地捕捉长距离的关系,有助于减少梯度消失的问题。

     简化版的GRU单元如下所示:


850b926a54d8432f93abd3bdb8698ef5.png


其中     C表示记忆单元(memory cell),

C  <t>=tanh(wc[C<t1>x<t>]+bc)


表示 t时间步下的记忆单元,在GRU中,  a<t>=C<t>;

Γu=sigmoid(wu[C<t1>,x<t>]+bu)


表示更新门控;

C<t>=ΓuC  <t>+(1Γu)C<t1>


用来计算  t时间步下的输出值;


完整版的GRU需要引入一个新的门控单元-相关性门控 Γr表示  t−1时间步的记忆单元和 t时间步的记忆单元之间的相关性,所以需要对 C<t>的计算进行调整:




4.2 长短期记忆单元-Long Short Term Memory

下图罗列出了在GRU中使用的机制:


6f0be9316ca7464394a20baa46023560.png



LSTM相对于GRU是一种更加有效,更加泛化的克服梯度消失问题的工具。在LSTM中,a<t>和 C<t>不再是一个相同的值;LSTM通常不需要相关性控制门 Γr,但是增加了两个额外的控制门 Γf表示遗忘控制门和  Γo表示输出控制门。所以LSTM的核心等式如下所示:


image.png


LSTM的示意图如下图所示:

c056f6cc46714c96966c597d2b48e26f.png



5、双向RNN-Bidirectional RNN


BRNN是为了同时考虑过去的信息和未来的信息,在某个时间步                                  t                              t下进行决策,BRNN的示意图如下图所示:

09ac29ed428b4a5aac1d262234709b7e.png


其中,在某个时间步    t下的预测值区别于RNN,需要同时考虑前向输入和后向输入


image.png





相关文章
|
存储 分布式计算 算法
RoaringBitmap的原理与应用
RoaringBitmap的原理与应用
802 2
|
13天前
|
JSON 自然语言处理 测试技术
Coze / Dify 等平台的智能体工作流搭建的核心方法
本文实操,详解Coze与Dify等智能体平台的工作流工程化方法:强调输入字段化、流程分步化(入口→规划→执行→校验→输出)、输出结构化,并标配重试、断言、降级三件套,助团队从“能跑通”迈向“稳上线”。
|
人工智能 开发框架 数据可视化
【AI大模型应用开发】【RAG评估】0. 综述:一文了解RAG评估方法、工具与指标
【AI大模型应用开发】【RAG评估】0. 综述:一文了解RAG评估方法、工具与指标
2063 0
|
人工智能 自然语言处理 安全
关于claude怎么下载?这篇文章告诉你答案!
Claude 是 Anthropic 公司开发的一款大型语言模型,被誉为下一代 AI 助手 🤖。它拥有强大的文本处理能力,能够进行对话、写作、翻译、总结等多种任务 📝。
|
机器学习/深度学习 运维 计算机视觉
TimesNet:时间序列预测的最新模型
2023年4月发表了一个新的模型,它在时间序列分析的多个任务中实现了最先进的结果,如预测、imputation、分类和异常检测:TimesNet。
1485 0
|
JSON JavaScript Linux
绘图框架 plotly 知识点补充(绘制子图,图表保存)
绘图框架 plotly 知识点补充(绘制子图,图表保存)
726 13
|
前端开发
使用thymeleaf将查询的数据显示在前台。通过使用循环的形式
这篇文章介绍了如何使用Thymeleaf的`th:each`属性在前端页面上循环显示从后端传递过来的列表数据,并通过具体的HTML表格示例展示了如何展示书籍名称、作者、价格、出版社以及操作链接。
|
分布式计算 应用服务中间件 持续交付
DolphinScheduler教程(01)- 入门(上)
DolphinScheduler教程(01)- 入门(上)
1829 0
|
编解码 监控 算法
视频监控 智能交通 数据集(目标检测、跟踪)
总结一下视频监控的数据集,用于目标检测、跟踪,持续跟新中..........
2713 0
|
安全 API 网络安全
api接口为什么需要加密,PHP接口加密的方法有哪些
api接口为什么需要加密,PHP接口加密的方法有哪些
577 0