热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dnn回归预测_seq2seq重温以及时间序列预测应用

seq2seq,是生成式模型,诞生之初主要是为解决RNN无法处理不定长配对的问题。除此之外,另一个重要的地方在于,seq2s

seq2seq,是生成式模型,诞生之初主要是为解决RNN无法处理不定长配对的问题。

9a3b4e34ff68b36e4b91cf293b5af09a.png

除此之外,另一个重要的地方在于,seq2seq的结构可以更好的处理一些场景下的输出问题,典型的就是时间序列预测的多步预测,标签之间存在着很强的序列相关性,这部分之前写过了:

马东什么:深度学习在时间序列预测上的三种策略以及一些soa模型的总结​zhuanlan.zhihu.com

seq2seq要解决的核心问题是 序列、序列、序列,无论是文本的离散序列还是时间序列预测的连续序列,因此,cnn、rnn等这类可以学习到序列相关性的模型都可以作为其输入和输出,所以基本上没看到有人把DNN放进seq2seq结构的,虽然也是可以实现的。。。

典型的应用就是:

deaf234334753a6a409d876855abe512.png

encoder端使用cnn,decoder端使用RNN,完成图片文本描述自动生成的任务。

然后时seq2seq的目标函数:

18ad0fa2d09211569772b45b4833c974.png

对于输入序列x1,...,xT与输出序列y1,...,yT'而言,通过Encoder我们能将x1,...,xT转换成上下文向量v,我们希望能在Decode阶段最大化条件概率p,可以看到输出的长度时T',输入的长度是T。

早期直接使用LSTM,输入和输出必须是等长度的:

186e6db31d58e1c7b7c4067453fb25ff.png

那个时候没有seq2seq的概念,直接用LSTM来完成机器翻译,输出是每一个cell的hidden state,因此模型结构固定了输出的长度为cells的个数,对于时间序列的多步预测也是,这意味着我们只能用n个历史特征来预测未来的n个时间步的结果。


seq2seq的两个高级概念:teacher forcing 和beam search

陈猛:简说Seq2Seq原理及实现​zhuanlan.zhihu.com
3cc30695ad0020891dc4a5526c025ce0.png
王岳王院长:Tensorflow中的Seq2Seq全家桶​zhuanlan.zhihu.com
8d4d94f5e77924a9bcabf2e67dd4a75a.png
Dreaming.O:关于Teacher Forcing 和Exposure Bias的碎碎念​zhuanlan.zhihu.com

这部分,这三篇文章都写的比较好。

142fe99e7c5fa62eaa4d35bf8f0fd44e.png

teacher forcing是训练seq2seq的一种技巧,不使用seq2seq则,如上图:

557eec86d480e6b01133e1a17d9860b0.png

”瞅“的输入是”你“的prediction与hidden state。。后面依此类推,这样的问题和之前提到过的

马东什么:时间序列多步预测的五种策略​zhuanlan.zhihu.com

递归多步预测的问题是一样的,用预测的结果作为输入特征会导致误差的积累,特别是初始的预测结果如果存在误差则后续的误差会越来越大。

思路也不复杂,我们原本是使用第t+1个时间步的预测结果和hidden state作为t+2的时间步的输入(这种训练方式的叫法这么多的吗,有叫autoregressive的,有叫贪婪模式的,有叫free running的。。。),使用teacher forcing之后,使用第t+1个时间步的真实标签和hidden state作为第t+2个时间步的输入。

teacher forcing的好处在于可以加快模型收敛同时避免了误差累计传播的问题。

这里有一个更形象的例子:

炫云:Teacher Forcing训练机制​zhuanlan.zhihu.com
062ce9bb8705f44bc9ec22571e157178.png
RNN存在着两种训练模式(mode):
free-running mode
teacher-forcing mode
free-running mode就是大家常见的那种训练网络的方式: 上一个state的输出作为下一个state的输入。而Teacher Forcing是一种快速有效地训练循环神经网络模型的方法,该模型使用来自先验时间步长的输出作为输入。
a34352c7161791cd90dc4a28f83e219c.png
b04c450774bc230a122ce788f34dcf1a.png

时间序列问题同理。

397390ad39a71167f58601f2036d12ea.png

缺点是:

这些文章讨论了在进行自然语言处理的时候存在的其他问题:

Dreaming.O:关于Teacher Forcing 和Exposure Bias的碎碎念​zhuanlan.zhihu.com
上面的『比喻』,其实就是不太严谨的 Exposure Bias 现象了。更严谨的表述,由于训练和预测的时候decode行为的不一致, 导致预测单词(predict words)在训练和预测的时候是从不同的分布中推断出来的。而这种不一致导致训练模型和预测模型直接的Gap,就叫做 Exposure Bias。

实际上说的就是特征分布偏移导致模型存在偏差的问题;

