一、序列模型-sequence model

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 一、序列模型-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





相关文章
|
编译器 开发工具 C++
Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
2211 0
Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
|
负载均衡 5G 网络性能优化
深入解析LTE(长期演进技术)的基本架构及其关键组件
深入解析LTE(长期演进技术)的基本架构及其关键组件
1400 2
|
JSON JavaScript Linux
绘图框架 plotly 知识点补充(绘制子图,图表保存)
绘图框架 plotly 知识点补充(绘制子图,图表保存)
627 13
|
机器学习/深度学习 流计算
USB3.2 摘录(五)(上)
USB3.2 摘录(五)
291 1
|
自然语言处理 搜索推荐 数据可视化
如何使用python实现一个优雅的词云?(超详细)
如何使用python实现一个优雅的词云?(超详细)
521 2
|
人工智能 开发框架 数据可视化
【AI大模型应用开发】【RAG评估】0. 综述:一文了解RAG评估方法、工具与指标
【AI大模型应用开发】【RAG评估】0. 综述:一文了解RAG评估方法、工具与指标
1797 0
|
机器学习/深度学习 运维 计算机视觉
TimesNet:时间序列预测的最新模型
2023年4月发表了一个新的模型,它在时间序列分析的多个任务中实现了最先进的结果,如预测、imputation、分类和异常检测:TimesNet。
1304 0
|
SQL Oracle 关系型数据库
"揭秘!一键解锁Oracle日志清理魔法,让海量归档日志无处遁形,守护数据库健康,告别磁盘空间告急噩梦!"
【8月更文挑战第9天】随着Oracle数据库在企业应用中的普及,归档日志管理对保持数据库健康至关重要。归档日志记录所有更改,对数据恢复极为重要,但也可能迅速占用大量磁盘空间影响性能。利用Oracle提供的RMAN工具,可通过编写Shell脚本来自动清理归档日志。脚本包括设置环境变量、连接数据库、检查和删除指定时间前的日志,并记录执行情况。通过Cron作业定时运行脚本,可有效管理日志文件,确保数据库稳定运行。
537 7
|
存储 开发框架 算法
【自己动手画CPU】控制器设计(二)
作者深入探讨了自制CPU的控制器设计,为自学者提供了宝贵的实践指导。文章详细介绍了控制器的设计原理与关键步骤,涵盖了寄存器的配置、指令的执行以及时序控制等方面内容。通过图文并茂的演示,读者可以清晰了解如何从零开始搭建一个基本的控制器,并使其能够执行简单的指令。作者以通俗易懂的方式呈现技术细节,使初学者能够轻松理解和模仿。
1456 0
【自己动手画CPU】控制器设计(二)
使用QMovie类来实现在QT中的动态加载效果。
使用QMovie类来实现在QT中的动态加载效果。
718 0

热门文章

最新文章

下一篇
oss云网关配置