邵洲作者

最后一期:如何更新LSTM模型?(附代码)| 博士带你学LSTM

LSTM是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。在自然语言处理语言识别等一系列的应用上都取得了很好的效果。

《Long Short Term Memory Networks with Python》是澳大利亚机器学习专家Jason Brownlee的著作,里面详细介绍了LSTM模型的原理和使用。

该书总共分为十四个章节,具体如下:

第一章:什么是LSTMs?

第二章:怎么样训练LSTMs?

第三章:怎么样准备LSTMs的数据?

第四章:怎么样在Keras中开发LSTMs?

第五章:序列预测建模

第六章:如何开发一个Vanilla LSTM模型?

第七章:怎么样开发Stacked LSTMs?

第八章:开发CNN LSTM模型(本期内容)

第九章:开发Encoder-Decoder LSTMs

第十章:开发Bidirectional LSTMs

第十一章:开发生成LSTMs

第十二章:诊断和调试LSTMs

第十三章:怎么样用LSTMs做预测?

第十四章:更新LSTMs模型(本期内容)

本文的作者对此书进行了翻译整理之后,分享给大家,本文是最后一期内容。

第一期内容为:一万字纯干货|机器学习博士手把手教你入门LSTM(附代码资料)

第二期内容为:干货推荐|如何基于时间的反向传播算法来训练LSTMs?

第三期内容为:干货推荐|如何准备用于LSTM模型的数据并进行序列预测?(附代码)

第四期内容为:机器学习博士带你入门|一文学会如何在Keras中开发LSTMs(附代码)

第五期内容为:初学者如何避免在序列预测问题中遇到的陷阱?

第六期内容为:如何开发和评估Vanilla LSTM模型?

第七期内容为:博士带你学LSTM|怎么样开发Stacked LSTMs?(附代码)

第八期内容为:博士带你学LSTM|手把手教你开发CNN LSTM模型,并应用在Keras中(附代码)

第九期内容为:博士带你学LSTM|开发Encoder-Decoder LSTM模型的简单教程(附代码)

第十期内容为:博士带你学LSTM|开发Bidirectional LSTM模型的简单教程(附代码)

第十一期内容为:博士带你学LSTM|怎么开发一个LSTM模型来生成形状?(附代码)

第十二期内容为:博士带你学LSTM|如何使用学习曲线来诊断你的LSTM模型的行为?(附代码)

第十三期内容为:博士带你学LSTM|如何用LSTMs做预测?(附代码)

我们还将继续推出一系列的文章来介绍里面的详细内容,和大家一起来共同学习。

14.0 预览

14.0.1 课程目标

本课程的目标是学习在新数据可用后怎么样更新LSTM模型。完成了本课程的学习之后,你将会知道:

  • 对新数据的监控、恢复技能和提升模型学习能力的兴趣;

  • 用新的数据更新一个新的LSTM模型的5步过程;

  • 当开发具有新数据的更新了的LSTM模型时需要考虑的4个关键方法。

14.0.2 课程概览

本课程被分为3个部分,它们是:

  1. 新数据怎么样?

  2. 什么是LSTM模型更新?

  3. 更新LSTM模型的5步过程。

让我们开始吧!

14.1 新数据是什么样的?

一旦你完成了你的LSTM模型,你就可以用它来做预测。但这并不是故事的结尾。几个月或几年之后,你将开始积累新数据的语料库。这将提出一些重要的问题。其中的第一个方面是:

14.1.1 模型是否仍然有技能?

重要的是要把这个问题作为你模型的持续维护的一部分来处理。一旦你监控模型技能,也许你会注意到,随着时间的推移,预测的技能正在下降。

14.1.2 我们可以恢复模型技能吗?

LSTM模型所解决的序列预测问题的性质可能随着时间而改变。一个模型只不过和用来训练它的数据一样好。如果用于训练那你的模型的数据也是一年前的,也许新的数据收集到一天会导致一个不同和更有技能的母校。也许你的模型预测和你第一次发开模型时一样有技能。

14.1.3 我们能够提升模型技能吗?

通过使用新数据提升你模型的技能是可能的。

14.2 什么是LSTM模型更新?

更新LSTM模型指的是充分利用新数据的技术来评估和提升一个已经存在和已经完成了的LSTM模型的技术。评估的目标是去评估新的或者更新了的候选模型是不是比以前完成了的模型更具有技能。这不意味着在老的训练数据集的现有模型上调优。它明确地指出如何最好地将新的数据合并到现有模型的更新中,该模型可能涉及或者不涉及模型参数的调优。

像所有的建模一样,当更新LSTM模型的时候系统化是很重要的。

14.3 更新LSTM模型的5步过程

更新一个已经存在的LSTM模型的包括5个关键步骤。它们是:

  1. 收集新数据;

  2. 评估已经存在的模型;

  3. 开发更新模型;

  4. 评估更新模型;

  5. 替换模型。

让我们挨个来仔细看下它们。

14.3.1 收集新数据