Teacher-Forcing 技术在解码的时候生成的字符都受到了 Ground-Truth 的约束,希望模型生成的结果都必须和参考句一一对应。这种约束在训练过程中减少模型发散,加快收敛速度。但是一方面也扼杀了翻译多样性的可能。
Teacher-Forcing 技术在这种约束下,还会导致一种叫做 Overcorrect(矫枉过正) 的问题。例如:
1. 待生成句的Reference为: "We should comply with the rule."
2. 模型在解码阶段中途预测出来:"We should abide"
3. 然而Teacher-forcing技术把第三个ground-truth "comply" 作为第四步的输入。那么模型根据以往学习的pattern,有可能在第四步预测到的是 "comply with"
4. 模型最终的生成变成了 "We should abide with"
5. 事实上,"abide with" 用法是不正确的,但是由于ground-truth "comply" 的干扰,模型处于矫枉过正的状态,生成了不通顺的语句。

不太了解这一块儿的,get 不到其缺点;

还有一个比较大的应用问题,那就是:

teacher forcing在训练阶段可用,预测阶段不可用,显然预测阶段t+1的真实标签是没有的,没法像训练一样t+1的真实标签和hidden state传入t+2,这个时候就需要beam search的帮助了,所以beam search实际上是在预测阶段使用的一种手段,和模型训练无关,并不会参与到模型的参数更新的过程中,类似于一种模型输出的后处理的手段

之前基础的 seq2seq 版本在输出序列时,仅在每个时刻选择概率 top 1 的单词作为这个时刻的输出单词(相当于局部最优解),然后把这些词串起来得到最终输出序列。实际上就是贪心策略
但如果使用了 Beam Search,在每个时刻会选择 top K 的单词都作为这个时刻的输出,逐一作为下一时刻的输入参与下一时刻的预测,然后再从这 K*L(L为词表大小)个结果中选 top K 作为下个时刻的输出,以此类推。在最后一个时刻,选 top 1 作为最终输出。有点带剪枝的动态规划的意思
5f33ffbd648957138c25b248e236f14b.png

这个其实本质上就是生成多个候选序列,在最后一个时间步输出的时候,所有的候选序列的不同预测时间步的概率累成得到了最终的k个结果,我们取最终累计概率最大的作为输出,具体过程可见这一篇,非常的详细:

AI Starter:如何通俗的理解beam search?​zhuanlan.zhihu.com

然而有一个主要的问题在于,时间序列预测不存在所谓的topk的概念,因为预测的都是实值,所以无法使用beam search的方式来解决预测的问题,因此,针对于这个问题实际上时间序列预测 of seq2seq 舍弃了beam search的思路,使用了teacher forcing的扩展方法——curriculum learning,对应的采样方法叫做scheduled sampling。

思路也很简单:

https://blog.csdn.net/bobobe/article/details/81297064​blog.csdn.net
78f196be715286cca1cd5e12b3a67db7.png

curriculum learning如上图所示,训练时网络将不再完全采用真实序列标记做为下一步的输入,而是以一个概率p选择真实标记,以1-p选择模型自身的输出。“scheduled sampling”即p的大小在训练过程中是变化的,就像学习率一样。作者的思想是:一开始网络训练不充分,那么p尽量选大值,即尽量使用真实标记。然后随着训练的进行,模型训练越来越充分,这时p也要减小,即尽量选择模型自己的输出。这样就尽量使模型训练和预测保持一致。

p随训练次数的变化方式有如下选择:

bec1c5c52e559a6e461606410b2f421f.png

最终的输出仍旧是按照常规的 seq2seq的方式来输出,只不过采用了这样的训练方式可以较好的提高模型的泛化性能。

代码部分,把深度序列模型系列整理完了发几个demo上来。


总的来说,seq2seq的原理并不复杂,复杂一点的是加入attention机制之后可能会有一点难理解,seq2seq+attention也可以并且也已经应用到时间序列的预测上来了,attention的内容打算单独整一块写,这里就不赘述了,配合之前写的seq2seq的一些经典结构:

马东什么:seq2seq by keras 总结​zhuanlan.zhihu.com

seq2seq的研究差不多就先到这边吧



推荐阅读
  • 深度学习与神经网络——邱锡鹏
    深度学习与神经网络——邱锡鹏-一、绪论人工智能的一个子领域神经网络:一种以(人工))神经元为基本单元的模型深度学习:一类机器学习问题,主要解决贡献度分配问题知识结构:路线图:顶 ... [详细]
  • ICRA2019最佳论文  Making Sense of Vision and Touch: SelfSupervised Learning of Multimodal Representatio
    文章目录摘要模型架构模态编码器自监督预测控制器设计策略学习控制器设计实验结论和展望会议:ICRA2019标题:《MakingSenseofVision ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • navicat生成er图_实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题
    摘要:目前复杂问题包括两种:含约束的问题和多跳关系问题。本文对ACL2020KBQA基于查询图生成的方法来回答多跳复杂问题这一论文工作进行了解读 ... [详细]
  • 论文阅读:《Bag of Tricks for LongTailed Visual Recognition with Deep Convolutional Neural Networks》
    基于深度卷积神经网络的长尾视觉识别技巧包摘要近年来,挑战性长尾分布上的视觉识别技术取得了很大的进展,主要基于各种复杂的范式(如元学习)。除了这些复杂 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • 为什么说BP神经网络就是人工神经网络的一种?
    BP(BackPropagation)网络是由Rinehart等于1986年提出的,是一种按误差逆传播算法训练的,多层前馈网络,是目前应用最广泛的神经网络模型之一。�CBP网络能学习和 ... [详细]
author-avatar
小桃爱学PHP
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有