如果没有新数据,则无法更新模型。这意味着在序列回归或者完全输入序列的情况下,在序列分类的情况下,完成完整和高质量的输入序列。

如果序列预测问题没有被改变,数据应该与原始模型开发有着相同的格式并以相同的方式被准备。理想情况下,访问用于训练现有模型的数据也将是有价值的。

你可能有数月或者数年的数据,也许比你能处理的更多。如果是这种情况,考虑重用你用来选择数据的方法来训练和评估现有模型。考虑选择序列的子样本,也许是最近的,也是是每个时间间隔的一部分。访问大量数据(甚至太多)可能是有用的。我们可能或者不能不决定使用一些更新模型(一个缓慢的过程)。但是我们可以使用大部分或者全部来评估现有的和新的候选模型(一个很快的过程)。

14.3.2 评估已经存在的模型

监控你的模型预测的技巧是至关重要的。与评估候选模型一样,评估最终模型的性能需要访问预测的以及观察的真实值。具体来说,这意味着:

  1. 预测值:你必须将一些或者所有由完成模型所作出的预测存储起来。

  2. 观察值:你必须聚集和存储一些或者全部真的或者实际观察值。

给定模型预测值和观察值,可以评估最近数据的完成模型的技能,并通过适当的时间间隔,例如小时、日、周或者月来量化它。在很长一段时间内对模型的技能有一个认识是有用的,甚至回到模型的开始。这可能需要对模型进行重新测试,并重新生成未存储的任何预测。

随着时间的推移绘制模型技能将帮助你回答关于模型技能是否保持稳定或者退化的问题。它反过来告诉你你的项目是否持久化来恢复模型技能或者开发来提升模型技能。

  • 降低模型技能。你的目标是利用新的数据恢复模型技能回到历史水平。

  • 稳定模型技能。你的目标是通过使用新的数据来提升模型技能在稳定的水平上。

  • 提高模型技能。好!你的目标可能是调查新数据与旧模型中原始数据相比发生了什么变化。

14.3.3 开发更新模型

使用新数据有很多方法。下面的4个选项供你考虑:

  • 在老的和新的数据上更新模型。现在模型被加载和训练在附件的周期中,使用原始数据的混合来拟合模型(旧数据和新数据)。

  • 在新的数据上开发新的模型。一种新的模型是从头开始开发的,只适合于新的数据。

  • 在新的和老的数据上开发新的模型。在新旧数据上建立的一个新的模型。

你选择的具体方法可能取决于你的序列预测问题、你的具体实现,或者最终是候选模型的技巧。更新模型就像加载模型和运行额外的训练周期一样简单。在内部,模型是由一个结构(如何挂在一起)和权重(数组的数字)来定义的。通常,更新考虑到找到一个好的网络结构的工作已经得到解决,并且我们主要对网络权重的重新处理过程感兴趣。例如,下面是Keras如何更新权重的片段:

  1. # load model from file 

  2. model = ... 

  3. # access new data

  4. newX, newY = ... 

  5. # fit model on new data

  6. model.fit(newX, newY, ...)

表 14.1 更新已经存在的LSTM模型的例子

调优更新模型

在更新模型时,可能需要考虑调整选项。例如:

  • 学习率。可能需要一个小的学习率来对权重进行小的调整,而不是大的跳跃。

  • 周期。可能需要对新序列进行少量的迭代来将权重拨入新数据。

  • 样本。可能只需要最近一天、周、月或者年的最新样本才能在模型中进行拨号。

考虑这些搜索和其他关注点的网格搜索,重点是将权重调整到新数据,而不是用新的和非常不同的权重来批量替换它们。

新模型调优

如果你决定从开头开始开发一个新的模型,那么整个模型选择和超参数调优会对你开放。这可能是令人畏惧的,特别是对于第一次更新项目。考虑将模型结构固定,并着重于利用新数据开发一组新的权重

也许集中精力在哪一个和多少个数据样本来拟合模型。我建议探索模型技能的敏感性分析与最近用于训练的数据范围(例如,模型拟合上个月的数据,在过去3个月的拟合,等等)。

14.3.4 评估候选模型

更新模型实际上是一个用于替换已有模型的新的候选模型。因此,必须严格评估这些模型并与现有模型进行比较。

评估模型

这意味着对用于评估现有模型和解释技能得分的相同数据进行预测,以查看候选模型如何执行。这个技能不需要一直比较,事实上,它可能不应该。我建议根据最近的一个月,比如上个月、3个月或6个月的时间,关注问题和数据的可用性来评估和比较模型技能。

鲁棒性评估 得分技能是相对的。现有的模型是基准线,改进基准线是目标。这意味着结果必须是稳健的。在一个大的测试数据语料库上重复试验,以控制随机数据中的方差。重复多次试验以控制随机算法中的方差。考虑使用统计测试来告诉你两个结果群体之间的差异是否显著以及显著到了什么程度。决定是否用新模型替换现有模型必须是一个强有力的防御决策,而唯一的防御是鲁棒的结果。

公平基准线

候选模型必须远远胜过现有的模型。现有的模型是基准线。但是允许现有模型提供一个公平的比较点是很重要的。如果你已经开发了用新的数据在n个额外周期更新现有权重的模型,那么考虑包括一个候选模型,该模型在旧的数据上更新n个额外的周期的现有模型。这个和类似的比较点将帮助你弄清楚模型技能的任何变化是由于额外的周期还是归因于新的数据。

展示结果

这个决定可能不是你自己的,例如,其他利益的相关者。考虑使用图表,如箱线图,让你在视觉上比较结果的分布,包括平均、中位数和其他百分位的结果。还考虑将结果呈现在模型技能(例如损失或者准确性)方面,但是技能的改变对用户、经验、成本或者其他业务关注的影响。

14.3.5 替换模型

一旦评估了候选模型,就可以由一个新的模型来替换现有的模型。鉴于利益相关者的签署,这应该是一个简单的过程。我将以将模型的权重和模型结构存储在单独的配置文件中。这使您可以在更新模型时单独更新模型权重,这是一个较小的且风险较小的更改。

对新模型和旧模型的并行性进行一段时间的监控是非常重要的。这种对当前和先前模型的持续监测是至关重要的。

  • 如果一切都好的话,它可以让你维护更新模块的决定;

  • 如果所有情况都不好,它会给你证明以前的模型是否应该被转换回来;

  • 它有助于向利益相关者报告系统的健康和持续改进。

14.4 扩展

你想更深入地学习更新一个拟合LSTM模型吗?本章节列出了本课程中一些具有挑战性的扩展:

  • 列出5个预测问题

14.5 总结

在本课程中,你学习到了怎么样在更新你的最后LSTM模型中充分利用新数据。特别地,你学到了:

  • 对新数据的监控、恢复技能和提升模型学习能力的兴趣;

  • 用新的数据更新一个新的LSTM模型的5步过程;

  • 当开发具有新数据的更新了的LSTM模型时需要考虑的4个关键方法。

这是最后的课程,做得好!

作者介绍:邵洲,在读博士。研究兴趣:数据挖掘、学者迁徙研究。

AMiner学术头条
AMiner学术头条

AMiner平台由清华大学计算机系研发,拥有我国完全自主知识产权。系统2006年上线,吸引了全球220个国家/地区800多万独立IP访问,数据下载量230万次,年度访问量1000万,成为学术搜索和社会网络挖掘研究的重要数据和实验平台。

https://www.aminer.cn/
专栏二维码
入门时间递归神经网络模型LSTM
6
相关数据
网格搜索技术

网格搜索是一项模型超参数优化技术,常用于优化三个或者更少数量的超参数,本质是一种穷举法。对于每个超参数,使用者选择一个较小的有限集去探索。然后,这些超参数笛卡尔乘积得到若干组超参数。网格搜索使用每组超参数训练模型,挑选验证集误差最小的超参数作为最好的超参数。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

学习曲线技术

在机器学习领域,学习曲线通常是表现学习准确率随着训练次数/时长/数据量的增长而变化的曲线

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

时间递归神经网络技术

时间递归神经网络 (aka.循环神经网络, RNN) 是一类擅长处理序列数据的神经网络,其单元连接形成一个有向环。一般人工神经网络(ANN)由多层神经元组成,典型的连接方式是在前馈神经网络中,仅存在层与层之间的互相连接,而同层神经元之间没有连接。RNN在此基础上结合了隐藏层的循环连接,从而能从序列或时序数据中学习特征和长期依赖关系。RNN隐藏层的每一单独计算单元对应了数据中某个时间节点的状态,它可以是简单神经元、神经元层或各式的门控系统。 每一单元通过参数共享的层间顺序连接,并随着数据序列传播。这一特性使得RNN中每一单元的状态都取决于它的过去状态,从而具有类似“记忆”的功能,可以储存并处理长时期的数据信号。 大多数RNN能处理可变长度的序列,理论上也可以建模任何动态系统。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

反向传播算法技术

反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法计算对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。 在神经网络上执行梯度下降法的主要算法。该算法会先按前向传播方式计算(并缓存)每个节点的输出值,然后再按反向传播遍历图的方式计算损失函数值相对于每个参数的偏导数。

数据挖掘技术

数据挖掘(英语:data mining)是一个跨学科的计算机科学分支 它是用人工智能、机器学习、统计学和数据库的交叉方法在相對較大型的数据集中发现模式的计算过程。 数据挖掘过程的总体目标是从一个数据集中提取信息,并将其转换成可理解的结构,以进一步使用。

语料库技术

语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文 "text corpus" 的涵意即为"body of text"。

敏感性分析技术

敏感性分析是研究数学模型或系统的输出的不确定性(数值或其他)如何能够分配到输入中不同的不确定性来源

语言识别技术

在自然语言处理中,语言识别或语言猜测是确定给定内容所使用的自然语言的问题。针对该问题的计算方法被视为文本分类的特例,并用各种统计方法解决。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

推荐文章
暂无评论
暂无评论~