原文:Neural Networks: Tricks of the Trade 2e
译者:飞龙
神经网络:技巧秘籍 第二版
第二版序言
自本书1998年首版以来,神经网络领域发生了巨大变化。
其中部分变化由数据量与算力提升等外部因素驱动。互联网公开了海量有标注和无标注数据,数据库与网络爬虫让持续增长的用户生成及传感原始数据变得易于获取。如今,任何拥有网络连接的人都可以解析维基百科上超过400万篇的公开文章,并从中构建数据集;任何人都可以捕获网络电视流,获取数天的视频内容来测试自己的学习算法。
另一项发展是可用算力在硬件设计与工程进步的推动下保持稳定增长。虽然受物理限制,处理器每秒运算周期数已触及上限,但处理并行化的出现抵消了这一增速放缓,其中最具代表性的就是大规模并行图形处理单元(GPU)。如今,人人都可购买GPU板卡(消费级笔记本电脑通常已预装),安装免费GPU软件,以较低成本运行计算密集型模拟。
这些发展提出了以下问题:我们能否利用如此强大的算力,理解这些日益复杂的数据集?
神经网络是一种前景广阔的方法,因其具备内在的建模能力和灵活性,能够表达解决方案;其内在的分布式特性也使其能够充分利用大规模并行计算资源。
过去二十年间,神经网络的研究焦点和训练实践经历了重要变化:深度学习在一定程度上取代了曾经更盛行的正则化问题,更准确地说,是改变了神经网络的正则化实践。如今,通过无监督逐层预训练或深度无监督嵌入使用无标注数据,通常比权重衰减、限制连接这类传统正则化方案更受青睐。这一新范式已开始在诸多场景普及,涵盖图像识别、语音识别、自然语言处理、复杂系统、神经科学和计算物理等领域。
本书第二版在第一版的基础上增添了更多技巧,重装上阵。这些技巧源于全球顶尖神经网络研究者14年(1998年至2012年)的理论研究与实验积累。在将算法应用于真实问题时,这些技巧能在速度、实现难度和准确率方面带来显著提升。
这些技巧未必有坚实的理论基础或正式验证。正如约书亚·本吉奥在第19章中所说:"此处总结的经验应作为参考指南,需要尝试和质疑,而非一成不变的定式"1。
新版第二部分首先介绍了如何更快优化神经网络、更高效利用输入的海量数据流的技巧:第18章2指出,简单的随机梯度下降(每次学习一个样本)适用于大多数神经网络的训练;第19章1介绍大量用于训练前馈神经网络、选择多重超参数的技巧与建议。当神经网络构建的表示对参数微小变化高度敏感时(例如循环神经网络中),基于小批次的二阶方法(如第20章9介绍的方法)会是更好的选择。这些章节中看似简单的优化流程,要发挥最佳效果也需要不少技巧。第21章5介绍的Torch7软件为这些神经网络提供了快速、模块化的实现。
本卷新颖的第二部分接着介绍了将不变性融入模型的技巧:在图像识别场景下,第22章4指出,通过学习图像块的k均值表示并对k均值激活做空间池化,可以实现平移不变性;第23章3指出,可以在输入空间中以弹性形变的形式直接注入不变性。
无标注数据无处不在,利用它们捕捉数据规律是许多学习算法的重要组成部分。例如,可以先学习数据的无监督模型(如第24章7和第25章10所述),再将无监督表示输入有监督分类器;第26章12指出,在神经网络的深层学习无监督嵌入,可以获得类似的性能提升,且灵活性更高。
本书最后部分介绍了神经网络在时间序列建模和最优控制系统中的应用:第27章8讨论了一种非常简单的时序建模技术,即在一个实现了丰富时序基元的"储备池"上拟合线性模型;第28章13提出了一种替代前文方法的技术,通过直接识别生成时序数据的底层动力系统实现;第29章6介绍了如何利用这些系统识别技术,通过观测控制系统(强化学习术语中的状态-动作序列)来识别马尔可夫决策过程;第30章11作为收尾,展示了当控制系统探索状态与动作空间时,如何通过拟合神经网络动态优化控制系统。
本书旨在及时梳理当前有用的技巧、理论和算法。我们希望新版中的部分章节能成为实验工作中的良伴------最终成为经典,正如首版中的部分论文已经做到的那样。终有一日,我们或许会再次想要重装上阵......
致谢
本研究得到了韩国教育、科学和技术部资助、通过韩国国家研究基金会实施的世界一流大学项目的支持,项目编号为R31-10008。编辑们也感谢德国研究基金会(DFG,项目编号MU 987/17--1)提供的部分资助。
参考文献
1 本吉奥(Y. Bengio):《深度架构基于梯度训练的实用建议》。收录于:蒙avon(G. Montavon)、奥尔(G.B. Orr)、米勒(K.-R. Müller)(编)《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第437--478页。海德堡:施普林格出版社,(2012)
2 博托(L. Bottou):《随机梯度下降技巧》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第421--436页。海德堡:施普林格出版社,(2012)
3 奇雷桑(D.C. Ciresan)、迈耶(U. Meier)、甘巴代拉(L.M. Gambardella)、施密德胡贝尔(J. Schmidhuber):《用于数字识别的深度大型多层感知机》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第581--598页。海德堡:施普林格出版社,(2012)
4 科茨(A. Coates)、吴恩达(A.Y. Ng):《使用k均值学习特征表示》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第561--580页。海德堡:施普林格出版社,(2012)
5 科洛贝尔(R. Collobert)、卡武克措格鲁(K. Kavukcuoglu)、法拉贝特(C. Farabet):《高效实现神经网络》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第537--557页。海德堡:施普林格出版社,(2012)
6 杜埃尔(S. Duell)、乌德卢夫特(S. Udluft)、斯特津(V. Sterzing):《用循环神经网络解决部分可观测强化学习问题》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第687--707页。海德堡:施普林格出版社,(2012)
7 辛顿(G.E. Hinton):《训练受限玻尔兹曼机实用指南》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第621--637页。海德堡:施普林格出版社,(2012)
8 卢克舍维修斯(M. Lukoševičius):《应用回声状态网络实用指南》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第659--686页。海德堡:施普林格出版社,(2012)
9 马滕斯(J. Martens)、苏茨凯弗(I. Sutskever):《用无海森优化训练深度和循环网络》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第479--535页。海德堡:施普林格出版社,(2012)
10 蒙avon(G. Montavon)、米勒(K.-R. Müller):《深度玻尔兹曼机与中心化技巧》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第621--637页。海德堡:施普林格出版社,(2012)
11 里德米勒(M. Riedmiller):《搭建神经强化控制器的10个步骤与若干技巧》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第735--757页。海德堡:施普林格出版社,(2012)
12 韦斯顿(J. Weston)、拉特(F. Ratle)、科洛贝尔(R. Collobert):《通过半监督嵌入实现深度学习》。收录于同上编者编《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第639--655页。海德堡:施普林格出版社,(2012)
13 齐默尔曼(H.-G. Zimmermann)、蒂茨(C. Tietz)、格罗特曼(R. Grothmann):《用循环神经网络做预测:12个技巧 》。收录于《神经网络的技巧:实战秘籍(第2版)》,LNCS系列,卷7700 ,第687--707页。海德堡:施普林格出版社,(2012)
2023年由互联网档案馆数字化,资金由Kahle/Austin基金会提供
https://archive.org/details/isbn_9783642352881
引言
-
本书源于1996年神经信息处理系统大会(NIPS)举办的一场名为*《实战秘籍》*的研讨会,该研讨会的目的就是开始收集和整理这些技巧。
-
研讨会引发的广泛兴趣促使我们扩充技巧集合并汇编成本书。尽管我们 undoubtedly 有很多技巧未能收录,但仍希望本书内容对读者有所助益,尤其是对该领域尚较陌生的新手。** 每章都包含一位或多位作者介绍的一个或多个技巧。我们尝试将相关章节归入不同板块,但也承认各板块远非完全独立。部分章节(如第13章)包含整套技巧体系,其通用性远高于其所属的类别。
-
每部分开头我们会为读者提供该部分包含的技巧摘要......以便快速浏览和参考。**
加速学习*
正则化技术:提升泛化能力
快速最小化非常重要,但前提是我们也能保证良好的泛化能力。因此接下来我们会收录一系列用于提升泛化能力的相关章节。如你所料,并没有什么技巧能在所有场景下都表现优异。不过书中包含大量示例和讨论,帮助读者判断哪种技巧最适合自己的问题。
第2章讲解最常用的技术之一:早停法。其中Lutz Prechelt将讨论这项看似简单的技术存在的陷阱。他量化了不同停止准则下泛化能力和训练时间的权衡关系,并提出了挑选合适准则的技巧。
第4章基于MacKay的思路讨论正则项,将其视为需要通过迭代搜索确定的超参数。他提出并比较了多种技巧,这些技巧能够加快超参数搜索速度、简化搜索流程,让分类网络的超参数搜索真正落地。他成功的关键在于控制超参数更新的频率,以及在海森矩阵失效时采用更优的策略。
对多个预测器取平均是提升泛化能力的知名方法。由此衍生出的两个问题是:需要多少预测器才足够?预测器数量和早停法的停止准则之间有何关联?在本节的最后一章中,David Horn等人给出了这些问题的解决方案:提出了一种能为任务估算无限数量预测器的方法。
优化网络模型与算法技巧
在本节中我们将探讨有助于优化网络模型的技巧。尽管从理论上讲,标准多层感知机(MLP)是通用逼近器,但其他架构可能更贴合具体问题。更高的契合度意味着训练速度更快,也更有机会找到稳定优质的解决方案。例如,在处理有限区域内存在局部特征的问题时,径向基函数(RBF)是更优选择。当然,选择哪种架构并不总是显而易见。
在第7章中,Gary Flake提出了一种技巧,能让MLP同时具备MLP和RBF的能力,无需在两者之间做选择。这项技巧的核心是额外增加一些输入,其值为原始输入的平方。书中同时给出了理论和直观的解释,还附有大量仿真示例。
在第8章中,Rich Caruana指出,通过给网络增加用于预测相关任务的额外输出,能提升主任务的性能。这项被称为多任务学习(MTL)的技术,会将这些额外输出和主任务一起并行训练。本章不仅给出了可作为额外输出的多种示例,还介绍了有效实施MTL的相关技巧。其中的实证案例包括:在用于学习控制车辆的神经网络中,针对肺炎预测的死亡率排序任务、以及道路跟踪任务。
在第9章中,Patrick van der Smagt和Gerd Hirzinger探讨了神经网络训练中海森矩阵的条件差问题,提出使用他们称为"线性增强前馈网络"的架构,该架构采用共享输入-隐藏权重的输入-输出快捷连接。这改善了学习问题的条件性,从而加快学习速度,这一点在基于机械臂数据的仿真示例中得到了验证。
在第10章中,Nicol Schraudolph将第1章提出的输入缩放和中心化思路进一步延伸,提出对神经网络梯度中的所有因子进行中心化处理:包括输入、激活值、误差信号和隐藏单元的斜率。他给出了实验证据,证明这项技巧的有效性。
在第11章中,Tony Plate的短篇笔记介绍了一种数值技巧,仅需要很小的内存开销,就能更精确地计算导数。
神经网络训练中的表征与先验知识融合
前几章(例如第1章)介绍的是非常通用的输入变换技巧,用于提升学习效果:这类技巧并未显式考虑问题的先验知识(当然,第2-5章讨论的正则化隐含了对权重分布的先验假设)。但对于复杂、高难度问题而言,无论黑箱方法有多出色,仅采用这种黑箱思路都是不够的。本节将探讨如何利用问题的先验知识大幅提升学习效果。相关核心议题包括:如何最优地表征数据、如何利用这种表征开展训练、如何利用数据中存在的变换不变性。这类问题是神经网络正确训练的关键,也是本节首章中Patrice Simard等人指出的相关技巧的核心。
在本章中,作者提出了一个尤为有趣的视角,讲解如何将先验知识融入数据。他们还首次介绍了正切距离分类方法及由此衍生出的相关技术,例如正切传播法。这些方法被应用于光学字符识别(OCR)这一高难度任务。
在第13章中,Larry Yaeger等人介绍了最终应用于苹果电脑Newton MessagePad®和eMate®的在线手写字符识别技巧与技术。用过这些设备的人都清楚,它们的手写识别性能十分出色。虽然本章讨论的诸多问题与OCR领域的问题有重叠(包括表征和先验知识),但解决方案是互补的。本章还很好概述了哪些设计选择是高效的,以及不同技巧(例如学习率选择、更难样本的过表征、负训练、误差强化等)如何协同发挥作用。
在手写字符识别、语音识别或医疗应用中,一个特别棘手的难题是不平衡类先验概率问题:例如某些书写风格、音素子类较为少见,或某些疾病发病率较低时,就会出现这类问题。第13章在手写识别的背景下简要讨论了这个问题,并提出了一种启发式方法,用于控制训练时样本采样的频率。
在第14章中,Steve Lawrence等人更深入地探讨了不平衡类先验概率问题。他们提出并比较了多种不同的启发式方法(先验缩放、概率采样、后验缩放、类成员均衡化),其中一种和第13章的方法类似。他们展示了这些技巧在解决心电图分类问题上的效果,并提供了一些理论解释。
许多训练技巧在小到中等规模的网络中表现良好。但当问题涉及数千个类别和数百万个示例时(这在语音识别等应用中并不罕见),这些技巧中的很多都会失效。由Jürgen Fritsch和Michael Finke撰写的本章专门探讨大规模分类问题和表征设计。其中也涉及不平衡类先验概率问题。虽然Fritsch和Finke专门以构建大规模词汇语音识别器为例阐释他们的设计方法,但很明显这些技术也适用于层次决策树的通用构建。本文一个特别有趣的结论是:人类语音专家设计、用于融入语音相关先验知识的架构,表现不如他们用凝聚聚类算法选择决策树结构的机器学习技术。
时间序列技巧
本书最后收录了两篇关于时间序列和经济预测的论文。在本节的第一章中,John Moody展示了一项优秀的
引言
本文既探讨了宏观经济预测的各类挑战,也梳理了若干神经网络解决方案。在综述之后,本书更详细地介绍了平滑正则化器、模型选择方法(如AIC、有效参数数量、非线性交叉验证),以及基于灵敏度分析的输入剪枝方法。
同时也讨论了模型的可解释性与可视化问题。
在最后一章中,拉尔夫·诺伊奈尔和汉斯·格奥尔格·齐默尔曼介绍了一套用于时间序列神经网络训练和经济预测的出色集成系统。
本书讨论了该系统的方方面面,包括输入预处理、代价函数、异常值处理。
还涉及架构正则化技术,以及针对"头重脚轻"网络问题的解决方案,即输入维度极高、输出维度极低的场景。
本书还深入探讨了"观察者-被观察者"悖论:我们既希望基于观测数据构建模型,又希望用该模型判断新输入数据的正确性,这一讨论极具启发性。
即使是对经济预测并非特别感兴趣的读者,也推荐阅读这个关于如何将先验(系统)知识融入训练过程的实用案例。
最终备注
作为最终说明,我们注意到本书各章节中的部分观点存在矛盾:例如部分作者偏好某一种正则化方法,而其他作者则持完全相反的观点。一方面,我们可以用该领域仍处于快速发展阶段来解释这些差异:在认知尚未充分完善之前,对立观点的存在不可避免。另一方面,这两种(矛盾的)观点可能都是正确的,只是适用于不同的数据集和应用场景。例如,面向含噪时间序列的方法所需的算法鲁棒性,与光学字符识别(OCR)场景所需的大相径庭。从这个角度来说,本书呈现了多样化的观点,恰好映射了该领域的蓬勃发展状态与多元应用场景。
1998年8月 珍妮与克劳斯
致谢
我们谨向所有作者的协作配合表示感谢。特别感谢史蒂文·莱姆为排版工作提供的巨大帮助。K.-R.M. 承认获得了德国研究基金会(DFG,项目号JA 379-51 与 JA 379/7)以及欧盟ESPIIT项目(项目号25387-STORM)的部分经费支持。
加速学习*
- 曾发表于:Orr, G.B. 与 Müller, K.-R.(编):LNCS 1524,ISBN 978-3-540-65311-0(1998)。
前言
有人认为既然计算机速度已经足够快,就没有必要再开发高效的算法。但我们认为,无论机器速度如何提升,算法的复杂度和问题的规模总会不断扩张,直至消耗掉所有可用的算力。因此,计算效率永远都不可忽视,也不应被忽视。此外,在追求更快求解的过程中,我们往往还能得到更优、更稳定的解。本章将聚焦于让反向传播(BP)学习过程更快、更高效的技术。本章仅包含一章,内容基于里昂·布托和杨立昆举办的一场研讨会。尽管反向传播问世后出现了诸多替代学习系统,它至今仍是最广泛使用的学习算法。这得益于它的简洁性、高效性,以及在不同问题上的普适有效性。即便如此,实际应用它时仍有不少陷阱,这些技巧正是为了解决这类问题而生。第1章从基础入手,先介绍了几种极易落地的实用技巧,针对每种技巧都附有通俗易懂的定性解释。本章还讨论了随机(在线)学习与批量学习的差异,对比了两者的优缺点,并明确指出随机学习是更常用的选择(第13页)。有一个技巧旨在最大化网络每次迭代接收到的信息量,只需掌握最优的样本打乱方式即可实现(第15页)。接下来是一组需要配合使用才能发挥最大效果的技巧:
-
如何对输入进行归一化、去相关和缩放处理(第16页)
-
如何选择Sigmoid函数(第17页)
-
如何设置目标值(分类任务)(第19页)
-
如何初始化权重(第20页)
-
如何选择学习率(第20页)
本章还讨论了其他相关问题,包括动量法的有效性,以及径向基单元与Sigmoid单元的选择(第21页)。
随后第1章引入了一些理论基础,帮助读者更深入理解前面提到的部分技巧。其中讨论了学习率对学习速度的影响,以及黑塞矩阵、误差曲面与学习率之间的关联。书中还给出了线性网络与多层网络的简单示例,以阐释理论结论。
接下来本章进阶介绍了二阶方法(第31页):
-
牛顿法:通常不具备实用性,因为它需要求逆完整黑塞矩阵,且仅适用于批量模式。
-
共轭梯度法:一种复杂度为O(N)的算法,无需使用黑塞矩阵,但需要执行线搜索,因此仅适用于批量模式。
-
拟牛顿法(布罗伊登-弗莱彻-戈德福布-尚克法,简称BFGS):一种复杂度为O(N²)的算法,可计算逆黑塞矩阵的估计值。它需要执行线搜索,同样仅适用于批量模式。
-
高斯-牛顿法:一种复杂度为O(N³)的算法,采用黑塞矩阵的平方雅可比近似,主要用于批量模式,且仅适用于均方误差损失函数。
-
勒文贝格-马夸尔特方法:对高斯-牛顿法进行了扩展,加入了正则化参数以提升稳定性。
二阶方法可以大幅加快每次迭代的学习速度,但往往伴随着极高的计算成本。不过,通过用完整或部分黑塞矩阵的近似值替代精确黑塞矩阵,我们依然可以获得二阶信息的收益,而无需承担过高的计算成本。估计完整黑塞矩阵的第一种也是最直接的方法是有限差分法,仅需两次反向传播即可计算黑塞矩阵的每一行(第35页)。另一种方法是使用平方雅可比近似,该方法可保证得到半正定矩阵,有利于提升稳定性。如果需要进一步简化,可以直接计算黑塞矩阵的对角线元素。
这里提到的所有方法都可以通过反向传播轻松实现。但遗憾的是,对于超大规模网络,多数经典二阶方法效果不佳:存储黑塞矩阵的成本过高,且多数方法要求的批量模式运算速度太慢。因此需要改用在线二阶方法。本书介绍的一种此类技术是随机对角勒文贝格-马夸尔特方法(第40页)。如果只需要黑塞矩阵与任意向量的乘积,而非黑塞矩阵本身,那么使用仅需一次反向传播即可直接计算整个乘积的方法,可以节省大量时间(第37页)。这种技术可用于计算黑塞矩阵的最大特征值及其对应的特征向量。最大特征值的倒数可用于获得对学习率的较好估计。最后,本书介绍了三种无需计算黑塞矩阵即可求得主特征值与特征向量的实用技巧:幂法、泰勒展开法,以及一种在线方法(第42页)。
1 高效反向传播*
- 曾发表于:Orr, G.B. 与 Müller, K.-R.(编):LNCS 1524,ISBN 978-3-540-65311-0(1998);G. Montavon 等人(编):《神经网络:实战技巧》第2版,LNCS 7700,第9--48页,2012年。© 施普林格-弗拉格柏林海德堡出版社 2012
Yann A. LeCun\(^1\)、Léon Bottou\(^1\)、Genevieve B. Orr\(^2\)、Klaus-Robert Müller\(^3\)
\(^1\) 美国AT&T Labs-Research 图像处理研究部,新泽西州雷德班克舒尔茨路100号,邮编07701-7033
\(^2\) 美国威拉米特大学,俄勒冈州塞勒姆州立街900号,邮编97301
\(^3\) 德国GMD FIRST研究所,柏林鲁道夫·夏乌塞大道5号,邮编12489
电子邮箱:{yann,leonb}@research.att.com,gorr@willamette.edu,klaus@first.gmd.de
摘要
本文分析了反向传播学习的收敛性,旨在解释从业者普遍观察到的常见现象。许多反向传播的不良行为可以通过鲜见于正式技术出版物中的技巧规避。本文介绍了部分此类技巧,并阐释了其生效的原理。许多作者曾指出二阶优化方法对神经网络训练有优势。但本文证明,多数"经典"二阶方法并不适用于大规模神经网络。本文提出了几种不受此类限制的方法。
1.1 引言
反向传播是极受欢迎的神经网络学习算法,这得益于它概念简洁、计算高效,且在多数场景下表现良好。然而,想要让它运行良好,甚至有时要让它正常运行,更像是一门艺术而非科学。使用反向传播设计和训练网络时,需要做出许多看似随意的选择,比如节点的数量与类型、层数、学习率、训练集与测试集等。这些选择可能至关重要,但不存在万能的决策方案,因为它们高度依赖于具体问题和数据。不过,存在一些启发式规则和底层理论,可以帮助从业者做出更优选择。下文第一部分将介绍标准反向传播算法,并讨论若干用于提升其性能的简单启发式规则或技巧。接下来本文将探讨收敛性问题。随后本文将介绍几种"经典"二阶非线性优化技术,并证明尽管现有文献中有不少相反的说法,这些技术应用于神经网络训练的效果非常有限。最后,本文将介绍几种在特定场景下确实能加速学习的二阶方法。
1.2 学习与泛化
自动机器学习有若干种方法,但大多数成功的方法都可归为基于梯度的学习方法 。如图1.1所示的学习机计算函数\(M(Z^p, W)\),其中\(Z^p\)是第\(p\)个输入模式,\(W\)代表系统中可调参数的集合。代价函数\(E^p = C(D^p, M(Z^p, W))\)用于衡量\(D^p\)(即模式\(Z^p\)对应的"正确"或期望输出)与系统实际输出之间的差异。平均代价函数\(E_{\text{train}}(W)\)是名为训练集\(\{(Z^1, D^1), ..., (Z^P, D^P)\}\)的若干输入-输出对上的误差\(E^p\)的平均值。在最简单的情况下,学习问题就是找到能使\(E_{\text{train}}(W)\)最小化的\(W\)的取值。
实践中,系统在训练集上的性能并不值得关注,更有意义的衡量指标是系统在实际部署场景中的错误率。这一性能是通过测量与训练集互不重叠的一组样本(称为测试集)上的准确率来估算的。最常用的代价函数是均方误差:
\E\^p = \\frac{1}{2}(D\^p - M(Z\^p, W))\^2, \\quad E_{\\text{train}} = \\frac{1}{P}\\sum_{p=1}\^{P} E\^p \\
图1.1 基于梯度的学习机
本章重点介绍优化代价函数最小化过程的策略。但这些策略需与提升网络泛化能力的方法结合使用,所谓泛化,即对学习系统此前从未见过的模式预测正确目标的能力(更多细节可参阅第2、3、4、5章)。
为理解泛化,我们不妨先看反向传播的工作原理。我们首先会得到一组样本,每个样本都是待学习函数的输入-输出对。由于测量过程通常存在噪声,样本中可能包含错误。我们可以想象,如果收集多组样本,那么每组样本都会因噪声和采样点的不同而略有差异。每一组这样的数据集训练出的网络,其损失函数最小值也会略有不同,且都与真实函数存在偏差。本章我们聚焦于优化针对给定样本集寻找最小值的流程。而泛化技术旨在修正因数据集选择引入到网络中的误差,二者都至关重要。
已有若干理论研究分析了通过最小化训练集上的误差来学习的过程(该过程有时被称为经验风险最小化)40,41。其中部分理论分析将泛化误差分解为两个部分:偏差和方差(例如可参阅12)。偏差衡量的是网络输出在所有可能数据集上的平均值与期望函数的差异程度,方差衡量的是网络输出在不同数据集之间的波动程度。训练初期,偏差较大,因为网络输出距离期望函数还很远;方差非常小,因为数据此时对模型的影响还很小。训练后期,偏差较小,因为网络已经学到了底层函数。但若训练时间过长,网络还会学到该数据集特有的噪声,这种情况被称为过训练。这种情况下方差会很大,因为不同数据集的噪声并不相同。可以证明,当偏差和方差的和最小时,总误差达到最小值。
使用反向传播时,有若干技术(例如早停、正则化)可最大化网络的泛化能力,其中多数技术会在后续的第2、3、5、4章中介绍。因此,本章旨在介绍最小化策略(在给定代价函数的前提下),以及提升最小化速度和质量的相关技巧。但显然,模型选择、网络架构和代价函数的选择,对于得到泛化能力良好的网络至关重要。因此请牢记:如果选用了错误的模型类别且没有进行合理的模型选择,哪怕是最优的最小化算法也无济于事。实际上,正是因为存在过训练现象,不少学者提出,精度不足的最小化算法有时反而比高精度的算法效果更好。
1.3 标准反向传播
尽管本文介绍的大部分技巧和分析主要围绕"经典"多层前馈神经网络展开,但其中多数也适用于大多数其他基于梯度的学习方法。用基于梯度的方法训练的多层学习机最简单的形式,就是若干模块的堆叠,每个模块实现函数\(X_n = F_n(W_n, X_{n-1})\),其中\(X\)是代表模块输出的向量,\(W_n\)是模块内可调参数的向量(是\(W\)的子集),\(X_{n-1}\)是模块的输入向量(同时也是上一个模块的输出向量),第一个模块的输入\(X\)就是输入模式\(Z\)。
如果已知\(E^p\)关于\(X_{n-1}\)的偏导数,那么就可以用反向递推公式计算\(E^p\)关于\(W_n\)和\(X_{n-1}\)的偏导数:
\\\frac{\\partial E\^p}{\\partial W_n} = \\frac{\\partial F}{\\partial W}(W_n, X_{n-1}) \\frac{\\partial E\^p}{\\partial X_n} \\
\\\frac{\\partial E\^p}{\\partial X_{n-1}} = \\frac{\\partial F}{\\partial X}(W_n, X_{n-1}) \\frac{\\partial E\^p}{\\partial X_n} \\quad (1.1) \\
其中\(\frac{\partial F}{\partial W}(W_n, X_{n-1})\)是函数\(F\)关于\(W\)在点\((W_n, X_{n-1})\)处计算的雅可比矩阵,\(\frac{\partial F}{\partial X}(W_n, X_{n-1})\)是函数\(F\)关于\(X\)的雅可比矩阵。向量函数的雅可比矩阵是包含所有输出关于所有输入的偏导数的矩阵。当以上方程按照从第\(N\)层到第1层的逆序应用于所有模块时,就可以计算出代价函数关于所有参数的偏导数,这种计算梯度的方式被称为反向传播。
传统多层神经网络是上述系统的特例,其模块是交替堆叠的矩阵乘法层(即权重层)和逐分量Sigmoid函数层(即神经元层):
\Y_n = W_n X_{n-1} \\quad (1.2) \\
\X_n = F(Y_n) \\quad (1.3) \\
其中\(W_n\)是矩阵,列数等于\(X_{n-1}\)的维度,行数等于\(X_n\)的维度;\(F\)是向量函数,会对输入的每个分量施加Sigmoid函数;\(Y_n\)是第\(n\)层的加权和向量,也就是第\(n\)层的总输入。对上述方程应用链式法则,即可得到经典反向传播方程:
\\\frac{\\partial E\^p}{\\partial y_n\^i} \\quad (1.4) \\
\\\frac{\\partial E\^p}{\\partial w_n\^{ij}} = x_{n-1}\^j \\frac{\\partial E\^p}{\\partial y_n\^i} \\quad (1.5) \\
\\\frac{\\partial E\^p}{\\partial x_{n-1}\^k} = \\sum_i w_{n-1}\^{ik} \\frac{\\partial E\^p}{\\partial y_n\^i} \\quad (1.6) \\
以上方程也可写成矩阵形式:
\\\frac{\\partial E\^p}{\\partial Y_n} = F'(Y_n) \\frac{\\partial E\^p}{\\partial X_n} \\quad (1.7) \\
\\\frac{\\partial E\^p}{\\partial W_n} = \\frac{\\partial E\^p}{\\partial X_n} X_{n-1}\^T \\quad (1.8) \\
\\\frac{\\partial E\^p}{\\partial X_{n-1}} = W_n\^T \\frac{\\partial E\^p}{\\partial Y_n} \\quad (1.9) \\
这种情况下的最简单的学习(最小化)流程是梯度下降算法,它按如下方式迭代调整\(W\):
\W(t) = W(t-1) - \\eta \\frac{\\partial E}{\\partial W} \\quad (1.10) \\
1.4 若干实用技巧
反向传播可能非常缓慢,尤其是对于多层网络而言------其代价面通常是非二次的、非凸的、高维的,且存在大量局部极小值或平坦区域。没有任何公式能保证:(1)网络会收敛到一个优质解;(2)收敛速度很快;(3)甚至能发生收敛。但在本节中,我们会讨论若干技巧,这些技巧不仅能大幅提升找到优质解的概率,还能将收敛时间缩短几个数量级,更详细的理论依据将在后续章节中给出。
1.4.1 随机学习与批量学习
每次迭代时,公式(1.10)需要完整遍历整个数据集,才能计算平均 梯度或真实梯度,这种方式被称为批量学习,因为更新权重前必须考虑整个"批次"的数据。另一种方式是随机(在线)学习:每次迭代\(t\)时从训练集中选取(例如随机选取)单个样本 \(\{Z^t, D^t\}\),基于该样本的误差\(E^t\)计算真实梯度的估计值,随后更新权重:
\W(t + 1) = W(t) - \\eta \\frac{\\partial E\^t}{\\partial W} \\
由于该梯度估计存在噪声,权重在每次迭代时可能不会完全沿着梯度方向移动。正如我们即将看到的,每次迭代的这类"噪声"可能是有益的。随机学习通常是基础反向传播的首选方法,原因有以下三点:
随机学习的优势
-
随机学习通常比批量学习快得多。
-
随机学习往往还能得到更优的解。
-
随机学习可用于追踪变化。
在大型冗余数据集上,随机学习通常比批量学习快得多,这一点很容易证明。试想一个简单场景:一个大小为1000的训练集,实际上是无意中由10个完全相同的100样本的集合复制而成的。对所有1000个模式取梯度平均,得到的结果和仅基于前100个样本计算梯度的结果完全一致。因此,批量梯度下降是浪费算力的,因为它会重复计算
- 单次参数更新前需要重复计算10次相同量。另一方面,随机梯度法会将一个完整训练轮次视为在100条样本组成的数据集上迭代10次。实际应用中,数据集里的样本通常不会重复出现,但大多存在大量高度相似的模式簇。例如在音素分类任务中,音素æe对应的所有模式(希望如此)都包含大量相同信息。正是这种冗余性会导致批量学习比在线学习慢得多。
此外,更新过程中的噪声往往能让随机学习得到更优的解。非线性网络通常存在多个深度不同的局部最小值,训练的目标就是找到其中某一个局部最小值。批量学习只会找到权重初始所在吸引盆对应的最小值;而在随机学习中,更新过程的噪声可能导致权重跳转到另一个可能更深的局部最小值的吸引盆中,这一结论已在部分简化场景中得到验证15,30。
当被建模的函数随时间变化时,随机学习也很有用,这是工业应用中非常普遍的场景------这类场景下数据分布会随时间逐步变化(例如由机器磨损导致)。如果学习机无法检测并跟随这种变化,就无法正确学习数据,最终会产生很大的泛化误差。使用批量学习时,这种变化无法被检测到,同时由于我们可能会对多条规则取平均,最终得到的结果会很差;而在线学习如果操作得当(见下方1.4.7节)则能跟踪变化,输出良好的近似结果。
批量学习的优势
-
收敛条件已被充分研究。
-
许多加速技术(例如共轭梯度法)仅适用于批量学习。
-
权重动态和收敛速率的相关理论分析更简单。
这些优势都源于让随机学习具备优势的同一种噪声。这种虽然对找到更优局部最小值至关重要的噪声,也会阻止模型完全收敛到最小值:由于权重波动,模型不会收敛到精确的最小值,而是陷入停滞状态。波动的大小取决于随机更新的噪声程度,局部最小值附近的波动方差与学习率\(\eta\)成正比28,27,6。
因此,为了降低波动,我们可以选择降低(退火)学习率,或者使用自适应的批量大小。理论研究表明13,30,36,35,学习率的最优退火调度形式为
$\eta \sim \frac{c}{t}$ (1.12)
其中t为已展示的样本数量,c为常数。但在实际应用中,这种退火速度可能过快(见第13章)。
另一种去除噪声的方法是使用"小批量",即初始采用较小的批量大小,随着训练推进逐步增大批量。Moller25讨论了一种实现该思路的方法,Orr31则在线性问题场景下讨论了相关方法。但确定批量大小的增长速率、以及小批量中应包含哪些输入,和确定合适的学习率一样困难。实际上,随机学习中的学习率大小对应着小批量的规模。
另外需要注意的是,由于泛化机制的存在,数据中噪声的去除问题可能不像人们想得那么关键,甚至可能在进入噪声区域之前就发生过拟合。批量训练的另一个优势是能够使用二阶方法来加快学习过程:二阶方法不仅会估计梯度,还会估计代价函数的曲面曲率,从而加快学习速度;在已知曲率的情况下,可以估算出实际最小值的近似位置。
尽管批量更新有诸多优势,但在处理非常大规模的数据集时,随机学习仍然是更常用的方法,因为它速度快得多。
1.4.2 打乱样本顺序
神经网络从最出乎意料的样本中学习速度最快,因此建议每次迭代都选择系统最不熟悉的样本。注:该建议仅适用于随机学习,因为输入的顺序对批量学习没有影响¹。
当然,没有简单的方法判断哪些输入的信息量更高,但有一个非常简单的、粗略实现该思路的技巧:连续选择的样本来自不同类别即可,因为同一类别的训练样本大多包含相似的信息。另一个判断训练样本包含多少新信息的启发式规则是:观察该输入输入网络时,网络输出与目标值之间的误差。误差越大,说明网络还没学会该输入,其中包含的新信息就越多,因此更频繁地输入这类样本是合理的。当然,这里的"大"是相对于所有其他训练样本而言的。随着网络训练推进,这些相对误差会发生变化,因此特定输入模式的呈现频率也应随之调整。修改每个模式出现概率的方法被称为"强调方案"。
选择信息量最大的样本
-
打乱训练集,使连续的训练样本几乎不会属于同一类别。
-
更频繁地输入产生大误差的样本,相比产生小误差的样本。
¹ 若梯度值的跨度较大,批量学习中梯度求和时的顺序可能会受到舍入误差的影响。
1.4.3 输入归一化
但调整输入样本的常规出现频率时需谨慎,因为这会改变网络对不同样本赋予的相对权重,这种调整是否可取需视情况而定。例如,将该技术应用到包含异常值的数据上可能会造成严重后果,因为异常值虽然会产生大误差,但并不应该被频繁输入。另一方面,该技术对提升不常出现输入的识别性能特别有益,例如音素识别中的z音(见第13、14章)。
输入变换
-
每个输入变量在训练集上的平均值应接近0。
-
缩放输入变量,使它们的协方差大致相等。
-
输入变量应尽可能互不相关。
上述两种对输入进行平移和缩放的技巧实现起来非常简单。另一个效果显著但实现难度更高的技巧是去除输入间的相关性。考虑图1.2中的简单网络:如果输入互不相关,就可以在不需要考虑\(w_2\)的情况下,求解使误差最小的\(w_1\)值,反之亦然,换言之两个变量相互独立(方程组为对角矩阵)。而如果输入相关,就需要同时求解两个变量,难度会大很多。主成分分析(也称为卡鲁南-洛韦展开)可用于去除输入中的线性相关性10。线性相关的输入(相关性的极端情况)还可能导致退化问题,拖慢学习速度。考虑这样一种情况:一个输入始终是另一个输入的2倍(\(z_2 = 2z_1\)),此时网络的输出在直线\(W_2 = v - (1/2)W_1\)上为常数,其中v为常数,因此沿这些方向的梯度为0(见图1.2),沿这些直线移动对学习没有任何影响。我们实际上是在用二维空间求解本质上的一维问题。理想情况下,我们希望能去掉其中一个输入,从而减小网络的规模。图1.3展示了输入变换的完整流程,步骤包括:(1) 平移输入使均值为0;(2) 去除输入的相关性;(3) 统一协方差。
1.4.4 Sigmoid函数
非线性激活函数赋予了神经网络非线性能力。最常见的激活函数之一是Sigmoid函数,它是一种单调递增函数,当输入趋近于\(\pm\infty\)时,函数值会趋近于某个有限值。最常见的Sigmoid函数包括标准逻辑函数\(f(x) = 1/(1 + e^{-x})\)和双曲正切函数\(f(x) = \tanh(x)\),如图1.4所示。原点对称的Sigmoid函数(例如图1.4b中的函数)更受青睐,原因与输入需要归一化一致,即,
因为它们更可能产生平均接近零的输出(这些输出是下一层的输入)。举例来说,这与逻辑函数的特性形成对比:逻辑函数的输出始终为正,因此均值必然为正。
S型函数
-
双曲正切这类对称型S型函数,通常比标准逻辑函数的收敛速度更快。
-
一个被推荐的S型函数19为:\(f(x) = 1.7159 \tanh\left(\frac{2}{3}x\right)\)。由于双曲正切函数有时计算开销较大,因此可使用多项式比值的形式对其进行近似替代。
-
有时添加一个微小的线性项是有帮助的,例如\(f(x) = \tanh(x) + ax\),以此避免平坦区域。上述推荐S型函数中的常数是经过特意选择的:当配合转换后的输入(见前文讨论)使用时,输出的方差也会接近1,因为该S型函数在有效工作范围内的实际增益大致为1。具体来说,这个S型函数具备以下性质:(a) \(f(\pm1) = \pm1\),(b) 其二阶导数在\(x=1\)处取得最大值,(c) 实际增益接近1。使用对称型S型函数的潜在问题之一在于,误差曲面在原点附近可能非常平坦。因此,最好不要用极小的权重进行初始化。
由于S型函数存在饱和特性,远离原点处的误差曲面也会呈现平坦状态。给S型函数添加微小线性项有时可以帮助规避这些平坦区域(见第9章)。
1.4.5 选择目标值
在分类问题中,目标值通常是二元的(例如\(\{-1, 1\}\))。常规思路似乎建议将目标值设为S型函数渐近线的取值,但这种方式存在诸多弊端。第一,会导致训练不稳定。训练过程会试图让输出尽可能接近目标值,但这一目标只能渐进式实现。最终,输出层甚至隐藏层的权重都会被推至越来越大的数值,此时S型函数的导数接近零。过大的权重确实会提升梯度值,但这些梯度随后会乘以一个指数级小的S型函数导数(除非给S型函数添加了扭曲项²),最终得到的权重更新量接近零,导致权重陷入停滞。第二,当输出饱和时,网络不会给出置信度相关的信息。当输入模式接近决策边界时,输出类别是不确定的。理想情况下,网络应通过处于两个可能目标值之间的输出值来体现这种不确定性,即输出不应靠近任何一条渐近线。但过大的权重会忽略不确定性,强制将所有输出推到S型函数的尾部。如此一来,网络可能会预测出错误的类别,且不会对其结果的低置信度做出任何提示。使节点饱和的大权重还会导致网络无法区分典型样本与非典型样本。针对这些问题的解决方案是:将目标值设为S型函数取值范围内的值,而非渐近线处的取值。但需要注意,要确保节点不会仅被限制在S型函数的线性区域内。将目标值设为S型函数二阶导数最大点的位置,是兼顾利用S型函数非线性、同时避免其饱和的最佳方式。这也是图1.4b中的S型函数是优质选择的另一原因:它的二阶导数在±1处取得最大值,而这恰好对应分类问题中常见的二元目标值。
目标值选择
将目标值设为S型函数二阶导数最大点的位置,以此避免输出单元饱和。
² 扭曲项是指添加到节点输出上的微小线性项,例如\(f(x) = \tanh(x) + ax\)。
1.4.6 初始化权重
权重的初始值会对训练过程产生显著影响。权重应随机选取,但要保证S型函数主要在其线性区域内被激活。如果权重全部过大,S型函数会发生饱和,导致梯度过小,使学习速度变慢;如果权重过小,梯度也会非常小。覆盖S型函数线性区域的中等权重具备两方面优势:(1) 梯度足够大,能让学习顺利推进;(2) 网络会先学习映射的线性部分,再学习难度更高的非线性部分。要实现这一目标,需要协调训练集归一化、S型函数选择以及权重初始化三个环节。我们首先要求每个节点的输出分布的标准差(\(\sigma\))近似为1。在输入层,这一要求可通过前文所述的训练集归一化来实现。要使第一隐藏层的输出标准差接近1,只需使用上述推荐的S型函数,同时保证输入到S型函数的数据标准差\(\sigma_y = 1\)即可。假设输入到某个单元的\(y_i\)互不相关,且方差为1,那么该单元加权和的标准差为:
\\\sigma_s = \\sqrt{\\sum_{i} w_i\^2} \\
因此,为了保证\(\sigma_{y_i}\)近似为1,权重应从均值为0、标准差为\(w_i \sim \mathcal{N}\left(0, \frac{1}{\sqrt{n}}\right)\)的分布中随机抽取(或从区间\(\left-\\frac{1}{\\sqrt{n}}, \\frac{1}{\\sqrt{n}}\\right\)中均匀随机抽取)。
初始化权重
前提假设如下:
-
训练集已完成归一化
-
使用了图1.4b中的S型函数
权重应从均值为0、标准差为\(\frac{1}{\sqrt{n}}}\)的分布(例如均匀分布)中随机抽取。
1.4.7 选择学习率
目前至少存在一种基于严谨原理的方法(见1.9.2节)可用于估算理想学习率\(\eta\)。学界还提出了许多其他方案(其中大部分属于经验性方法)来自动调整学习率。这类方案大多遵循以下规则:当权重向量"振荡"时降低学习率,当权重向量沿相对稳定的方向更新时提升学习率。这些方法的主要问题在于,它们不适用于随机梯度下降或在线学习,因为权重向量会持续波动。除了设置单一全局学习率外,为每个权重设置不同的学习率\(\eta_i\)显然能提升收敛效果。1.9.1节介绍了一种基于二阶导数计算的、符合严谨原理的实现方式。其核心思路是保证网络中所有权重的收敛速度大致相同。根据误差曲面的曲率不同,部分权重需要较小的学习率以避免发散,而另一些权重则需要较大的学习率才能以合理速度收敛。因此,通常低层网络的学习率应高于高层网络(见图1.21)。这修正了一个事实:在大多数神经网络架构中,代价函数关于低层权重的二阶导数通常小于高层权重的二阶导数。上述启发式规则的原理,以及如何为不同权重选择学习率实际值的建议,将在后续章节结合1.9.1节的内容详细讨论。如果使用时延神经网络(TDNN)42或卷积网络20这类共享权重的架构,学习率应与共享该权重的连接数量的平方根成正比,因为我们已经知道,梯度是若干近乎独立项的求和。
均衡学习速度
-
为每个权重设置独立的学习率
-
学习率应与输入到该单元的连接数量的平方根成正比
-
低层网络的权重学习率通常应高于高层网络
其他提升收敛效果的技巧包括:
动量
动量更新规则为:
\\\Delta w(t+1) = \\eta \\frac{\\partial E_{t+1}}{\\partial w} + \\mu \\Delta w(t), \\
当代价曲面高度非球形时,该规则可以加快训练速度:它会抑制高曲率方向上步长的幅度,从而在低曲率方向上产生更大的有效学习率43(\(\mu\)表示动量项的强度)。有观点认为动量在批量模式下通常比随机模式下更有助提升效果,但作者尚未发现针对这一结论的系统性研究。
自适应学习率
包括Sompolsky等人37、Darken与Moody9、Sutton38、Murata等人28在内的许多研究者都提出了自动调整学习率的规则(另见16)。这些规则通过根据误差增大或减小学习率,来控制收敛速度。
我们针对学习率调整算法做如下假设:
-
Hessian矩阵的最小特征值(见公式(1.27))远小于次小特征值;
-
因此经过大量迭代后,参数向量\(\mathbf{w}(t)\)会沿着Hessian矩阵最小特征向量的方向逼近极小值(见公式(1.27)、图1.5)。
在此条件下,估计参数的演化可视为一维过程,最小特征向量\(\mathbf{v}\)可通过以下方式近似(针对大量迭代场景:见图1.5):
$\mathbf{v} = \langle \frac{\partial E}{\partial \mathbf{w}} \rangle / \|\langle \frac{\partial E}{\partial \mathbf{w}} \rangle \|$,
其中\(\| \|\)表示\(L^2\)范数。因此我们可以将投影
$\xi = \langle \mathbf{v}^T \frac{\partial E}{\partial \mathbf{w}} \rangle = \|\langle \frac{\partial E}{\partial \mathbf{w}} \rangle \|$
到近似最小特征向量\(\mathbf{v}\)上,作为到极小值距离的一维度量。该距离可用于控制学习率(详见28)
\begin{align} w(t+1) &= w(t) - \eta_t \frac{\partial E_t}{\partial w}, & (1.17) \\ \mathbf{r}(t+1) &= (1-\delta)\mathbf{r}(t) + \delta \frac{\partial E_t}{\partial w}, & (0 < \delta < 1) & (1.18) \\ \eta(t+1) &= \eta(t) + \alpha \eta(t) \left( \beta \| \mathbf{r}(t+1) \| - \eta(t) \right), & (1.19) \end{align}
其中\(\delta\)控制平均的泄露程度。\(\alpha\)、\(\beta\)是常数,\(\mathbf{r}\)作为辅助变量用于计算梯度\(\frac{\partial E}{\partial w}\)的泄露平均值。注意这组规则易于计算、实现简单。我们只需额外追踪公式(1.18)中的一个向量:平均梯度\(\mathbf{r}\)。该向量的范数即可控制学习率的大小(见公式(1.19))。该算法的直观逻辑很简单:距离极小值较远(距离\(\xi\)较大)时采用大步长,接近极小值时则降低学习率(理论细节见28)。
1.4.8 径向基函数与S型单元对比
尽管大多数系统使用基于点积和S型函数的节点,但也可使用许多其他类型的单元(或层)。一种常见的替代方案是径向基函数(RBF)网络(见7, 26, 5, 32)。在RBF网络中,权重与输入向量的点积被替换为欧氏距离
图1.5 流的收敛情况。在学习最后阶段,平均流几乎呈一维状态,朝向极小值**\(\mathbf{w}^*\)** 方向,这是Hessian矩阵最小特征值方向的良好近似。
输入与权重之间采用该距离,且S型函数被替换为指数函数。例如对于单输出场景,输出活性计算方式为\(g(x) = \sum_{i=1}^{N} w_i \exp\left(-\frac{1}{2\sigma_i^2} \|x - \nu_i\|^2\right)\),其中\(\nu_i\)(\(\sigma_i\))是第\(i\)个高斯分布的均值(标准差)。
这些单元可替代标准单元,也可与标准单元共存,通常通过梯度下降(针对输出单元)和无监督聚类相结合的方式训练,以确定RBF单元的均值和宽度。与可覆盖整个空间的S型单元不同,单个RBF单元仅覆盖输入空间的一小片局部区域,这反而是优势,因为学习速度可以更快。尽管这高度依赖具体问题(见第7章),但RBF单元作为基函数集来建模输入空间的效果可能优于S型单元。另一方面,RBF的局部性在高维空间中可能是不利因素,因为需要大量单元才能覆盖整个空间。因此RBF更适合(低维)上层,S型函数更适合(高维)下层。
1.5 梯度下降的收敛性
1.5.1 基础理论
本节我们将探讨前文所述技巧背后的部分理论。首先从一维场景入手,梯度下降的更新方程可写为\(W(t+1) = W(t) - \eta \frac{dE(W)}{dW}\)。我们希望了解\(\eta\)的取值如何影响收敛性与学习速度。图1.6展示了当权重\(W\)从局部极小值附近开始时,不同\(\eta\)取值下的学习行为。
在一维场景中,最优学习率\(\eta_{opt}\)可被明确定义为:能使权重恰好通过一步更新到达极小值\(W_{min}\)的学习率(见图1.6(i)b)。若\(\eta\)小于\(\eta_{opt}\),则步长更小,收敛需要多个时间步;若\(\eta\)介于\(\eta_{opt}\)与\(2\eta_{opt}\)之间,权重会在\(W_{min}\)附近振荡,但最终会收敛(见图1.6(i)c);若\(\eta\)超过\(\eta_{opt}\)的两倍(见图1.6(i)d),则步长过大,导致权重最终到\(W_{min}\)的距离比更新前更远,会出现发散。
学习率\(\eta_{opt}\)的最优值是多少?我们先考虑一维场景。假设损失函数\(E\)可近似为二次函数,\(\eta_{opt}\)可通过将\(E\)在当前权重\(W_c\)处做泰勒展开推导得出:
$E(W) = E(W_c) + (W - W_c)\frac{dE(W_c)}{dW} + \frac{1}{2}(W - W_c)^2 \frac{d^2 E(W_c)}{dW^2} + \ldots, \quad (1.21)$
其中我们用简写\(\frac{dE(W_c)}{dW} = \frac{dE}{dW}\Big|_{W=W_c}\)。若\(E\)是二次函数,则二阶导数为常数,高阶项可忽略。对等式两边关于\(W\)求导可得:
$\frac{dE(W)}{dW} = \frac{dE(W_c)}{dW} + (W - W_c) \frac{d^2 E(W_c)}{dW^2}. \quad (1.22)$
将\(W = W_{min}\)代入,并注意到\(dE(W_{min})/dW = 0\),整理后可得:
$W_{min} = W_c - \left( \frac{d^2 E(W_c)}{dW^2} \right)^{-1} \frac{dE(W_c)}{dW}. \quad (1.23)$
最优步长下的收敛性
该算法在最优步长(1.24)下收敛。我们发现,随着收敛速率\(\gamma\)的提升,我们不仅提升了形式为\(|e_{t+1}| = \gamma |e_t|\)的单步误差的收敛速率,还提升了形式为\(E_{t+1} = \gamma^2 E_t\)的平方误差的收敛速率。不过后一个结果并不简单:实际上,误差衰减并非单步误差缩减因子\(\gamma\)的线性函数,平方误差以\(\gamma^2\)的速率二次收敛。我们将初始误差记为\(E_0\),收敛关系可写为\(E_{t+1} = \gamma^2 E_t\),其中\(\gamma\)是满足\(|e_{t+1}| = \gamma |e_t|\)的单步误差缩减因子。
图1.7 等E线
图1.8 对于LMS算法,矩阵\(H\)的特征向量和特征值用于衡量输入在输入空间中的分布范围。因此,\(H\)的每个特征值也衡量了输入沿对应特征向量方向上的协方差或分布程度,如图1.8所示。在多维场景下使用标量学习率存在弊端:我们希望\(\eta\)尽可能大,以便在损失函数\(E\)的浅坡方向(即\(H\)的小特征值对应方向)上快速收敛;但如果\(\eta\)过大,权重会在陡坡方向(即\(H\)的大特征值对应方向)上发散。为了更具体地说明这一点,我们再次对\(E\)进行展开,但此次是在最小值附近展开:
\E(W)\\approx E(W_{min})+\\frac{1}{2}(W - W_{min})\^{T}H(W_{min})(W - W_{min}). \\tag{1.30} \\
对(1.30)求导并将结果代入更新公式(1.20),可得
\\\begin{aligned} W(t+1) \&= W(t) - \\eta \\frac{\\partial E(t)}{\\partial W} \\tag{1.31} \\\\ \&= W(t) - \\eta H(W_{min})(W(t) - W_{min}) \\tag{1.32} \\end{aligned} \\
将\(W_{min}\)移到等式两侧,可得
\(W(t+1) - W_{min}) = (I - \\eta H(W_{min}))(W(t) - W_{min}). \\
如果前因子\((I - \eta H(W_{min}))\)是一个总能收缩向量的矩阵变换(即其所有特征值的模均小于1),那么更新公式将会收敛。这如何帮助我们选择学习率呢?理想情况下,我们希望在不同特征向量方向上使用不同的学习率。如果特征向量方向与权重的坐标轴对齐,实现起来非常简单:此时权重之间相互解耦,我们可以根据对应特征值为每个权重分配专属的学习率。然而,如果权重之间存在耦合,我们就需要先对\(H\)进行旋转以使其对角化,即让坐标轴与特征向量方向对齐(见图1.7b),这就是之前讨论的Hessian矩阵对角化的目的。设\(\Theta\)为旋转矩阵,使得
\\\Lambda = \\Theta H \\Theta\^T \\tag{1.34} \\
其中\(\Lambda\)是对角矩阵,且满足\(\Theta^T \Theta = I\)。此时代价函数可以表示为:
\E(W) \\approx E(W_{min}) + \\frac{1}{2} \[(W - W_{min})\^T \\Theta\^T \\Theta H(W_{min}) \\Theta\^T \\Theta (W - W_{min}). \tag{1.35} \]
作坐标变换\(\nu = \Theta(W - W_{min})\),可将上式简化为
\E(\\nu) \\approx E(0) + \\frac{1}{2} \\nu\^T \\Lambda \\nu \\tag{1.36} \\
变换后的更新方程变为
\\\nu(t + 1) = (I - \\eta \\Lambda)\\nu(t). \\tag{1.37} \\
注意\(I - \eta \Lambda\)是对角矩阵,其对角元为\(1 - \eta \lambda_i\)。当满足\(|1 - \eta \lambda_i| < 1\),即对所有\(i\)都有\(\eta < \frac{2}{\lambda_i}\)时,该方程将会收敛。如果要求所有权重使用单一标量学习率,为避免发散,我们必须满足
\\\eta \< \\frac{2}{\\lambda_{max}} \\tag{1.38} \\
其中\(\lambda_{max}\)是\(H\)的最大特征值。为获得最快的收敛速度,有
\\\eta_{opt} = \\frac{1}{\\lambda_{max}}. \\tag{1.39} \\
如果\(\lambda_{min}\)远小于\(\lambda_{max}\),那么在\(\lambda_{min}\)对应方向上的收敛速度会非常慢。事实上,收敛时间与条件数\(\kappa \equiv \lambda_{max}/\lambda_{min}\)成正比,因此特征值的分布范围越小越好。然而,由于我们已经将\(H\)旋转到与坐标轴对齐,(1.37)实际上由\(N\)个独立的一维方程组成。因此,我们可以为每个权重独立选择学习率,互不影响。可以看到,第\(i\)个权重\(\nu_i\)的最优学习率为\(\eta_{opt, i} = \frac{1}{\lambda_i}\)。
1.5.2 示例
线性网络
图1.10展示了从两个高斯分布类别中抽取的100个样本,两类分别以\((-0.4,-0.8)\)和\((0.4,0.8)\)为中心。协方差矩阵的特征值为\(0.84\)和\(0.036\)。我们使用批量模式下的LMS算法,训练了一个单层线性网络:包含2个输入、1个输出、2个权重和1个偏置(见图1.9)。图1.11展示了使用\(\eta = 1.5\)和\(\eta = 2.5\)时学习过程中的权重轨迹与误差曲线。注意,根据公式(1.38),\(\eta_{max} = 2/\lambda_{max} = 2/0.84 \approx 2.38\),当\(\eta = 2.5\)时会出现发散,如图所示。
图1.9 简单线性网络
图1.10 两类样本,分别来自以\((-0.4,-0.8)\)和\((0.4,0.8)\)为中心的高斯分布
图1.12展示了使用随机模式而非批量模式学习的相同示例,此处使用的学习率为\(\eta = 0.2\)。可以看出,由于每次迭代仅使用梯度的估计值,权重轨迹比批量模式下要嘈杂得多。损失被绘制为关于轮次的函数:此处的轮次定义为100次输入呈现,对于随机学习而言对应100次权重更新;而在批量模式下,1个轮次对应1次权重更新。
多层网络
图1.14展示了一个非常简单的多层网络的架构:它包含1个输入节点、1个隐藏节点和1个输出节点,共有2个权重和2个偏置。激活函数为\(f(x) = 1.71\tanh((2/3)x)\)。训练集包含2个类别各10个样本,两类均为标准差0.4的高斯分布:类别1的均值为-1,类别2的均值为+1;类别1的目标值为-1,类别2的目标值为+1。图1.13展示了该示例的随机学习轨迹。
权重空间 (a)
(a)
权重空间 (b)
(b)
图1.11 (a)\(\eta = 1.5\)和(b)\(\eta = 2.5\)时学习过程中的权重轨迹与误差曲线
权重空间
图1.12 随机学习时\(\eta = 0.2\)的权重轨迹与误差曲线
权重空间
图1.13 使用随机学习训练的1-1-1网络的权重轨迹与误差
1.5.3 再谈输入变换与误差曲面变换
-
对输入变量减去均值。采用该技巧的原因是,输入变量的非零均值会产生一个极大的特征值,这会导致条件数很大,即代价曲面在某些方向上非常陡峭、在其他方向上非常平缓,因此收敛速度会很慢。解决方法是对输入进行预处理,减去其均值。
-
对于单个线性神经元,(减均值后的)Hessian矩阵的特征向量沿着训练样本云的主轴方向(回顾图1.8)。在不同输入空间方向上场分布范围大的输入,其条件数会很大,学习速度慢。因此我们建议:
-
归一化输入变量的方差。
-
如果输入变量相关,这不会使误差曲面变为球形,但有可能降低其离心率。
-
相关的输入变量通常会导致\(H\)的特征向量偏离坐标轴(对比图1.7a与图1.7b),使得权重更新无法解耦。解耦的权重能让"每个权重设置一个学习率"的方法达到最优,因此我们有以下技巧:
- 对输入变量进行去相关处理。
-
-
现在假设神经元的输入变量已经完成了去相关。此时该神经元的Hessian矩阵是对角矩阵,其特征值沿坐标轴方向分布。在这种情况下,梯度并不是最优下降方向,如图1.7b所示。在P点,箭头显示梯度未指向最小值。然而,如果我们改为给每个权重分配专属的学习率(等于对应特征值的倒数),那么
为了获取最优方向,我们必须确定初始状态的方向。具体实现方式是求函数相对于输入变量的梯度,梯度的表达式如下所示: \\frac{\\partial f}{\\partial x} 其中 \(x\) 为输入变量。梯度可通过如下公式计算: \\frac{\\partial f}{\\partial x} 该公式由导数定义推导得出。
1.6 经典二阶优化方法
在前文部分,我们讨论了梯度下降法与共轭梯度法,这类方法用于寻找函数的局部最小值。不过也存在其他可用于寻找全局最小值的方法,其中一种就是牛顿法。本节我们将讨论二阶优化方法,这类方法基于函数的二阶导数:二阶导数用于衡量函数的曲率,也被称为海森矩阵,是函数二阶偏导数构成的矩阵。
-
牛顿法
-
高斯-牛顿法
-
列文伯格-马夸尔特法
-
BFGS法
图1.16 二维误差面上共轭梯度方向的示意图(对应公式(1.34))。因此公式(1.40)中的逆海森矩阵本质上是在局部将误差曲面球化。以下两种方法可证明是等价的:(a) 在未变换的权重空间中使用牛顿算法;(b) 在白化坐标系中进行常规梯度下降(见图1.15)19。
总结来说,若误差函数为二次函数,牛顿算法仅需一步即可收敛,且(与梯度下降法不同)它对输入向量的线性变换具有不变性,这意味着输入向量的平移、缩放、旋转不会影响收敛速度。不过其主要缺陷之一是需要存储并求逆\(N \times N\)维的海森矩阵,每次迭代的计算复杂度为\(O(N^3)\),因此当变量数量超过少量时就不具备实用性。由于误差函数通常是非二次的,因此无法保证收敛。如果海森矩阵不是正定的(即存在零甚至负特征值,对应误差曲面平坦或部分方向向下弯曲的情况),牛顿算法就会发散,因此海森矩阵必须满足正定性。当然,多层网络的海森矩阵通常并非在所有位置都正定。基于以上原因,原始形式的牛顿法无法用于通用的神经网络学习。不过它为开发更精妙的算法提供了良好的参考思路,如下文所述。
1.6.2 共轭梯度
共轭梯度优化有几个重要特性:(1) 它是\(O(N)\)复杂度的算法;(2) 它不会显式使用海森矩阵;(3) 它会尝试寻找下降方向,尽可能不破坏前几次迭代得到的结果;(4) 它采用线搜索策略,最重要的是(5) 它仅适用于批量学习。第三个特性如图1.16所示:假设我们选取一个下降方向(例如梯度方向),然后沿着该方向的直线进行最小化(即线搜索),随后我们应寻找一个方向,使得该方向上的梯度仅改变长度、不改变方向(即共轭方向),因为沿着这个方向移动不会破坏前一次迭代的结果。第\(k\)次迭代时的下降方向\(\rho_k\)的演化表达式为: \\rho_k = -\\nabla E(w_k) + \\beta_k \\rho_{k-1}, \\tag{1.41} 其中\(\beta_k\)的取值可遵循Fletcher-Reeves方法34: \\beta_k = \\frac{\\nabla E(w_k)\^T \\nabla E(w_k)}{\\nabla E(w_{k-1})\^T \\nabla E(w_{k-1})}, \\tag{1.42} 或Polak-Ribière方法: \\beta_k = \\frac{(\\nabla E(w_k) - \\nabla E(w_{k-1}))\^T \\nabla E(w_k)}{\\nabla E(w_{k-1})\^T \\nabla E(w_{k-1})}, \\tag{1.43} 若满足 \\rho_k\^T H \\rho_{k-1} = 0, 则两个方向\(\rho_k\)和\(\rho_{k-1}\)被定义为共轭,即共轭方向是单位海森矩阵空间中的正交方向(见图1.17)。对于上述两种\(\beta_k\)的取值方式,良好的线搜索流程对收敛都至关重要。对于具有\(N\)个变量的完美二次函数,可证明其在\(N\)步内即可收敛。对于非二次函数,Polak-Ribière方法的取值方式似乎更鲁棒。共轭梯度法(1.41)也可被视为神经网络训练中动量项选择的巧妙方案,它在中等规模、数据冗余度较低的多层网络训练中应用效果十分显著。典型应用场景涵盖函数逼近、机器人控制39、时间序列预测以及其他需要高精度的实值问题。显然,在大规模、高冗余的分类问题中,随机反向传播速度更快。尽管已有研究尝试定义小批量批次25,但共轭梯度法的主要缺陷仍是其属于批量方法(部分原因在于线搜索流程对精度的要求)。
- 34 Y.A. 勒昆等人
1.6.3 拟牛顿法(BFGS)
拟牛顿法会迭代计算逆海森矩阵的估计值,是\(O(N)\)复杂度的算法,需要线搜索,且仅适用于批量学习。逆海森矩阵的正定估计值通过利用梯度信息直接计算得出,无需进行矩阵求逆。从算法层面可以描述如下:首先初始化正定矩阵\(M = I\),随后将搜索方向设为\(\rho(t) = M(t) \nabla E(w(t))\),沿着\(\rho(t)\)方向进行线搜索,即可得到时刻\(t\)的参数更新规则: w(t) = w(t-1) - \\eta(t)\\rho(t) 该算法会存储一个\(N \times N\)的矩阵,适用于无冗余的训练集。近期已有若干变种方法被提出,旨在降低存储需求(例如可参见\[\])。
1.6.4 高斯-牛顿法与列文伯格-马夸尔特算法
这类方法采用雅各比矩阵平方近似,主要针对批量学习设计,计算复杂度为\(O(N^2)\),最重要的是它们仅适用于均方误差损失函数。函数通过雅各比矩阵的平方进行近似(另见1.2节): \\Delta w = \\left( \\sum_p \\frac{\\partial f(w, x_p)\^T}{\\partial w} \\frac{\\partial f(w, x_p)}{\\partial w} \\right)\^{-1} \\sum_p \\frac{\\partial f(w, x_p)\^T}{\\partial w} \\left( t_p - f(w, x_p) \\right) 更多讨论可参见对应章节。
1. 高效反向传播
列文伯格-马夸尔特(Levenberg-Marquardt)方法类似于上述高斯-牛顿法,但它有一个正则化参数\(\mu\),当某些特征值很小时可以避免算法发散,公式如下:
\\\Delta w = \\left( \\sum_{p} \\frac{\\partial f(w,x_p)\^T}{\\partial w} \\frac{\\partial f(w,x_p)}{\\partial w} + \\mu I \\right) \^{-1}\\nabla E(w). \\
其中\(I\)表示单位矩阵。高斯-牛顿法适用于二次代价函数,但类似的流程也适用于KL散度(Kullback-Leibler)代价,被称为自然梯度(参见例如1, 44, 2)。
1.7 多层网络Hessian信息计算技巧
接下来我们将讨论几种旨在计算完整或部分Hessian信息的技术,包括:
-
有限差分法
-
高斯-牛顿与列文伯格-马夸尔特算法的平方雅可比近似
-
Hessian矩阵对角线的计算
-
无需计算Hessian矩阵本身,直接获取Hessian与向量的乘积
其他允许计算完整Hessian的半解析技术被省略,因为它们相当复杂,且需要大量前向和反向传播步骤5, 8。
1.7.1 有限差分法
我们可以写出Hessian的第k行:
\H\^{(k)}=\\frac{\\partial ( \\nabla E(w))}{\\partial w_k} \\sim \\frac {\\nabla E(w + \\delta \\phi _ k ) - \\nabla E (w) }{ \\delta }, \\
其中\(\phi _ k = (0 , 0 , 0 , \dots , 1 , \dots , 0 )\)是除第k个位置为1外其余全为0的向量。该方法的实现步骤如下:
(1) 通过多次前向和反向传播计算总梯度;
(2) 给第k个参数加上\(\delta\),再次计算梯度;
(3) 将两次结果相减后除以\(\delta\)。
由于该计算方案存在数值误差,得到的Hessian可能不是完全对称的,此时应按照下文所述对其进行对称化处理。
1.7.2 高斯-牛顿与列文伯格-马夸尔特算法的平方雅可比近似
假设采用均方代价函数:
\E(w) = \\frac {1 }{2}\\sum _p (d_p - f(w, x_p ))\^{T}( d_p -f(w,x_p)) \\
则梯度为:
\\\frac {\\partial E ( w ) } { \\partial w } = - \\sum _ p (d_p - f(w,x_p ))\^{T}\\frac {\\partial f(w, x _p) }{\\partial w} \\
Hessian矩阵推导如下:
H(\\mathbf{w}) = \\sum_{p} \\frac{\\partial f(w, x_{p})\^T}{\\partial w} \\frac{\\partial f(w, x_{p})}{\\partial w} + \\sum_{p}(d_p-f(w,\\boldsymbol{x}_{p}))\^T \\frac{\\partial\^2 f(w,x_p)}{\\partial w\\partial w}
(1.50)
H(\\mathbf{w}) \\sim \\sum_{p} \\frac{\\partial\^2 f(w,x_p)}{\\partial w \\partial w}\], \\text{(1)}
其中省略了式(1.50)的第二项,这等价于假设网络是关于参数\(w\)的线性函数。
同样,该方法很容易实现,针对雅可比矩阵的第k列:对于所有训练样本,(1) 前向传播,(2) 将输出单元的激活值设为0,仅将第k个输出设为1,(3) 执行一次反向传播步骤,累加梯度。
\\frac{\\partial\^2 E}{\\partial w\^2} = \\begin{pmatrix} \\frac{\\partial\^2 E}{\\partial w \\partial w\^T} \& + \& \\frac{\\partial\^2 E}{\\partial w\^T \\partial w} \\ \\frac{\\partial\^2 E}{\\partial w\^T \\partial w} \& + \& \\frac{\\partial\^2 E}{\\partial w\^2} \\end{pmatrix}
(1.52)
\\frac{\\partial\^2 E}{\\partial w_{ki}\^2} = \\frac{\\partial\^2 E}{\\partial y_k\^2} w_{ki}\^2
(1.53)
使用高斯-牛顿近似(省略包含\(f'(y)\)的项),可得:
\\frac{\\partial\^2 E}{\\partial y_k\^2} = \\frac{\\frac{\\partial\^2 E}{\\partial w^2}}{(f'(y_k))^2}
(1.54)
\\frac{\\partial\^2 E}{\\partial w_{ki}\^2} = \\frac{\\partial\^2 E}{\\partial y_k\^2} w_{ki}\^2
(1.53)
对于Sigmoid型网络,参见图1.18。当\(f\)为高斯非线性函数时(如图1.18中RBF(径向基函数)网络所示),可得:
\\\frac{\\partial\^2 E}{\\partial w_{ki}\^2} = \\frac{\\partial\^2 E}{\\partial y_k\^2} (x_i - w_{ki})\^2 \\
以及
\\\frac{\\partial\^2 E}{\\partial x_i\^2} = \\sum_k \\frac{\\partial\^2 E}{\\partial y_k\^2} (x_i - w_{ki})\^2. \\
通过从最后一层到第一层运行这些方程计算对角二阶导数的代价,与用于计算梯度的常规反向传播步骤几乎相同,仅需在加权求和中使用权重的平方。该技术被应用于"最优脑损伤"剪枝流程(参见21)。
图1.18 反向传播对角Hessian:Sigmoid(左)和RBF(右)
1.7.5 计算Hessian与向量的乘积
在许多使用Hessian的方法中,Hessian仅用于与向量的乘积。有趣的是,存在一种无需计算Hessian本身即可计算此类乘积的方法。有限差分法可以完成任意向量\(\Psi\)的该计算:
\H\\Psi \\sim \\frac{1}{\\alpha} \\left( \\frac{\\partial E}{\\partial w} (w + \\alpha\\Psi) - \\frac{\\partial E}{\\partial w} (w) \\right), \\
仅需两次梯度计算(分别在点\(w\)和\(w + \alpha\Psi\)处),可通过反向传播轻松完成(\(\alpha\)是一个小常数)。该方法可通过幂法用于计算\(H\)的主特征向量和特征值。通过迭代设置:
\\\Psi(t+1) = \\frac{H\\Psi(t)}{\\\|\\Psi(t)\\\|}, \\
向量\(\Psi(t)\)将收敛到\(H\)的最大特征向量,\(|\Psi(t)|\)将收敛到对应的特征值23, 14, 10。参见33获取更精确的方法,该方法(1)不使用有限差分,(2)具有相似的复杂度。
1.8 多层网络Hessian分析
理解之前提到的若干技巧如何影响Hessian是很有意义的,即Hessian如何随网络架构和实现细节变化。通常,Hessian的特征值分布如图1.20所画:少量小特征值、大量中等特征值和少量极大特征值。
接下来我们将论证,大特征值会在训练过程中引发问题,原因如下23, 22:
-
输入或神经元状态具有非零均值22(参见第10章)
-
各层之间的二阶导数差异较大
-
状态变量之间存在相关性
为说明这一点,我们在图1.20中展示了在光学字符识别(OCR)数据上训练的网络的特征值分布。显然,特征值的分布范围很广(参见图1.19),我们观察到例如第1个和第11个特征值的比值约为8。特征值分布的长尾(参见图1.20)相当棘手,因为最大与最小特征值的比值决定了学习问题的条件数。较大的比值对应误差函数椭球形状的轴差异很大:比值越大,越容易出现墨西哥卷形状的极小值,这类极小值在短轴上极陡峭,在长轴上非常平缓。
多层网络Hessian的另一个普遍特征是层间的分布差异。在图1.21中,我们大致展示了Hessian的形状如何从第一层相对平缓,变化到最后一层相当陡峭。这会影响学习速度,也可以作为解释浅层学习慢、最后一层学习快(有时出现震荡)的一个因素。补偿这种学习尺度差异的一个技巧是使用逆对角Hessian控制学习率(参见第1.6节、第17章)。
1.9 将二阶方法应用于多层网络
在本节集中讨论如何定制二阶技术以训练大型网络之前,我们先重复一些关于应用经典二阶方法相当悲观的事实:
-
使用完整Hessian信息的技术(高斯-牛顿法、列文伯格-马夸尔特法和BFGS)仅适用于批量模式训练的小型网络,但这些小型网络并不是最需要加速的。
-
大多数二阶方法(共轭梯度法、BFGS......)需要线搜索,因此无法在随机模式下使用。
-
之前讨论的许多技巧仅适用于批量学习。
根据我们的经验,精心调优的随机梯度下降在大型分类问题上很难被超越。对于需要精确实值输出的小型问题(如函数逼近或控制问题),我们发现共轭梯度法(配合Polak-Ribiere公式(1.43))是速度、可靠性和简单性的最佳组合。最近已有若干尝试将"小批量"用于共轭梯度法解决大型冗余问题17, 25, 31。一种称为缩放共轭梯度(scaled CG)的共轭梯度优化变体似乎很有前景,这里线搜索流程被替换为1D列文伯格-马夸尔特类型算法24。
1.9.1 随机对角列文伯格-马夸尔特方法
为了得到列文伯格-马夸尔特算法的随机版本,思路是通过对每个参数的二阶导数进行运行估计来计算对角Hessian。瞬时二阶导数可通过反向传播获得,如1.7节的公式所示。
一旦得到这些运行估计,我们就可以用它们计算每个参数的独立学习率:
\\\eta_{ki} = \\frac{\\epsilon}{\<\\frac{\\partial\^2 E}{\\partial w_{ki}\^2}\> + \\mu}, \\quad (1.61) \\
其中\(\epsilon\)表示全局学习率,\(<\frac{\partial^2 E}{\partial w_{ki}^2}>\)是关于\(w_{ki}\)的对角二阶导数的运行估计,\(\mu\)是用于防止\(\eta_{ki}\)的参数。
避免在二阶导数较小,也就是优化过程进入误差函数平坦区域时发生数值爆炸问题。该滑动估计值按如下方式计算:
$\langle \frac{\partial^2 E}{\partial w_{ki}^2} \rangle_{new} = (1 - \gamma)\langle \frac{\partial^2 E}{\partial w_{ki}^2} \rangle_{old} + \gamma\frac{\partial^2 E_p}{\partial w_{ki}^2}$, $$(1.62)$$
其中\(\gamma\)是决定滑动记忆窗口大小的微小常数。二阶导数可以在训练前基于例如训练集的子集计算,由于其变化速度极慢,仅需每隔几个训练轮次重新估算一次即可。需要说明的是,相较于常规反向传播算法的额外计算开销可忽略不计,收敛速度通常来说比经过精细调优的随机梯度算法快约三倍。
在图1.22和图1.23中,我们能看到随机对角列文伯格-马夸特方法(1.61)在使用两组不同学习率的玩具示例上的收敛情况。显然,由于学习率更小,图1.22所示实验的波动比图1.23更少。
$\eta_0 = 0.12$
$\eta_1 = 0.03$
$\eta_2 = 0.02$
$\lambda_{max} = 0.84$
$\eta_{max} = 2.38$
图1.23 随机对角列文伯格-马夸特算法。数据集来自两个高斯分布,共100个样本。网络包含1个线性单元、2个输入和1个输出,即共有3个参数(2个权重,1个偏置)。
1.9.2 Hessian矩阵主特征值与特征向量计算
接下来我们介绍三种无需计算Hessian矩阵本身,即可得到其主特征值与特征向量的技巧。请回忆1.4.7节中也介绍过一种通过平均方式近似Hessian矩阵最小特征向量的方法(无需计算Hessian矩阵本身,详见28)。
幂法。 我们重申1.7.5节的讨论结论:从随机初始向量\(\Psi\)出发,该迭代过程最终会收敛至主特征向量(或主特征空间中的某个向量),且\(\|\Psi_{old}\|\)会收敛至对应的特征值14, 10。
图1.24 拥有5层的共享权重网络中,特征值随模式呈现次数变化的演化曲线。该网络共64638个连接,1278个自由参数,训练集由1000张手写数字图像组成。
泰勒展开法
另一种方法基于以下事实:梯度的微小扰动也能得到\(\mathbf{H}\)的主特征向量:
\\\Psi_{new} = \\frac{1}{\\alpha} \\left( \\frac{\\partial E}{\\partial w}(w + \\alpha \\frac{\\Psi_{old}}{\\\|\\Psi_{old}\\\|}) - \\frac{\\partial E}{\\partial w}(w) \\right), \\
其中\(\alpha\)为微小常数。该方法的单次迭代需要对训练集中的每个样本执行两次前向传播和两次反向传播步骤。
\(\Psi\)的在线计算
如下规则通过滑动平均快速获取平均Hessian矩阵的最大特征值:
\\\Psi_{new} = (1 - \\gamma)\\Psi + \\frac{1}{\\alpha} \\left( \\frac{\\partial E\^p}{\\partial w}(w + \\alpha \\frac{\\Psi_{old}}{\\\|\\Psi_{old}\\\|}) - \\frac{\\partial E}{\\partial w}(w) \\right). \\
图1.25 全连接网络(\(784 \times 30 \times 10\))的均方误差随学习率与预测最优学习率比值变化的曲线。训练集由300张手写数字图像组成。
综上,特征值/特征向量计算步骤如下:
-
- 选择随机向量用于初始化\(\Psi\)。
-
- 输入样本及其期望输出被送入网络,执行一次前向传播和一次反向传播步骤,并存储梯度\(G(w)\);
-
- 将\(\alpha \frac{\Psi_{old}}{\|\Psi_{old}\|}\)叠加到当前权重向量\(w\)上;
-
- 使用扰动后的权重向量执行一次前向传播和一次反向传播步骤,并存储扰动后的梯度\(G(w')\);
-
- 计算差值\(1/\alpha(G(w') - G(w))\),并更新特征向量的滑动平均值;
-
- 重复步骤(2)-(6),直到得到\(\Psi\)的合理稳定结果;
-
- 最优学习率由如下公式给出:\\eta_{opt} = \\frac{1}{\|\\Psi\|}.
图1.26 拥有5层的共享权重网络(\(1024 \times 1568 \times 392 \times 400 \times 100 \times 10\),共64638个本地连接、1278个自由参数(共享权重))的均方误差随学习率与预测最优学习率比值变化的曲线。训练集由1000张手写数字图像组成。
在图1.24中,我们能看到手写字符识别任务中,神经网络的的特征值随模式呈现次数变化的演化曲线。实际应用中我们会调整滑动平均的泄漏系数大小,以降低波动(图中也做了相应标注)。从图中可以看到,在呈现次数不足100次时,就能得到特征值(即学习率)的正确数量级。实验还观察到,训练过程中平均Hessian矩阵的波动很小。
在图1.25和图1.26中,我们使用相同的初始条件,将预测学习率乘以预设常数得到实际学习率,并训练固定轮次。选择常数1(即使用预测最优学习率)时,得到的残差误差与最优常数选择下的误差非常接近。换言之,"预测最优学习率"已经足够优。
1.10 讨论与结论
根据上述建议,面对多层神经网络训练问题的从业者可以按以下步骤操作:
-
打乱样本顺序
-
通过减去均值的方式将输入变量中心化
-
将输入变量标准化为标准差为1的分布
-
若可能,对输入变量进行去相关处理
-
选择使用图1.4所示S型函数的网络
-
将目标值设置为S型函数的取值范围内,通常为+1和-1
-
按照1.16节的要求将权重初始化为随机值
网络的优选训练方法可按如下规则选择:
-
若训练集规模较大(超过数百个样本)且存在冗余,且任务为分类任务,可使用经过精细调优的随机梯度法,或随机对角列文伯格-马夸特方法
-
若训练集规模不大,或任务为回归任务,使用共轭梯度法
经典二阶法在几乎所有实用场景中都难以应用。
多层神经网络中随机梯度下降的非线性动力学特性,尤其是其与泛化能力的关联,至今仍远未被充分理解。需要开展更多理论工作和系统性实验研究。
致谢。 Y.L.、L.B. 和 K.-R. M. 衷心感谢DAAD(德国学术交流中心)和NSF(美国国家科学基金会)提供的双边交流资助。
参考文献
-
[1]Amari, S.:结构参数空间中的神经网络学习------自然黎曼梯度。载于:Mozer, M.C., Jordan, M.I., Petsche, T. (编) 《神经信息处理系统进展》,第9卷,第127页。MIT出版社 (1997) -
[2]Amari, S.:自然梯度在学习中效率显著。《神经计算》10(2),251--276 (1998) -
[3]Battiti, R.:学习的一阶与二阶方法:最速下降法与牛顿法之间。《神经计算》4,141--166 (1992) -
[4]Becker, S., LeCun, Y.:利用二阶方法改进反向传播学习的收敛性。载于:Touretzky, D., Hinton, G., Sejnowski, T. (编) 《1988年联结主义模型暑期学校论文集》,第29--37页。Lawrence Erlbaum Associates出版社 (1989) -
[5]Bishop, C.M.:《模式识别的神经网络》。Clarendon出版社,牛津 (1995) -
[6]Bottou, L.:在线算法与随机近似。载于:Saad, D. (编) 《神经网络的在线学习(1997年牛顿研究所研讨会)》,《牛顿研究所系列》。剑桥大学出版社,剑桥 (1998) -
[7]Broomhead, D.S., Lowe, D.:多变量函数插值与自适应网络。《复杂系统》2,321--355 (1988) -
8 Buntine, W.L., Weigend, A.S.:《前馈神经网络中二阶导数的计算:综述》.《IEEE神经网络汇刊》 (1993)(待发表)
-
9 Darken, C.,Moody, J.E.:《随机优化学习率调度说明》// 收录于:Lippmann, R.P.,Moody, J.E.,Touretzky, D.S. 编.《神经信息处理系统进展》第3卷,第832--838页。Morgan Kaufmann出版社,圣马特奥 (1991)
-
10 Diamantaras, K.I.,Kung, S.Y.:《主成分神经网络》. Wiley出版社,纽约 (1996)
-
11 Fletcher, R.:《实用优化方法》,第8.7章:多项式时间算法,第2版,第183--188页。John Wiley & Sons出版社,纽约 (1987)
-
12 Geman, S.,Bienenstock, E.,Doursat, R.:《神经网络与偏差/方差困境》.《神经计算》4(1),1--58 (1992)
-
13 Goldstein, L.:《连续时间罗宾斯-蒙罗程序中的均方最优性》. 技术报告DRB-306,南加州大学数学系,洛杉矶 (1987)
-
14 Golub, G.H.,Van Loan, C.F.:《矩阵计算》,第2版。约翰霍普金斯大学出版社,巴尔的摩 (1989)
-
15 Heskes, T.M.,Kappen, B.:《人工神经网络中的在线学习过程》// 收录于:Tayler, J.G. 编.《神经网络的数学方法》第51卷,第199--233页。Elsevier出版社,阿姆斯特丹 (1993)
-
16 Jacobs, R.A.:《通过学习率自适应提升收敛速率》.《神经网络》1,295--307 (1988)
-
17 Kramer, A.H.,Sangiovanni-Vincentelli, A.:《神经网络的高效并行学习算法》// 收录于:Touretzky, D.S. 编.《1988年神经信息处理系统进展会议论文集》,第40--48页。Morgan Kaufmann出版社,圣马特奥 (1989)
-
18 LeCun, Y.:《联结主义学习模式(connectionist learning models)》。博士论文,巴黎第六大学(皮埃尔和玛丽·居里大学)(1987)
-
19 LeCun, Y.:《泛化与网络设计策略》// 收录于:Pfeifer, R.,Schreter, Z.,Fogelman, F.,Steels, L. 编.《联结主义视角国际会议论文集》,苏黎世大学,10月10--13日。Elsevier出版社,阿姆斯特丹 (1988)
-
20 LeCun, Y.,Boser, B.,Denker, J.S.,Henderson, D.,Howard, R.E.,Hubbard, W.,Jackel, L.D.:《基于反向传播网络的手写数字识别》// 收录于:Touretzky, D.S. 编.《神经信息处理系统进展》第2卷。Morgan Kaufmann出版社,圣马特奥 (1990)
-
21 LeCun, Y.,Denker, J.S.,Solla, S.A.:《最优脑损伤》// 收录于:Touretzky, D.S. 编.《神经信息处理系统进展》第2卷,第598--605页 (1990)
-
22 LeCun, Y.,Kanter, I.,Solla, S.A.:《误差曲面的二阶性质》// 收录于:《神经信息处理系统进展》第3卷。Morgan Kaufmann出版社,圣马特奥 (1991)
-
23 LeCun, Y.,Simard, P.Y.,Pearlmutter, B.:《通过在线估计黑塞矩阵特征向量实现学习率自动最大化》// 收录于:Giles,Hanson,Cowan 编.《神经信息处理系统进展》第5卷。Morgan Kaufmann出版社,圣马特奥 (1993)
-
24 Møller, M.:《用于快速有监督学习的缩放共轭梯度算法》.《神经网络》6,525--533 (1993)
-
25 Møller, M.:《大规模冗余训练集上的有监督学习》.《国际神经网络系统期刊》4(1),15--25 (1993)
-
26 Moody, J.E.,Darken, C.J.:《局部调谐处理单元网络中的快速学习》.《神经计算》1,281--294 (1989)
-
27 Murata, N.:博士论文,东京大学 (1992)(日语)
-
28 Murata, N.,Müller, K-R.,Ziehe, A.,Amari, S.:《变化环境中的自适应在线学习》// 收录于:Mozer, M.C.,Jordan, M.I.,Petsche, T. 编.《神经信息处理系统进展》第9卷,第599页。MIT出版社 (1997)
-
29 Oppenheim, A.V.,Schafer, R.W.:《数字信号处理》. Prentice-Hall出版社,恩格尔伍德克利夫斯 (1975)
-
30 Orr, G.B.:《随机学习的动力学与算法》。博士论文,俄勒冈研究生院 (1995)
-
31 Orr, G.B.:《利用自适应批大小去除在线搜索中的噪声》// 收录于:Mozer, M.C.,Jordan, M.I.,Petsche, T. 编.《神经信息处理系统进展》第9卷,第232页。MIT出版社 (1997)
-
32 Orr, M.J.L.:《径向基函数中心选择中的正则化》.《神经计算》7(3),606--623 (1995)
-
33 Pearlmutter, B.A.:《基于黑塞矩阵的快速精确乘法》.《神经计算》6,147--160 (1994)
-
34 Press, W.H.,Flannery, B.P.,Tekolsky, S.A.,Vetterling, W.T.:《C语言数值算法:科学编程的艺术》. 剑桥大学出版社,剑桥 (1988)
-
35 Saad, D. 编:《神经网络在线学习》(1997年牛顿研究所研讨会)。《牛顿研究所系列》. 剑桥大学出版社,剑桥 (1998)
-
36 Saad, D.,Solla, S.A.:《多层神经网络在线学习的精确解》.《物理评论快报》74,4337--4340 (1995)
-
37 Sompolinsky, H.,Barkai, N.,Seung, H.S.:《二分问题的在线学习:算法与学习曲线》// 收录于:Oh, J.H.,Kwon, C.,Cho, S. 编.《神经网络:统计力学视角》,第105--130页。世界科技出版公司,新加坡 (1995)
-
38 Sutton, R.S.:《通过梯度下降调整偏差:delta-bar-delta算法的增量版本》// 收录于:Swartout, W. 编.《第十届全国人工智能会议论文集》,第171--176页。MIT出版社,圣何塞 (1992年7月)
-
39 van der Smagt, P.:《前馈网络训练的最小化方法》.《神经网络》7(1),1--11 (1994)
-
40 Vapnik, V.:《统计学习理论的本质》. Springer出版社,纽约 (1995)
-
41 Vapnik, V.:《统计学习理论》. Wiley出版社,纽约 (1998)
-
42 Waibel, A.,Hanazawa, T.,Hinton, G.,Shikano, K.,Lang, K.J.:《基于时延神经网络的语音识别》.《IEEE声学、语音与信号处理汇刊》ASSP-37,328--339 (1989)
-
43 Wiegerinck, W.,Komoda, A.,Heskes, T.:《神经网络中带动量的学习的随机动力学》.《物理学报A》27,4425--4437 (1994)
-
44 Yang, H.H.,Amari, S.:《自然梯度下降学习规则的效率与鲁棒性》// 收录于:Jordan, M.I.,Kearns, M.J.,Solla, S.A. 编.《神经信息处理系统进展》第10卷。MIT出版社 (1998)
改善泛化的正则化技术*
前言
优秀的正则化技巧对于提升神经网络的泛化能力极为重要。其中最常用、也是最早被提出的技巧是早停法,该方法最早在文献11中有所描述。其最简形式如下:
取一个独立的验证集,例如从训练集中划出一部分,在训练过程中监测该集合的误差。训练集的误差会持续下降,而验证集的误差则会先下降再上升。早停点出现在验证集误差最低的位置,此时网络的权重能提供最佳的泛化效果。
如Lutz Prechelt在第2章中所指出的,上述描述是高度理想化的。实际中,验证集的误差曲线往往波动很大,存在多个极小值。此时选择"最优"早停点就需要在(1)泛化性能提升和(2)学习速度之间做权衡。如果对速度没有要求,那么最稳妥的策略显然是持续训练直到找到训练集的最小误差,同时监测验证集最低误差出现的位置。当然,这可能会耗费极其庞大的计算资源。
本章将介绍成本更低的策略,这些策略采用多种不同的停止准则,例如当泛化损失与训练进展的比值超过给定阈值时停止训练(见第57页)。研究使用多种基准问题开展大规模仿真实验,用于讨论和分析这些提出的停止准则之间的差异(如鲁棒性、有效性、训练时间等维度)(见第60页及后续)。目前,理论研究12,1,6尚未针对该权衡展开研究。
权重衰减 也是神经网络中常用的容量控制技术。早停法速度较快,但定义并不明确(需牢记第2章提到的相关陷阱)。另一方面,权重衰减正则项5,2已经被充分研究,但寻找合适的参数\(\lambda\)来控制权重衰减项的强度往往会非常耗时。
Thorsteinn Rögnvaldsson提出了一种简单的技巧来估算\(\lambda\),该技巧结合了两类方法的优势(见第75页):只需计算早停点解\(W_{es}\)处的梯度,再除以\(W_{es}\)的范数即可,公式为:
\\\hat{\\lambda} = \\\|\\nabla E(W_{es})\\\| / \\\|2W_{es}\\\| \\
2 早停------但何时停止?
吕茨·普雷切尔特
卡尔斯鲁厄大学信息学院
德国卡尔斯鲁厄,邮编76128
http://www.ipd.ira.uka.de/~prechelt/
摘要 验证可用于检测神经网络监督训练过程中过拟合何时出现;此时会在模型收敛前停止训练以避免过拟合(即"早停")。不过,基于验证的早停所用确切判定标准通常是临时选定的,或是通过交互方式手动停止训练。本文介绍的技巧会说明如何系统化地选择停止判定标准;这一技巧可用于加快学习流程,也可用于提升泛化能力,取决于具体场景下哪一点更重要。针对多层感知器的实证研究表明,训练时间与泛化能力之间存在权衡:在使用了12个不同问题、24种不同网络架构共1296次训练运行的混合数据集后,我得出结论:更宽松的停止标准能让泛化能力有小幅提升(本研究中平均约4%),但会花费多得多的训练时间(本研究中平均约为原来的4倍)。
2.1 早停并非那么简单
2.1.1 为何需要早停?
训练神经网络时,人们通常希望获得泛化性能最优的网络。不过,所有标准神经网络架构(如全连接多层感知器)都容易出现过度拟合10:虽然网络看起来 表现越来越好,即训练集上的误差不断下降,但在训练到某个阶段时,其表现实际上会再次变差,也就是在未见过的样本上的误差开始上升。理想情况下,人们预期网络的泛化误差在训练过程中会如图2.1所示变化。通常泛化误差通过验证误差来估算,即在验证集上的平均误差,验证集是一部分固定的、不属于训练集的样本。对抗过拟合基本有两种方式:减少参数空间的维度数量,或是减少每个维度的有效规模。减少参数数量的技术包括贪婪构造学习7、剪枝5,12,14或权重共享18。减少每个参数维度规模的技术包括正则化,如权重衰减13及其他正则化方法25,或是早停17。综述可参考8,20,实验对比可参考9。早停被广泛使用,因为它易于理解与实现,且据报告在许多场景下表现优于正则化方法,例如文献9中的结果。
本文此前发表于:Orr, G.B. 与 Müller, K.-R. 编辑的《LNCS 1524》,ISBN 978-3-540-65311-0(1998);G. Montavon 等人编辑的《神经网络:实战技巧》第2版,LNCS 7700,第53--67页,2012年。© 施普林格·弗拉格柏林海德堡出版社 2012
2.1.2 基础早停技术
在大多数关于神经网络监督训练的入门论文中,都能找到与图2.1类似的示意图。该图据称展示了训练集和未用于训练的验证集上的单样本误差随时间的变化情况(即训练误差曲线 和验证误差曲线)。基于这一变化规律,使用验证集实现早停的方法非常明确:
-
将训练数据划分为训练集和验证集,例如按2:1的比例划分。
-
仅在训练集上开展训练,定期评估验证集上的单样本误差,例如每5个训练轮次评估一次。
-
一旦验证集上的误差高于上次检查时的数值,就立即停止训练。
-
将网络在上一步的权重作为本次训练运行的结果。
该方法使用验证集来预判模型在实际使用(或在测试集上)的表现,前提是假设两者的误差相近:验证误差被用作泛化误差的估算值。
参考文献
1 Amari, S.、Murata, N.、Müller, K.-R.、Finke, M.、Yang, H.H.:《过训练与交叉验证的统计理论》.《IEEE神经网络汇刊》第8卷第5期,第985--996页(1997年)
2 Bishop, C.M.:《模式识别的神经网络》. 牛津:克莱伦登出版社(1995年)
3 Breiman, L.:《预测器的装袋法》.《机器学习》第26卷第2期,第123--140页(1996年)
4 Cowan, J.D.、Tesauro, G.、Alspector, J.(编辑):《神经信息处理系统进展第6卷》,科罗拉多州丹佛。摩根·考夫曼出版社(1994年)
5 Girosi, F.、Jones, M.、Poggio, T.:《正则化理论与神经网络架构》.《神经计算》第7卷第2期,第1095--1117页(1995年)
6 Kearns, M.:《基于逼近与估计速率的交叉验证误差界限,及其对训练-测试集划分的影响》.《神经计算》第8卷第1期,第1--85页(1993年)
7 Lincoln, W.P.、Skrzypek, J.:《聚类多重反向传播网络的协同效应》//Touretzky, D.S.(编辑):《神经信息处理系统进展第2卷》,加利福尼亚州圣马特奥,第450--460页。摩根·考夫曼出版社(1990年)
8 McKay, D.J.C.:《反向传播网络的实用贝叶斯框架》
9 Neal, R.M.:《神经网络的贝叶斯学习》.《统计学讲义》(卷号未知). 纽约:施普林格出版社(1996年)
10 Perrone, M.P.:《改进回归估计:用于方差缩减的均值方法及其向一般凸测度优化的扩展》. 布朗大学博士论文(1993年5月)
11 Plaut, D.C.、Nowlan, S.J.、Hinton, G.E.:《反向传播学习实验》. 计算机系技术报告,宾夕法尼亚州匹兹堡(1986年)
12 Wang, C.、Venkatesh, S.S.、Judd, J.S.:《学习中的最优停止与有效机器复杂度》//文献4(1994年)
13 Wolpert, D.H.:《堆叠泛化》.《神经网络》第9卷第2期,第241--245页(1992年)
50 G.B. Orr与K.-R. Müller 在第4章中,Tony Plate基于MacKay8和Neal9的贝叶斯框架 ,讨论了权重的惩罚因子(即超参数 )。寻找最优网络分为两个层级:内层循环是在固定超参数的前提下最小化训练误差;外层循环则是在超参数空间中搜索,目标是最大化数据生成的证据。整个流程速度较慢且计算成本较高,因为理论上内层搜索在外层循环的每一步都需要收敛(至局部最小值)。当该方法应用于使用交叉熵误差函数的分类网络时,外层循环搜索可能不稳定,超参数值会出现剧烈震荡,或是陷入不合理的极端值。为了让该贝叶斯框架在实际应用中表现更好,Tony Plate提出了若干技巧,可加快并简化超参数 的搜索策略(见第96页)。其中他的搜索策略围绕两个核心问题展开:(1) 应该**多频繁(何时)**更新超参数(见第96页);(2) 若黑塞矩阵超出边界,应当如何处理(见第97页起)。为了讨论(1)和(2)中不同选择带来的影响,Tony Plate基于人工示例开展了一系列模拟,最终总结出了一套简洁的规则,用于让超参数框架发挥更好的效果。
在第5章中,Jan Larsen等人提出了一种迭代梯度下降方案,用于调整正则化参数 (注意 ,输入层-隐层、隐层-输出层的权重可以使用不同的正则化项)。该技巧的原理非常简单:以正则化参数为优化目标,对验证集误差执行梯度下降,并迭代使用梯度下降的结果更新正则化参数的估计值(见第116页)。该方法适用于多种惩罚项(例如权重衰减)。计算梯度的额外计算开销可以忽略不计;不过需要估算黑塞矩阵的逆矩阵。如果训练时使用了二阶方法,那么黑塞矩阵的逆矩阵可能已经计算完成,因此几乎不需要额外工作量。否则,获取完整的黑塞矩阵信息非常繁琐,会限制该方法仅适用于较小规模的应用场景(详见第1章的讨论)。不过也可以使用黑塞矩阵的近似形式(例如对角矩阵)来限制计算时间。Jan Larsen等人通过元音数据 分类任务和时间序列预测 回归任务,验证了该技巧的适用性。对多个预测器的输出取平均是提升泛化能力的常用方法(可参考例如10,3,7,13)。David Horn等人在集成训练中提出了两个问题:(1) 需要多少个预测器才算"足够";(2) 预测器的数量会对早停的判定标准产生怎样的影响(见第134页)。他们提供了一种估算无限多预测器误差的方法,回答了上述问题,并展示了该技巧在太阳黑子预测任务中的实用价值。他们还给出了额外的理论推导,从集成内的方差最小化角度解释了这一方法取得成功的原因。Jenny与Klaus [
2.1.3 现实的复杂性
然而,在真实的神经网络训练中,验证集误差并不会像图2.1展示的那样平滑变化,反而更接近图2.2的样子。这一现象的大致解释可参见第2.4节。
正如我们所见,验证集误差在开始上升后仍有进一步下降的可能------此外,在实际情况中,我们无法得知精确的泛化误差,而是通过验证集误差对其进行估算。
判断何时获得泛化误差最小值并无明确的规则。真实的验证误差曲线几乎总是存在多个局部最小值。上述曲线在大约第400轮次开始出现严重过拟合之前,共出现了多达16个局部最小值。这些局部最小值中,有4个在出现时曾是全局最小值。本示例中的最优停止点是第205轮次。
需要注意的是,相较于在第45轮次首个"深"局部最小值出现后不久就停止,在第400轮次停止意味着学习时长增加7倍,换来的是验证集误差降低\(1.1\%\)(即找到第205轮次的最小值)。若使用的是具有代表性的数据,验证集误差就是实际网络性能的无偏估计;因此在这种情况下,我们预期泛化误差会下降\(1.1\%\)。
不过,过拟合有时无法被检测出来,因为验证集规模有限,无法完全代表待解决的问题。遗憾的是,上述曲线或任何其他验证误差曲线都不具备典型性,并非所有曲线都具有相同的定性特征。其他曲线可能永远无法达到比第一个、或是比如第三个更优的最小值;曲线中的波峰和波谷的宽度、高度和形状可能差异极大。所有曲线似乎唯一的共性是,首个局部最小值和后续局部最小值之间的差异并不大。
正如我们所见,选择停止准则主要是在训练时长和泛化误差之间做权衡。不过,部分停止准则通常能找到比其他准则更优的权衡结果。这就引出了一个问题:在决定何时停止训练时,验证误差曲线与交叉验证之间存在怎样的关联?
1.1 相关工作:与交叉验证的关联
明确如何利用损失函数为我们提供指引至关重要。
2.2 如何最佳实施早停
我们希望得到一个在尽可能早停止的同时,又能尽可能贴合数据的预测器。我们将这类预测器称为优良估计器。它不仅要足够简单,还要具备鲁棒性:不能对数据过拟合,且应产生与全训练集最优估计器接近的泛化误差率。
泛化误差率可通过训练误差率估算,为了实施早停,我们使用替代指标\(GL(x) = 10 \cdot L(x)\),其中\(L(x)\)是训练误差率。注意,我们仅将泛化误差率定义在训练集的起始阶段,它是训练集上训练误差率的相对误差。
我们希望训练过程在接近最优停止点时逐渐放缓。为形式化这一概念,我们将长度为\(k\)的训练条带定义为编号为\(n+1, \dots, n+k\)的连续\(k\)轮次,其中\(n\)能被\(k\)整除。
\P_k(t) := 1000 \\cdot \\left( \\frac{\\sum_{t'=t-k+1}\^{t} E_{tr}(t')}{k \\cdot \\min_{t''=t-k+1}\^{t} E_{tr}(t'')} - 1 \\right) \\
即"条带内的平均训练误差比条带内的最小训练误差高出多少"。注意,这一进度指标在训练的不稳定阶段会处于较高水平,这类阶段的训练集误差不降反升。这是有意为之,因为许多训练算法有时会在权重空间中采取过大的步长,从而产生这类"抖动"。不过,除非训练整体处于不稳定状态(例如发生震荡),否则该进度指标长期来看必然会趋近于零。
现在我们可以定义第二类停止准则:使用泛化损失与进度指标的比值。
\(PQ_\alpha\):当\(\frac{GL(t)}{P(k)} > \alpha\)时,在首个条带结束轮次\(t\)后停止。
下文我们默认条带长度为5,且仅在每个条带结束时测量验证集误差。
另一类完全不同的停止准则仅依据泛化误差变化的符号来判断。我们定义第三类停止准则:当连续条带内的泛化误差持续上升时停止。
\(UP_s\):当第\(t-k\)轮次后\(M_s\)成立,且\(E_{va}(t) > E_{va}(t-k)\)时,在第\(t\)轮次后停止。
\(UP\):当\(E_{va}(t) > E_{va}(t-k)\)时,在首个条带结束轮次后停止。
这一定义背后的逻辑是:当验证集误差不仅上升一次、而是在连续条带内都持续上升时,我们认为这类上升意味着最终过拟合的开始,无论实际上升幅度有多大。UP类准则的优势在于其会进行局部变化测量,因此可用于剪枝算法的场景中------这类场景要求在漫长的训练周期内,误差可以维持远高于此前最小值的水平。
这些准则单独使用都无法保证训练一定会停止。因此我们补充一条规则:当进度指标低于0.1,或是训练达到最多3000轮次时,停止训练。
所有停止准则的使用方式一致:它们在训练过程中某个时间点决定停止,训练结果即为展现出最低验证集误差\(E_{min}\)的权重集合。注意,要实现这一方案,仅需一组重复的权重集合即可。
技巧:准则选择规则
如下文第2.3节所述,我们对这三类停止准则\(GL\)、\(UP\)和\(PQ\)在多种学习问题上进行了评估。结果显示,相较于"更快"的准则,"更慢"的准则(即停止时机更晚的准则)平均能带来更优的泛化效果。不过,获得这类提升所需的平均训练时长相当长,且在使用慢准则时波动极大。准则类别之间的系统性差异很小。
对于和本研究中使用到类似的训练配置,可使用以下规则选择停止准则:
-
除非网络性能的小幅提升(例如4%)值得训练时长的大幅增加(例如4倍),否则请使用快速停止准则。
-
若要最大化找到"优良"解的概率(而非最大化解的平均质量),请使用GL准则。
-
若要最大化解的平均质量,若网络仅出现极轻微过拟合则使用PQ 准则,否则使用UP准则。
2.3 该技巧在何种场景下适用、效果如何
由于目前尚无法对停止准则的特性进行数学分析(最新研究进展可参见第2.4节),我们转而采用实验评估的方式。我们希望明确:在何种类型的问题上,各类准则需要多少训练时长,能实现何种程度的泛化效果。为覆盖足够广泛的场景,我们使用了12种不同的网络拓扑结构、12种不同的学习任务,以及14种不同的停止准则。为控制实验规模,我们仅使用了一种训练算法。
2.3.1 具体问题
为推导并评估上述停止准则选择规则,我们需要回答以下问题:
-
训练时长 :使用各类准则时训练需要多久,即它们是快 还是慢?
-
效率:训练时长中有多少是冗余的,即在选定验证误差最小值之后产生的时长?
-
有效性:最终得到的网络性能有多好?
-
鲁棒性:准则的上述特性对学习问题、网络拓扑或初始条件变化的敏感度如何?
-
权衡表现:哪些准则能提供最佳的时间-性能权衡?
-
量化方式:如何对该权衡进行量化?
这些问题的答案将直接推导出第2.2节中已呈现的规则。为找到这些问题的答案,我们记录了大量运行过程中各准则停止的时机,以及对应的网络性能。
2.3.2 实验设置
实验方法
为衡量网络性能,我们将每个数据集划分为两个互不重叠的部分:训练数据和测试数据。训练数据进一步细分为两部分,一部分是用于调整网络权重的训练样本集,另一部分是依据停止准则要求,用于在训练过程中评估网络性能的验证样本集。验证集绝不用于权重调整。这一决策是为了获取纯粹的停止准则评估结果。相比之下,在实际应用中,计算出合理的训练停止时间后,人们会将验证集样本纳入训练集,从头开始重新训练。
停止准则
本次研究所考察的停止准则包括GL1、GL2、GL3、GL5、PQ0.5、PQ0.75、PQ1、PQ2、PQ3、UP2、UP3、UP4、UP6和UP8。所有准则同步评估,即每一次单独的训练运行都会为每个准则返回一个结果。该方法可降低估计的方差。
学习任务
研究共使用了12个不同的问题,均来自PROBEN1神经网络基准数据集19。所有问题都来自真实应用领域的实际数据集,覆盖了广泛领域类别中的一部分样本,但无一存在极端非线性特征。这些问题的输入数量在8到120之间,输出数量在1到19之间,样本数量在214到7200之间。所有输入和输出都归一化到0...1的范围内。其中9个是使用1-of-n输出编码的分类任务(分别是癌症、信用卡、糖尿病、基因、玻璃、心脏、马、大豆和甲状腺任务),3个是逼近任务(建筑、耀斑和心脏任务)。
数据集与网络架构
每个问题的样本被以3种不同的随机方式划分为训练集(50%)、验证集(25%)和测试集(25%样本),最终得到36个数据集。每个数据集都用12种不同的前馈网络拓扑进行训练:分别是隐藏层数量为1、隐藏节点数为2、4、8、16、24或32的网络,以及隐藏层数量为2、第一+第二隐藏层隐藏节点数分别为2+2、4+2、4+4、8+4、8+8或16+8的网络;所有这些网络均为全连接网络,包含所有可能的快捷连接。对于每种网络拓扑和每个数据集,均进行了2次使用线性输出单元的训练,以及1次使用激活函数\(f(x) = x/(1 + |x|)\)的S型输出单元的训练。
训练算法
所有训练运行均使用RPROP训练算法21完成,采用平方误差函数,参数设置为:每个权重随机初始化\(\eta^+ = 1.1\),\(\eta^- = 0.5\),\(\Delta_0 \in 0.05...0.2\),\(\Delta_{\text{max}} = 50\),\(\Delta_{\text{min}} = 0\),初始权重在\(-0.5...0.5\)范围内随机生成。RPROP是一种快速反向传播变体,速度与quickprop6相当,但无需调整参数即可保持更高的稳定性。RPROP要求按训练轮次(epoch)进行学习,即每个训练轮次仅更新一次权重。因此,该算法在小规模训练集上无需调参即可快速运行,但不适用于大规模训练集。无需调参的特性有助于避免使用测试误差调参这一常见方法学错误。
2.3.3 实验结果
本次对比共进行了1296次训练运行,为14个准则生成了18144条停止准则性能记录。其中有270条记录(占比1.5%)来自125次不同的运行,这些运行达到了3000个epoch的上限,而非使用了停止准则本身。所有1296次运行中各停止准则的平均结果如表2.1所示。图2.3展示了表中均值所包含的方差。接下来我将先解释再解读表格和图中的各项内容。请注意,本次讨论受研究选用的特定准则集合的影响而存在偏差。
定义
对于每一次运行,我们将\(E_{va}(C)\)定义为准则\(C\)指示停止前找到的最小验证误差,即训练轮次数\(t_m(C)\)(读作"最优时刻")之后的误差。\(E_t(C)\)是对应的测试误差,用于表征网络性能。停止发生在训练轮次\(t_s(C)\)(读作"停止时刻")之后。某次运行的最优准则,是指所有被考察的准则中,达到最小\(E_{va}\)的准则里\(t_s\)最小的那个,也就是能以最快速度找到最优验证误差的准则。可能存在多个最优准则,因为多个准则可能在同一个训练轮次停止。需要注意不存在唯一的最优准则,因为它会随每次运行发生变化。如果某次运行中\(E_{va}(C)\)等于该次运行达到的最小验证误差,即\(C\)属于找到最低验证集误差的准则(无论速度快慢),则称该次运行中\(C\)是良好的。
| C | \(S_{GL2}(C)\) | \(S_C(C)\) | \(r(C)\) | \(B_e(C)\) | \(B_{GL2}(C)\) | \(P_s(C)\) |
|-------|--------------|----------|--------|----------|--------------|----------|
| GL1 | 0.956 | 0.823 | 0.308 | 1.044 | 1.010 | 0.680 |
| GL2 | 1.000 | 1.000 | 0.514 | 1.034 | 1.000 | 0.723 |
| GL3 | 1.550 | 1.450 | 0.712 | 1.025 | 0.994 | 0.748 |
| GL5 | 2.014 | 2.013 | 1.162 | 1.021 | 0.991 | 0.772 |
| PQ0.5 | 1.253 | 1.334 | 0.663 | 1.027 | 1.002 | 0.658 |
| PQ0.75| 1.466 | 1.614 | 0.863 | 1.021 | 0.998 | 0.682 |
| PQ1 | 1.635 | 1.796 | 1.038 | 1.018 | 0.994 | 0.704 |
| PQ2 | 2.184 | 2.510 | 1.636 | 1.012 | 0.990 | 0.768 |
| PQ3 | 2.614 | 3.095 | 2.140 | 1.009 | 0.988 | 0.800 |
| UP2 | 0.792 | 0.766 | 0.277 | 1.055 | 1.024 | 0.587 |
| UP3 | 1.010 | 1.264 | 0.419 | 1.026 | 1.003 | 0.631 |
| UP4 | 1.243 | 1.566 | 0.599 | 1.020 | 0.997 | 0.666 |
| UP6 | 1.786 | 2.381 | 1.125 | 1.012 | 0.990 | 0.737 |
| UP8 | 2.485 | 3.259 | 1.823 | 1.010 | 0.988 | 0.759 |
表2.1 停止准则的表现。\(S_{GL2}\)为归一化训练时间,\(B_{GL2}\)为归一化测试误差(二者均相对GL2计算)。\(r\)为训练时间冗余度。\(P_s\)为找到良好解的概率。进一步说明请参阅正文。
2.3.4 讨论:问题解答
-
1. 训练时间: 某次运行中准则\(C\)相对于另一准则\(x\)的缓慢程度为\(S_x(C) := t_s(C)/t_s(x)\),即相对总训练时间。如图所示,相对于固定准则的时间(如\(S_{GL2}(C)\)列所示)变化幅度超过4倍。因此,即使仅考虑本文使用的准则范围,特定停止准则的选择也会对训练时间产生巨大影响。相比之下,如\(S_C(C)\)列所示,即使最慢的准则,训练时长也仅为同次运行中找到相同结果的最快准则的约2.5倍。这表明即使是较慢的准则,训练时间也并非完全不合理,确实会在一定程度上有所回报。
-
2. 效率: 准则的冗余度可定义为\(r(C) := \left(t_s(C) / t_m(C)\right) - 1\),它表征了找到最终解后训练仍持续进行的时长。\(r(C)=0\)为理想状态,\(r(C)=1\)表示该准则的训练时长是必要时长的2倍。数值越低代表准则效率越高。如图所示,准则越慢,效率往往越低。即使是最快的准则,也会"浪费"约五分之一的总训练时间。较慢的准则为找到相同解所需训练时长是必要时长的2倍。
-
3. 有效性: 我们定义某次运行中准则\(C\)相对于另一准则\(x\)的糟糕程度为\(B_x(C) := E_t(C) / E_t(x)\),即其在测试集上的相对误差。\(P_s(C)\)是1296次运行中\(C\)为良好准则的运行所占比例,用于估计某次运行中\(C\)为良好准则的概率。从\(P_s\)列可以看出,即使是最快的准则也有相当高的有效性:在大约60%的情况下,它们能达到与同次运行最优准则相当的结果。另一方面,即使是最慢的准则也并非完全不会出错:其有效率达到约80%。但\(P_s\)并未说明非良好运行的结果与最优解的差距有多大。\(B_e(C)\)列和\(S_{GL2}(C)\)列显示,这种差距通常相当小;\(B_{GL2}(C)\)列表明,即使误差最低的准则,平均而言其误差也只比相对较快的GL2准则低约1%。在\(S_C(C)\)列中我们看到,几个速度稍慢的准则,平均误差仅比同次运行的最优准则高约2%。若要获得与训练时间无关的最低泛化误差,似乎需要使用GL5这类极端准则,甚至需要使用参数值较高的全部三类准则的组合。
-
4. 鲁棒性: 若某准则的性能不随学习问题和学习环境(网络拓扑、初始条件等)变化,则称其具有鲁棒性,鲁棒性程度越高代表性能受这些因素影响越小。理想的鲁棒性意味着图2.3中每个区块内的所有点高度相同(与问题无关),且所有线条长度为零(与环境无关)。请注意,缓慢程度和糟糕程度是相对于同次程序运行的最优准则来衡量的。我们观察到以下规律:
-
就缓慢程度和冗余度而言:较慢的准则鲁棒性远低于较快的准则。尤其是PQ类准则对学习问题非常敏感,在本实验设置中,信用卡和马类问题的影响最显著。
-
就糟糕程度而言:情况完全不同:较慢的准则往往比更快的准则稍具鲁棒性。PQ类准则
-
比其他标准更为鲁棒,而GL标准的鲁棒性则显著更低。对于建筑、癌症和甲状腺这三个问题,所有标准的稳定性都或多或少较差。尤其是,所有GL标准在处理建筑问题时都存在严重缺陷,该问题的数据集1是唯一一个未进行随机划分的数据集:它按照样本的时间顺序进行划分。见19。
在这种情况下,其他类型标准的慢变体鲁棒性表现良好。
------当仅分析大规模或仅分析小规模网络拓扑的影响时(相关结果未在图表中展示),也会得出类似的结论。
其中一个显著的例外是:对于隐层节点极少的网络,在最小化B_C(C)时,PQ标准比GL和UP标准更具成本效益。这背后的原因可能是此类小规模网络不存在严重过拟合:在这种情况下,将训练进度作为额外因素来判断何时停止训练是更有优势的。
总体而言,快速标准能提升训练时间的可预测性,而慢速标准则能提升解质量的可预测性。
5. 最佳权衡:
尽管整体存在普遍趋势,但部分标准的成本效益可能更高,即在训练时间与最终网络性能之间能提供更优的权衡。
表格中B_C列显示,若目标是降低单次运行所得网络的预期性能,则在测试误差和训练时间之间权衡最优的标准(按愿意投入的训练时间从少到多排序)为UP_3、UP_4和UP_6。
这些标准同样具备良好的鲁棒性。
而如果目标是进行多次运行并挑选表现最优的网络(依据验证误差判断),则P_g是相关指标,此时GL标准更为合适。
表格中用星号标注了最优权衡的标准。
图2.4展示了上述结果。
上方的曲线对应表格中的B_C列(以S_C(C)列为横轴绘制):局部极小值对应
图2.4. 标准的劣度B_C(C)与P_g随标准运行速度S_C(C)的变化
1.1 引言
本文提出了一种用于识别并分类机器学习模型最具挑战性样本的新方法。该方法以模型置信度分析和输入数据特征分析为基础。我们提出了一种可识别这些"困难"样本的方法,随后可通过定向优化或数据增强手段解决这些问题。此外,我们讨论了该发现对机器学习广泛领域的启示,强调了需要超越传统准确率指标的鲁棒性评估技术。我们的工作有助于理解模型行为,并为该领域的后续研究提供了框架。
我们还探讨了部分领域的数据稀缺问题,这类领域通常存在标注数据有限或质量较差的情况。我们提出的解决方案是采用合成数据生成技术扩充数据集,从而提升模型的泛化能力。
综上,我们的工作为应对现代机器学习任务的内在挑战提供了综合性策略。我们希望本研究的贡献能够推动该领域取得更多进展。
我们还探讨了部分领域的数据稀缺问题,这类领域通常存在标注数据有限或质量较差的情况。我们提出的解决方案是采用合成数据生成技术扩充数据集,从而提升模型的泛化能力。
2. 早停------何时停止?
65(第三阶段)。因此,训练过程中存在一个阶段,此时误差的逼近误差与复杂度(即偏置与方差)分量相互竞争,但二者均未占据主导地位(第二阶段)。关于训练过程的另一种几何解释视角,可参见Amari等人1,2的研究。
本文所探讨的早停任务,即检测第二阶段何时结束、方差分量何时占据主导。
目前已发表的早停相关理论成果似乎提供了一些实用的优秀技术:Wang等人24提出了一种基于复杂度考量计算停止点的方法,该方法完全不需要使用独立的验证集,这可以节省宝贵的训练样本。Amari等人1,2计算了将训练数据划分为训练集与验证集的最优比例。
但另一方面,这些理论分析的实际应用范围存在严重局限:Wang等人的分析仅适用于仅训练输出权重的网络,未涵盖隐层训练的场景;目前尚不清楚这些结果在多大程度上适用于本文所研究的多层网络。Amari等人的分析仅适用于训练样本极多的渐进场景,该分析并未给出停止准则的相关建议,仅说明当训练样本极多时早停并无用处,但未覆盖训练样本稀缺的更为常见场景。
目前已有其他数篇早停相关的理论研究,但均未解答我们的实践疑问。因此,综合现有理论成果,在面对训练样本极少、且验证集误差呈现如图2.2所示复杂演变的多层网络实际场景时,仍需要做出合理的停止决策。这也是本次实证研究十分必要的原因。
第二阶段的验证误差曲线呈锯齿状,是因为偏置和方差均非单调变化,更无需说平滑变化了。偏置误差分量可能出现突发性变化,是因为训练算法从未真正执行梯度下降,而是在参数空间中采取有限步长更新,有时会带来严重后果。观测到的方差误差分量也可能出现突发性变化,原因有二:其一,验证集误差仅为实际泛化误差的估计值;其二,参数变更的影响在参数空间不同区域可能差异极大。
从量化角度来看,第二阶段出现的不同误差极小值在数值上彼此接近,但在训练轮次上可能相差甚远。如果仅掌握误差曲线左侧的短段,那么验证误差的精确行为似乎难以预测,且不同训练场景下的误差行为也存在极大差异。
出于上述原因,任何一类停止准则相较于其他类别都没有显著优势(就本文所涉及的所有场景的平均情况而言),但将同一标准的运行速度调慢,通常总能略微提升泛化性能。
参考文献
-
1 Amari, S., Murata, N., Müller, K.-R., Finke, M., Yang, H.:《过训练的统计理论------交叉验证是否有效》,收录于23,第176-182页(1996年)
-
2 Amari, S., Murata, N., Müller, K.-R., Finke, M., Yang, H.:《过训练与交叉验证的渐近统计理论》,发表于《IEEE神经网络汇刊》第8卷第5期,第985-996页(1997年)
-
3 Baldi, P., Chauvin, Y.:《线性网络学习过程中泛化的时间演化》,发表于《神经计算》第3期,第589-603页(1991年)
-
4 Cowan, J. D., Tesauro, G., Alspector, J.:(编辑):《神经信息处理系统进展第6卷》,Morgan Kaufmann出版社,圣马特奥(1994年)
-
5 Le Cun, Y., Denker, J. S., Solla, S. A.:《最优脑损伤》,收录于22,第598-605页(1990年)
-
6 Fahlman, S. E.:《反向传播网络学习速度的实证研究》,技术报告CMU-CS-88-162,卡内基梅隆大学计算机学院,宾夕法尼亚州匹兹堡(1988年9月)
-
7 Fahlman, S. E., Lebiere, C.:《级联相关学习架构》,收录于22,第524-532页(1990年)
-
8 Fiesler, E.:《发育神经网络的比较参考书目》(1994年)(投稿中)
-
9 Finoff, W., Hergert, F., Zimmermann, H. G.:《通过非收敛方法改进模型选择》,发表于《神经网络》第6期,第7-18页(1993年)
-
10 Geman, S., Bienenstock, E., Doursat, R.:《神经网络与偏置/方差困境》,发表于《神经计算》第4期,第1-58页(1992年)
-
11 Hanson, S. J., Cowan, J. D., Giles, C. L.:(编辑):《神经信息处理系统进展第5卷》,Morgan Kaufmann出版社,圣马特奥(1993年)
-
12 Hassibi, B., Stork, D. G.:《用于网络剪枝的二阶导数:最优脑外科手术》,收录于11,第164-167页(1993年)
-
13 Krogh, A., Hertz, J. A.:《简单的权重衰减可提升泛化能力》,收录于4,第950-951页(1992年)
-
14 Levin, A. U., Leen, T. K., Moody, J. E.:《基于主成分的快速剪枝》,收录于4(1994年)
-
15 Lippman, R. P., Moody, J. E., Touretzký, D. S.:(编辑):《神经信息处理系统进展第3卷》,Morgan Kaufmann出版社,圣马特奥(1990年)
-
16 Moody, J. E., Hanson, S. J., Lippman, R. P.:(编辑):《神经信息处理系统进展》,Morgan Kaufmann出版社,圣马特奥(1992年)
-
17 Morgan, N., Bourlard, H.:《前馈网络的泛化与参数估计:若干实验》,收录于2,第0-67页(1990年)
-
18 Nowlan, S. J., Hinton, G. E.:《通过软权重共享简化神经网络》,发表于《神经计算》第6卷第4期,第47-59页(1992年)
-
19 Prechelt, L.:《PROBEN:神经网络训练算法的基准测试集与基准规则》,技术报告2/94,德国卡尔斯鲁厄大学信息学院。匿名FTP地址:ftp://ftp.ira.u-a.de/pub/papers/reports/gg/-ps.gz(1990年9月)
-
20 Reed, R.:《剪枝算法综述》,发表于《IEEE神经网络汇刊》第4卷第1期,第7-46页(1993年)
-
21 Riedmiller, M., Braun, H.:《一种更快速反向传播学习的直接自适应方法:RPROP算法》,收录于《IEEE国际神经网络会议论文集》,加利福尼亚州旧金山,第586-591页(1992年4月)
22 图雷茨基(Touretzky), D.S.(编):《神经网络信息处理系统进展2》。摩根·考夫曼出版公司,圣马特奥(1990)
23 图雷茨基, D.S.、莫泽(Mozer), M.C.、哈塞尔莫(Hasselmo), M.E.(编):《神经网络信息处理系统进展8》。麻省理工学院出版社,剑桥(1996)
24 王(Wang), C.、文卡特斯(Venkatesh), S.S.、贾德(Judd), J.S.:《学习中的最优停止与有效模型复杂度》。载于:4(1994)
25 魏根德(Weigend), A.S.、鲁梅尔哈特(Rumelhart), D.E.、休伯曼(Huberman), B.A.:《通过权重消除实现泛化及其在预测中的应用》。载于:15,第875--882页(1991)
3 估计权重衰减参数的简单技巧*
索尔斯坦·S·罗格瓦尔德松
瑞典哈尔姆斯塔德大学计算机架构中心(CCA),邮政信箱823,S-301 18 哈尔姆斯塔德,瑞典
摘要 。我们提出了一种获取权重衰减参数\(\lambda\)的近似估计的简单技巧。该方法将早停和权重衰减相结合,得到估计式\(\hat{\lambda} = \|\nabla E(W_{es})\|/\|2 W_{es}\|\),其中\(W_{es}\)是早停点的权重集合,\(E(W)\)是训练数据拟合误差。我们在一个合成数据集和四个真实数据集上对该估计方法进行验证,并与用于\(\lambda\)选择的标准交叉验证流程进行了对比。结果表明,\(\hat{\lambda}\)作为最优权重衰减参数值的估计量,效果与标准搜索估计相当,但计算速度快了几个数量级。结果还表明,与使用早停训练的网络委员会相比,权重衰减能够产生明显更优的解决方案。
- 此前发表于:奥尔(Orr), G.B. 与米勒(Müller), K.-R.(编):《LNCS 1524》,ISBN 978-3-540-65311-0(1998)。G. 蒙塔冯(Montavon)等(编):《神经网络:实战技巧》第2版,LNCS 7700,第69--89页,2012。© 施普林格-弗拉格柏林海德堡2012
3.1 引言
一个不对所用模型施加约束的回归问题是不适定的21,因为存在无穷多个函数可以完美拟合有限组训练数据。此外,真实数据集往往存在带噪声的输入和/或输出,这就是为什么完美拟合数据的模型在样本外表现上往往表现较差。由于建模者的任务是找到底层函数的模型,同时避免对噪声过拟合,模型必须基于除训练数据拟合度之外还包含其他质量指标的标准。
在神经网络领域,避免过拟合的两种最常见方法是早停和权重衰减17。早停的优势是速度快,因为它缩短了训练时间,但劣势是定义模糊,无法充分利用可用数据。另一方面,权重衰减的优势是定义清晰,但劣势是相当耗时。这是因为需要花费大量时间通过遍历多个\(\lambda\)值并使用例如交叉验证25估计样本外表现,来为权重衰减参数(\(\lambda\))选择合适的值。
本文中,我们提出了一种针对标准权重衰减情况估计权重衰减参数的非常简单的方法。该方法将早停与权重衰减相结合,从而融合了早停的速度优势和定义更清晰的权重衰减方法的优势,提供了一种在实证测试中效果与标准搜索方法估计基本相当的权重衰减参数。本文还证明,与例如将网络组合为网络委员会16等更简单的方法相比,选择\(\lambda\)的繁琐过程可能带来更优的结果。
本文结构如下。第2节介绍了使用权重衰减或早停的原因及背景。第3节回顾了选择\(\lambda\)的标准方法,并介绍了我们的新估计方法。第4节给出了该方法效果的实证证据,第5节总结了我们的结论。
3.2 不适定问题、正则化及相关内容...
3.2.1 不适定问题
在下文中,我们用\(\boldsymbol{x}(n)\)表示输入数据,\(y(n)\)表示目标数据,\(f(\mathbf{W}, x(n))\)表示模型(神经网络)输出,其中\(W\)表示模型的参数(权重)。我们假设目标数据生成过程的形式为
\y(n) = \\phi\[x(n) + \varepsilon(n) \]
其中\(\phi\)是底层函数,\(\varepsilon(n)\)是从方差为\(\sigma^2\)的平稳不相关(独立同分布)零均值噪声过程中采样得到的。我们从模型族\(F\)(例如多层感知器)中选择模型\(f\),以基于训练数据学习对底层函数\(\phi\)的近似。也就是说,我们要寻找\(f^* = f(W^*) \in F\),使得对于所有\(f \in F\),都有\(E(f^*, \phi) \le E(f, \phi)\)21,其中\(E(f, \phi)\)是模型\(f\)与真实模型\(\phi\)之间"距离"的度量。
由于我们只能获取目标值\(y\),而无法获取底层函数\(\phi\),因此 \(E(f, \phi)\) 通常取为均方误差
\E(f, \\phi) \\approx E(f, y) = E(W) = \\frac{1}{2N}\\sum_{n=1}\^N \[y(n) - f(W, x(n))^2 \]
不幸的是,最小化(3.3)在大多数情况下是一个不适定问题。也就是说,它不满足以下三个要求:
-
模型(例如神经网络)能够从训练数据中学习该函数,即存在解 \(f^* \in F\)。
-
解是唯一的。
-
解在训练数据集的微小变化下是稳定的。
例如,从同一过程中采样的两个略有不同的训练数据集分别进行训练,必须得到相似的解(例如在测试数据上评估时表现相似)。
这些要求中的前两个通常不被视为严重问题。由于任何连续函数都可以用带有S型单元的单隐层网络构建(例如参见6),因此总是可以通过使用大量内部单元找到一个能完美学习训练数据的多层感知器,而且我们可能对任意解都感到满意,忽略唯一性问题。然而,一个完美学习了训练数据的网络会对训练数据的变化非常敏感。因此,满足第一个要求通常与满足这个非常重要的第三个要求相冲突。一个在略有不同的训练集上发生显著变化的解将具有非常差的泛化性能。
3.2.2 正则化
通常会引入所谓的正则化项¹,以使学习任务适定(或至少减少不适定性)。也就是说,我们不再仅最小化像(3.3)这样的拟合误差度量,而是向其添加一个正则化项\(\lambda R(W)\),该正则化项可表达我们对解的先验信念等。此时误差泛函的形式为
\E(W) = \\frac{1}{2N} \\sum_{n=1}\^N \[y(n) - f(W, x(n))^2 + \lambda R(W) = E_0(W) + \lambda R(W), \quad (3.4) \]
其中\(\lambda\)是正则化参数 ,用于衡量\(R(W)\)相对于拟合误差\(E_0(W)\)的重要性。正则化项的作用是缩小模型族\(F\),或使某些模型比其他模型更可能出现。因此,解对训练数据微小扰动的稳定性会提高。
"正则化"一词涵盖了所有使用添加到误差度量中的惩罚项来避免过拟合的技术。这包括例如权重衰减17、权重消除26、软权重共享15、拉普拉斯权重衰减12, 27和平滑正则化2, 9, 14。某些形式的"提示"1也可称为正则化。
¹ 蒂霍诺夫21称其为"稳定子"。
3.2.3 偏差与方差
正则化的优势通常是在模型偏差 和模型方差 的语境下进行描述的。这源于将期望泛化误差\(E_{\text{gen}}\)拆分为三项的做法8
3.2.4 贝叶斯框架
从贝叶斯和最大似然的角度来看,关于模型\(f\)的先验 信息会通过贝叶斯定理与训练数据\(D\)的似然 进行权衡(相关内容讨论见4)。我们用\(p(D)\)表示观测到数据集\(D\)的概率,\(p(f)\)表示模型\(f\)的先验分布,\(p(D|f)\)表示若\(f\)是正确模型时观测到数据\(D\)的似然。那么给定观测数据\(D\)时模型\(f\)的后验概率\(p(f|D)\)满足:
\p(f\|D) = \\frac{p(D\|f)p(f)}{p(D)} \\
对等式两边取负对数可得:
\-\\ln p(f\|D) = -\\log p(D\|f) - \\ln p(f) + \\ln p(D) \\
将似然项替换为平方误差损失可得:
\-\\ln p(f\|D) = \\sum_{n=1}\^N \\left\[y(n) - f(\\mathbf{W}, \\mathbf{x}(n))\\right^2 - \ln p(f) + \text{constant}, \tag{3.6} \]
最优性通常通过交叉验证或类似方法衡量。学习算法的选择也会影响正则项\(R(\mathbf{W})\)的形式。从这个角度看,选择\(R(\mathbf{W})\)等价于为模型先验\(p(f)\)选择参数化形式,而选择\(\lambda\)的取值则对应为先验估计参数。
3.2.5 权重衰减
权重衰减17是神经网络领域对岭回归11方法的对应实现。在这种情况下\(R(\mathbf{W}) = \|\mathbf{W}\|^2 = \sum_k w_k^2\),误差泛函为
\E(\\mathbf{W}) = \\frac{1}{2\\sigma\^2} \\sum_{n=1}\^N \\left\[y(n) - f(\\mathbf{W}, \\mathbf{x}(n))\\right^2 + \frac{\lambda}{2} \|\mathbf{W}\|^2 \]
其中\(\lambda\)通常被称为权重衰减参数。在贝叶斯框架下,权重衰减意味着隐式地施加如下模型先验:
\p(f) \\propto \\exp\\left(-\\frac{\\lambda}{2} \\\|\\mathbf{W}\\\|\^2\\right) \\
其中\(\sigma^2\)是数据中噪声的方差。如前所述,权重衰减通常能提升神经网络模型的泛化性能。
3.2.6 早停
毫无疑问,避免过拟合最简单、应用最广泛的方法是在训练集被完美学习之前停止训练。具体做法是留出一部分训练数据用于估计样本外性能,这部分数据集被称为验证数据集。当验证集上的误差开始上升时,就会停止训练。早停通常能显著缩短训练时间,但也存在定义模糊的问题------因为并没有明确的停止节点,同时还会造成数据浪费,因为部分数据被留作了验证集。
如果从较小权重开始训练,早停和权重衰减存在关联,因为权重衰减会施加一个迫使所有权重趋近于零的势能。例如,Sjöberg和Ljung 20指出,若使用恒定学习率\(\eta\),训练停止时的迭代次数\(n\)与权重衰减参数\(\lambda\)大致满足:
\n \\approx \\frac{1}{2\\eta\\lambda} \\tag{3.9} \\
但这并不意味着实践中使用早停等同于使用权重衰减。式(3.9)基于恒定学习率、在最优停止点附近的局部展开,忽略了局部极小值,同时假设了输入噪声水平较低,这些前提可能无法反映过拟合是严重问题时的实际情况。
3.3 估计\(\lambda\)
3.3.1 采样估计
本节我们介绍一种可用于估计\(\lambda\)取值的方法。\(\lambda\)的取值取决于研究对象的总体变异率,且同一总体的不同子总体的\(\lambda\)取值可能不同,因此我们还需要知道大规模数据中\(\lambda\)的取值,子总体中\(\lambda\)的取值也遵循相同的规律。我们假设所有总体都采用单一的\(\lambda\)取值,同时假设各子总体的\(\lambda\)取值与研究总体的\(\lambda\)取值一致。
3.3.2 两种早停估计
若\(\mathbf{w}^*\)是式(3.4)中\(E(\mathbf{W})\)最小时对应的权重集合,则
\\\nabla E(\\mathbf{w}\^\*) = \\nabla E_o(\\mathbf{w}\^\*) + \\lambda \\nabla R(\\mathbf{w}\^\*) = 0, \\tag{3.13} \\
由此可得到正则参数\(\lambda\)满足:
\\\lambda = \\frac{\\\|\\nabla E_o(\\mathbf{w}\^\*)\\\|}{\\\|\\nabla R(\\mathbf{w}\^\*)\\\|} \\tag{3.14} \\
因此,若我们能对\(\mathbf{w}^*\),或\(\nabla E_o(\mathbf{w})\)和\(\nabla R(\mathbf{W})\)做出合理的估计,就可以用该式估计\(\lambda\)。由于早停与权重衰减存在关联,它是一种非常简洁的\(\mathbf{w}^*\)估计方法:
\\\hat{\\lambda}_1 = \\frac{\\\|\\nabla E_o(\\mathbf{w}_{\\text{es}})\\\|}{\\\|\\nabla R(\\mathbf{w}\^\*)\\\|} \\tag{3.15} \\
作为\(\lambda\)的一个简单估计量。第二种思路是考虑式(3.13)定义的全体线性方程,并最小化如下平方误差:
\\\\|\\nabla E_o(\\mathbf{W}) + \\lambda \\nabla R(\\mathbf{W})\\\|\^2 = \\\|\\nabla E_o(\\mathbf{w}_{\\text{es}}) + 2\\lambda \\mathbf{w}_{\\text{es}} \\cdot \\nabla R(\\mathbf{w}_{\\text{es}})\\\|\^2 \\
3.4 估计权重衰减参数的简易技巧
当\(\lambda = \lambda_k\)时,验证数据集的数量为\(n\),\(E_{j,k}\)表示当\(\lambda=\lambda_{k}\)且使用验证集\(j\)时的验证误差。我们之所以取对数,是因为观察到验证误差的分布近似服从对数正态分布,这一特性也会被用于下文最优\(\lambda\)取值的选择。
搜索完成后,会选择最优的\(\hat{\lambda}\)。这一步并不总是轻松的,因为大范围的取值可能表现相当,或某取值具有较小的平均交叉验证误差但误差波动较大,而另一取值具有略高的平均交叉验证误差但误差波动较小。最简单的做法是绘制验证误差随\(\hat{\lambda}\)变化的图像,判断最优\(\lambda\)的位置,但这会给选择带来不必要的主观性。另一种方法是对不同的\(\lambda\)取值做加权平均,这也是本文采用的方法(\(\hat{\lambda}\)选择方法的变体讨论见Ripley 19)。
我们对最优\(\lambda^2\)的估计为:
\\\hat{\\lambda}_{\\text{opt}} = \\frac{\\sum_{k=1}\^K n_k \\lambda_k}{\\sum_{k=1}\^K n_k} \\tag{3.12} \\
其中\(n_k\)是当从均值为\(\log E_n^{\text{cv},k}\)、标准差为\(\sigma_n^{\text{cv},k}\)的对数正态分布中采样验证误差时,\(\lambda_k\)对应最小验证误差的次数,我们假设各验证误差相互独立。该方法的示例可参见图3.1的假设案例。在确认选择式(3.12)通常与我们对\(\lambda\)的主观判断一致后,我们采用了这一选择方式,下文我们将这一方法称为\(\hat{\lambda}\)的"蒙特卡洛估计"。
图3.1 在假设案例上估计\(\hat{\lambda}{\text{opt}}\)的流程示意图。搜索后我们得到\(K\)个均值为\(\log E_n^{\text{cv},k}\)、方差为\(\sigma_n^{\text{cv},k}\)的对数正态分布,如上图所示。从这\(K\)个分布中采样\(K\)个误差值,选择对应最小误差值的\(\lambda\)作为"获胜者"。重复该过程多次(图中为100次,正文的实验中为10000次),统计不同\(\lambda\)取值成为获胜者的频率,计算\(\log \lambda\)的均值。该过程如上图直方图所示,展示了采样100次得到的直方图结果。由此我们得到\(\log \hat{\lambda}{\text{opt}} = -2.48 \pm 1.5\),即\(\hat{\lambda}_{\text{opt}} = 10^{-2.48} \approx 3.3 \times 10^{-3}\),可用于训练在\(\lambda\)维度上表现最优的神经网络。即求解如下方程:
\\\frac{\\partial}{\\partial \\lambda} \\left\\\| E_0(\\mathbf{w}_{\\text{es}}) + \\lambda \\nabla R(\\mathbf{w}_{\\text{es}}) \\right\\\|\^2 = 0 \\tag{3.17} \\
该式给出:
\\\hat{\\lambda}_2 = \\max\\left\[0, -\\frac{(E_0(\\mathbf{w}_{\\text{es}}) - \\nabla R(\\mathbf{w}_{\\text{es}}) \\cdot \\mathbf{w}_{\\text{es}}) n}{n R(\\mathbf{w}_{\\text{es}}) - \\\|\\nabla R(\\mathbf{w}_{\\text{es}})\\\|\^2} \\right \tag{3.18} \]
由于\(\lambda\)必须为正,该估计量存在下界。第二个估计量\(\hat{\lambda}_2\)对应在点集\(\{\nabla E_o(\mathbf{W}), \nabla R(\mathbf{W})\}\)上无截距项的线性回归,而第一个估计量\(\hat{\lambda}_1\)更接近\(\max\|\\nabla E_o(\\mathbf{W})\|/\max\|\\nabla R(\\mathbf{W})\|\)。由柯西-施瓦茨不等式可知:
\\\hat{\\lambda}_1 \\geqslant \\hat{\\lambda}_2 \\tag{3.19} \\
针对权重衰减的特殊情况,即\(R(\mathbf{W}) = \|\mathbf{W}\|^2\)时,式(3.15)和式(3.18)可简化为:
\\\hat{\\lambda}_1 = \\frac{\\\|\\nabla E_o(\\mathbf{w}_{\\text{es}})\\\|}{n \\\|\\mathbf{w}_{\\text{es}}\\\|} \\tag{3.20} \\
3.4 实验
3.4.1 数据集
我们在一组共五个回归问题上演示所提算法的性能。针对每个问题,我们会调整输入数量、隐藏单元数量或训练数据量,以研究参数量相对训练数据点数量的影响。这五个问题分别是:
合成双线性问题
该任务是对形如\(\phi(x_1, x_2) = x_1 x_2\)的双线性函数建模。我们使用了三种不同规模的训练数据集,\(M \in \{20, 40, 100\}\),但验证集大小固定为10个样本。验证样本不包含在\(M\)个训练样本内。测试误差(即泛化误差)通过对二维格点\((x_1, x_2) \in -1, 1^2\)上的\(201 \times 201\)个数据点做数值积分计算得到。目标值(而非输入)被添加了三种不同水平的高斯噪声,标准差\(\sigma \in \{0.1, 0.2, 0.5\}\)。这在该特定问题上总共产生\(3 \times 3 = 9\)组不同实验,下文分别记为setup A1、A2......A9。该方法可以在保持网络架构不变(2个输入、8个tanh隐藏单元、1个线性输出)的前提下,针对噪声水平和训练集规模开展控制变量研究。
\\\hat{\\lambda}_2 = \\max \\left\[ 0, \\frac{-\\nabla E_0(\\boldsymbol{W}_{es}) \\cdot \\boldsymbol{W}_{es}}{2 \\\| \\boldsymbol{W}_{es} \\\|\^2} \\right \]
预测普吉特海湾电力与照明公司次日7至8点的电力负荷
该数据集来自普吉特海湾电力与照明公司的电力预测竞赛3。该竞赛的获胜者为一天中的每个小时分别使用了一组线性模型。我们选取了提前24小时预测7至8点电力负荷的子问题,该时段的电力负荷波动最大。训练集包含1985年1月至1990年9月间的844个工作日,其中随机选取150天作为验证集。我们使用1990年11月至1992年3月间的115个冬季工作日进行样本外测试。输入变量包括当前负荷、过去24小时平均负荷、过去一周平均负荷、年内时间等,共15个输入。我们在该任务上尝试了三种不同的内部单元数量:15、10和5,下文将这些实验记为B1、B2和B3。
预测两条冰岛河流的日径流量
该问题在文献22中有记录,任务是基于当日及前几天的径流量、温度和降水量,建模其中一条冰岛河流的次日平均流量。训练集包含731个数据点,对应1972和1973年,我们从中随机抽取150个数据点作为验证集。测试集包含365个数据点(对应1974年)。我们尝试两种不同的回溯时间步长:8天或4天,对应24个或12个输入,同时保持内部单元数量固定为12。下文将这些实验记为C1、C2、C3和C4。
预测沃尔夫太阳黑子时间序列
该时间序列曾被多次用于演示新的正则化技术,例如文献15和26中的相关工作。我们在该问题上尝试了三种不同的网络架构,始终使用12个输入单元,但网络内部单元分别使用4、8或12个。下文将这些实验记为setup D1、D2和D3。训练集大小固定为\(M = 221\)(对应1700-1920年),我们从中随机抽取22个样本作为验证集。我们在四种不同条件下测试模型:在包含35个数据点(对应1921-1955年)的"测试集1"上进行单步预测,在"测试集1"上进行4步迭代预测,在所有74个可用测试年份(1921-1994年)上进行8步迭代预测,以及在所有可用测试年份上进行11步迭代预测。这些测试条件分别记为s1、m4、m8和m11。
估算内燃机峰值压力位置
该数据集包含4个输入变量(点火时刻、发动机负荷、发动机转速、空燃比)和仅49个训练数据点,我们从中随机抽取9个样本作为验证集。测试集包含35个数据点,其测量条件与训练数据略有不同。我们在该任务上尝试了四种不同的内部单元数量:2、4、8或12,下文将这些实验记为E1、E2、E3和E4。
3.4.2 实验流程
所有问题的实验流程一致:我们首先通过"传统"方式估算\(\lambda\),在\(\log \lambda \in -6.5, 1.0\)的区间内以\(\Delta \log \lambda = 0.5\)为步长搜索。对于每个\(\lambda\)值,我们使用Rprop训练算法18训练10个网络。每个网络会一直训练到总误差(3.7)最小化,该误差通过以下方式计算:
其中求和针对最近的100个训练轮次,或者直到达到\(10^5\)个训练轮次,以先到者为准。收敛准则(3.23)通常在\(10^5\)个训练轮次内满足。每个网络的验证集和训练集都会重新采样,但不同的验证集允许重叠。我们基于这10次网络运行的结果,假设验证误差服从对数正态分布,估算误差的均值和标准差\(\log E_{nCV,k}\)和\(\sigma_{nCV,k}\)。
图3.2展示了沃尔夫太阳黑子问题的一次此类搜索示例,所用神经网络包含12个输入、8个内部单元和1个线性输出。
图3.2 左图:setup D2下沃尔夫太阳黑子时间序列的训练和验证误差随权重衰减参数\(\lambda\)变化的曲线。每个点对应使用不同验证集和训练集的10次运行的平均值。误差条表示在假设误差服从对数正态分布的前提下,平均验证和训练误差的95%置信限。客观蒙特卡洛方法得到\(\log \hat{\lambda}{opt} = -2.00 \pm 0.31\)。右图:太阳黑子"测试集1"上测试误差的对应曲线。网络架构为12个输入、8个tanh内部单元和1个线性输出。使用上述客观蒙特卡洛方法,我们从该搜索中估算最优\(\hat{\lambda}{opt}\)值,随后使用该值训练10个新网络。
T.S. R"ognvaldsson
图3.3 左图:使用不同训练集和验证集的100次独立训练运行得到的估计值\(\hat{\lambda}_1\)的直方图。右图:\(\hat{\lambda}2\)的对应直方图。该问题(D2)与图3.2所示问题相同。这些网络使用全部训练数据训练(无验证集)。随后使用预留的测试集计算这些网络的测试误差。因此共完成\(16 \times 10 = 160\)次网络运行,以为每个实验选择\(\hat{\lambda}{opt}\)。根据可用硬件和问题规模不同,这项工作需要几天到一周的时间。尽管这比实际所需更多(实际应用中约一半的运行次数即可满足需求),但花费的时间仍然令人烦躁。本文所述搜索所需时间根据问题和计算机的不同,从10到400个CPU小时不等。
作为对比,下文所述的早停实验耗时从10个CPU分钟到14个CPU小时不等。搜索所需时间通常是早停估算所需时间的40倍。
随后我们通过带早停的训练100个网络,估算\(\hat{\lambda}_1\)和\(\hat{\lambda}_2\)。此处的一个问题是停止点不明确,即验证误差首次出现的最小值不一定是应当停止的位置,验证误差在该点之后经常会再次下降。为避免此类问题,我们会记录对应最新验证误差最小值的权重,并继续训练超过该点。当训练轮数达到找到验证误差最小值所需轮数的两倍、且未出现新的最小值时,停止训练。随后使用最后一次验证误差最小值对应的权重作为早停权重。例如,若验证误差在第250轮达到最小值,我们会等待直到总轮数达到500轮,再确定该停止点。
从100个网络中,我们得到\(\hat{\lambda}_1\)和\(\hat{\lambda}_2\)各100个估计值。我们取这些值的对数,计算均值\((\log \hat{\lambda}_1)\)和\((\log \hat{\lambda}_2)\)及对应的标准差。
^4 模拟使用了多种计算机,包括运行Solaris系统的NeXT、Sun Sparc、DEC Alpha和Pentium计算机。
所得的算术平均值被用作\(\lambda\)的估计值,标准差则作为估计误差的度量指标。随后,这些算术平均值被用于训练使用全部训练数据的10个网络。
图3.3展示了与图3.2所示问题对应的直方图。
在比较不同方法取得的测试误差时,我们采用Wilcoxon秩检验13(又称曼-惠特尼检验),并报告95%置信水平下的差异。
3.4.3 \(\lambda\)估计值的质量
作为对\(\hat{\lambda}_1\)和\(\hat{\lambda}2\)估计值的初步质量检验,我们验证二者与\(\hat{\lambda}{opt}\)估计值的吻合程度,后者可被视为"真实值"。所有问题设置的估计值都汇总在表3.1中,并绘制在图3.4里。
表3.1。 23种不同问题设置的\(\lambda\)估计值。代码A对应合成问题,代码B对应功率预测,代码C对应河流流量预测,代码D对应太阳黑子序列,代码E对应最大压力位置问题。\(\log \hat{\lambda}_{opt}\)列的误差是蒙特卡洛估计的标准差。早停估计的误差是各估计值的标准差。
| 问题 | \(\log \hat{\lambda}_{opt}\) | \(\log \hat{\lambda}_1\) | \(\log \hat{\lambda}_2\) |
| --- | --- | --- | --- |
| A1 (\(M=20, \sigma=0.1\)) | -2.82 ± 0.04 | -2.71 ± 0.66 | -3.44 ± 1.14 |
| A2 (\(M=20, \sigma=0.2\)) | -2.67 ± 0.42 | -2.32 ± 0.58 | -3.20 ± 0.96 |
| A3 (\(M=20, \sigma=0.5\)) | -0.49 ± 1.01 | -1.93 ± 0.78 | -3.14 ± 1.15 |
| A4 (\(M=40, \sigma=0.1\)) | -2.93 ± 0.49 | -2.85 ± 0.73 | -3.56 ± 0.87 |
| A5 (\(M=40, \sigma=0.2\)) | -2.53 ± 0.34 | -2.41 ± 0.64 | -2.91 ± 0.68 |
| A6 (\(M=40, \sigma=0.5\)) | -2.43 ± 0.44 | -2.13 ± 0.74 | -2.85 ± 0.77 |
| A7 (\(M=100, \sigma=0.1\)) | -3.45 ± 0.78 | -3.01 ± 0.86 | -3.74 ± 0.93 |
| A8 (\(M=100, \sigma=0.2\)) | -3.34 ± 0.71 | -2.70 ± 0.73 | -3.33 ± 0.92 |
| A9 (\(M=100, \sigma=0.5\)) | -3.31 ± 0.82 | -2.34 ± 0.63 | -3.13 ± 1.06 |
| B1(功率预测,15个隐藏单元) | -3.05 ± 0.21 | -3.82 ± 0.42 | -5.20 ± 0.70 |
| B2(功率预测,10个隐藏单元) | -3.57 ± 0.35 | -3.75 ± 0.45 | -4.93 ± 0.50 |
| B3(功率预测,5个隐藏单元) | -4.35 ± 0.66 | -3.78 ± 0.52 | -5.03 ± 0.74 |
| C1(Jökulsá Eystra河,8阶滞后) | -2.50 ± 0.10 | -3.10 ± 0.33 | -4.57 ± 0.59 |
| C2(Jökulsá Eystra河,4阶滞后) | -2.53 ± 0.12 | -3.15 ± 0.40 | -4.20 ± 0.59 |
| C3(Vatnsdalsá河,8阶滞后) | -2.48 ± 0.11 | -2.65 ± 0.40 | -3.92 ± 0.56 |
| C4(Vatnsdalsá河,4阶滞后) | -2.39 ± 0.55 | -2.67 ± 0.45 | -3.70 ± 0.62 |
| D1(太阳黑子序列,12个隐藏单元) | -2.48 ± 0.12 | -2.48 ± 0.50 | -3.70 ± 0.42 |
| D2(太阳黑子序列,8个隐藏单元) | -2.00 ± 0.31 | -2.43 ± 0.45 | -3.66 ± 0.60 |
| D3(太阳黑子序列,4个隐藏单元) | -2.51 ± 0.44 | -2.39 ± 0.48 | -3.54 ± 0.65 |
| E1(最大压力位置,12个隐藏单元) | -3.13 ± 0.43 | -3.03 ± 0.70 | -4.69 ± 0.91 |
| E2(最大压力位置,8个隐藏单元) | -3.01 ± 0.52 | -3.02 ± 0.64 | -4.72 ± 0.82 |
| E3(最大压力位置,4个隐藏单元) | -3.83 ± 0.80 | -3.07 ± 0.71 | -4.50 ± 1.24 |
| E4(最大压力位置,2个隐藏单元) | -4.65 ± 0.78 | -3.46 ± 1.34 | -4.21 ± 1.40 |
\(\log \hat{\lambda}1\)与\(\log \hat{\lambda}{opt}\)之间的线性相关系数为0.71,比23个随机点之间的预期相关系数高三个标准差以上。此外,带截距项的线性回归得到结果\(\hat{\lambda}_{opt} = 0.30 + 1.13\hat{\lambda}1\)(公式3.24)。因此,\(\hat{\lambda}1\)是\(\hat{\lambda}{opt}\)相当不错的估计量。\(\hat{\lambda}2\)与\(\hat{\lambda}{opt}\)之间的线性相关系数为0.48,与随机相关系数的偏差超过两个标准差。线性回归得到\(\hat{\lambda}{opt} = -0.66 + 0.57\hat{\lambda}_2\)(公式3.25),第二个估计量\(\hat{\lambda}2\)显然对\(\hat{\lambda}{opt}\)的估计效果更差。
图3.4。 表3.1结果的绘图。左图:\(\hat{\lambda}1\)估计值与\(\hat{\lambda}{opt}\)的对比图。\(\log \hat{\lambda}1\)与\(\log \hat{\lambda}{opt}\)的线性相关系数为0.71。右图:\(\hat{\lambda}2\)与\(\hat{\lambda}{opt}\)的对比图。\(\log \hat{\lambda}2\)与\(\log \hat{\lambda}{opt}\)的线性相关系数为0.48。十字的大小对应表3.1中的误差棒。
接下来我们比较这些不同\(\lambda\)估计值的样本外性能,这对从业者而言才是真正重要的指标。表3.2列出了使用早停估计值或搜索估计值时样本外性能的差异。"+"表示使用早停估计值得到的测试误差显著(95%显著性水平)低于使用\(\lambda_{opt}\)的情况。同理,"-"表示搜索估计值得到的测试误差显著低于早停估计值。"0"则表示两者无显著差异。表3.2的结论是,\(\hat{\lambda}2\)的性能显著差于\(\hat{\lambda}{opt}\),但\(\hat{\lambda}1\)和\(\hat{\lambda}{opt}\)之间没有稳定的性能差异,二者的测试误差基本相当。在某些情况下,比如功率预测问题,对早停估计值附近做小范围搜索以检验是否存在更优值是更有益的。燃烧发动机(设置E)的测试误差未纳入表3.2(及表3.3),因为其测试集与训练集差异过大,无法提供有效结果。事实上,在该问题上,没有任何正则化网络的性能显著优于未正则化网络。
表3.2。 使用\(\hat{\lambda}1\)和\(\hat{\lambda}2\)估计值作为权重衰减参数训练的单网络相对性能,以及使用搜索估计值\(\hat{\lambda}{opt}\)训练的单网络性能。相对性能的标注规则如下:"+"表示使用\(\hat{\lambda}i\)得到的测试误差显著低于搜索估计值\(\hat{\lambda}{opt}\)的结果,"0"表示二者性能相当,"-"表示使用\(\hat{\lambda}{opt}\)得到的测试误差低于使用\(\hat{\lambda}_i\)的结果。所有结果均基于Wilcoxon检验的95%置信水平报告。E类结果未纳入的原因见正文说明。
| 问题设置 | \(\hat{\lambda}1\)对比\(\hat{\lambda}{opt}\) | \(\hat{\lambda}2\)对比\(\hat{\lambda}{opt}\) |
| :--- | :---: | :---: |
| A1(M=20,\(\sigma\)=0.1) | 0 | 0 |
| A2(M=20,\(\sigma\)=0.2) | 0 | - |
| A3(M=20,\(\sigma\)=0.5) | 0 | 0 |
| A4(M=40,\(\sigma\)=0.1) | 0 | 0 |
| A5(M=40,\(\sigma\)=0.2) | 0 | |
| A6(M=40,\(\sigma\)=0.5) | 0 | 0 |
| A7(M=100,\(\sigma\)=0.1) | - | 0 |
| A8(M=100,\(\sigma\)=0.2) | 0 | 0 |
| A9(M=100,\(\sigma\)=0.5) | + | 0 |
| B1(功率预测,15个隐藏单元) | | |
| B2(功率预测,10个隐藏单元) | - | - |
| B3(功率预测,5个隐藏单元) | + | |
| C1(Jökulsá Eystra河,8阶滞后) | - | - |
| C2(Jökulsá Eystra河,4阶滞后) | 0 | |
| C3(Vatnsdalsá河,8阶滞后) | - | |
| C4(Vatnsdalsá河,4阶滞后) | 0 | |
| D1.s1(太阳黑子序列,12个隐藏单元) | 0 | |
| D2.s1(太阳黑子序列,8个隐藏单元) | + | |
| D3.s1(太阳黑子序列,4个隐藏单元) | 0 | - |
| D1.m4(太阳黑子序列,12个隐藏单元) | 0 | |
| D2.m4(太阳黑子序列,8个隐藏单元) | + | |
| D3.m4(太阳黑子序列,4个隐藏单元) | + | |
| D1.m8(太阳黑子序列,12个隐藏单元) | 0 | |
| D2.m8(太阳黑子序列,8个隐藏单元) | - | |
| D3.m8(太阳黑子序列,4个隐藏单元) | + | - |
| D1.m11(太阳黑子序列,12个隐藏单元) | 0 | 0 |
| D2.m11(太阳黑子序列,8个隐藏单元) | + | |
| D3.m11(太阳黑子序列,4个隐藏单元) | 0 | |
权重衰减与早停的对比
我们假设当前问题是关于最小化参数数量的任务。针对该目标的简单方法是将参数数量设置为训练过程初始阶段网络的参数数量,这种方法被称为早停。此时的参数数量为400。
3. 估计权重衰减参数的简单测试
表3.3。 估计器性能。
| 估计器 | c2 | c3 | c4 | c5 | c6 |
| --- | --- | --- | --- | --- | --- |
| A2. 目标函数=2x=0.2 | 0 | 0 | 0 | 0 | 0 |
| A3. 目标函数=4x=0.2 | 0 | 0 | 0 | 0 | 0 |
| A4. 目标函数=8x=0.2 | 0 | 0 | 0 | 0 | 0 |
| A5. 目标函数=12x=0.2 | 0 | 0 | 0 | 0 | 0 |
| A6. 目标函数=20x=0.2 | 0 | 0 | 0 | 0 | 0 |
| A7. 目标函数=10x=1 | 0 | 0 | 0 | 0 | 0 |
| A8. 目标函数=50x=5 | 0 | 0 | 0 | 0 | 0 |
| B1. 功率预测:0.2个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| B2. 功率预测:0.1个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| B3. 功率预测:0.2个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| B4. 功率预测:0.1个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| B5. 功率预测:0.2个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| B6. 功率预测:0.1个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| C1. 高斯问题:2.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| C2. 高斯问题:4.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| C3. 高斯问题:8.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| D1. 高斯问题:8.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| E1. 高斯问题:4.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| F1. 高斯问题:8.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| F2. 高斯问题:4.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| F3. 高斯问题:8.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| F4. 高斯问题:4.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| F5. 高斯问题:8.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| F6. 高斯问题:4.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| F7. 高斯问题:8.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| F8. 高斯问题:4.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
| F9. 高斯问题:8.0个隐藏单元 | 0 | 0 | 0 | 0 | 0 |
T. S. Rögnvaldsson 86
图 10个神经网络的性能表现,这些网络具有15个输入单元、15个隐藏单元和1个输出单元,使用\(\lambda=\hat{\lambda}_{\text{opt}}\)的权重衰减方法训练,用于电力预测问题。"人类专家"指普吉特海湾电力与照明公司的人类专家的预测结果,"竞赛冠军"指该公司电力预测竞赛获奖模型的预测结果。
图 1个神经网络的性能表现,该网络具有12个输入单元、12个隐藏单元和1个输出单元,使用\(\lambda=\hat{\lambda}_1\)的权重衰减方法训练,用于太阳黑子问题的迭代预测。误差线表示10个训练网络的标准差。虚线展示了使用26中列出的网络时的结果。注意,这些结果是使用简单的权重衰减代价函数和非常简单的\(\lambda\)选择方法获得的,而26使用了权重消除法和复杂的启发式方案来设置\(\lambda\)。
3.5 结论
早停法与权重衰减正则化之间的既定关联,自然衍生出了使用早停法估计权重衰减参数的思路。本文已验证了该思路的实现方式,且最终得到的\(\lambda\)可实现与标准交叉验证方法相当的低测试误差,尽管不同问题下的表现存在差异。在实际应用中,这意味着可以将原本可能需要数天甚至数周的搜索过程,替换为通常仅需数分钟到数小时即可完成的计算。我们还证明,使用多个早停网络估计\(\lambda\),比将网络组合为委员会更高效。由此得出的结论是:尽管在渐近条件下早停法与权重衰减存在对应关系,但这并不意味着二者在现实场景下能产生等效结果。遗憾的是,该方法仅适用于与早停法存在关联的正则化项,例如二次权重衰减,或"类似权重衰减"的正则化器(这类正则化器会限制权重向权重空间的原点靠拢,但可采用拉普拉斯先验替代常用的高斯先验)。该方法不适用于任何与早停法无关联的正则化器。
致谢
感谢David B. Rosen在1996年于犹他州斯诺伯德举办的"机器学习"研讨会期间,进行了极具启发性的晚餐交流。感谢普吉特海湾电力与照明公司的Milan Casey Brace提供电力负荷数据。本研究诚挚感谢以下机构的资金支持:美国国家科学基金会(NSF,资助号CDA-9503968)、奥勒与埃德拉·爱立信基金会、瑞典研究所,以及瑞典工程科学研究委员会(资助号TFR-282-95-847)。
参考文献
-
1 Abu-Mustafa, Y.S.:《提示》. 《神经计算》7, 639--671 (1995)
-
2 Bishop, C.M.:《曲率驱动平滑:前馈网络学习算法》. 《IEEE神经网络汇刊》4(5), 882-884 (1993)
-
3 Brace, M.C.:《神经网络与其他成熟技术的预测精度对比》. 《第一届神经网络在电力系统中的应用国际论坛会议录》,华盛顿州西雅图,31-35页 (1991)
-
4 Buntine, W.L., Weigend, A.S.:《贝叶斯反向传播》
-
6 Cybenko, G.:《S型函数叠加逼近法》. 《控制、信号与系统数学》2, 304-314 (1989)
-
7 Engle, R., Clive, F., Granger, W.J., Ramanathan, R., Vahid, F., Werner, M.:《普吉特海湾预测模型的构建》. EPRI项目# RP2919,量化经济研究所,加利福尼亚州圣地亚哥 (1991)
-
8 Geman, S., Bienenstock, E., Doursat, R.:《神经网络与偏差/方差困境》. 《神经计算》4(1), 1-58 (1992)
-
9 Girosi, F., Jones, M., Poggio, T.:《正则化理论与神经网络架构》. 《神经计算》7, 219-269 (1995)
-
10 Hansen, L.K., Rasmussen, C.E., Svarer, C., Larsen, J.:《自适应正则化》. 收录于:Vlontzos, J., Hwang, J.-N., Wilson, E. 编《第四届IEEE信号处理神经网络研讨会会议录》,78-87页. IEEE出版社,皮斯卡塔维 (1994)
-
11 Hoerl, A.E., Kennard, R.W.:《岭回归:非正交问题的偏置估计》. 《技术计量学》12, 55-67 (1970)
-
12 Ishikawa, M.:《带链接权重遗忘的结构学习算法》. 技术报告TR-90-7,电气技术实验室,信息科学部,日本茨城县筑波市梅园1-1-4,邮编305 (1990)
-
13 Kendall, M.G., Stuart, A.:《统计高级理论(第3版)》. 哈夫纳出版公司,纽约 (1972)
-
14 Moody, J.E., Rögnvaldsson, T.S.:《投影基函数网络的平滑正则化器》. 收录于《神经信息处理系统进展9》. 麻省理工学院出版社,剑桥 (1997)
-
15 Nowlan, S., Hinton, G.:《通过软权重共享简化神经网络》. 《神经计算》4, 473-493 (1992)
-
16 Perrone, M.P., Cooper, L.C.:《网络分歧时:混合神经网络的集成方法》. 收录于《语音与视觉人工智能神经网络》,126-142页. 查普曼与霍尔出版社,伦敦 (1993)
-
17 Plaut, D., Nowlan, S., Hinton, G.:《反向传播学习实验》. 技术报告CMU-CS-86-126,卡内基梅隆大学,宾夕法尼亚州匹兹堡 (1986)
-
18 Riedmiller, M., Braun, H.:《一种更快速的反向传播学习直接自适应方法:RPROP算法》. 收录于:Ruspini, H. 编《IEEE国际神经网络会议论文集》,加利福尼亚州旧金山,586-591页 (1993)
-
19 Ripley, B.D.:《模式识别与神经网络》. 剑桥大学出版社,剑桥 (1996)
-
20 Sjöberg, J., Ljung, L.:《过拟合、正则化及最小值搜索及其在神经网络中的应用》. 《国际控制杂志》62(6), 1391-1407 (1995)
-
21 Tikhonov, A.N., Arsenin, V.Y.:《不适定问题的解》. V. H. Winston父子出版社,华盛顿特区 (1977)
-
22 Tong, H.:《非线性时间序列:动态系统方法》. 克拉伦登出版社,牛津 (1990)
-
23 Utans, J., Moody, J.E.:《通过预测风险选择神经网络架构:在公司债券评级预测中的应用》. 收录于《第一届华尔街人工智能应用国际会议会议录》. IEEE计算机学会出版社,洛杉矶阿纳海姆 (1991)
-
24 Wahba, G., Gu, C., Wang, Y., Chappell, R.:《通过惩罚对数似然和平滑样条方差分析实现软分类(又称风险估计)》. 收录于《泛化数学------SFI/CNLS监督学习形式化方法研讨会会议录》,331-359页. 艾迪生-韦斯利出版社,雷丁 (1995)
-
25 Wahba, G., Wold, S.:《全自动曲线板》. 《统计理论与方法通讯》4, 1--17 (1975)
-
26 Weigend, A., Rumelhart, D., Huberman, B.:《反向传播、权重消除与时间序列预测》. 收录于:Sejnowski, T., Hinton, G., Touretzky, D. 编《联结主义模型暑期学校论文集》. 摩根·考夫曼出版社,圣马特奥 (1990)
-
27 Williams, P.M.:《使用拉普拉斯先验的贝叶斯正则化与剪枝》. 《神经计算》7, 117--143 (1995)
4 在MacKay的贝叶斯神经网络框架中控制超参数搜索
Tony Plate
数学与计算科学学院,维多利亚大学,新西兰惠灵顿
http://www.mcs.vuw.ac.nz/~tap/
曾发表于:Orr, G.B. 与 Müller, K.-R. 编:《计算机科学讲义1524》,ISBN 978-3-540-65311-0 (1998). G. Montavon 等编:《神经网络:实战技巧(第2版)》,《计算机科学讲义7700》,91--110页,2012. © 施普林格-柏林海德堡出版社 2012
摘要. 要实现神经网络的良好泛化能力,必须控制过拟合。权重惩罚因子是实现该控制的常用方法之一。然而,使用权重惩罚会引入寻找最优惩罚因子的额外搜索问题。MacKay 5 提出了一种用于训练神经网络的近似贝叶斯框架,在该框架中惩罚因子被视作超参数,通过迭代搜索确定。但针对使用交叉熵误差训练的分类网络,该搜索过程速度慢且不稳定,且优化方法并不明确。本文描述并比较了多种控制该搜索过程的策略,其中部分策略可大幅提升搜索速度与稳定性,并介绍了一系列任务的测试运行结果。
4.1 引言
神经网络可为非线性回归与分类任务提供灵活实用的统计模型。然而,与所有此类模型一样,需控制其灵活性以避免过拟合。在神经网络中实现该目标的一种方式是使用权重惩罚因子(正则化参数)。这会带来一个新的问题:需要找到可使新数据表现最优的惩罚因子取值。正如MacKay 5、Neal 10和Bishop 1等多名研究者指出的,通常使用多个惩罚因子更具优势,可对网络不同层之间的权重进行差异化惩罚。但这样做会使得通过k折交叉验证选择最优惩罚因子在计算上不可行。MacKay 5 提出了一个用于训练神经网络、选择最优惩罚因子(即该框架中的超参数)的贝叶斯框架。在该框架中,我们通过选择超参数的点估计值,来最大化网络的"证据"。参数(即权重)可被分配至不同的
分组,且每个分组由单独的超参数控制。这使得不同层之间的权重可受到不同程度的惩罚。
麦凯6,8和尼尔10已证明,该方法还能实现"自动相关性检测(ARD)",在该机制下,输入层不同单元产生的连接会被分配到不同的正则化分组。其原理是:控制不相关输入权重的超参数会变为较大的值,将这些权重驱趋近于零;而控制相关输入的超参数会稳定在较小到中等的数值。这能提升泛化能力,因为网络会忽略不相关输入,同时还可以让人一眼看出哪些输入是重要的。
在该框架下,最优网络的搜索分为两个层级。内层是标准权重搜索,在超参数固定的前提下,最小化训练数据上的误差;外层是超参数搜索,目标是最大化证据。要使贝叶斯理论成立,外层搜索的每一步中,内层搜索都应被允许收敛到局部最小值,但这一过程成本高且速度慢。在采用交叉熵误差训练的神经网络中,搜索的速度和稳定性问题似乎尤为突出。
本文介绍了针对外层搜索中超参数更新的不同控制策略的相关实验。这些实验表明,"直接运行至收敛后再更新"的简单策略通常效果不佳,其他策略普遍表现更好。在先前的研究中,本文作者成功将其中一种策略应用于神经网络对流行病学数据的分析11。本文报告的实验既证实了更新策略的必要性,也证明尽管先前工作中采用的策略在某些场景下效果尚可,但存在更简单、表现更优且适用场景更广的策略。这些实验也提供了关于证据与泛化误差之间关系的数据,验证了理论预期,即明确了证据在哪些情况下可以作为泛化误差的良好参考指标,哪些情况下不可以。
本章第二节将给出超参数的更新公式,网络传播和权重更新公式未在本节给出,因其已被广泛熟知且可在其他资料中查阅,例如Bishop1的著作。外层超参数搜索的不同控制策略将在第三节介绍,第四节将描述仿真实验,结果将在第五节报告,证据与泛化误差之间的实验关系将在第六节报告。
4.2 超参数更新
外层搜索中超参数(权重惩罚因子)的更新公式十分简单。在介绍这些公式前,我们需要明确部分术语,公式推导与背景理论可参考Bishop1、MacKay5,7或Thodberg13的著作。
-
\(n\) 是网络中权重的总数量。
-
\(w_i\) 是第\(i\)个权重的取值。
将\(\alpha_c\)设为初始值
将\(w_i\)设为初始随机值
重复:
重复:
执行一步权重优化,最小化\(E + C\)
直至权重优化完成
重新估算\(\alpha_c\)
直至达到训练数据集的最大遍历次数
图4.1 训练流程
\(\alpha_c\)的更新公式如下(参考7公式22、1公式10.74):
\\\alpha_c' = \\frac{\\gamma_c}{\\sum_{i \\in I_c} w_i\^2}$$ (4.2) 麦凯\[7指出,该公式可被视为将先验与数据相匹配:1/\\alpha_c是第c组权重的方差估计值,计算时考虑了该组中明确参数的有效数量(即有效自由度)。 #### 4.2.1 使用更新公式的难点 当"误差加代价曲面是二次碗状"这一假设不成立时,就会出现使用这些更新公式的困难。该假设可能以两种方式失效:误差加代价曲面可能不是二次的,也可能不是碗状的(即Hessian矩阵非正定)。在这两种情况下,\\gamma_c都有可能超出\[0, n_c\]的取值范围。 为便于说明,考虑Hessian矩阵非对角元素均为零的情况下的单个对角元素: $$H = \begin{bmatrix} \ddots & 0 \\ & h_{ii} & \\ 0 & & \ddots \end{bmatrix} = \begin{bmatrix} \ddots & 0 \\ & h_{ii}^E + \alpha_{i} & \\ 0 & & \ddots \end{bmatrix}\]
由于非对角元素均为零,逆Hessian矩阵的表达式十分简单:
\H\^{-1} = \\begin{bmatrix} \\ddots \& 0 \\\\ \& \\frac{1}{h_{ii}\^E + \\alpha_c} \& \\\\ 0 \& \& \\ddots \\end{bmatrix} \\
假设第\(i\)个参数仅属于第\(c\)个正则化分组,那么该组中明确参数的数量由以下公式给出:
\\\gamma_{\[i} = 1 - \alpha_{i}h_{ii}^{-1} = 1 - \frac{\alpha_{i}}{h_{ii}^E + \alpha_{i}} = \frac{h_{ii}^E}{h_{ii}^E + \alpha_{i}}$$ (4.3) # 4. 麦凯贝叶斯框架下的超参数搜索 若h\^{E}_{\[i\]}为正,则\\gamma_{\[i\]}的取值范围在0到1之间。若h\^{E}_{\[i\]}相对于\\alpha_{\[i\]}较大,则\\gamma_{\[i\]}的值会较大,这意味着数据对w_i的约束程度较高,也就是说,w_i的微小变动会对E产生较大影响。若h\^{E}_{\[i\]}相对于\\alpha_{\[i\]}较小,则\\gamma_{\[i\]}的值会较小,这意味着数据对w_i的约束程度较低。 即便模型处于E+C的局部最小值,h\^{-1}_{ii}处于\[0, 1/\\alpha_c\]范围内(因此为\\gamma_{\[i\]}贡献0到1个明确参数)这一预期也可能不成立。处于E+C的局部最小值并不能保证h\^{E}_{ii}为正:超参数有可能将权重值"固定"在非二次E曲面的凸部。考虑Hessian矩阵为对角且正定,但h\^{E}_{ii}为负的情况。由公式4.3可知,h\^{-1}_{ii}会对\\gamma_c产生负贡献{}\^1,从"明确参数数量"的角度来看这毫无意义。这种情况{}\^2如图4.2所示:在E-C函数的最小值处,E函数是凸的(\\frac{d\^2 E}{dw\^2}为负)。若基于"误差加代价是二次函数"这一(错误的)假设,此处会计算出负的自由度。这一点对神经网络至关重要,因为即便使用平方和误差,S型函数的非线性仍可能导致误差加代价函数不是权重的二次函数。 **图4.2** 在最小化E+C时,权重代价函数C可将权重值固定在误差曲面E的凸部。左图展示了两个曲面,右图展示了最小值区域内的导数。若模型不处于E+C的局部最小值,则所有预期都会失效。此时H甚至可能不是正定的(即不是二次碗状的Hessian矩阵),如果出现这种情况,几乎可以肯定部分h\^{-1}_{ii}会超出\[0, 1/\\alpha_{\[i\]}\]的取值范围。 {}\^1 即便对于通用矩阵,仍有可能出现h_{ii}\^{-1} \< -\\alpha_{\[i\]}的情况,此时该贡献会是一个无界的正数。 若 \\mathbf{H} 是正定矩阵,且 \\mathbf{H}\^E 也是正定矩阵,仍可能出现部分 h_{ii}\^{(-1)} 越界的情况,每个此类项对良定参数的贡献可能小于0,也可能大于1。 **毕晓普** \[1](https://github.com/jackfrued/Python-Course#footnotes-2) 建议每更新若干次权重后更新一次超参数。 **索德伯格** \[13](https://github.com/jackfrued/Python-Course#footnotes-2) 建议每次更新权重后都更新 \\alpha_c,但仅在整个过程的五个等距区间偶尔重新计算 \\gamma 即可。 在使用共轭梯度法或其他二阶训练方法时,每次更新权重后都更新超参数并不可行,而当前通用做法或多或少符合索德伯格的建议:每次更新超参数前,先将网络训练至大致收敛。 然而,这一策略会导致整体搜索速度极慢。 此外,训练至收敛也无法解决 h_{ii}\^{(-1)} 值越界的问题。因此,训练至收敛同样无法解决 h_{ii}\^{(-1)} 值越界的问题。 在使用多个不同数据集和网络时,收敛性难以检测。 检测收敛的一种标准方法是判断比值 \|g\|/\|w\| 是否小于某个阈值(其中 \|g\| 是权重导数向量的欧氏长度,\|w\| 是权重向量的欧氏长度)。 然而,不同任务对应的合适阈值差异极大。 无论如何,对于所有策略,只要收敛检测通过(即 \|\\tilde{g}\|/\|\\tilde{w}\| \< 10\^{-6}),内循环就会终止,并更新超参数。 在本文描述的实验中,这种情况并不常见。 "耐心"策略是收敛的替代方案:当最近 n 步的改进微乎其微时,内循环就会耗尽耐心并终止。 使用"耐心"策略时,若误差存在下界,内循环一定会终止。 实际应用中,内循环耗尽耐心的速度相当快:更新频率介于"低频"和"中频"之间,具体取决于优化问题的难度。 #### 4.3.2 处理良定参数数量估计越界的问题 在所有实验中,均采用以下策略之一处理 h_{ii}\^{(-1)} 值越界的问题。 介绍这些策略时,会使用 h_{ii}' 或 \\gamma_i 表示替代原始计算值的数值。 - **不处理:** 该策略允许 \\gamma_c 取过大的数值,但不允许其为负(不检查 h_{ii}\^{(-1)} 的值): \]
\gamma_c' = \begin{cases} 0 & \text{若 } \gamma_c < 0, \ \gamma_c & \text{否则} \end{cases}
\ - \*\*分组:\*\* 该策略要求正则化组内良定参数的总数为合理值: \\
\gamma_c' = \begin{cases} 0 & \text{若 } \gamma_c > n_c, \ \gamma_c & \text{否则} \end{cases}
\ - \*\*裁剪:\*\* 该策略要求每个 $h_{ii}\^{(-1)}$ 的贡献均为合理值。若 $h_{ii}\^{(-1)}$ 越界,则假定其代表的良定参数数量为0: \\
h_{ii}^{(-1)'} = \begin{cases} 1/\alpha_{i} & \text{若 } \tilde{h}*{ii}^{(-1)} \notin 0, 1/\\alpha*, \ h_{ii}^{(-1)} & \text{否则} \end{cases}
\ - \*\*剪除:\*\* 该策略要求每个 $h_{ii}\^{(-1)}$ 的贡献均为合理值。若 $h_{ii}\^{(-1)}$ 越界,则假定其代表的良定参数数量为1: \\
h_{ii}^{(-1)'} = \begin{cases} 0 & \text{若 } \tilde{h}*{ii}^{(-1)} \notin 0, 1/\\alpha*, \ h_{ii}^{(-1)} & \text{否则} \end{cases}
\ - \*\*沿用旧值:\*\* 该策略要求每个 $h_{ii}\^{(-1)}$ 的贡献均为合理值。若 $h_{ii}\^{(-1)}$ 越界,则使用参数 $i$ 上一次的良定程度估计值: \\
\gamma'c = \sum ^{n_c} \begin{cases} 1 - \alpha^*c h^{(-1)*} & \text{若 } h_{ii}^{(-1)} \notin 0, 1/\\alpha_{\[i}] \text{ 或不存在此类有效历史值}, \ 1 - \alpha_c h_{ii}^{(-1)} & \text{否则} \end{cases}
\ 其中 $\\alpha\^\*_c$ 和 $h_{ii}\^{(-1)\*}$ 是满足 $h_{ii}\^{(-1)}$ 属于 $\[0, 1/\\alpha_{\[i}] 的最新取值;若不存在此类取值,则 h_{ii}^{(-1)*} = 0。 - \*\*条件更新:\*\* 该策略仅在满足以下条件时,使用 \gamma_c 或其剪除后的版本更新 \alpha_c: - (a) \mathbf{H} 的所有特征值均为正,且对所有 i \in \mathcal{I}c,h{ii}^{(-1)} 均属于 0, 1/\\alpha_{\[i}];或 - (b) \gamma_c 剪除后的版本会使 \alpha_c 的变化方向与上一次变化方向一致:上一次变化时 \mathbf{H} 所有特征值均为正,且组 c 内所有 h_{ii}^{(-1)} 均处于有效范围内;且自组 c 内所有 h_{ii}^{(-1)} 回到有效范围以来,此类变化次数不超过5次。 - \*\*廉价法:\*\* 这是麦凯\[7\]提出的"廉价且高效"方法,该方法假定所有参数均为良定参数,即: $\gamma'_c = n_c\]
该方法的优势在于无需计算海森矩阵。麦凯指出,当存在大量未良定参数时,该方法的性能可能较差。
4.3.3 其他通用策略
研究还采用了若干可与前述任意策略组合使用的其他策略:
-
无零α: 不接受更新后的α取值为0(保留旧值)。
-
限幅: 限制α值的变化幅度不超过10,即把 \(\alpha'_c\) 的值调整到区间 \(0.1\\alpha_c, 10\\alpha_c\) 内。
-
省略: 若存在不属于 \(0, 1/\\alpha_{\[i}]\) 的 \(h_{ii}^{(-1)}\),则从 \(\mathbf{H}\) 中剔除对应的行与列,得到更小的矩阵 \(\mathbf{H}'\),并使用 \(\mathbf{H}'^{-1}\) 的对角元素作为 \(h_{ii}^{(-1)}\) 的值。该策略的思路是剔除模型中难以处理的部分,避免其对表现良好的参数的良定程度估计造成干扰。对于 \(\mathbf{H}^{-1}\) 或 \(\mathbf{H}'^{-1}\) 中 \(h_{ii}^{(-1)}\) 越界的参数,采用上一节所述策略为其分配良定程度值。
4.4 实验设置
本文报告的实验基于 Hwang 等人4以及 Roosen 和 Hastie12使用的5个二维函数,共采用了7种不同的测试函数:
-
线性函数: f_0(x_1, x_2) = (2x_1 + x_2)/0.6585
-
简单交互函数: f_1(x_1, x_2) = 10.391\\left( (x_1 - 0.4)(x_2 - 0.6) + 0.36 \\right)
-
径向函数: f_2(x_1, x_2) = 24.234\\left( (x_1 - 0.5)\^2 + (x_2 - 0.5)\^2 \\right) \\left( 0.75 - \\left( (x_1 - 0.5)\^2 + (x_2 - 0.5)\^2 \\right) \\right)
-
调和函数: f_3(x_1, x_2) = 42.659\\left( 0.1 + (x_1 - 0.5)\\left( 0.05 - 10(x_1 - 0.5)\^2(x_2 - 0.5)\^2 + (x_1 - 0.5)\^4 + 5(x_2 - 0.5)\^4 \\right) \\right)
-
加性函数: f_4(x_1, x_2) = 1.3356\\left( 1.5(1 - x_1) + e\^{(2x_1-1)}\\sin\\left(3\\pi(x_1 - 0.6)\^2\\right) + e\^{3(x_2-0.5)}\\sin\\left(4\\pi(x_2 - 0.9)\^2\\right) \\right)
-
复杂交互函数: f_5(x_1, x_2) = 1.9\\left( 1.35 + e\^{x_1}\\sin\\left(13(x_1 - 0.6)\^2\\right) e\^{-x_2}\\sin(7x_2) \\right)
-
交互加线性函数: f_6(x_1, x_2) = 0.83045\\left( f_0(x_1, x_2) + f_1(x_1, x_2) \\right)
二分类任务的训练数据生成方式为:从区间\(0,1\)的均匀分布中抽取250个 \(x_1^j\) 和 \(x_2^j\) 样本点。再从区间\(0,1\)的均匀分布中抽取250个 \(s^j\) 样本点,用于确定目标值为0还是1。
函数 \(i\) 对应样本 \(j\) 的\(\{0,1\}\)目标值 \(t_i^j\) 由概率 \(p_i^j\) 决定,\(p_i^j\) 是函数值经sigmoid函数变换(减去函数均值)后得到的取值为1的概率:
\ p_i\^j = \\frac{1}{1 + e\^{-(f_i(x_1\^j, x_2\^j) - \\mu_i)}} \\
\ t_i\^j = \\begin{cases} 0 \& \\text{若 } p_i\^j \< s\^j, \\\\ 1 \& \\text{否则} \\end{cases} \\
出于测试目的,使用概率值而非随机二进制值作为目标,这么做是为了降低测试误差测量过程中的噪声。
测试集的输入包括400个来自\(0,1\)均匀网格的\((x_1, x_2)\)点,以及400个从\(0,1\)均匀分布中选取的干扰项向量。
为了使测试误差和训练误差具有可比性,测试误差的计算方式为:假设实际目标是按照给定的目标概率随机选取的,测试点上的期望误差。
\E_i\^j = -\\left(p_i\^j \\log y_i\^j + (1 - p_i\^j) \\log(1 - y_i\^j)\\right) \\
其中\(y_i^j\)是网络对测试用例\(j\)的预测值。
这七个学习任务被称为I0到I6(在Roosen和Hastie的术语中,'I'代表'非纯净'12)。
需要注意的是,这些学习任务比Hwang等人4使用的任务要困难得多,因为二项式输出使得训练数据噪声更大,且存在无关输入。
4.4.1 "良好"表现的目标
研究者对数据应用了多种简单建模策略,以明确可达到的测试误差表现水平,同时证明忽略干扰项输入的重要性。
共尝试了三种不同的模型:线性逻辑模型、二次逻辑模型和广义可加模型(GAMs)3,每种模型分别使用和未使用干扰项输入。
未采取任何防止过拟合的措施,因为这些模型的目的是展示如果不忽略干扰项,会出现多少过拟合。
-
空模型:不使用任何输入,预测输出是目标的平均值(1个参数)。
-
真实值:实际函数值,用于指示数据中的噪声水平。
-
线性逻辑模型(lin) :仅使用\(x_1\)和\(x_2\)作为输入拟合的logistic(线性)模型(3个参数)。
-
含干扰项线性逻辑模型(lin.D):使用所有输入(包括干扰项)拟合的logistic(线性)模型(8个参数)。
-
二次逻辑模型(quad) :仅使用\(x_1\)和\(x_2\)作为输入拟合的、带有二次项的logistic模型(6个参数)。
-
含干扰项二次逻辑模型(quad.D):使用所有输入(包括干扰项)拟合的、带有二次项的logistic模型(36个参数)。
-
广义可加模型(gam) :仅使用\(x_1\)和\(x_2\)作为输入拟合的广义可加模型,每个维度自由度为3(约7个参数)。
-
含干扰项广义可加模型(gam.D):使用所有输入拟合的广义可加模型,每个维度自由度为3(约22个参数)。
-
目标基准(T):"良好"网络性能的目标值。
各模型和任务的测试集偏差示于表4.1,按每个任务的误差排序。部分任务难度较低,另一些则非常困难(Roosen和Hastie12同样发现,为任务I3找到优质解决方案极为困难)。
"良好"神经网络性能的目标值来自任意模型能达到的误差。这些目标值的设定标准是:既能够被神经网络模型实现,又低于上述所有简单模型在使用全部输入时达到的测试集偏差(任务I3除外,神经网络很难在该任务上达标)。
表 4.1 各模型的测试集偏差(为误差的两倍)。名称以"D"结尾的模型是同时使用了干扰项和相关输入的模型。良好网络性能目标值(T)旁的括号内数字,表示在540次训练中,最终达到该目标值的网络数量。
| I0 | I1 | I2 | I3 | I4 | I5 | I6 |
|---|---|---|---|---|---|---|
| 真实值 478 | 真实值 488 | 真实值 475 | 真实值 495 | 真实值 480 | 真实值 491 | 真实值 478 |
| 线性逻辑模型 487 | 二次逻辑模型 495 | 广义可加模型 494 | 广义可加模型 546 | 广义可加模型 498 | 广义可加模型 539 | 二次逻辑模型 485 |
| 目标基准(T)(165) 493 | 目标基准(T)(258) 520 | 广义可加模型 507 | 目标基准(T)(7) 555 | 目标基准(T)(114) 530 | 目标基准(T)(58) 545 | 目标基准(T)(233) 500 |
| 含干扰项线性逻辑模型 498 | 线性逻辑模型 545 | 线性逻辑模型 556 | 线性逻辑模型 556 | 二次逻辑模型 533 | 二次逻辑模型 547 | 线性逻辑模型 517 |
| 二次逻辑模型 501 | 广义可加模型 548 | 含干扰项广义可加模型 551 | 含干扰项线性逻辑模型 557 | 含干扰项广义可加模型 537 | 线性逻辑模型 547 | 含干扰项线性逻辑模型 523 |
| 广义可加模型 502 | 空模型 556 | 空模型 555 | 空模型 558 | 线性逻辑模型 554 | 含干扰项线性逻辑模型 555 | 广义可加模型 529 |
| 含干扰项广义可加模型 519 | 含干扰项线性逻辑模型 558 | 线性逻辑模型 561 | 二次逻辑模型 566 | 空模型 556 | 空模型 555 | 含干扰项二次逻辑模型 540 |
| 空模型 555 | 含干扰项二次逻辑模型 595 | 含干扰项二次逻辑模型 575 | 含干扰项广义可加模型 574 | 含干扰项线性逻辑模型 558 | 含干扰项广义可加模型 572 | 含干扰项广义可加模型 550 |
| 含干扰项二次逻辑模型 556 | 含干扰项广义可加模型 608 | 含干扰项线性逻辑模型 577 | 含干扰项二次逻辑模型 669 | 含干扰项二次逻辑模型 597 | 含干扰项二次逻辑模型 620 | 空模型 557 |
4.4.2 网络架构与训练
本研究使用了标准前馈网络,具体细节如下:
所有网络包含3到15个隐藏单元,使用tanh函数(一种对称S型函数)进行计算。输入取值范围为0到1。输出单元计算其总输入的逻辑函数值。
权重初始化为从方差为0.5的高斯分布中抽取的随机值。
网络共有9个超参数(权重惩罚项):每个输入对应一个权重惩罚项、隐藏单元偏置对应一个、隐藏层到输出层的权重对应一个,输出层偏置无惩罚项。所有超参数的初始值均设为0.5。超参数的最大可调值为10000。
网络使用共轭梯度算法进行训练,训练步数见表4.2。这些步数的设定是为了给较优方法留出足够的收敛时间(难度更高的问题需要更多步数)。共轭梯度算法的每一步都包含一次或多次遍历训练集(平均约为2次)。如果训练集的总遍历次数超过最大允许共轭梯度步数的2.3倍,则终止训练。
海森矩阵采用Buntine和Weigend2描述的精确解析方法计算,该方法需要\(h+1\)次遍历训练数据,其中\(h\)为隐藏单元数量。该方法通常比有限差分法快得多:前向差分法需要\(n+1\)次遍历,精度更高的中心差分法需要\(2n+1\)次遍历。
海森矩阵精确计算所涉及的浮点运算总数,主要来自海森矩阵的更新(见2中的公式15c)。对于具有单个输出单元的网络,该数值约为\(3.5(h+1)Nn^2\)(每个海森矩阵元素的更新需要7次运算,但由于矩阵对称,仅需计算一半的元素)。海森矩阵的特征分解和求逆大约需要\(\frac{4}{3}n^3\)次运算,但这一数值通常远小于海森矩阵的计算量。
只要超参数的更新频率不是很高,海森矩阵求值和求逆所消耗的时间,通常不会在标准权重训练步骤的基础上增加过多耗时。例如,在难度较低的\(\{I_0, I_1, \text{和 } I_6\}\)任务中,海森矩阵的计算频率最高("频繁"更新:训练过程中更新100次),约有三分之一的计算时间用于海森矩阵计算。而在难度更高的任务中,由于训练时间更长,花在海森矩阵计算上的时间相对更少。
对第4.3节讨论的超参数更新策略共测试了三十六种不同的组合。每个问题的训练均使用不同的初始权重重复5次;每种策略都使用相同的五组随机初始权重,这意味着每个问题、每种规模的网络总共会进行160次训练尝试。
表 4.2 不同规模网络在不同任务上允许使用的共轭梯度步数
| 隐藏单元数量 | I0、I2 | I1、I3 | I4、I5 | I6 |
|---|---|---|---|---|
| 3--5 | 600 | 800 | 1000 | 1200 |
| 6--9 | 500 | 700 | 900 | 1100 |
| 10--12 | 400 | 600 | 800 | 1000 |
| 13--15 | 300 | 500 | 700 | 900 |
控制策略的有效性
不同控制策略组合的有效性以训练结束时的测试误差是否可接受(采用表4.1中的偏差目标值)为标准进行评判。
若超参数未设置在合适区间内,任何任务都无法获得良好表现:来自\(x_1\)和\(x_2\)输入的权重需设置为较低值,来自干扰项输入的权重需设置为较高值。
图4.3展示了在任务I6上训练的网络的海森超参数值与测试偏差的示例图(添加了抖动以使密集的点云可见)。任务I6难度适中:几乎所有网络最终都达到了相关输入超参数的合适低值。为干扰项超参数找到合适的高值难度更大,未获得合适高值的网络表现较差。
所有此类图像都呈现与图4.3一致的趋势:只有当网络的相关输入超参数为低值、干扰项超参数为高值时,才能获得较低的测试集偏差。
其余部分任务难度更高,例如I5,较差的搜索策略会将相关输入超参数设置为高值,导致因忽略相关输入而表现不佳。
表4.3展示了36种(组合)策略在每个任务上的成功次数。每个星号代表一次成功,即最终测试集性能低于良好性能目标(见表4.1)的网络。由于三种不同大小的网络各使用了5次随机初始化,因此任意单元格的最大成功次数为15。行总计满分为105,列总计满分为540。总成功次数(987次)满分为3780。整体表现最优的策略明显是"snip+often"。特殊策略"nza"和"limit"似乎略有帮助。
通过查看训练过程中测试偏差的变化曲线可进一步验证上述结论。图4.4和图4.5分别展示了任务I6上含5个隐单元的网络、任务I4上含10个隐单元的网络在训练过程中的测试偏差曲线。每张图中有5条线,因为每个网络使用了5次随机初始化。理想网络的测试偏差会快速下降,然后稳定在目标性能(虚线)以下------这说明该策略快速找到了合适的超参数值(实验任务的设置是:若没有合适的超参数值,就无法实现较低的测试偏差)。在557左右趋于平缓的线对应的是超参数都被设为高值的网络,这类网络会忽略所有输入,因此性能与空模型一致(见表4.1)。其中许多网络的搜索被提前终止,因为没有任何超参数或权重发生变化。注意,在任务I4上,含10个隐单元的网络很少能达到良好性能的目标,而含5个隐单元的网络表现要好得多。这表明这些网络中的冗余无法被有效控制。
| | total | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| cheap-often | 4 | *** | *** | *** | | | | *** |
| group-medium | 10 | * | | | | * | | |
| group-patience | 10 | * | | | | * | | *** |
| none-patience | 10 | | | | | | | **** |
| none-rare | 11 | | | *** | | | | *** |
| group-rare | 12 | | | *** | | | | **** |
| snip-rare | 14 | ** | | | | | | **** |
| trim-often | 16 | ***** | | | | | | **** |
| trim-patience | 17 | | | | | | | **** |
| none-medium | 18 | **** | | | | | | **** |
| omit-snip-patience | 18 | | | | | | | **** |
| omit-snip-patience-limit | 18 | | | | | | | *** |
| trim-medium | 20 | **** | | | | | | **** |
| trim-rare | 20 | ** | | | | | | **** |
| useold-patience | 20 | **** | | | | | | *** |
| omit-useold-patience | 21 | **** | | | | | | **** |
| omit-useold-patience-limit | 22 | | | | | | | **** |
| cheap-medium | 22 | | | | | | | |
| cheap-patience | 23 | ***** | | | | | | *** |
| none-often | 26 | ********* | | | | | | |
| snip-medium | 26 | | | | | | | **** |
| snip-patience | 26 | **** | | | | | | **** |
| omit-trim-patience | 27 | | | | | | | |
| snip-patience-nza-limit | 27 | | | | | | | *** |
| omit-useold-often | 28 | | | | | | | *** |
| omit-useold-often-limit | 29 | | | | | | | *** |
| snip-patience-nza | 29 | | | | | | | **** |
| group-often | 31 | ***** | | | | | | *** |
| cond-often-limit-nza | 32 | | | | | | | *** |
| omit-snip-often-limit | 32 | | | | | | | *** |
| useold-often | 32 | ******** | | | | | | *** |
| cheap-rare | 34 | ******** | | | | | | *** |
| omit-snip-often | 36 | ** | | | | | | *** |
| snip-often | 50 | | | | | | | **** |
| snip-often-nza | 54 | | | | | | | **** |
| snip-often-nza-limit | 54 | | | | | | | **** |
| | 987 | 165 | 258 | 44 | 7 | 114 | 58 | 233 |
除"snip"外的更新策略通常非常不稳定。在合理时间内获得良好的最终性能,频繁更新似乎是必要的。那些用于获取或保留良好的γ估计值的更复杂策略(即omit和useold)似乎几乎没有益处。找到合适的超参数值很困难。如果更新过于频繁,α可能失控上升或变得不稳定。如果更新过于稀少,搜索速度会太慢。当网络尚未开始使用所需的权重,且这些权重的值很小时,α可能出现不可控的上升。在这种情况下α会被高估,这会迫使权重在失控反馈过程中不断变小。不稳定性的产生源于γ和α之间的反馈:γ的变化会导致α同向变化,而α的变化会导致γ反向变化。因此,如果γ被高估,会导致α被高估,进而导致γ的重新估计值降低,这又可能导致α的重新估计值降低。这一过程有时会产生稳定的自我修正行为,但有时也会导致不受控制的振荡("none-often"策略就是这种情况:对应图4.4和图4.5的第二行第三列)。总体而言,将过低的α调高速度较慢,但将过高的α调低难度更大(因为权重会被立即强制归零)。不同策略表现各异的原因如下:
-
none、group: 经常给出超出范围或非常糟糕的γ估计值,导致搜索过程不稳定。
-
cond: 行为相对稳定,但因为会停止更新所有α的值,所以往往找不到最优值。
-
cheap: 高估γ,且会过快淘汰权重。
-
trim: 有时会低估计γ值,因为当来自Hessian矩阵的γ估计值超出范围时,它假设自由度为0,因此会降低本应较高的α值,导致不稳定。
-
snip: 有时会高估γ值,因为当来自Hessian矩阵的γ估计值超出范围时,它假设该参数的自由度为1。不过,这会使α值保持较高水平又不会过高:高估γ似乎比低估γ的危害小得多。
更新频率也很重要。使用优质的α计算策略时,频繁更新(即"often"模式)能最快收敛到合适的α值,整体表现也最好。在更新α值前等待共轭梯度搜索达到一定程度的收敛(即"patience"模式)完全没有任何益处。
测试集误差与证据的关系
章节:测试集误差与证据的关系
(1)如果我们训练了多个网络,我们通常想知道哪一个的泛化误差最低。为每个网络计算的"证据"值可用于选择表现优异的网络。证据是指在给定超参数值的情况下,数据的对数似然,基于权重的后验服从高斯分布的假设对权重值进行积分得到。用交叉熵误差评估的网络的证据如下(参考文献1的公式10.67;参考文献7的公式30):
$$\ln p(D|\alpha)=-\frac{1}{2}\sum_{i=1}^{n}\alpha_{[i]}w_i^2-E-\frac{1}{2}|H|+\sum_c\frac{n_c}{2}\log \alpha_{c}-\frac{N}{2}\ln (2lI)$$
证据是否能作为判断网络表现好坏的有效参考是存疑的,因为证据计算所基于的多种假设在特定网络中往往不成立。本次模拟实验为检验高证据值对良好测试性能的指示准确度提供了良好机会。证据对网络Hessian矩阵中的低特征值特别敏感。当Hessian矩阵存在低或负特征值时,证据值的有效性值得怀疑。Bishop1建议在计算证据时排除低于某个阈值的特征值。图4.6展示了基于证据值选择20个网络所能达到的测试偏差曲线。研究使用了两种不同的证据计算方法:(a)忽略Hessian矩阵的负特征值;(b)若特征值低于最小的非零α_c,则将其替换为该α_c(即"截断证据")。由于证据对低特征值敏感,研究对网络应用了四种不同的筛选方法:(a)使用所有网络;(b)剔除
图4.4. 任务I6上含5个隐藏单元的神经网络在训练期间的测试集偏差。横轴为遍历训练集的次数。虚线为良好性能的参考目标。所引用的最小值是训练过程中任意时点的最小偏差。
4. MacKay贝叶斯框架中的超参数搜索
图4.5. 任务I4上含10个隐藏单元的神经网络在训练期间的测试集偏差。横轴为遍历训练集的次数。虚线为良好性能的参考目标。所引用的最小值是训练过程中任意时点的最小偏差。
图4.8. 表I.4:200°轨道的测试用例
| 用例名称 | 测试用例 |
|---|---|
| 10000000000000 | 10000000000000 |
| 该测试用例对应200°轨道。表格显示200°轨道是轨道数量最多的轨道,同时也列出了200°轨道的各项测试用例。 |
4.7 结论
对于分类网络而言,最优超参数的搜索过程可能缓慢且不稳定。不过,通过采用如下总结的策略,可以提升搜索效率。
针对回归网络(采用线性输出单元、平方和误差,任务目标为连续值且带有高斯噪声)开展的类似实验表明,此类任务中的超参数搜索通常比分类任务更快、更稳定。仅当训练样本的噪声极高(方差≥4)时,超参数搜索才会出现明显困难。在此类条件下,目前尝试过的所有策略都没有明显更优的方案。
超参数搜索不稳定的主要成因之一是海森矩阵存在低特征值。反过来,这种情况的主要成因之一是网络存在冗余。很容易验证:存在冗余的网络的海森矩阵可能具有零或接近零的特征值;唯一能避免特征值为零的情况是超参数不为零。在神经网络中,既可能存在加法(并行)冗余,也可能存在乘法(串行)冗余。规模更大的网络更可能出现冗余,因此可以预期小网络的搜索过程更稳定,这与观测结果一致(当然部分小网络性能不佳,是因为它们没有足够的能力对任务进行建模)。
初始超参数和权重的取值非常重要。如果初始超参数过高,可能会在网络有机会学习任何内容之前就将所有权重推向零。如果初始超参数过低,网络可能会陷入过拟合状态。Thodberg 13 提出了一个合理的建议:初始超参数的设置应使得训练初始阶段的权重代价为误差的10%。
本章描述的结果得出了以下超参数更新的建议:
- 频繁更新超参数
- 若任意\(h_{ii}^{-1}\)值超出范围,在计算\(\gamma_{i}\)时将其替换为零(以此使每个超出范围的\(h_{ii}^{-1}\)对应一个确定度较高的参数)
- 忽略提示取零值的\(\alpha_c\)的更新
- 限制\(\alpha_c\)的变更幅度,最大不超过10
- 在计算证据时忽略负特征值
- 对于特征值低于最低\(\alpha_c\)的网络,认为其证据值不可靠
对神经网络建模的贝叶斯方法感兴趣的读者还应参考Neal 9的马尔可夫链蒙特卡洛方法。尽管这些蒙特卡洛方法有时比基于MacKay近似贝叶斯框架的方法需要更长的计算时间,但它们具有一定的理论优势,同时所需的调参也更少。
参考文献
- Alsop, C., Snaith, R. (2001). 《幸福的路径》。基因与内分泌出版社,15。
- Blum, A., 等(1999).《21世纪人类基因组应用指南》.《自然》,401-404页。
- Bode, S.(2002).《21世纪遗传学的未来》.《科学》,216页。
- Bode, A.(1998).《21世纪遗传学的未来》.《科学》,216页。
- Bode, A., 等(1998).《21世纪遗传学的未来》.《科学》,216页。
5 神经网络建模中的自适应正则化*
Jan Larsen¹, Claus Svarer², Lars Nonboe Andersen¹, and Lars Kai Hansen¹
¹ 丹麦技术大学数学建模系,321号楼,DK-2800 灵比,丹麦
² 神经生物学研究单位,神经病学系,哥本哈根大学医院,9201号楼,丹麦哥本哈根blegdamsvej 9,DK-2100 哥本哈根,丹麦
{jln,lna,lkhansen}@imm.dtu.dk, csvarer@pet.rh.dk
http://eivind.imm.dtu.dk , http://neuro.pet.rh.dk
摘要. 本文针对神经网络建模中正则化参数优化这一重要问题展开研究。所提出的优化方案是近期提出的算法25的扩展版本。核心思路是使泛化误差的经验估计(如交叉验证估计)相对于正则化参数最小化。该方法采用简单的迭代梯度下降方案实现,相较于标准训练几乎无需额外的编程开销。针对前馈神经网络模型在时间序列预测与分类任务上的实验验证了该算法的可行性与鲁棒性。此外,我们还提供了一些简单的理论示例,以说明所提正则化框架的潜力与局限性。
- 曾发表于:Orr, G.B. 与 Müller, K.-R.(编):LNCS 1524,ISBN 978-3-540-65311-0(1998);G. Montavon 等(编):《神经网络实用技巧》第2版,LNCS 7700,第111--130页,2012年。© 施普林格-维尔拉格柏林海德堡2012年
5.1 引言
神经网络是时间序列处理与模式识别的灵活工具。通过增加双层架构中隐藏神经元的数量,可以以任意精度逼近任意相关的目标函数19。在含噪数据上出现过拟合是神经网络设计中的重大风险,这普遍体现为偏差-方差困境,可参考例如9。
引入正则化的必要性有两方面:第一,正则化通过平滑代价函数、在代价函数的低曲率(可能为零曲率)区域引入曲率,来改善训练过程中的数值问题。第二,正则化是通过引入额外偏差来降低方差的工具。
5.2 训练和泛化
假设此次神经网络是针对噪声函数设计的(图5)。噪声函数是输入与偏置的线性组合,之后会输入激活函数。最后,我们会像式(5)那样给噪声函数添加噪声。噪声函数的维度为m。我们的目标是用该网络模型近似真实的条件输入-输出分布p(y |x ),或是该分布的若干阶矩。对于回归与信号处理问题,我们通常对条件期望E{y |x}建模。
假设我们拥有包含N组输入-输出示例的数据集D = {(x ^(k); y (k))}_{k=1}N。为了同时完成训练与泛化性能的经验估计,我们借鉴K折交叉验证839的思路,将数据集划分为K个随机选取的、规模近似相等的互斥子集,即D = ∪_{j=1}^K V_j,且∀i ≠ j时V_i ∩ V_j = ∅。训练与验证流程会重复K次,在第j轮运行中,训练基于集合T_j = D \ V_j完成,验证则在V_j上执行。
在T_j上训练网络时使用的代价函数C_{T_j}(w)由损失函数(或称训练误差)S_{T_j}(w)和由正则化参数集合κ参数化的正则化项R(w, κ)相加得到,即:
\C_{T_j}(w) = S_{T_j}(w) + R(w, \\kappa) = \\frac{1}{N_{tj}} \\sum_{k=1}\^{N_{tj}} \\ell\\left(\\mathbf{y}\^{(k)}, \\hat{\\mathbf{y}}\^{(k)}; \\mathbf{w}\\right) + R(\\mathbf{w}, \\kappa) \\tag{5.1} \\
其中ℓ(·)用于衡量输出y (k)与网络预测值ŷ(k) = f(x ^(k); w)之间的距离。在5.4节中,我们将探讨对数似然和平方误差损失函数ℓ = ||y − ŷ||²。
其中N_{tj} ≡ |T_j|表示T_j中的训练样本数量,k用于索引第k个示例**x** \^(k), **y**\^(k)。训练过程会得到估计权重向量ŵ_j = \arg\min_{\mathbf{w}} C_{T_j}(\mathbf{w})。第j个验证集V_j包含N_{vj} = N − N_{tj}个样本,训练所得网络的验证误差^3可表示为:
\S_{V_j}(\\hat{\\mathbf{w}}_j) = \\frac{1}{N_{vj}} \\sum_{k=1}\^{N_{vj}} \\ell\\left(\\mathbf{y}\^{(k)}, \\hat{\\mathbf{y}}\^{(k)}; \\hat{\\mathbf{w}}_j\\right) \\tag{5.2} \\
其中求和遍历全部N_{vj}个验证样本。因此S_{V_j}(ŵ_j)是泛化误差的估计值,泛化误差被定义为期望损失:
\G(\\hat{\\mathbf{w}}_j) = \\mathbb{E}_{\\mathbf{x}, \\mathbf{y}}\\left\\{ \\ell\\left(\\mathbf{y}, \\hat{\\mathbf{y}}; \\hat{\\mathbf{w}}_j\\right) \\right\\} = \\int \\ell\\left(\\mathbf{y}, \\hat{\\mathbf{y}}; \\hat{\\mathbf{w}}_j\\right) \\cdot p(\\mathbf{x}, \\mathbf{y}) d\\mathbf{x} d\\mathbf{y} \\tag{5.3} \\
其中p(x , y)是未知的联合输入-输出概率密度。
通常情况下,S_{V_j}(ŵ_j) = G(ŵ_j) + O(1/\sqrt{N_{vj}}),其中O(·)是朗道阶函数4。因此我们需要足够大的N_{vj}才能获得准确的泛化误差估计。但另一方面,这会导致可用于训练的数据量减少,进而使得真实泛化性能G(ŵ_j)上升。综上,这两个相互冲突的目标存在权衡,需要找到最优划分比例。最优划分比例5是一个有趣且尚未解决的重难点问题,因为它依赖于验证误差参与其中的整个算法,同时也依赖于学习曲线^617。
^3 即验证集上的损失函数。
^4 若h(x) = O(g(x)),则当x→0时,|h(x)|/|g(x)| < ∞。
^5 关于数据划分的更多论述可参阅2202426。
^6 其定义为泛化误差随训练样本数量变化的均值函数。
- 如今权重的优化会使用全部数据,包括那些原本仅用于优化正则化参数而被剔除的数据。
- 训练与验证数据的划分(以及由此决定的折数K)可能并不合理。这些问题将在5.4.1节进一步讨论。
5.3 调整正则化参数
正则化项的选择通常出于以下考量:
- 代价函数的最小化通常是病态任务,正则化可以平滑代价函数,从而降低训练难度。权重衰减正则化项⁹最初由欣顿在神经网络文献中提出,是实现这一目标的简易方案,可参阅35。
- 权重的先验知识,例如先验分布形式(使用贝叶斯方法时)。这种情况下正则化项通常扮演对数先验分布的角色。权重衰减正则化可被视作高斯先验,可参阅2。学界也考虑过其他先验类型,例如拉普拉斯先验1343、软权重共享34,还有为限制权重数量(剪枝)设计的先验,即所谓的权重消除42。
- 网络实现的功能映射的期望特性。通常更偏好平滑的映射。47324510中提出了对映射曲率进行惩罚的正则化项。在实验部分,我们将探讨权重衰减正则化及其若干推广形式。无需多言,权重衰减正则化已在诸多神经网络应用中证明了自身价值。
估计正则化参数的标准方法是对交叉验证误差进行或多或少系统性的搜索与评估。但这种方法不适用于多个正则化参数的情况。另一方面,我们后续会证明,可以推导出基于梯度下降的优化算法。
考虑一个依赖于向量κ中q个正则化参数的正则化项R(w, κ)。由于估计权重ŵ_j = \arg\min_{\mathbf{w}} C_{T_j}(\mathbf{w})受正则化项控制,我们实际上可以将交叉验证误差视为正则化参数的隐函数,即:
\\\hat{\\Gamma}(\\kappa) = \\frac{1}{K} \\sum_{j=1}\^{K} S_{V_j}\\left(\\hat{\\mathbf{w}}_j(\\kappa)\\right) \\tag{5.6} \\
^9 亦称岭回归。
其中ŵ_j(κ)是从训练集T_j估计得到的、依赖κ的权重向量。可通过梯度下降^10找到最优正则化参数:
\\\kappa_{(n+1)} = \\kappa_{(n)} - \\eta \\frac{\\partial \\hat{\\Gamma}}{\\partial \\kappa}\\left(\\hat{\\mathbf{w}}(\\kappa_{(n)})\\right) \\tag{5.7} \\
其中η > 0是步长(学习率),κ_{(n)}是第n次迭代中正则化参数的估计值。
^10 我们近期通过共轭梯度技术11引入二阶信息,对该算法做了扩展。
假设正则化项关于正则化参数是线性的,即:
\R(\\mathbf{w}, \\kappa) = \\kappa\^\\top \\mathbf{r}(\\mathbf{w}) = \\sum_{i=1}\^q \\kappa_i r_i(\\mathbf{w}) \\tag{5.8} \\
其中κ_i是正则化参数,r_i(w)是对应的正则化函数。多数已有正则化项关于正则化参数是线性的,包括常用的权重衰减正则化,以及如吉洪诺夫正则化42、神经网络平滑正则化3245这类要求函数平滑的正则化项。但也存在权重消除42、软权重共享34等例外情况,此时上述方法需要做一些修改。
利用附录中的结论,交叉验证误差的梯度为:
\\\frac{\\partial \\hat{\\Gamma}}{\\partial \\kappa}(\\kappa) = \\frac{1}{K}\\sum_{j=1}\^K \\frac{\\partial S_{V_j}}{\\partial \\kappa}(\\hat{\\mathbf{w}}_j), \\tag{5.9} \\
\\\frac{\\partial S_{V_j}}{\\partial \\kappa}(\\hat{\\mathbf{w}}_j) = -\\frac{\\partial \\mathbf{r}}{\\partial \\mathbf{w}\^\\top}(\\hat{\\mathbf{w}}_j) \\cdot \\mathbf{J}\^{-1}_j(\\hat{\\mathbf{w}}_j) \\cdot \\frac{\\partial S_{V_j}}{\\partial \\mathbf{w}}(\\hat{\\mathbf{w}}_j). \\tag{5.10} \\
其中\mathbf{J}j = \partial^2 C{\mathcal{T}} / \partial \mathbf{w} \partial \mathbf{w}^\top是代价函数的Hessian矩阵。
作为示例,考虑权重衰减正则化中两组权重采用独立衰减率的情况,例如输入层到隐藏层、隐藏层到输出层的权重分别设置衰减率,即:
\R(\\mathbf{w}, \\kappa) = \\kappa\^I \\cdot \\\|\\mathbf{w}\^I\\\|\^2 + \\kappa\^H \\cdot \\\|\\mathbf{w}\^H\\\|\^2 \\tag{5.11} \\
其中\kappa = \\kappa\^I, \\kappa\^H,\mathbf{w} = \\mathbf{w}\^I, \\mathbf{w}^H,\mathbf{w}^I、\mathbf{w}^H分别表示输入层到隐藏层、隐藏层到输出层的权重。此时验证误差的梯度为:
\\\frac{\\partial S_{V_j}}{\\partial \\kappa\^I}(\\hat{\\mathbf{w}}_j) = -2(\\hat{\\mathbf{w}}_j\^I)\^\\top \\cdot \\mathbf{g}\^I_j, \\quad \\frac{\\partial S_{V_j}}{\\partial \\kappa\^H}(\\hat{\\mathbf{w}}_j) = -2(\\hat{\\mathbf{w}}_j\^H)\^\\top \\cdot \\mathbf{g}\^H_j \\tag{5.12} \\
其中\mathbf{g}_j是向量:
\\\mathbf{g}_j = \[\\mathbf{g}\^I_j, \\mathbf{g}\^H_j = \mathbf{J}^{-1}_j(\hat{\mathbf{w}}j) \cdot \frac{\partial S{V_j}}{\partial \mathbf{w}}(\hat{\mathbf{w}}_j). \tag{5.13} \]
综上,调整正则化参数的算法包含以下8个步骤:
-
- 选择拆分比例,从而确定折数 \(K\)。
-
- 初始化 \(\kappa\) 和网络的权重\(^{11}\)。
-
- 在固定\(\kappa\)的情况下,使用数据集\(\mathcal{T}_j\)训练\(K\)个网络,得到\(\widehat{w}j(\kappa)\),其中\(j = 1, 2, \cdots, K\)。计算验证误差\(S{\mathcal{V}_j}\)和交叉验证估计值\(\widehat{\Gamma}\)。
-
- 计算梯度\(\partial S_{\mathcal{V}_j}/\partial \kappa\)和\(\partial \widehat{\Gamma}/\partial \kappa\)(参见公式(5.9)和(5.10))。初始化步长\(\eta\)。
-
- 使用公式(5.7)更新\(\kappa\)。
-
- 基于上一轮的权重估计重新训练\(K\)个网络,并重新计算交叉验证误差\(\widehat{\Gamma}\)。
-
- 若交叉验证误差未出现下降,则将\(\eta\)进行二分,转到步骤5;否则继续执行后续步骤。
-
- 重复步骤4至7,直到交叉验证误差的相对变化低于一个很小的百分比,或者例如梯度\(\partial \widehat{\Gamma}/\partial \kappa\)的2范数低于一个很小的数值。
与标准神经网络训练相比,上述算法通常不会带来过高的计算开销。首先,通过或多或少系统性的搜索来调优正则化参数的标准方法需要进行大量训练。自适应算法中需要额外计算的内容包括:
-
- 正则化函数相对于权重的导数\(\partial \boldsymbol{r}/\partial \boldsymbol{w}\);
-
- 验证误差的梯度\(\partial S_{\mathcal{V}_j}/\partial \boldsymbol{w}\);
-
- 逆海森矩阵\(\boldsymbol{J}_j^{-1}\)。
第一项通常是权重的简单函数\(^{12}\),计算成本很低。对于前馈神经网络,第二项只需将验证样本通过标准反向传播算法计算一次即可得到。第三项的计算成本更高。不过,如果网络采用二阶方案训练(该方案需要计算逆海森矩阵\(^{13}\)),则不会产生额外计算开销。
- 逆海森矩阵\(\boldsymbol{J}_j^{-1}\)。
自适应算法需要的权重重新训练次数约为\(K \cdot itr_\kappa \cdot itr_\eta\)次。其中\(itr_\kappa\)是用于优化\(\kappa\)的梯度下降方案的迭代次数,\(itr_\eta\)是算法步骤7中对\(\eta\)进行二分的平均次数。在已开展的实验中,重新训练的次数大约是\(100\sim300\)倍的\(K\)。注意,由于我们会基于当前的权重估计持续重新训练,因此训练轮次通常很少。权重重新训练的次数略高于使用基于验证集的最优脑损伤(vOBD)25、27等剪枝技术优化网络时的次数。基于\(K\)折交叉验证的vOBD需要的重新训练次数约为\(K \cdot m\)次,其中\(m = \dim(\boldsymbol{w})\)。如实验部分所示,该自适应正则化算法可以轻松与剪枝算法集成。许多研究已经报告了使用二阶方法带来的显著训练加速效果,参见例如22、35。
\(^{11}\) 5.4.1节介绍了\(\kappa\)的实用初始化流程。
\(^{12}\) 对于权重衰减,其值为\(2w\)。
\(^{13}\) 通常通过使用海森矩阵近似(例如高斯-牛顿近似)来减少计算量。
5.4 数值实验
5.4.1 该方法的潜力与局限性
本节旨在展示所提出的自适应正则化框架的潜力与局限性。我们考虑简单的线性数据生成系统 ,即估计高斯变量的均值:\(y(k) = w^\circ + \varepsilon(k)\)(公式5.14),其中\(w^\circ\)是真实均值,噪声\(\varepsilon(k) \sim \mathcal{N}(0, \sigma_\varepsilon^2)\)。我们采用2折交叉验证,即\(\mathcal{D} = \mathcal{T}_1 \cup \mathcal{T}_2\),其中\(\mathcal{T}_j\)(\(j=1,2\))表示验证过程中两个包含约一半样本的训练集\(^{14}\)。使用均方代价函数加简单权重衰减训练线性模型 \(y(k) = w + e(k)\),代价函数如公式(5.15)所示:
\C_{\\mathcal{T}_j}(w) = \\frac{1}{N_{tj}} \\sum_{k=1}\^{N_{tj}} (y(k) - w)\^2 + \\kappa \\cdot w\^2 \\qquad (5.15) \\
其中\(k\)遍历对应数据集的所有样本。估计的权重为\(\widehat{w}j = \bar{y}j / (1 + \kappa)\),其中\(\bar{y}j = N{tj}^{-1} \sum{k=1}^{N{tj}} y(k)\)是估计出的均值。对于这个简单情况,交叉验证误差的最小化(如公式(5.16)所示)可以精确求解:
\\\widehat{\\Gamma}(\\kappa) = \\frac{1}{2} \\sum_{j=1}\^2 S_{\\mathcal{V}_j}(\\widehat{w}_j(\\kappa)), \\quad S_{\\mathcal{V}_j}(\\widehat{w}_j(\\kappa)) = \\frac{1}{N_{vj}} \\sum_{k=1}\^{N_{vj}} (y(k) - \\widehat{w}_j)\^2, \\qquad (5.16) \\
最优\(\kappa\)为:
\\\kappa_{\\text{opt}} = \\frac{\\bar{y}_1\^2 + \\bar{y}_2\^2}{2\\bar{y}_1\\bar{y}_2} - 1. \\qquad (5.17) \\
假设\(N\)为偶数,估计权重\(\widehat{w}j(\kappa{\text{opt}})\)的集合平均可得到最终估计:
\\\widehat{w}_{\\text{reg}} = \\frac{1}{2} (\\widehat{w}_1(\\kappa_{\\text{opt}}) + \\widehat{w}_2(\\kappa_{\\text{opt}})) = \\frac{y_1\\bar{y}_2(y_1 + y_2)}{\\bar{y}_1\^2 + \\bar{y}_2\^2}. \\qquad (5.18) \\
\(^{14}\) 即\(N_{t1} = \lfloor N/2 \rfloor\),\(N_{t2} = N - N_{t1}\)。注意这两个训练集同时也是两个验证集,即\(\mathcal{V}_1 = \mathcal{T}_2\),反之亦然。
\(^{15}\) 集合平均对应于使用\(\kappa_{\text{opt}}\)在全量数据上重新训练。该两个估计的加权仅在\(N\)为偶数时成立(一般情况参见5.2节)。
现在的目标是测试使用\(\widehat{w}{\mathrm{reg}}\)是否比使用未正则化的估计\(\widehat{w}{\mathcal{D}}\)带来更低的泛化误差。使用权重\(w\)对应的泛化误差为:
\G(w) = \\sigma_{\\varepsilon}\^2 + (w - w\^{\\circ})\^2. \\qquad (5.19) \\
进一步定义泛化误差提升量:
\Z = G(\\widehat{w}_{\\mathcal{D}}) - G(\\widehat{w}_{\\mathrm{reg}}) = (\\widehat{w}_{\\mathcal{D}} - w\^{\\circ})\^2 - (\\widehat{w}_{\\mathrm{reg}} - w\^{\\circ})\^2. \\qquad (5.20) \\
注意\(Z\)仅是随机变量\(\widetilde{y}_1\)、\(\widetilde{y}_2\)和真实权重\(w^{\circ}\)的函数,因此在评估\(Z\)的性质时,只需获取\(\widetilde{y}_1\)、\(\widetilde{y}_2\)的样本即可。定义归一化变量:
\\\widetilde{y}_j = \\frac{\\bar{y}_j}{A} \\sim \\mathcal{N}\\left(\\frac{w\^{\\circ}}{\\sigma_{\\varepsilon}} \\cdot \\sqrt{\\frac{N}{2}}, 1\\right) = \\mathcal{N}(\\theta, 1). \\qquad (5.21) \\
可以很容易证明,归一化泛化误差提升量\(Z/A^2\)是\(\widetilde{y}_1\)、\(\widetilde{y}_2\)和\(\theta\)的函数,因此\(Z/A^2\)的分布仅由\(\theta\)参数化。作为质量指标,我们考虑泛化误差提升的概率,即\(\mathrm{Prob}\{Z > 0\}\)。注意\(\mathrm{Prob}\{Z > 0\} = 1/2\)对应两种估计的偏好程度相同。泛化误差提升的概率仅依赖于归一化权重\(\theta\),因为\(\mathrm{Prob}\{Z > 0\} = \mathrm{Prob}\{Z/A^2 > 0\}\)。此外,我们还考虑相对泛化误差提升量,定义为:
\\\mathrm{RGI} = 100\\% \\cdot \\frac{Z}{G(\\widehat{w}_{\\mathcal{D}})}. \\qquad (5.22) \\
特别地,我们重点关注相对泛化提升超过\(x^{16}\)的概率,即\(\mathrm{Prob}(\mathrm{RGI} > x)\)。理想情况下,当\(x \le 0\%\)时\(\mathrm{Prob}(\mathrm{RGI} > x)\)应接近1,当\(0\% < x \le 100\%\)时缓慢衰减至0。使用记号\(\widetilde{w}{\mathrm{reg}} = \widehat{w}{\mathrm{reg}}/A\),\(\widetilde{w}{\mathcal{D}} = \widehat{w}{\mathcal{D}}/A\),RGI可改写为:
\\\mathrm{RGI} = 100\\% \\cdot \\frac{(\\widetilde{w}_{\\mathcal{D}} - \\theta)\^2 - (\\widetilde{w}_{\\mathrm{reg}} - \\theta)\^2}{N/2 + (\\widetilde{w}_{\\mathcal{D}} - \\theta)\^2}. \\qquad (5.23) \\
因此,RGI的分布由\(\theta\)和\(N\)参数化。通过生成\(Q\)组\(\widetilde{y}_1\)、\(\widetilde{y}2\)的独立样本,即\(\{\widetilde{y}1^{(i)}, \widetilde{y}2^{(i)}\}{i=1}^Q\),来计算质量指标。例如,提升概率通过\(P{\mathrm{imp}} = Q^{-1} \sum{i=1}^Q \mu(Z^{(i)})\)估计,其中当\(Z^{(i)} > 0\)时\(\mu(Z^{(i)}) = 1\),否则为0。
比较\(\widehat{w}{\mathrm{reg}}\)与未正则化估计\(\widehat{w}{\mathcal{D}}\)的数值结果总结在图5.1中。
\(^{16}\) 注意,\(\mathrm{Prob}(\mathrm{RGI} > 0) = \mathrm{Prob}(Z > 0)\)。
图5.1 高斯变量均值的最优正则化估计\(\widehat{w}{\text{reg}}\)与非正则化估计\(\widehat{w}{D}\)的对比结果。结果基于\(Q=10^{5}\)次独立实现。改进概率\(P_{\text{imp}}\)在(a)面板中展示,当归一化真实权重\(\theta=\sqrt{N/2}\cdot w^\circ/\sigma_\epsilon=0\)时为1,在\(\theta \lesssim 0.8\)时高于0.5。也就是说,当权重衰减正则化的先验信息正确(真实权重接近零)、\(N\)较小或\(\sigma_\epsilon\)较大时会出现这种情况。随着\(\theta\)增大,由于\(\widehat{w} \approx \widehat{w}{D}\),\(P{\text{imp}}\)趋近于0.5。(b)-(d)面板展示了\(\theta \in \{0,2,10\}\)时的Prob(RGI > x)。理想概率曲线在\(x < 0\)时为1,在\(x > 0\)时缓慢衰减至零。最大改进出现在\(\theta\)较小且\(N\)较小时。(c)和(d)面板表明,\(N\)较小时\(x>0\)的概率最大;但负\(x\)的概率也最小。也就是说,获得更好改进的概率越高,性能下降的概率也会随之增加。注意,尽管\(\theta = 2, 10\)时\(P_{\text{imp}} < 0.5\),仍然有相当概率获得显著改进。
5.4.2 分类
我们在元音分类问题上测试自适应正则化算法的性能。数据基于Peterson和Barney数据库36。分类类别是由前四个共振峰频率表征的元音。76人(33名男性、28名女性和15名儿童)分别发了两遍\(c=10\)个不同的元音(IY IH EH AE AH AA AO UH UW ER)。由此得到的数据库总共有1520个样本。该数据库是41中描述的已验证数据库,其中所有数据17都被使用,包括在听力测试(26名听众)中未通过一致识别的样本。包含全部样本是为了提升任务难度。
正则化通过留出验证误差估计器进行调整,因此样本被划分为数据集\(\mathcal{D}\)(包含\(N=760\)个样本,对应16名男性、14名女性和8名儿童的发音)和剩余的760个样本构成的独立测试集。通过将数据集\(\mathcal{D}\)平均划分为验证集(\(N_v = 380\)个样本)和训练集(\(N_t = 380\)个样本,每个集合各包含8名男性、7名女性和4名儿童的发音)来调整正则化。
我们采用了一类前馈2层神经网络,隐藏层使用双曲正切神经元,输出层采用修正SoftMax归一化输出\(\hat{y}_i\),参见例如2、18、3。因此,网络输出用于估计后验类别概率\(p(C_i|\boldsymbol{x})\),其中\(C_i\)表示第\(i\)个类别,\(i=1,2,\cdots,c\)。若\(i=\arg\max_j p(C_j|\boldsymbol{x})\),则根据贝叶斯规则(参见例如2)将类别\(C_i\)分配给输入\(\boldsymbol{x}\)。
假设网络权重为\(\boldsymbol{w} = \\boldsymbol{w}\^I, \\boldsymbol{w}_{bias}\^I, \\boldsymbol{w}\^H, \\boldsymbol{w}_{bias}\^H\),其中\(\boldsymbol{w}^I\)、\(\boldsymbol{w}^H\)分别是输入层到隐藏层、隐藏层到输出层的权重,偏置权重分别汇总于\(\boldsymbol{w}{bias}^I\)和\(\boldsymbol{w}{bias}^H\)中。若\(\boldsymbol{x}(k)\in C_i\),则目标值\(y_i(k)=1\),否则为0。
网络采用带权重衰减正则化的对数似然损失函数进行优化,共使用4个正则化参数。我们进一步将非归一化权重衰减定义为\(\alpha \equiv \kappa \cdot N_t\)。采用该正则化的原因是:偏置、输入层和隐藏层权重发挥不同作用,例如输入、隐藏层和偏置信号的尺度通常不同(另见2, 第9.2章)。
17 该数据库可从以下地址获取:ftp://eivind.imm.dtu.dk/dist/data/vowel/PetersonBarney.tar.Z
18 我们仅需要9个输出,因为第10个类别的后验概率可由\(1 - \sum_{j=1}^9 p(C_j|\boldsymbol{x})\)计算得到。
仿真设置如下:
- 网络结构:4个输入,5个隐藏神经元,9个输出18。
- 权重在\(-0.5, 0.5\)区间内均匀初始化,正则化参数初始值为0。执行一步梯度下降训练算法(参见例如29),随后将权重衰减重新初始化为\(\lambda_{\text{max}}/10^2\),其中\(\lambda_{\text{max}}\)为代价函数Hessian矩阵的最大特征值。该初始化方案基于以下观测:
- 权重衰减应足够小,不会显著降低网络的近似能力。
- 权重衰减应足够大,可避免算法陷入局部最优,同时消除数值不稳定。
- 训练采用Gauss-Newton算法(参见例如29)进行。Hessian矩阵的求逆使用Moore-Penrose伪逆,确保特征值扩展19小于\(10^8\)。
- 正则化步长\(\eta\)初始值为1。
- 当自适应正则化方案终止后,使用基于验证集的最优脑损伤(vOBD)方案25、27剪枝3%的权重。
- 剪枝与自适应正则化交替进行,直到验证误差达到最小值。
- 最后,使用优化后的权重衰减参数在全量数据上重新训练剩余权重。
19 特征值扩展不应大于机器精度的平方根6。
表5.1 分类示例的错分率(pmc)与对数似然代价函数(不含正则项,参见(5.24))。神经网络的均值和标准差来自10次运行结果。在小固定正则化场景下,权重衰减初始值设置为\(\lambda_{\text{max}}/10^6\),其中\(\lambda_{\text{max}}\)为代价函数Hessian矩阵的最大特征值。最优正则化指优化4个权重衰减参数的情况。剪枝指基于验证集的最优脑损伤(OBD)方法。KNN指k近邻分类方法。
| 错分率(pmc) | 小固定正则化神经网络 | 最优正则化+剪枝神经网络 | KNN(k=9) | |
|---|---|---|---|---|
| 训练集 | 0.075 ± 0.026 | 0.107 ± 0.008 | 0.150 | |
| 验证集 | 0.143 ± 0.014 | 0.115 ± 0.004 | 0.158 | |
| 测试集 | 0.146 ± 0.010 | 0.124 ± 0.006 | 0.199 | |
| 测试集(全数据训练) | 0.126 ± 0.010 | 0.119 ± 0.004 | 0.153 | |
| 对数似然代价函数 | 小固定正则化神经网络 | 最优正则化+剪枝神经网络 | ||
| --- | --- | --- | --- | --- |
| 训练集 | 0.2002 ± 0.0600 | 0.2881 ± 0.0134 | ||
| 验证集 | 0.7016 ± 0.2330 | 0.3810 ± 0.0131 | ||
| 测试集 | 0.6687 ± 0.2030 | 0.3773 ± 0.0143 | ||
| 测试集(全数据训练) | 0.4426 ± 0.0328 | 0.3518 ± 0.0096 |
表5.1报告了使用最优正则化参数的剪枝网络在10次运行中的错分率(pmc)与对数似然代价函数的均值和标准差。注意,在全量数据上重新训练可提升模型性能,参见表5.1。
5.4.3 时间序列预测
我们在Mackey-Glass混沌时间序列预测问题上测试了自适应正则化方案的性能,参见例如22、40。目标是根据历史观测值预测序列100步之后的取值。
- 数据集\(\mathcal{D}\)包含\(N=500\)个样本,独立测试集包含8500个样本。
- 正则化参数通过留出验证误差进行优化,数据集被均匀划分为各含250个样本的训练集和验证集20。
- 权重衰减初始值为0,执行一步Gauss-Newton迭代后,将权重衰减重新初始化为\(\lambda_{\text{max}} / 10^6\),其中\(\lambda_{\text{max}}\)为代价函数Hessian矩阵的最大特征值。
- 网络采用Gauss-Newton训练方案进行训练。Hessian矩阵的求逆使用Moore-Penrose伪逆,确保特征值扩展小于\(10^8\)。
- 正则化步长\(\eta\)初始值为\(10^{-2}\)。
20 不同划分的敏感性分析在25中进行了讨论。
J. 拉森等人 124
图5.2 分类示例。图(a)、(b)和(c)展示了自适应正则化算法在典型运行(全连接网络)中的演进过程。图(a)中的权重衰减被优化以最小化验证误差,注意测试误差也随之降低。这种趋势在图(b)中同样明显,其中展示了pmc ,尽管观察到了小幅上升。图(c)展示了未归一化权重衰减(\(\alpha = \kappa \cdot N_t\))的收敛情况。图(d)和(e)展示了剪枝过程中误差和pmc 的变化。最优网络被选为验证误差最小的那个,如竖线所示。本次运行中剪枝的效果非常有限。最后,图(f)展示了不同运行中剪枝结束时的最优\(\alpha\)值的变化,注意到不同运行之间存在明显的相似性。
表5.2. 时间序列预测示例的归一化平方误差性能。所有数值的单位均为\(10^{-3}\hat{\sigma}x^2\),平均值和标准差由10次运行计算得出。对于小固定正则化情况,权重衰减的初始值被设为\(\lambda{max}/10^6\),其中\(\lambda_{max}\)是代价函数Hessian矩阵的最大特征值。最优正则化指优化4个权重衰减参数的情况,剪枝指基于验证集的OBD。
| 方法 | 训练集 | 验证集 |
|---|---|---|
| 小固定正则化的神经网络 | 0.12 | 0.36 |
| 小固定正则化的神经网络 + 剪枝 | 1.58 | 1.34 |
- 交替进行4个权重衰减的调整与基于验证集的剪枝25。
- 使用优化后的权重衰减参数,在所有数据上对剪枝后的网络进行重训练。
表5.2报告了最优正则化参数下10次运行的归一化平方误差(即用\(x(k)\)的估计方差\(\hat{c}{v}^{2}\)归一化后的平方误差)的平均值和标准差。在完整数据集上重训练平均可略微降低测试误差,10次运行均观察到了提升。此外,我们尝试了灵活的正则化方案,即单独权重衰减,其中\(R(\boldsymbol{w}, \kappa)=\sum{i=1}^{m}\kappa_i w_i^2\),且满足\(\kappa_i\geqslant 0\)。在本例中,灵活正则化器的表现不及联合自适应正则化/剪枝方案,这可能与训练集和验证集的大小有关。图5.3展示了使用4个权重衰减的典型运行中自适应正则化与剪枝的效果。
5.5 结论
本文提出通过最小化交叉验证误差或简单的留出验证误差来调整正则化参数。126 J. 拉森等人
图5.3 时间序列预测示例。图(a)和(b)展示了使用4个权重衰减运行自适应正则化算法时,误差和未归一化权重衰减值\(\alpha\)的典型变化过程。调整权重衰减时,归一化验证误差大约降低了一半。结果表明,输入到隐层以及输出偏置的权重需要一定的正则化,而其余权重基本不需要正则化²²。图(c)和(d)表明,剪枝可略微降低测试误差。最优网络被选为验证误差最小的那个,如竖线所示。需要强调的是,实际效果非常依赖于具体问题以及正则化函数形式的选择。
致谢。本研究得到了丹麦自然科学与技术研究理事会通过计算神经网络中心提供的资助。JL additionally感谢无线电元件基金会的资金支持。同时感谢Mads Hintz-Madsen和Morten With Pedersen的有益讨论。
²² 回顾可知,若权重衰减\(\kappa\)低于\(\lambda_{max}/10^8\),则不会影响Hessian矩阵的Moore-Penrose伪逆运算。
附录
假设正则化项关于正则化参数是线性的,即
\R(w, \\kappa)=\\kappa\^{\\top} \\boldsymbol{r}(w)=\\sum_{i=1}\^{q} \\kappa_{i} r_{i}(w) \\
交叉验证误差(5.4)的梯度为
\\\frac{\\partial \\widehat{\\Gamma}}{\\partial \\boldsymbol{\\kappa} }(\\boldsymbol{\\kappa}) = \\frac {1} {K} \\sum_{j=1}\^{K} \\frac{\\partial S_{V_{j} }}{\\partial \\boldsymbol{\\kappa}}(\\widehat {\\boldsymbol{w} } _ {j } ( \\boldsymbol{\\kappa } ) ) \\
使用链式法则,验证误差\(S_{V_{j}}\)的梯度向量可表示为
\\\frac{\\partial S_{V_{j} } }{ \\partial \\boldsymbol{\\kappa } } ( \\widehat {\\boldsymbol{w} } _ { j } ( \\boldsymbol{ \\kappa } ) ) = \\frac { \\partial \\boldsymbol { w } \^ { \\top } } { \\partial \\boldsymbol{\\kappa} } ( \\widehat { \\boldsymbol { w } } _ { j } ( \\boldsymbol{ \\kappa } ) ) \\cdot \\frac { \\partial S _ { V _ { j } } } { \\partial \\boldsymbol{w} } ( \\widehat { \\boldsymbol { w } } _ {j } ( \\boldsymbol{ \\kappa } ) ) \\
其中 \\frac { \\partial \\boldsymbol { w } \^ { \\top } } { \\partial \\boldsymbol{ \\kappa } }\\(是估计权重关于正则化参数的\\)q \\times m\\(阶导数矩阵,\\) m = \\dim ( \\boldsymbol { w } ) \\(为权重向量\\)\\boldsymbol{w}的维度。
为求解该导数矩阵,将代价函数关于权重的梯度视为\(\boldsymbol{\kappa }\)的函数,并在当前估计值\(\boldsymbol{\kappa}_{(n)}\)附近展开如下:
\\\frac {\\partial C_{\\mathcal{T}_{j}} } {\\partial \\boldsymbol {w}} (\\boldsymbol{\\kappa}) = \\frac {\\partial C_{\\mathcal{T}_{j}} } {\\partial \\boldsymbol{w} }(\\boldsymbol{\\kappa } _ {(n)}) + \\frac { \\partial \^ { 2 } C_{\\mathcal{T} _{j } } } { \\partial \\boldsymbol {w } \\partial \\boldsymbol{\\kappa} \^ {\\top } } ( \\boldsymbol { \\kappa } _ { ( n ) } ) \\cdot ( \\boldsymbol { \\kappa } - \\boldsymbol { \\kappa } _ { ( n ) } ) + \\text{o} ( \| \\boldsymbol { \\kappa } - \\boldsymbol { \\kappa } _ { ( n ) } \| ) . \\
令下一迭代中的\(\widehat{\boldsymbol{w} }( \boldsymbol{\kappa} _ { ( n + 1 ) } )\)为最优权重向量,即\(\partial C _ { \mathcal { T } _ { j } } / \partial \boldsymbol { w } ( \boldsymbol{ \kappa } _ { ( n + 1 ) } ) = \boldsymbol { 0 }\),可得
\\\frac { \\partial \^ { 2 } C _ { \\mathcal { T } _ { j } } } { \\partial \\boldsymbol{w } \\partial \\boldsymbol {\\kappa} \^ { \\top } } ( \\widehat { \\boldsymbol { w } } ( \\boldsymbol { \\kappa } _ { ( n ) } )) = \\mathbf { 0 } . \\
回顾可知,由假设有\(\partial C _ { \mathcal { T } _ { j } } / \partial \boldsymbol { w } ( \boldsymbol{ \kappa } _ { ( n ) } ) = \boldsymbol { 0 }\)。式(5.29)可用于求解\(\partial \boldsymbol { w } ^ { \top } / \partial \boldsymbol { \kappa }\)。
注意到代价函数 C _ { \\mathcal { T } _ { j } } ( \\widehat { \\boldsymbol { w } } ( \\boldsymbol { \\kappa } ) ) = S _ { \\mathcal { T } _ { j } } ( \\widehat { \\boldsymbol { w } } ( \\boldsymbol { \\kappa } ) ) + R ( \\widehat { \\boldsymbol { w } } ( \\boldsymbol { \\kappa } ) , \\boldsymbol { \\kappa } ) \\(既通过\\)\\widehat { \\boldsymbol { w } } ( \\boldsymbol { \\kappa })\\(隐式依赖\\)\\boldsymbol { \\kappa }\\(,也直接显式依赖于\\)\\boldsymbol { \\kappa },因此利用式(5.25)可推导出以下关系²³:
\\\frac { \\partial \\boldsymbol { w } \^ { \\top } } { \\partial \\boldsymbol { \\kappa } } ( \\widehat { \\boldsymbol { w } } _ { j } ) = - \\frac { \\partial \\boldsymbol { r } } { \\partial \\boldsymbol { w } \^ { \\top } } ( \\widehat { \\boldsymbol { w } } _ { j } ) \\cdot \\boldsymbol { J } _ { j } \^ { - 1 } ( \\widehat { \\boldsymbol { w } } _ { j } ) \\
其中\(\boldsymbol{J}{j} = \partial^{2}C{\mathcal{T}_{j}} / \partial w \partial w^{\top}\)是代价函数的Hessian矩阵,例如可使用Gauss-Newton近似29对其进行计算。
最后,将式(5.30)代入式(5.27)可得
\\\frac{\\partial S _ { V _ { j } } }{ \\partial \\boldsymbol { \\kappa } } ( \\widehat { \\boldsymbol { w } } _ { j } ) = - \\frac { \\partial \\boldsymbol { r } } { \\partial \\boldsymbol { w } \^ { \\top } } ( \\widehat { \\boldsymbol { w } } _ { j } ) \\cdot \\boldsymbol { J } _ { j } \^ { - 1 } ( \\widehat { \\boldsymbol { w } } _ { j } ) \\cdot \\frac { \\partial S _ { V _ { j } } } { \\partial \\boldsymbol { w } } ( \\widehat { \\boldsymbol { w } } _ { j } ) \\
\(\partial S_{V_{j} }/ \partial \boldsymbol{w}\)可通过在验证集上进行反向传播得到,而\(\partial \boldsymbol { r } / \partial \boldsymbol { w } ^ { \top }\)则根据正则化的特定假设计算得出。
²³ 为方便起见,此处省略了\(\widehat{\boldsymbol{w}}\)对\(\boldsymbol{\kappa}\)的显式依赖。
参考文献
- 1 赤池弘次(Akaike, H.):用于预测的自回归模型拟合,《统计数学研究所年报》21,243-247 (1969)
- 2 甘利俊一(Amari, S.)、村田直树(Murata, N.)、Müller, K.R.、Finke, M.、杨华(Yang, H.):过训练与交叉验证的渐近统计理论,技术报告METR 95-06,以及《IEEE神经网络汇刊》8(5),985-996 (1995)
- 3 Nonboe Andersen, L.、Larsen, J.、Hansen, L.K.、Hintz-Madsen, M.:神经分类器的自适应正则化,// Principe, J. 等(编):《IEEE神经信号处理VII研讨会论文集》,第24-33页,IEEE,皮斯卡塔维,1997
- 4 Bishop, C.M.(克里斯托弗·毕晓普):曲率驱动平滑:前馈神经网络的学习算法,《IEEE神经网络汇刊》4(4),882-884 (1993)
- 5 Bishop, C.M.:《模式识别的神经网络》,牛津大学出版社,牛津,1995
- 6 Dennis, J.E.、Schnabel, R.B.:《无约束优化与非线方程数值方法》,Prentice-Hall出版社,恩格尔伍德克利夫斯,1983
- 7 Drucker, H.、杨立昆(Le Cun, Y.):字符识别中泛化性能的提升,// Juang, B.H. 等(编):《神经信号处理:1991 IEEE-SP研讨会论文集》,第198-207页,IEEE,皮斯卡塔维,1991
- 8 Geisser, S.:带应用场景的预测样本复用方法,《美国统计协会期刊》50,320-328 (1975)
- 9 Geman, S.、Bienenstock, E.、Doursat, R.:神经网络与偏差/方差困境,《神经计算》4,1-58 (1992)
- 10 Girosi, F.、Jones, M.、Poggio, T.:正则化理论与神经网络架构,《神经计算》7(2),219-269 (1995)
- 11 Goutte, C.、Larsen, J.:基于共轭梯度的神经网络自适应正则化,// ICASSP 1998会议论文集,美国西雅图,第2卷,第1201-1204页,1998
- 12 Goutte, C.:关于免费午餐与交叉验证的说明,《神经计算》9(6),1211-1215 (1997)
- 13 Goutte, C.:带剪枝先验的正则化,《神经网络》,1997(待发表)
- 14 Hansen, L.K.、Rasmussen, C.E.:自适应正则化的剪枝方法,《神经计算》6,1223-1232 (1994)
- 15 Hansen, L.K.、Rasmussen, C.E.、Svarer, C.、Larsen, J.:自适应正则化,// Vlontzos, J.、Hwang, J-N.、Wilson, E.(编):《IEEE神经信号处理IV研讨会论文集》,第78-87页,IEEE,皮斯卡塔维,1994
- 16 Hansen, L.K.、Larsen, J.:用于交叉验证的线性遗忘,《计算数学进展》5,269-280 (1996)
- 17 Hertz, J.、Krogh, A.、Palmer, R.G.:《神经计算理论导论》,Addison-Wesley出版公司,雷德伍德城,1991
- 18 Hintz-Madsen, M.、Pedersen, M.、Hansen, L.K.、Larsen, J.:神经分类器的设计与评估,// Usui, S.、Tohkura, Y.、Katagiri, S.、Wilson, E.(编):《IEEE神经信号处理VI研讨会论文集》,第223-232页,IEEE,皮斯卡塔维,1996
- 19 Hornik, K.:多层前馈网络的逼近能力,《神经网络》4,251--257 (1991)
- 20 Kearns, M.:利用逼近与估计率限制交叉验证误差的界限,及其对训练-测试集划分的影响,《神经计算》9(5),1143--1161 (1997)
- 21 Larsen, J.:非线性系统的泛化误差估计,// Kung, S.Y. 等(编):《1992 IEEE-SP神经信号处理研讨会论文集》,第2卷,第29--38页,IEEE,皮斯卡塔维,1992
- 22 Larsen, J.:《神经网络滤波器设计》,丹麦技术大学电子研究所博士论文,1993,ftp://eivind.imm.dtu.dk/dist/PhD_thesis/jlarsen.thesis.ps.Z
- 23 Larsen, J.、Hansen, L.K.:正则化神经网络模型的泛化性能,// Vrontzos, J. 等(编):《IEEE神经信号处理IV研讨会论文集》,第42--51页,IEEE,皮斯卡塔维,1994
- 24 Larsen, J.、Hansen, L.K.:神经网络模型的实证泛化评估,// Girosi, F. 等(编):《IEEE神经信号处理V研讨会论文集》,第30--39页,IEEE,皮斯卡塔维,1995
- 25 Larsen, J.、Hansen, L.K.、Svarer, C.、Ohlsson, M.:神经网络的设计与正则化:验证集的最优使用,// Usui, S.、Tohkura, Y.、Katagiri, S.、Wilson, E.(编):《IEEE神经信号处理VI研讨会论文集》,第62--71页,IEEE,皮斯卡塔维,1996
- 26 Larsen, J. 等:实证泛化误差估计的最优数据集划分比例(撰写中)
- 27 杨立昆(Le Cun, Y.)、Denker, J.S.、Solla, S.A.:最优脑损伤,// Touretzky, D.S.(编):《1989年神经信息处理系统进展会议论文集》,第2卷,第598--605页,Morgan Kaufmann出版社,圣马特奥,1990
- 28 Lowe, D.:自适应径向基函数非线性与泛化问题,// 《IEE人工神经网络会议论文集》,第171--175页,1989
- 29 Ljung, L.:《系统辨识:用户指南》,Prentice-Hall出版社,恩格尔伍德克利夫斯,1987
- 30 MacKay, D.J.C.:反向传播网络的实用贝叶斯框架,《神经计算》4(3),448--472 (1992)
- 31 Moody, J.:神经网络的预测风险与架构选择,// Cherkassky, V. 等(编):《从统计学到神经网络:理论与模式识别应用》,第136卷,Springer-Verlag F系列,柏林,1994
- 32 Moody, J.、Røgnvaldsson, T.:投影基函数网络的平滑正则化项,// 《1996年神经信息处理系统进展会议论文集》,第9卷,MIT出版社,剑桥,1997
- 33 村田直树(Murata, N.)、Yoshizawa, S.、甘利俊一(Amari, S.):网络信息准则------确定人工神经网络模型的隐层单元数,《IEEE神经网络汇刊》5(6),865--872 (1994)
- 34 Nowlan, S.、辛顿(Hinton, G.):通过软权重共享简化神经网络,《神经计算》4(4),473--493 (1992)
- 35 Pedersen, M.:循环网络的训练,// 《IEEE神经信号处理VII研讨会论文集》,IEEE,皮斯卡塔维,1997
- 36 Peterson, G.E.、Barney, H.L.:元音研究中所用的控制方法,《美国声学学会志》(JASA)24,175--184 (1952)
- 37 Shadfan, R.S.、Niranjan, M.:通过输入空间顺序划分构建的动态神经网络架构,《神经计算》6(6),1202--1222 (1994)
- 38 Sjöberg, J.:《基于神经网络的非线性系统辨识》,瑞典林雪平大学电气工程系博士论文,第381号,1995
- 39 Stone, M.:统计预测器的交叉验证选择与评估,《皇家统计学会B辑期刊》36(2),111-147 (1974)
- 40 Svarer, C.、Hansen, L.K.、Larsen, J.、Rasmussen, C.E.:用于时间序列处理的定制网络,// Kamm, C.A. 等(编):《IEEE神经信号处理研讨会论文集》,第3卷,第78-87页,IEEE,皮斯卡塔维,1993
- 41 Watrous, R.L.:Peterson-Barney元音共振峰数据的当前状态,《美国声学学会志》(JASA)89,2459-2460 (1991)
- 42 Weigend, A.S.、Huberman, B.A.、鲁梅尔哈特(Rumelhart, D.E.):预测未来:一种连接主义方法,《国际神经网络系统期刊》1(3),193-209 (1990)
- 43 Williams, P.M.:使用拉普拉斯先验的贝叶斯正则化与剪枝,《神经计算》7(1),117--143 (1995)
- 44 Wolpert, D.H.、Macready, W.G.:《搜索的数学》,技术报告SFI-TR-95-02-010,圣达菲研究所,1995
- 45 吴立(Wu, L.)、Moody, J.:前馈与循环神经网络的平滑正则化项,《神经计算》8(3) (1996)
- 46 朱宏(Zhu, H.)、Rohwer, R.:交叉验证无免费午餐,《神经计算》8(7),1421-1426 (1996)
6 大规模集成平均*
- 曾发表于:Orr, G.B. 与 Müller, K.-R.(编):LNCS 1524,ISBN 978-3-540-65311-0 (1998)。
David Horn¹、Ury Naftaly¹ 与 Nathan Intrator²
¹ 物理与天文学院
² 数学科学学院
雷蒙德与贝弗利·萨克勒精确科学学院
以色列 特拉维夫69978 特拉维夫大学
horn@neuron.tau.ac.il
http://neuron.tau.ac.il/~/horn/
摘要. 对大量预测器取平均可降低误差的方差部分。我们提出了一种方法,可通过有限(小规模)集成的信息来评估无穷大预测器集成的均方误差。我们在具有不同突触权重初始值的网络集成上验证了该方法。我们发现,大规模集成的最优停止准则出现的时间晚于单个网络的训练时间。我们在太阳黑子数据集上测试了该方法,并获得了优异的结果。
6.1 引言
文献中已提出集成平均法,作为提升神经网络预测器泛化性能的手段3, 11, 7。我们沿袭这一思路,考虑对一组仅在突触权重初始值上存在差异的网络进行取平均操作。我们提出了一种方法,可从有限规模集成的性能中推得大规模集成的性能。该方法将在下一节说明,并基于太阳黑子数据集进行演示。对神经网络初始条件进行集成平均可降低预测误差,且该低误差对应的训练时间晚于单个网络的预期时间。我们的方法在太阳黑子问题上的表现优于已发表的最佳结果6。该方法的理论框架由偏差/方差分解提供。在该框架下,我们针对仅初始条件存在差异的网络,定义了特定的偏差-方差分解。初始条件不同的网络集成的偏差保持不变,而方差误差显著降低。
6.2 向大规模集成平均的外推
神经网络的训练流程始于连接权重的若干初始值选择。我们考虑由以下不同的网络组成的集成
D. Horn、U. Naftaly 和 N. Intrator 三者仅因初始值不同,需对这些初始值取平均。由于初始条件空间极大,我们开发了一种技术,可用于近似计算整个空间的平均值。
我们的技术是将数量固定为\(Q\)的网络划分为若干组,组内所有网络的初始权重均为随机选取,彼此不同。我们对每个组定义预测器为组内全部\(Q\)个网络输出的平均值。
选取若干组大小同为\(Q\)的组,对其在测试集上的预测结果取平均,即可得到图1展示的有限尺寸平均。随后我们对极限\(Q \rightarrow \infty\)进行参数估计:在太阳黑子问题中,仅需对\(1/Q\)做简单回归即可得到该极限,如图2所示。一般情况下可能会遇到更复杂的反幂律行为,这说明不同初始权重的网络之间存在相关性。
图6.1 测试集预测误差的ARV(平均相对方差)随训练时间(单位:千轮次,KE)变化曲线。各曲线对应不同的组大小取值:自上而下分别为\(Q=1,2,4,5,10,20\),最下方的曲线为向\(Q \rightarrow \infty\)外推的结果。
6.2.1 在太阳黑子问题中的应用
自1700年起,人们就开始收集年度太阳黑子统计数据。这些数据已被广泛研究,是统计领域的基准数据集9,10,4。参照已有文献10,6,2,我们将训练集设定为1701年至1920年的数据,测试集为1921年至1955年的数据。参照10的方法,我们根据数据集\(S\)的平均相对方差(ARV)计算预测误差:
\\\text{ARV} = \\frac{\\sum_{k \\in S} \\left( y_k - f(\\mathbf{x}_k) \\right)\^2}{\\sum_{k \\in S} \\left( y_k - E\\left\[ y_k \\right \right)^2} \tag{6.1} \]
其中\(y_k(\mathbf{x}_k)\)为数据值,\(f(\mathbf{x}_k)\)为预测器。在本时间序列问题中,对于任意时刻点\(t=k\),输入向量\(\mathbf{x}_k\)的分量值取自\(t-1, t-2, \cdots, t-12\)时刻的序列数据(同10)。式1中的分母在训练集上为\(\sigma^2=1535\),测试集使用相同的值。
我们使用的神经网络有12个输入层,包含1个由4个单元组成的S型隐藏层和1个线性输出层。随后将网络扩展为循环神经网络(SRN)1,循环神经网络的输入层增加了时间序列前一个时刻的隐藏层。学习算法为反向传播法,其应用的误差函数为训练集的均方误差(MSE)。训练时额外预留了包含35个随机选取样本的验证集,用于性能验证。
图6.1展示了我们在测试集上的结果,以训练轮数为变量。我们观察到曲线按\(Q=1,2,4,5,10,20\)的顺序依次降低,之后是向\(Q \rightarrow \infty\)外推的结果。所有这些曲线均对应大小为\(Q\)的组的平均值,通过运行60个网络计算得到。为展示外推过程,我们在图6.2中给出了\(t=70\)和\(t=140\)千轮次(KE)下随\(1/Q\)变化的散点。显然线性外推的效果非常好。此外,\(Q=20\)的结果与向\(Q \rightarrow \infty\)外推的结果差距很小。注意图1中\(Q \rightarrow \infty\)曲线的最小值出现在比\(Q=1\)单网络曲线更高的训练时间处,这一点从图2中\(t=70\)与\(t=140\)千轮次曲线的交点也能明显看出。一个重要结论是:集成训练的停止准则(需应用于组内每一个网络)与单网络训练的停止准则差异极大。
6.2.2 最优结果
图1中的曲线采用学习率0.003得到。更低的学习率会带来更低的误差,此时集成平均的效果就没有那么显著了。我们将输入向量调整为Pi和Peterson8提出的六维选择,包含\(x_{t-1}, x_{t-2}, x_{t-3}, x_{t-4}, x_{t-9}\)和\(x_{t-10}\),以此获得了最优结果。在上述SRN其余设置不变的前提下,采用0.0005的学习率,我们得到的预测误差最小值为0.0674,优于所有此前已报道的结果。
6.3 理论分析
该方法的理论框架由偏差-方差分解提供。在此框架下,我们针对仅初始条件不同的网络,定义了特定的偏差-方差分解。这是所有方差来源总集合中尤其有用的一个子集。估计量的性能通常用均方误差(MSE)评估,其定义如下:
\\\text{MSE} = E_{\\mathcal{D}}\[(f(x) - y)\^2 \]
其中平均值针对预测器\(f\)的所有测试集计算,\(y\)是\(\mathbf{x}\)中数据的目标值。假设期望\(E\)是基于\(\mathbf{x}\)和\(y\)的真实概率计算的,则MSE可分解为:
\\\text{MSE} = B_{\\mathcal{D}} + V_{\\mathcal{D}} \\
图6.3 太阳黑子问题测试集的最优结果。图中展示了\(Q=1\)时不同初始条件选择的结果(以均值表示,误差线覆盖一个标准差范围),以及\(Q=20\)的结果(更细的散点),变量为训练时间(单位:千轮次K-epochs)。所用网络基于Pi & Peterson提出的变量,学习率为0.0005。
任意给定预测器\(f(\mathbf{x})\)的能力天然受限于其训练所使用的数据集。针对典型误差,可对所有数据空间取平均2,并将该误差分解为偏差和方差两个分量:
\E_{\\mathcal{D}}\[(f(\\mathbf{x}) - E\[y\|\\mathbf{x})^2] = B_{\mathcal{D}} + V_{\mathcal{D}} \tag{6.4} \]
其中:
\B_{\\mathcal{D}}(f(\\mathbf{x})) = (E_{\\mathcal{D}}\[f(\\mathbf{x}) - Ey\|\\mathbf{x})^2 \tag{6.5} \]
\V_{\\mathcal{D}}(f(\\mathbf{x})) = E_{\\mathcal{D}}\[(f(\\mathbf{x}) - E_{\\mathcal{D}}\[f(\\mathbf{x}))^2] \tag{6.6} \]
在本应用中,我们将预测器设为\(E_{\mathcal{I}}f(\\mathbf{x})\),其中下标\(\mathcal{I}\)代表作为\(f(\mathbf{x})\)的神经网络初始权重空间。为理解对初始权重取平均的效果,我们构造空间\(\mathcal{R}\)为\(\mathcal{D}\)与\(\mathcal{I}\)的直积。可以证明:
\B_{\\mathcal{R}}(f(\\mathbf{x})) = B_{\\mathcal{D}}(E_{\\mathcal{I}}\[f(\\mathbf{x})), \tag{6.7} \]
\V_{\\mathcal{R}}(f(\\mathbf{x})) \\geq V_{\\mathcal{D}}(E_{\\mathcal{I}}\[f(\\mathbf{x})). \tag{6.8} \]
参考文献
1 E. Arkin, 1949. 对Biondel定理的深入研究。(D. 1.). 纽约,第9-108页。(2023)
8 Pi, H., Peterson, C.: 时间序列中的嵌入维度与变量依赖寻找。《神经计算》6,509--520 (1994)
9 Priestley, M.B.: 《谱分析与时间序列》。学术出版社 (1981)
10 Weigend, A.S., Huberman, B.A., Rumelhart, D.: 预测未来:一种连接主义方法。《国际神经系统杂志》1,193--209 (1990)
11 Wolpert, D.H.: 堆叠泛化。《神经网络》5,241--259 (1992)
优化网络模型与算法技巧*
*早前发表于:Orr, G.B. 与 Müller, K.-R.(主编):LNCS 1524,ISBN 978-3-540-65311-0(1998年)。G. Montavon 等人(主编):《神经网络:实践技巧》第2版,LNCS 7700,第139--141页,2012年。© 施普林格- Verlag 柏林海德堡 2012年
前言
本节包含5章内容,介绍了易于实现的实用技巧,这些技巧通过修改网络架构和/或学习算法来提升网络的建模能力。更优的建模意味着能在更短时间内获得更优的解决方案。
在第7章中,Gary Flake 提出了一种技巧,该技巧能为多层感知机(MLP)赋予额外的径向基函数(RBF)能力。该技巧实现极为简单,只需额外添加若干输入,其取值为原始输入的平方(第144页)。虽然将高阶项作为输入并非新思路,但本章通过以下几点提供了新的见解:(1)总结了此前相关研究成果;(2)给出了清晰易懂的示例来说明该技巧;(3)提供了理论依据,证明仅需添加高阶平方项即可;(4)与其他多种网络模型进行了全面对比。仅需添加平方项这一点非常重要,这意味着我们可以在获得额外能力的同时,无需让输入数量过度增长。我们注意到,该思路还可以进一步拓展,除了平方输入之外,还可以纳入其他相关特征,例如使用核主成分分析(kernel PCA)2来获取非线性特征。
在第8章中,Rich Caruana 介绍了多任务学习(MTL)(第163页),该技术会为网络添加额外的输出,用于预测与主要任务独立但相关的任务。为了介绍该技巧,本章从一个示例和对简单二值输入布尔函数的详细讨论切入。随后作者给出了几种实践中可作为额外输出的方案,主要包括:
- 仅在必须做出预测后才可获取的特征,但在训练阶段可以通过离线方式获得(第170页)
- 相同任务,但采用不同的评估指标(第175页)
- 相同任务,但使用不同的输出表征形式(第176页)
文中给出了两项实证结果:(1)在肺炎患者死亡率排名任务中,额外输出为患者入院时无法获取、但后续可获得以补充训练数据的检测结果;(2)在车辆转向任务中,额外输出包括车道中心线位置、道路边缘等。本章最后部分聚焦于有效实现多任务学习的相关议题,例如隐层大小(第181页)、早停策略(第181页)以及学习率(第185页)。
接下来由 Patrick van der Smagt 和 Gerd Hirzinger 合著的章节提出了一种技巧,用于缓解黑塞矩阵(Hessian)的病态问题。若某个单元的传出权重极小,那么进入该单元的传入权重的影响力会被严重削弱(Hessian病态的其他成因可参阅第1章)。这会导致误差曲面出现平坦区域,具体表现为:
- 逻辑单元或tanh单元的误差导数(第226、229页)
- 采用交叉熵误差与softmax的k分类问题中的导数(第228页)
- 采用单个逻辑输出单元、交叉熵误差与0/1标签的二分类问题中的导数与误差(第228页)
珍妮 & 克劳斯
参考文献
- 1 Hochreiter, S., Schmidhuber, J.:Flat minima. 《神经计算》9(1),1--42(1997)
- 2 Schölkopf, B., Smola, A., Müller, K.-R.:非线性主成分分析作为核特征值问题。《神经计算》10,1299--1319(1998)
平方单元增强型径向扩展多层感知机*
Gary William Flake
西门子企业研究院
美国新泽西州普林斯顿市东学院路755号,邮编08540
http://mitpress.mit.edu/books/FLA0H/cbnhtml/author.html
*早前发表于:Orr, G.B. 与 Müller, K.-R.(主编):LNCS 1524,ISBN 978-3-540-65311-0(1998年)。G. Montavon 等人(主编):《神经网络:实践技巧》第2版,LNCS 7700,第143--161页,2012年。© 施普林格- Verlag 柏林海德堡 2012年
摘要。考虑一个具有d个输入、单个隐层sigmoid激活层和线性输出的多层感知机(MLP)。向该网络中添加额外的d个输入,其取值设为前d个输入的平方,这种改动仅需极少的权重要求,却能为架构赋予类似高阶神经网络和径向基函数网络(RBFN)的特性。其中尤为值得关注的是,该架构能够仅用单个隐层节点就在d维空间中形成局部特征,同时也能覆盖输入空间的大片区域;因此,它兼具RBFN的局部特性,又不会像RBFN那样受到维度灾难的严重影响。我将这类网络称为平方单元增强型径向扩展多层感知机(SQUARE-MLP,简称SMLP)。
7.1 引言与研究动机
当面对一个新的、极具挑战性的问题时,神经网络研究者需要做出的最关键的决策就是选择要探索的模型类别。在大多数模型构建工具箱中,通常都包含若干不同类型的神经网络架构,其中更为人熟知的两种------径向基函数网络(RBFN)15,16,13,1,17和多层感知机(MLP)25,20------分别体现了全局模型与局部模型的差异。具体而言,MLP属于全局模型,它通过改变整个输入-输出响应的特征来构建近似,而RBFN属于局部模型,它使用的特征被限制在输入空间的有限区域内。这两种模型类型的这一差异会对诸多架构和算法问题产生重大影响。
MLP学习速度慢、记忆保持能力弱、通常采用同质学习规则,受维度灾难的影响相对较小;而RBFN在各方面几乎完全相反:学习速度快、记忆保持能力强、通常采用异质学习规则,受维度灾难的影响极大。由于这些差异,人们往往会倾向于使用一种或多种启发式规则来做选择,例如低维问题用RBFN(高维问题用MLP),或连续函数近似问题用RBFN(模式分类问题用MLP)。虽然这些经验法则对于简单问题通常足够适用,但仍有许多例外情况不遵循这些规则(例如可参阅12)。此外,工业场景中更复杂的问题往往具有高维输入空间,这些空间在局部表现良好,且可能无法明确归类为函数近似问题或模式分类问题。这意味着,针对特定问题选择最优架构本身就是一个非平凡的问题。
颇具讽刺意味的是,针对这一困境的优质妥协方案早已出现,但人们只是最近才真正认识到这一技巧的精妙之处。多年来,研究人员普遍通过在输入中添加输入平方项作为辅助输入来增强MLP。这一做法的依据一直比较随意,通常只是基于"使用该技巧总不会有害"的论证,但事实证明,经过这种方式增强、拥有n个隐层节点的MLP,几乎可以完美近似具有n个基函数的RBFN。之所以是"几乎",是因为增强型MLP中的径向基函数并非高斯函数,而是准高斯函数(需要说明的是,"准高斯"是一个我随意使用的未严格定义的术语,仅表示"与高斯函数足够接近,以至于没有实质差异")。这意味着,通过添加输入平方项增强的MLP,既可以用单个隐层节点轻松形成局部特征,也能覆盖输入空间的广阔区域,因而在需要时能够有效忽略特定输入。因此,通过使用这一极其简单的技巧,我们同时保留了两个架构方法的最优特性。
本章剩余部分共分为5个小节。7.2节将介绍该技巧,并简要对比所提架构与其他几类知名模型。7.3节将以函数近似问题和模式分类问题为例,展示该技巧的有效性。随后将深入分析一个知名的、具有挑战性的元音分类问题。7.4节通过证明所得架构与RBFN的等价性,从理论上验证了该技巧,而7.5节将通过展示单个带有辅助平方输入的节点可以形成的曲面与边界类型,从更直观的角度验证所提技巧。最后,7.6节将给出本文结论。
7.2 技巧介绍:SQUARE-MLP
所提技巧仅需对标准MLP架构进行简单修改:在MLP的输入层中新增一组附加输入,这些输入与原始输入的平方相耦合。该技巧至少可以通过两种不同的方式实现。第一种方法是直接在数据集中添加额外输入。因此,如果现有数据集中每个输入模式包含d个分量,那么可以从原始数据集生成新的数据集,该
7. 平方单元增强、径向扩展多层感知机(SMLP)
本文讨论了单层感知机(SLP)与多层感知机(MLP)在模式识别任务中的优势与挑战。文中指出,虽然MLP鲁棒性强、能够学习复杂关联,但存在过拟合问题。相比之下,SLP在无噪声场景下更稳定,但灵活性不及MLP。
本文进一步阐释了SLP的局限性,强调其无法在无噪声条件下对复杂非线性关系建模。文中还提到了噪声在现实场景中的作用,以及噪声对模型性能的影响。文章最后总结了两类感知机的权衡取舍,指出二者的选择取决于具体应用场景与数据特性,同时提及了潜在的未来研究方向。
SMLP可以同时捕捉局部与全局特征,但代价是每个隐藏节点的权重数量会翻倍。若使用牛顿法、拟牛顿法等更复杂的优化算法处理此类架构,内存需求问题会更加突出------这类优化方法所需内存与网络中的权重总数成正比。
函数链接网络
另一种相关架构是函数链接网络18,它与标准MLP结构类似,但会显式地将输入经标量函数运算的结果添加到网络中。例如,部分应用场景可能事先明确:网络的期望输出是一个或多个输入的正弦、余弦函数(比如输入对应机械臂的关节角度),这种情况下,直接将这类值作为网络的输入加入网络,而非强制网络学习可能难以建模的概念,是更优的选择。
函数链接网络可以使用任意标量函数,这类函数最终本质上相当于对数据执行某种预处理。通常,专家知识会被用于确定需要添加到网络中的额外标量函数:即,不存在通用的技术可以事先直接选出最优的预处理器函数。不过,若对输入数据给定一组非线性变换,可对非线性特征空间执行主成分分析(PCA),筛选出承载最多方差(即信息量最大)的特征子集。文献23提出了一种计算上可行的该技术变体,被称为核主成分分析(Kernel PCA)。无论如何,通过使用平方函数增强函数链接网络,最终仍会得到SMLP。
虽然我已尽力注明相关出处,但学界普遍认为"将输入的平方添加到模型中"这一基本思想,至少和"预处理就是一切"这句箴言一样古老。
7.3 应用示例
以下三个示例展示了SMLP理论上表现优于多层感知机(MLP)或径向基函数网络(RBFN)的问题领域。所有示例均为知名基准测试。在每个案例中,模型的输出响应需要同时具备局部特征形成能力与覆盖大范围输入空间的能力。总体而言,MLP难以形成局部特征,而RBFN则难以覆盖输入空间的平坦区域。
7.3.1 山丘-台面函数逼近
第一个问题是公认的人为构造的示例,选择它正是因为MLP和RBFN处理该问题均存在困难。图7.1展示的"山丘-台面"曲面21,在一个S型脊上仅存在一个局部凸起。该问题的训练数据来自图中所示区域的21×21网格二维均匀采样,测试数据则来自更精细的41×41网格。
图7.1 山丘-台面曲面体现了局部架构与全局架构的差异:MLP可以轻松生成台面,但难以拟合山丘;而RBFN生成山丘轻而易举,却在台面拟合上存在困难。
| 模型 | 节点数 | 权重数 | 测试集RMSE |
|---|---|---|---|
| RBFN | 2 | 9 | 0.333406 |
| 3 | 13 | 0.071413 | |
| 4 | 17 | 0.042067 | |
| 5 | 21 | 0.002409 | |
| MLP | 2 | 9 | 0.304800 |
| 3 | 13 | 0.015820 | |
| 4 | 17 | 0.001201 | |
| SMLP | 2 | 13 | 0.000025 |
本问题除标准MLP外,还使用了归一化径向基函数网络(NRBFN),其由以下两个公式描述:
\(y = \frac{\sum_{i} w_{i} r_{i}(\mathbf{x})}{\sum_{j} r_{j}(\mathbf{x})} + a \quad \text{and}\)
\(r_{i}(\mathbf{x}) = \exp(-||\mathbf{x} - \mathbf{c}{i}||^{2} / \sigma{i}^{2})\),
其中$\mathbf{c}_{i}$和$\sigma_{i}$分别是第$i$个基函数中心与宽度。训练NRBFN时,首先使用$k$-means聚类算法对训练样本的输入空间中的中心进行聚类,随后将每个基函数的宽度设为与到最近邻的距离成正比。接下来,使用奇异值分解计算伪逆,精确求解线性项$w_{i}$与$a$的最小均方解。以上所有步骤构成了拟牛顿法(BFGS)优化程序的初始权重集,该优化程序会对所有权重同时进行最多200轮迭代。对于MLP,采用包含单隐藏层、使用tanh(x)激活函数与线性输出的结构。所有权重初始设置为-0.1到0.1范围内的均匀随机值,随后使用拟牛顿法(BFGS)对所有权重进行最多200轮训练。SMLP的搭建与训练方式与MLP完全一致。表7.1展示了三类架构的测试结果。可以看到,尽管训练数据无噪声、训练流程也较为复杂,RBFN与MLP在该任务上仍遇到了不小的困难。相比之下,SMLP仅用2个隐藏节点就完美拟合了该曲面,且测试误差比其他两类架构的最佳结果低数个数量级。
7.3.2 双螺旋分类
双螺旋分类问题是所有神经网络架构均难以处理的知名基准测试;此外,几乎没有RBFN的相关结果报告,因为该问题的特性决定了局部模型需要使用大量基函数(>100)记忆训练数据,才可能接近求解。因此,该问题是RBFN完全不适用的场景,因此下文不再对其展开讨论。
图7.2 双螺旋问题的数据由xy平面上的194个点组成,这些点属于两条各自绕原点旋转三圈的螺旋。此前其他研究者针对该问题的成果主要集中于传统MLP和带跳层连接的MLP,100%分类准确率的最佳 reported 结果汇总如下:
- (Lang & Witbrock 9):采用跳层连接的2-5-5-5-1结构MLP,共138个权重,平均收敛时间为20000轮批反向传播迭代。
- (Lang & Witbrock 9):采用跳层连接的2-5-5-5-1结构MLP,共138个权重,使用交叉熵误差函数,平均收敛时间为12000轮批反向传播迭代。
- (Lang & Witbrock 9):采用跳层连接的2-5-5-5-1结构MLP,共138个权重,平均训练轮数为7900轮quickprop迭代3。
- (Frostrom 未发表):无跳层连接的2-20-10-1结构MLP,共281个权重,需进行13900轮带动量的批反向传播迭代。
- (Fahlman和Lebiere 4):采用级联相关拓扑的MLP,使用12至19个隐藏单元(平均15个),平均训练轮数为1700轮quickprop迭代。由于级联相关拓扑的特性,这些网络的权重数量在117到250之间。
上述结果表明,双螺旋问题难度极高,需要复杂网络拓扑与长时间训练。与以上结果相比,SMLP架构似乎非常适合该问题。使用共轭梯度优化算法,训练了一个包含15个双曲正切隐藏单元(总权重仅91个)的SMLP。在全部10次试验中,该SMLP均成功求解了双螺旋问题,平均训练轮数为2500轮,最少仅需800轮。可以看到,无论从拓扑结构还是权重数量来看,SMLP的架构都远 simpler 于上述MLP研究所用的架构,因此优化算法的效率也高得多。这是架构的表征能力简化学习过程的典型案例,进而加快了权重优化的速度。尽管并非总能通过更简单的SMLP稳定求解该问题,但一个包含10个隐藏节点(总权重仅61个)的SMLP在3次独立试验中均求解成功,平均训练轮数为1500轮。该SMLP的输出响应曲面如图7.3所示。第7.5节将探讨单个SMLP隐藏节点可形成的不同类型的曲面,我们将会看到,SMLP能够轻松生成局部与全局特征的能力,是其能快速求解双螺旋问题的关键。
7.3.3 元音分类
德特丁元音识别数据集2是另一个被广泛研究的基准数据集,难度远高于前两个问题,也更能体现神经网络从业者可能面对的问题类型。该数据集由英国英语使用者发出的稳态元音的听觉特征构成,共包含528个训练样本和462个测试样本,每个样本由10个特征组成,且仅属于对应所发音的11个类别中的一类。说话者包含两种性别,这让该问题极具研究价值。
本节所有结果均采用包含10个输入、数量不等的隐藏单元和11个输出的网络架构。部分此前研究的结果总结在表7.2中。部分早期研究属于个案性质,仅开展过单次或少数几次实验,但这些研究仍有参考价值,因为它们展示了经验丰富的神经网络从业者使用多种不同架构在该问题上可预期的表现。有趣的是,罗宾逊的研究结果表明,最近邻分类器在该问题上极难被超越。最近邻分类器的正确分类率达56%,优于罗宾逊的所有神经网络方案。但最近邻方法需要将海量数据存储为查找表,因此这一结果并不十分鼓舞人心。哈斯蒂和蒂布希拉尼7报告的最佳得分由判别自适应最近邻(DANN)分类器取得,该61.7%的得分来自多项模拟研究中表现最优的分类器,因此这是专家在尝试多种解决方案后发现的最优历史结果。
表7.2 文献19、12、5、8、6和7总结的元音数据此前研究结果。所有条目要么是确定性技术,要么是报告的最优得分,除非得分后带有"*",此时该得分代表多次运行的平均值。
| 模型 | 隐藏单元数 | 权重数 | 正确率 |
|---|---|---|---|
| 单层感知机 | --- | 11 | 33 |
| 多层感知机19 | 11 | 253 | 44 |
| 22 | 495 | 45 | |
| 88 | 1947 | 51 | |
| 带重归一化的多层感知机12 | 5 | 121 | 50.1* |
| 10 | 231 | 57.5* | |
| 20 | 451 | 50.6* | |
| 随机网络5(FF-R分类器) | 8 | 297 | 54* |
| 16 | 473 | 56* | |
| 32 | 825 | 57.9* | |
| 径向基函数 | 88 | 1936 | 48 |
| 528 | 11616 | 53 | |
| 高斯节点网络 | 11 | 253 | 47 |
| 22 | 495 | 54 | |
| 88 | 1947 | 53 | |
| 528 | 11627 | 55 | |
| 方形节点网络(非SMLP) | 11 | 253 | 50 |
| 22 | 495 | 51 | |
| 88 | 1947 | 55 | |
| 改进的卡内瓦模型 | 88 | 968 | 43 |
| 528 | 5808 | 50 | |
| 局部近似 | 2 | 5808 | 50.0 |
| 3 | 5808 | 52.8 | |
| 5 | 5808 | 53.0 | |
| 10 | 5808 | 48.3 | |
| 20 | 5808 | 45.0 | |
| 最近邻 | --- | (5808) | 56 |
| 线性判别分析 | --- | 715 | 44 |
| Softmax | --- | -? | 33 |
| 二次判别分析 | --- | -?- | 47 |
| CART | --- | -? | 44 |
| CART(线性组合拆分) | -?- | 46 | |
| FDA/BRUTO | --- | -? | 56 |
| Softmax/BRUTO | --- | -? | 50 |
| FDA/MARS(1阶) | -? | 55 | |
| FDA/MARS(2阶) | --- | -? | 58 |
| Softmax/MARS(1阶) | -?- | 52 | |
| Softmax/MARS(2阶) | --- | -?- | 50 |
| LOCOCODE/反向传播(30个输入) | 11 | 473 | 58* |
| DANN | --- | -? | 61.7 |
| 表7.3列出了专为本研究开展的实验结果。表格展示了5种不同的模型/优化组合,每一行对应50次独立试验,每次试验采用不同的随机初始条件启动。对于标注为"训练后"的主要条目,权重超过1000的模型采用共轭梯度法确定权重,权重少于1000的模型采用拟牛顿法确定权重。优化程序被设置为最小化形如$E = e^2 + \lambda | \mathbf | ^2\(的误差函数,其中\)e\(是实际输出与期望输出的差值,\)\lambda\(是惩罚大权重的权重衰减项。所有实验中\)\lambda$均设为\(10^{-4}\)。在所有架构中,\(\lambda\)取\(10^{-3}\)和\(10^{-5}\)时结果均更差,因此\(10^{-4}\)是合理的折中选择。\(^{\text{1}}\) 所有MLP和SMLP架构均采用\(\tanh(x)\)激活函数,RBFN与7.3.1节描述的架构一致,但未做归一化处理(归一化RBFN的表现持续更差)。除非另有说明,优化程序始终运行至收敛(误差变化小于\(10^{-20}\))。RBFN和NRBFN模型的权重通过三步流程"解析求解":1)将中心设置为对训练数据输入向量应用k均值聚类算法得到的聚类中心;2)将宽度设置为与每个中心到其最近邻的距离成正比;3)将剩余线性权重作为最小均方问题,通过矩阵伪逆求解。SMLP架构的求解方式与RBFN和NRBFN网络类似,该流程的细节将在7.4节介绍,目前仅需说明该流程几乎完全一致,仅需对对应中心和宽度的权重做轻微变换。有趣的是,SMLP可使用该"求解"流程计算初始权重集,之后再用基于梯度的方法训练SMLP。这使得SMLP被预设为非常优异的初始解,之后可通过基于梯度的优化程序进一步优化。表7.3中标签为"混合"的行对应采用这种方式训练的SMLP。表7.3中有三列展示了衡量不同模型表现的三种不同方式,其中唯一具有统计显著性的指标是标注为"平均正确率(%)"的列,该列是优化程序在训练数据上停止运行后取得的平均测试集得分。"最优正确率(%)"列下的得分对应50次运行中最优的最终测试得分,"作弊正确率(%)"则对应50次运行中任意模型在训练任意时刻取得的最优测试得分。 | |
| "最优正确率"列下的得分对应50次运行中最优的最终测试得分,"作弊正确率"则对应50次运行中任意模型在训练任意时刻取得的最优测试得分。由于"解析求解"模型的权重仅通过单步计算得出,"作弊得分"仅对迭代类技术有意义。"作弊得分"的一种解读是:若拥有完美的交叉验证集用于早停,可达到的最优得分。表7.3的部分信息以图形形式总结在图7.4中,因此更易直观理解。在所有情况下,SMLP和RBFN的表现均显著优于MLP。但SMLP与RBFN之间的差距很小,RBFN与混合训练SMLP的性能几乎完全一致。此外,混合训练方案的表现似乎优于纯训练和纯解析求解的SMLP。 | |||
图7.4 表7.3的结果以图形形式展示:(a) 所有模型类型的平均结果;(b) 带误差棒的SMLP与MLP模型平均值;(c) 带误差棒的SMLP与RBFN模型平均值
表7.3 本研究结果:所有平均值均来自50次试验,得分低于33%(感知机得分)的结果会被视为未收敛而剔除。"作弊得分""最优得分""平均得分"三个术语的解释详见正文。
| 模型 | 隐藏单元数 | 权重数 | 正确率(作弊) | 正确率(最优) | 正确率(平均) | 标准差 |
| --- | --- | --- | --- | --- | --- | --- |
| MLP(训练后) | 11 | 253 | 53.24 | 51.08 | 44.53 | 3.34 |
| | 44 | 979 | 58.00 | 54.76 | 49.54 | 2.55 |
| | 88 | 1947 | 57.57 | 57.14 | 50.67 | 3.69 |
| SMLP(训练后) | 11 | 363 | 63.63 | 60.82 | 53.25 | 5.02 |
| | 22 | 715 | 64.93 | 63.63 | 55.11 | 3.31 |
| | 33 | 1067 | 65.15 | 65.15 | 56.54 | 3.92 |
| | 44 | 1419 | 66.66 | 65.15 | 58.50 | 2.51 |
| RBFN(解析求解) | 11 | 253 | --- | 56.92 | 52.11 | 2.64 |
| | 22 | 495 | --- | 63.20 | 57.36 | 2.89 |
| | 33 | 737 | --- | 66.88 | 59.03 | 3.45 |
| | 44 | 979 | --- | 67.53 | 61.38 | 2.66 |
| | 66 | 1463 | --- | 65.80 | 61.79 | 2.23 |
| | 88 | 1947 | --- | 67.09 | 61.58 | 2.38 |
| SMLP(解析求解) | 11 | 363 | --- | 58.87 | 54.14 | 2.79 |
| | 22 | 715 | --- | 63.63 | 56.68 | 3.23 |
| | 33 | 1067 | --- | 63.85 | 57.17 | 3.09 |
| | 44 | 1419 | --- | 67.31 | 59.41 | 2.89 |
| | 66 | 2123 | --- | 68.39 | 60.36 | 3.04 |
| | 88 | 2827 | --- | 67.09 | 60.30 | 2.57 |
| SMLP(混合训练) | 11 | 363 | 66.66 | 63.85 | 57.19 | 2.98 |
| | 22 | 715 | 66.88 | 63.41 | 59.22 | 2.50 |
| | 33 | 1067 | 66.45 | 64.71 | 59.64 | 2.81 |
| | 44 | 1419 | 68.18 | 66.88 | 60.59 | 2.74 |
7.4 理论依据
基于上一小节的数值实验背景,我们现在可以探讨SMLP如何被视为MLP的"径向扩展"版本。本节中,我会将公式7.1改写为与RBFN等价的形式;由此我们就能看到SMLP为何能够几乎完美地近似RBFN。
第一步是更仔细地研究S型激活函数。令\(\text{sigmoid}(x) = 1/(1 + \exp(-x))\),\(\text{gauss}(x) = \exp(-x^2)\)。我们可以将拟高斯函数定义为:
\q(x) = 2 - \\frac{2}{\\text{gauss}(x) + 1} = 2 - 2 \\text{sigmoid}(x\^2). \\tag{7.5} \\
这意味着可以通过对输入已做平方运算的S型函数做仿射变换,得到局部核函数。图7.5展示了拟高斯函数与真实高斯函数之间的关系。两个函数都是单峰的,且在两个方向上均呈指数衰减。此外,类似的变换也可以应用于双曲正切函数;因此,使用两种常见的S型函数中的哪一种并不重要,因为它们都可以被转化为基函数。
由于基函数具有中心点和宽度,我们希望能够构建位于任意位置、尺寸任意的局部特征。通常情况下,这意味着基函数需要引入欧氏距离这类距离度量。若中心点记为\(c_i\),宽度与\(\sigma\)成正比,我们可以将归一化的欧氏距离函数重写如下:
\\\begin{aligned} \\frac{1}{\\sigma_i\^2} \\\|x - c_i\\\|\^2 \&= \\frac{1}{\\sigma_i\^2} (x \\cdot x - 2c_i \\cdot x + c_i \\cdot c_i) \\\\ \&= \\sum_j \\left(-\\frac{2}{\\sigma_i\^2}c_{ij}\\right) x_j + \\sum_k \\left(\\frac{1}{\\sigma_i\^2}\\right) x_k\^2 + \\left(\\frac{1}{\\sigma_i} c_i \\cdot c_i\\right) \\end{aligned} \\tag{7.6} \\
因此,公式
\2 - 2 \\text{sigmoid} \\left( \\sum_j u_{ij}x_j + \\sum_k v_{ik}x_k\^2 + a_i \\right) \\tag{7.7} \\
所示的形式与径向基函数非常相似。通过对比公式7.6和公式7.7,我们可以轻易设置\(u_{ij}\)、\(v_{ik}\)和\(a_i\)项,从而在特定位置生成具有特定宽度的局部"凸起"。这意味着SMLP网络中的单个隐层节点可以在任意维度的输入中生成局部特征。
作为对比,Lapedes和Farber 10, 11也曾使用标准MLP构建局部特征。然而,在d维输入空间中,仅为了生成单个局部"凸起",就需要使用拥有两个隐层、第一隐层含\(2d\)个隐节点、第二隐层再含1个隐节点的MLP。这一简单分析表明,在SMLP中生成局部特征非常容易,但在MLP中生成局部特征可能非常困难。
如7.3.3节所述,我们可以利用SMLP与RBFN的相似性,通过非迭代流程"求解"SMLP的权重。第一步是选择一组基中心,可以通过对训练数据的输入空间进行子采样或聚类来确定。选定中心后,可以计算每个中心相对于其他中心的最近邻距离,这些距离可作为基中心的宽度。接下来,将中心\(c_i\)和宽度\(\sigma_i\)代入公式7.6,即可确定\(u_{ij}\)、\(v_{ik}\)和\(a_i\)权重的取值。最后,可以使用矩阵伪逆流程精确求解公式7.1中SMLP的线性权重\(w_i\)和\(b\)。因此,人们可以像训练MLP一样训练SMLP,也可以像求解RBFN一样求解SMLP。还可以将两种方法结合,将求解得到的权重作为训练流程的初始权重。
与常规训练方法相比,使用该流程求解权重有时能够将权重的计算开销降低数个数量级。此外,7.3.3节的数值实验还发现,通过这种混合方案得到的解,其质量很容易超过传统方法得到的解。
图7.6 单个SMLP节点可以生成的多种不同类型的曲面与决策边界。
图7.7 SMLP中用于测试积分问题的10个滤波器的曲线近似结果。
7.5 直观与拓扑依据
尽管通过前述变换,SMLP显然可以表示RBFN,但单个SMLP节点只能生成单个局部基函数。这使得SMLP可以构建种类繁多的局部几何特征,包括带局部弯折的弯曲"线状"或"针状"结构,以及通过组合局部项生成的不同阶次的曲面与决策边界。这些特征的投影可以是局部的,也可以是全局的,具体取决于投影所在的子空间。
7. 平方单元增强型径向扩展多层感知机
一种架构能够生成这些特征的重要性如何?这类边界与曲面之所以有专属名称,本身就说明它们的重要性足以让我们需要一类能够高效生成它们的模型。不过,如果我们重新审视7.3.2节中的双螺旋问题,就可以剖析SMLP生成的决策边界(如图7.3所示),观察该曲面是如何形成的。真正有趣的是,径向边界、楔形结构和S型函数对整个决策曲面的形成都至关重要。如果SMLP缺乏生成其中任何一种特征的能力,那么该问题的隐节点需求很可能会激增。
不过,单个SMLP节点能够生成的特征种类存在一个限制。图7.6中所示的楔形、脊形、椭圆和鞍形结构必须始终与输入轴之一对齐。换句话说,无法生成与\(x=y\)定义的直线平行的脊形结构。我们可以通过观察\((x-y)^2\)的展开式包含\(-2xy\)项来验证这一点,这意味着二次型是非对角的。一般而言,若要具备旋转图7.6中所有特征的能力,就需要完整的二次型,因此需要使用高阶网络而非SMLP。因此,尽管高阶网络中消去非对角项能够节省大量权重,但会牺牲可生成的特征类型。
7.6 结论
我们已经看到,存在一些问题的解决需要同时具备局部和全局范围的特征。MLP擅长生成全局特征,但在生成局部特征时存在困难;RBFN则恰恰相反。SMLP架构可以高效生成这两类特征,仅需付出少量权重数量的代价。然而,权重数量的增加远不及网络特征生成能力提升带来的收益。这通常会得到更简单的网络,权重数量更少,学习速度更快,近似精度更高。
针对本工作中的两项主要数值研究,结果发现SMLP架构在双螺旋问题和Deterding元音识别数据上的表现与已知最优技术相当甚至更优。此外,SMLP的平均性能往往优于其他技术的最优已知结果,进一步印证了上述结论。研究还发现,SMLP的双重特性可以通过混合算法得到利用。SMLP既可以像RBFN一样被"求解",也可以像MLP一样被训练,还可以同时采用两种方式。此外值得注意的是,SMLP中的非线性权重仅具有"中等"程度的非线性。例如,基于梯度的学习算法可用于RBFN,但已知与中心、宽度对应的权重具有高度非线性,常常会使梯
当包含非线性权重时,径向基函数网络(RBFNs)的训练速度非常缓慢。类似地,由于多层感知机(MLPs)需要两层隐藏节点才能高效生成局部特征,因此MLP第一层的权重具有极强的非线性------因为这些权重最终会经过两层非线性节点的传递。与之形成对比的是,光滑型多层感知机(SMLP)的非线性节点仅需经过单层非线性节点的传递。尽管这一点目前尚未得到证明,但一个合理的推测是:相比拥有两层隐藏层的MLP,SMLP网络在基于梯度的方法学习局部"凸起"特征时,本身可能具有更优的条件性。
致谢 感谢弗兰斯·库茨(Frans Coetzee)、克里斯·达肯(Chris Darken)、李·贾尔斯(Lee Giles)、珍妮·奥尔(Jenny Orr)、雷·瓦特鲁斯(Ray Watrous)以及匿名审稿人提供的诸多有益意见与讨论。
参考文献
- 1 Casdagli, M.:混沌时间序列的非线性预测.《Physica D》35卷,335--356页(1989年)
- 2 Detering, D.H.:《用于自动语音识别的说话人归一化》. 剑桥大学博士论文(1989年)
- 3 Fahlman, S.E.:反向传播的更快学习变体:一项实证研究. 载于:《1988年联结主义模型暑期学校会议论文集》. 摩根·考夫曼出版社(1988年)
- 4 Fahlman, S.E., Lebiere, C.:级联关联学习架构. 载于:Touretzky, S.(编)《神经信息处理系统进展》第2卷. 摩根·考夫曼出版社(1990年)
- 5 Finke, M., Müller, K-R.:使用随机网络模型估计后验概率. 载于:Mozer, M., Smolensky, P., Touretzky, D.S., Elman, J.L., Weigend, A.S.(编)《1993年联结主义模型暑期学校会议论文集》,第324--331页. 埃尔鲍姆联合公司,希尔斯戴尔(1994年)
- 6 Hastie, T., Tibshirani, R.:通过最优打分的灵活判别分析. 技术报告,AT&T贝尔实验室,新泽西州默里山(1993年)
- 7 Hastie, T., Tibshirani, R.:判别自适应近邻分类.《IEEE模式分析与机器智能汇刊》18(6)卷,607--616页(1996年)
- 8 Hochreiter, S., Schmidhuber, J.:Lococode. 技术报告FKI-222-97. 慕尼黑工业大学信息学系(1997年)
- 9 Lang, K.J., Watbrock, M.J.:学习区分两条螺旋线. 载于:《1988年联结主义模型暑期学校会议论文集》. 摩根·考夫曼出版社,旧金山(1988年)
- 10 Lapedes, A., Farber, R.:使用神经网络进行非线性信号处理:预测与系统建模. 技术报告LA-UR-87-2662,洛斯阿拉莫斯国家实验室,新墨西哥州洛斯阿拉莫斯(1987年)
- 11 Lapedes, A., Farber, R.:神经网络如何工作. 载于:Anderson, D.Z.(编)《神经信息处理系统》,第442--456页. 美国物理学会,纽约(1988年)
- 12 Lawrence, S., Tsoi, A.C., Back, A.D.:使用神经网络与局部方法进行函数逼近:偏差、方差与平滑度. 载于:Bartlett, P., Burkitt, A., Williamson, R.(编)《澳大利亚神经网络会议论文集》,第16--21页. 澳大利亚国立大学(1996年)
7. 方形单元增强、径向扩展多层感知机
- 13 Lee, S., Kil, R.M.:多层前馈势能函数网络. 载于:IEEE国际神经网络大会,第1:161-1:171页.SOS印刷公司,圣地亚哥(1988年)
- 14 Lee, Y.C., Dolen, G., Chen, H.H., Sun, G.Z., Maxwell, T., Lee, H.Y., Giles, C.L.:使用高阶关联网络的机器学习.《Physica D》22-D卷,276-306页(1986年)
- 15 Moody, J., Darken, C.:使用局部感受域进行学习. 载于:Touretzky, D., Hinton, G., Sejnowski, T.(编)《1988年联结主义模型暑期学校会议论文集》. 摩根·考夫曼出版社(1988年)
- 16 Moody, J., Darken, C.:局部调谐处理单元网络中的快速学习.《神经计算》1卷,281-294页(1989年)
- 17 Niranjan, M., Fallside, F.:神经网络与径向基函数在静态语音模式分类中的应用.《计算机语音与语言》4卷,275-289页(1990年)
- 18 Pao, Y.H.:《自适应模式识别与神经网络》. 艾迪生-韦斯利出版公司,雷丁(1989年)
- 19 Robinson, A.J.:《动态误差传播网络》. 剑桥大学博士论文(1989年)
- 20 Rumelhart, D.E., McClelland, J.L.:PDP研究小组. 载于:《并行分布式处理:认知微结构探索》第2卷,MIT出版社(1986年)
- 21 Sarle, W.:comp.ai.neural-nets常见问题列表(1997年)
- 22 Schetzen, M.:《非线性系统的沃尔泰拉与维纳理论》. 约翰威立国际出版公司,纽约(1980年)
- 23 Schölkopf, B., Smola, A., Müller, K.-R.:作为核特征值问题的非线性成分分析. 技术报告,马克斯·普朗克生物控制论研究所,1996年;《神经计算》10(5)卷,1299-1319页(1998年)
- 24 Volterra, V.:《泛函与积分微分方程理论》. 多佛出版社(1959年)
- 25 Werbos, P.:《超越回归:行为科学中的预测与分析新工具》. 哈佛大学博士论文(1974年)
多任务学习的十余个技巧*
Rich Caruana
Just Research与卡内基梅隆大学,宾夕法尼亚州匹兹堡市亨利街4616号,邮编15213
http://www.cs.cmu.edu/~caruana/
摘要 多任务学习是一种归纳迁移方法,它通过利用其他相关任务的训练信号中包含的信息,提升主任务的泛化精度。该方法在主任务学习的同时并行学习额外任务,且使用共享表征;每个任务习得的内容都可以帮助其他任务学习得更好。本章介绍了在真实问题中应用多任务学习的一十余个场景。章末我们还提出了若干建议,说明如何在真实世界问题中最大化多任务学习的收益。当解决真实问题时,人们往往会遇到一些有价值的信息,但这些信息难以融入学习过程。本章展示了一十余种方式,帮你利用这些常被忽略的信息。
核心技巧是创建额外的任务,与主任务在同一网络上进行训练。
这种多任务学习是归纳迁移^1的一种形式,它通过利用其他相关任务的训练信号中的信息来提升主任务的性能。该方法在主任务学习的同时并行学习额外任务,且使用共享表征;每个任务习得的内容都可以帮助其他任务学习得更好。
我们使用"任务"一词指代将从训练集中学习的函数。我们将希望学习得更好的重要任务称为主任务。多任务学习会利用其他任务的训练信号来更好地学习主任务,这些任务即为额外任务。通常情况下,我们并不在意额外任务的学习效果如何,它们的唯一目的是帮助主任务学习得更好。我们将主任务与额外任务的集合称为领域。本章中我们仅讨论任务定义在相同输入特征集上的领域,尽管部分额外任务可能是这些输入特征的子集的函数。
- 由于这些机会并非*
- 先前发表于:Orr, G.B. 与 Müller, K.-R.(编):《LNCS 1524》,ISBN 978-3-540-65311-0(1998年)。
^1 归纳迁移是指将从某一问题中学到的任何内容迁移过来,帮助其他相关问题学习的过程。 G. Montavon 等(编):《神经网络的实践经验(第2版)》,LNCS 7700,第163--189页,2012年。© 施普林格-弗拉格 柏林-海德堡 2012年
8.1 反向传播网络中多任务学习简介
考虑如下定义在8位二进制数\(B_1 \cdots B_8\)上的布尔函数:
Task1 = B₁ ∨ Parity(B₂···B₆) Task2 = -B₁ ∨ Parity(B₂···B₆) Task3 = B₁ ∧ Parity(B₂···B₆) Task4 = -B₁ ∧ Parity(B₂···B₆)
其中"\(B_i\)"代表第\(i\)位,"−"表示逻辑非,"∨"表示逻辑或,"∧"表示逻辑与,"\(Parity(B_2 \cdots B_6)\)"表示第2至6位的奇偶校验值。上述函数不会使用\(B_7\)和\(B_8\)两位。
这四个任务在多个维度上存在关联:
-
它们均定义在相同的输入\(B_1 \cdots B_8\)上;
-
它们均忽略相同的输入\(B_7\)和\(B_8\);
-
每个任务都使用一个通用的计算子特征\(Parity(B_2 \cdots B_6)\);
-
当\(B_1 = 0\)时,任务1需要\(Parity(B_2 \cdots B_6)\),但任务2不需要,反之亦然;
-
与任务1和2类似,当任务3需要\(Parity(B_2 \cdots B_6)\)时,任务4不需要,反之亦然。
我们可以在这些任务上使用反向传播算法训练人工神经网络。\(B_1 \cdots B_8\)作为网络的输入,四个函数计算得到的任务值作为目标输出。我们通过枚举8位输入的全部256种组合构建数据集,并使用上述定义计算每种位组合下任务1、2、3、4的任务信号。最终得到256个不同样本,每个样本对应4个不同的训练信号。
8.1.1 任务1的单任务与多任务学习
我们将任务1视为主任务,任务2、3、4为额外任务,即我们仅关注提升为任务1训练的模型的精度。我们开展了一项实验,使用图8.1中展示的三个网络训练任务1。所有网络均为全连接前馈网络,包含8个输入、100个隐藏单元,以及1-4个输出。当存在多个输出时,每个输出都与隐藏单元全连接。网络采用批量模式训练,使用反向传播算法,搭配MITRE的Aspirin MIGRAINES 6.0工具,学习率设置为0.1,动量设置为0.9。
任务1单独在图8.1左侧的网络上进行训练,这是一个在单一任务上训练的反向传播网络,我们将这种方式称为单任务学习(STL)或单任务反向传播(STL-backprop)。
图8.1中间的神经网络在同时接受任务2训练的网络中训练任务1,该网络的隐藏层由任务1和任务2共享,这是包含两个任务的多任务反向传播(MTL-backprop)。
图8.1右侧的神经网络在同时接受任务2、3、4训练的网络中训练任务1,该网络的隐藏层由全部4个任务共享,这是包含4个任务的MTL-backprop。
不同的网络对任务1的学习效果如何?
图8.1 用于学习任务1的三种神经网络架构
我们通过从256个样本中重采样训练集和测试集完成了25次独立试验:从256个样本中随机抽取128个作为训练集,剩余128个作为测试集。(目前我们先忽略早停的复杂性,早停在MTL网络中处理起来较为棘手,关于MTL网络中早停的详细讨论请见8.3.2节。)
每次试验中我们训练3个网络:仅用于任务1的STL网络、用于任务1和任务2的MTL网络,以及用于任务1至4的MTL网络。我们仅针对任务1的输出衡量性能。当存在任务2或任务2-4的额外输出时,这些输出会通过反向传播完成训练,但在网络评估阶段会被忽略。这些额外输出的唯一作用是影响它们在隐藏层中与任务1共享的部分所学到的内容。
8.1.2 结果
每5000轮迭代我们会在测试集上评估网络的性能。我们测量了输出相对于目标值的均方根误差(RMS),这是反向传播正在优化的标准。我们还测量了输出在预测布尔函数值上的准确率:若网络输出小于0.5则视为预测为0,否则视为预测为1。
R. Caruana 图8.2展示了训练过程中任务1在测试集上的均方根误差。(25次试验的平均值)
图8.3 三种不同网络在任务1上的测试集正确率
表8.1 任务1的STL、任务1和2的MTL、任务1、2、3、4的MTL在任务1上的测试集性能。***分别表示性能在0.05或0.001水平上统计显著优于STL。
| | STL:任务1 | MTL:任务1+2 | MTL:任务1+2+3+4 |
|---|---|---|---|
| 均方根误差 | 0.211 | 0.134 *** | 0.122 *** |
| 正确率 | 79.7% | 87.5% *** | 88.9% *** |
8.1.3 讨论
为什么在主任务与若干相关任务同时训练时,主任务的学习效果会更好?我们开展了一系列试验,以验证MTL带来的性能提升源于任务之间的相关性,而不仅仅是在单一网络上训练多个输出的副作用。
向神经网络添加噪声有时可以提升其泛化性能22。如果MTL任务之间不相关,它们对总体梯度的贡献对其他任务来说可能等同于噪声,这或许能改善泛化效果。为了验证这是否能解释我们从MTL中观察到的收益,我们在一次试验中在同时训练3个随机任务的网络上训练任务1。
第二个需要考虑的影响是,增加任务往往会提升输入层到隐藏层权重的有效学习率,因为来自多个输出的梯度会在隐藏层叠加,这可能对具有多输出的网络更有利。为了验证这一点,我们训练了一个包含4个任务1副本的MTL网络,这4个输出接收到的训练信号完全相同。这是MTL的一种退化形式,额外的任务不会给网络提供任何额外信息。
第三个需要排除的影响是网络容量。100个隐藏单元对于这些任务来说已经足够多。必须在4个任务之间共享这100个隐藏单元的MTL网络,是否因为每个任务分配到的隐藏单元更少而泛化效果更好?为了验证这一点,我们在分别包含200个和25个隐藏单元的STL网络上训练任务1,这可以让我们知道增大或减小网络容量是否会提升泛化效果。
最后,我们基于37中使用的启发式方法开展了第四组试验。 在训练针对4个任务的MTL网络前,我们对任务2、3、4的训练信号(目标输出值)进行了打乱处理。打乱操作会将任务2、3、4训练集中的输入向量重新分配目标值,主任务任务1不受影响。输出2、3、4的训练信号分布没有发生变化,但这些训练信号不再与任务1相关。这是一个强有力的试验,能够排除许多不依赖任务之间关联性的机制。我们使用前一节完全相同的数据集,重复进行了25次每组试验。图8.4展示了4组试验中任务1的泛化性能,为便于对比,还展示了前一节中STL、任务1和2的MTL、任务1至4的MTL的性能。
当任务1与随机额外任务一起训练时,任务1的性能会低于其在STL网络上单独训练的性能。我们得出结论,任务1至4的MTL大概率不是因为通过额外输出向学习过程添加噪声,才让任务1学得更好。当任务1与3个额外的任务1副本一起训练时,我们得出结论,MTL之所以让任务1学得更好,并不是因为反向传播在多输出场景下表现更好。我们还得出结论,对于隐藏单元数在25到200之间的网络,任务1的性能对网络规模相对不敏感,如果有影响的话,任务1会从拥有更多隐藏单元的网络中受益。(分别包含25、100、200个隐藏单元的STL之间的性能差异不具有统计显著性。)
我们有时观察到,在单个网络上训练多个任务副本确实能提升性能。但这种收益从未大到足以解释我们在MTL中观察到的收益。这一点有趣且令人意外,因为这种提升是在没有向网络提供任何额外信息的情况下获得的。最合理的解释是,通往隐藏层预测的多个连接会被平均,因此起到了弱提升机制的作用。
图8.4 任务1在不同训练设置下的测试集均方根误差性能:包含3个随机任务的MTL;包含3个额外任务1副本的MTL;任务2-4训练信号被打乱的MTL;在25或200个隐藏单元的网络上进行的STL。
当任务1与被打了乱的训练信号一起训练时,MTL的性能会低于其在STL网络上单独训练的性能。显然,我们在这些问题中观察到的MTL收益,并非由额外输出的分布引发的偶然因素导致。额外输出必须与主任务相关才能起到辅助作用。这些试验排除了大多数对"MTL在任务1上优于STL"的解释,这些解释不需要任务2-4与任务1相关联。那么为什么主任务在与任务2-4并行训练时学得更好?其中一个原因是,任务1需要学习它与任务2-4共享的子特征\(Parity(B_2 \cdot \cdot \cdot B_6)\)。任务2-4为网络提供了仅从单独训练任务1的情况下无法获得的关于该子特征的信息。例如,当\(B_1 = 1\)时,任务1的训练信号不包含关于\(Parity(B_2 \cdot \cdot \cdot B_6)\)的任何信息。我们称当\(B_1 = 1\)时,\(B_1\)会掩码\(Parity(B_2 \cdot \cdot \cdot B_6)\)。但任务2的训练信号恰好会在任务1被掩码的情况下,提供关于Parity子特征的信息。因此,在同时训练任务1和任务2的网络中,隐藏层获得的关于Parity子特征的信息量是仅训练
仅在其中一项任务上训练的模型也是如此。尽管它们看到的训练样本完全一致,但多任务学习(MTL)网络每次处理训练样本时都能获取更多信息。MTL有助于任务1的另一个原因是:所有任务都是同一组输入(即\(B_1\cdots B_6\)比特)的函数,且都会忽略相同的输入\(B_7\)和\(B_8\)。由于各任务在所用和未用特征上存在重叠,MTL网络能够更有效地选择要使用的输入特征。MTL有助于任务1的第三个原因是:不同任务使用输入的方式之间存在关联,这种关联会促进网络学习到良好的内部表征。例如,所有任务都会将输入\(B_1\)与\(B_2\cdots B_6\)输入的函数进行逻辑组合。这种相似性会阻止网络学习到例如直接将\(B_1\)和\(B_2\)比特组合在一起的内部表征。在所有任务上联合训练的模型会倾向于学习更具模块化(在本例中也是更准确的)内部表征,以支撑多个任务的完成。这种对模块化内部表征的偏好,会降低网络学习到任意有限训练样本中存在的虚假关联的倾向:在某一训练集中,\(B_3\)比特与任务1的输出之间可能存在看起来相当强的随机关联,但如果这种虚假关联无助于其他任务,网络就不太可能学习到它。
8.2 现实世界中多任务学习的使用技巧
前一节通过反向传播网络,使用4个精心设计的、具有关联的任务介绍了多任务学习(MTL):这些任务的并行学习效果优于单独学习。现实问题有多大概率会提供额外任务,让多任务学习能够提升主任务的性能?本节证明许多现实问题都存在使用多任务学习的机会。我们提供了一打典型的现实应用场景,在这些场景中,相关额外任务的训练信号是可用且可被利用的。我们相信大多数现实问题都属于一到多个这类典型类别。考虑到传统机器学习领域使用的测试问题中很少有多任务问题,这一主张可能听起来令人惊讶。我们认为迄今为止机器学习中使用的大多数问题都经过大量预处理,以适应单任务学习的范式。这些问题中的多任务学习机会大多在问题定义阶段就被消除了。
8.2.1 用未来信息预测当前
往往有价值的特征会在必须做出预测之后才可用。如果学习在离线状态下完成,这些特征可以被收集到训练集中用于学习。这些特征不能被用作输入,因为在为未来测试样本做预测时,它们是无法获取的。不过,它们可以用作多任务学习的额外输出。当系统用于主任务预测时,学习者对这些额外任务做出的预测会被忽略。它们的唯一作用是为学习者在训练阶段提供额外信息,帮助其更好地学习主任务。
从未来信息中学习的一个应用方向是医学领域的序列决策。在获得初始症状后,需要决定要做哪些检查、启动什么治疗方案。当检查完成、患者对治疗产生反应(或无反应)时,新的信息就会出现。基于这些新信息会做出新的决策:需要做更多检查吗?需要更换治疗方案吗?患者的病情有变化吗?这位患者现在是高风险还是低风险?患者需要住院吗?等等。
当机器学习被应用于决策流程的早期阶段时,通常只会使用该阶段患者通常可用的输入特征。这非常可惜。在历史数据库中,所有患者可能都经历了完整的医学检查与治疗流程,最终结局也已经被记录。难道我们要因为目标建模的医疗决策阶段未来患者无法获得这些结果,就忽略数据库中的化验结果和其他有价值特征吗?
肺炎风险预测问题。
考虑肺炎。美国每年有300万例肺炎病例,其中90万例需要住院。大多数肺炎患者在接受适当治疗后可以康复,许多人无需住院就能得到有效治疗。不过肺炎是很严重的疾病:住院的肺炎患者中有10万人因此死亡,未住院的患者面临的风险也高得多。
考虑在患者住院前预测其肺炎风险的问题。(该问题不是诊断患者是否患有肺炎,而是判断肺炎对患者造成的风险程度。)医学决策的一个核心目标是准确、快速、经济地识别出肺炎等高危疾病的高风险患者,以便让他们住院接受积极的检查和治疗;低风险患者则可以更舒适、安全、经济地在家接受治疗。评估风险最有价值的一些特征是只有患者住院后才能获得的化验结果。我们将患者住院后获得的这些额外化验结果用作MTL的额外任务,它们不能被用作输入,因为在决定是否住院时,大多数未来患者都无法获得这些结果。\(^4\)
\(^4\) tackling这个问题的其他研究者忽略了这些化验结果,因为他们知道这些结果在运行时无法获得,也没有找到除用作输入之外的其他使用方式。其他使用该数据库的研究者15采用的性能标准是:能够从患者群体中选出指定比例存活者的准确率。例如,对于一个1万人的患者群体,需要找出其中风险最低的20%。为此我们需要学习一个带阈值的风险模型,让39%的人群(共3084名患者)的得分低于该阈值。如果得分高于该阈值的6916名患者以某一固定速率死亡,则错误率为0.015。我们称FOP 0.20对应的错误率为0.0115(FOP是"人群比例"的缩写)。本次研究中我们考虑FOP为0.1、0.3、0.4和0.5的情况,我们的目标是学习到对应的模型与阈值,使每个FOP下的错误率都最小化。
多任务学习与肺炎风险预测
解决这个问题的最直接方法是使用反向传播训练单任务学习(STL)网络,学习预测患者存活或死亡,然后用该网络的实值输出对患者进行风险排序。这个单任务学习网络有5个输入,对应5项住院前的基础测量指标,包含一个隐藏层和一个输出层,训练目标为0=存活、1=死亡。给定足够大的训练集,这样训练的网络应该能学会预测每位患者的死亡概率,或者判断哪些患者会存活、哪些会死亡。如果训练样本量很小,网络就会过拟合,学习到一个高度非线性的函数:对于训练集中的样本,该函数的输出会接近0或1,但泛化能力很差。必须在发生过拟合之前使用早停法停止训练,这一点至关重要。
我们专门针对这个领域开发了一种名为Rankprop的方法。Rankprop学习对患者进行排序,而无需学习预测死亡率(0=存活、1=死亡)。图8.5展示了该问题中平方误差(目标为0/1)与Rankprop的性能对比。在这个场景下,Rankprop的性能比使用0=存活、1=死亡作为目标、以平方误差为损失函数的传统反向传播方法高出40%,具体数值取决于用于对比的FOP。关于Rankprop的详细信息可参见15。
我们将35项未来的化验结果用作额外的反向传播输出,如图8.9所示。预期这些额外输出会引导共享隐藏层学习到更能捕捉每位患者病情重要特征的内部表征,进而让主任务输出的患者风险预测更准确。
单任务学习网络包含5个输入、1个隐藏单元、1个输出层,使用Rankprop训练以预测风险。多任务学习网络的输入与前者相同,包含4个隐藏单元、1个Rankprop输出层和35个使用平方误差训练的额外输出层。(初步实验表明,单任务学习网络使用4个隐藏单元时效果最优,而多任务学习网络的性能在隐藏单元数达到512时最佳。我们选用4和64个隐藏单元,是为了能够开展大量实验。)
我们同时测试了平方误差和交叉熵两种损失函数,二者的性能差异很小,平方误差的表现略优。在本领域后续的实验中我们都使用Rankprop,因为这是我们已知的该问题下性能最优的方法;我们想验证多任务学习是否能让最优方法的表现更上一层楼。
图8.5 SSE(0/1目标)和Rankprop在肺炎领域5个FOP上的表现。错误率越低代表性能越好。我们使用从数据库中随机抽取的1000名患者的训练集和验证集训练网络。当STL网络和MTL网络在主Rankprop风险任务上观察到过拟合时,训练停止。对于MTL网络,额外任务的性能不会纳入早停的判断依据,仅依据主任务输出的性能决定何时停止训练。(更多关于MTL网络早停的讨论见第8.3.2节)训练停止后,网络在数据库中剩余的未使用患者数据上进行测试。
结果。表8.2展示了使用STL和MTL的Rankprop十次运行的平均性能。最后一行显示将未来实验室测量值作为额外MTL输出时,该问题上的性能提升百分比。负百分比表示MTL降低了错误率。尽管MTL在每个FOP上的错误率均低于STL,但经过十次试验、采用标准t检验后,仅在FOP 0.3、0.4和0.5上的差异具有统计显著性。MTL带来的提升为5%--10%。在医学领域,这种提升可能影响重大。为验证MTL的优势源于未来实验室任务与主任务所学内容之间的关联,我们进行了洗牌测试(见第8.1.3节):在使用MTL训练网络前,我们对训练集中额外任务的训练信号进行了洗牌处理。
图8.6 将未来实验室结果作为额外输出,为主风险预测任务的学习引入偏置。如果这些实验室检测能够在需要预测风险时已经完成测量,作为输入使用会更有帮助,但检测结果往往尚未得出,因此我们将它们作为MTL的额外输出使用。
表8.2 STL+Rankprop和MTL+Rankprop在预测低风险人群占比(FOP)为0.0至0.5时的错误率(死亡比例)。MTL的错误率比STL低5%--10%。
| FOP | STL Rankprop | MTL Rankprop | 变化率 |
|-----|--------------|--------------|--------|
| 0.0 | 错误率 | 错误率 | -10.8% |
| 0.1 | 错误率 | 错误率 | -11.5% |
| 0.2 | ... | ... | ... |
| 0.3 | ... | ... | ... |
| 0.4 | ... | ... | ... |
| 0.5 | ... | ... | ... |
图8.7展示了额外任务训练信号被洗牌的MTL运行结果,同时也展示了未对额外任务信号洗牌的STL和MTL结果。对额外任务的训练信号进行洗牌,会使MTL的性能低于STL。我们得出结论:正是主任务与额外任务之间的关联让MTL能在主任务上表现更好------当通过洗牌额外任务信号打破这种关联后,优势就消失了。我们也进行了相关实验:将未来实验室检测作为训练风险预测网络的输入,对未来病例中缺失的实验室检测值进行插值处理,但此类插值并未让该问题的性能达到MTL的水平。针对特征检测的类似实验同样未能获得与MTL相当的提升。
图8.7 STL、MTL及额外任务信号被洗牌的MTL在肺炎风险预测(五个FOP)上的表现。
在许多离线学习问题中,往往可以获得未来的测量数据。举个截然不同的例子:如果机器人或自动驾驶汽车未来能够更接近目标物,就能更准确地测量物体的大小、位置和身份。例如,当车辆经过道路标线和路沿时,可以可靠地检测到它们,但在车辆远处提前检测则十分困难。由于行驶会让车辆更接近这些测量目标,因此在车辆经过时就能准确测量道路标线和路沿。航位推算法可以将这些未来测量值加入训练集。它们无法作为输入使用:在驾驶过程中还来不及获得这些数据,但可以用作训练集的补充。我们推测,将未来测量值作为额外输出,将是真实问题中额外任务的常见来源。
8.2.2 多指标
有时很难用单一错误指标捕获所有重要信息。当替代指标能够捕获问题的不同但都具有价值的方面时,就可以使用MTL来利用多指标的优势。上一节的肺炎问题就是这类情况的典型实例。在该问题上,使用传统平方误差的Rankprop表现优于反向传播,但在极低风险情况下学习对案例进行排序时表现不佳------这类案例中几乎所有患者都能存活,提供的排序信息极少。有趣的是,当案例纯度很高时(例如特征空间中大多数案例风险都很低的区域),平方误差表现最佳。平方误差的优势区域正是Rankprop的弱势区域。在学习预测的网络中添加一个由平方误差训练的额外输出可以
8.2.3 多输出表示形式
有时并不清楚哪种输出编码对问题最合适。分布式表示通常有助于问题的部分内容被很好地学习,因为它们具有独立的误差梯度,但非分布式输出表示有时准确率更高。考虑将人脸分类为20张人脸之一的问题:一种输出表示是为每张人脸设置一个独立编码;另一种表示是输出足以区分不同人脸的特征,例如有胡须、无胡须、戴眼镜、不戴眼镜、长发、短发、眼色(蓝色、棕色)等。但正确的分类可能需要每个特征都被正确预测。使用每个类别对应一个输出的非分布式输出编码可能更可靠,但训练网络识别特定特征的作用可能有限。MTL是一种整合这些冲突需求的方法,即使最终仅使用一种表示进行预测,也可以同时使用两种输出表示。
与多输出编码相关的另一种方法是纠错输出编码(ECOC)18。这里设计了多种输出编码,使得合并后的预测对部分输出的偶发错误不那么敏感。目前还不清楚ECOC能从类似MTL的机制中获益多少。事实上,如果不同输出不共享同一隐藏层(因此误差不相关),ECOC在STL网络上训练时的效果反而优于MTL网络。但参考27可知,也可以通过使用MTL去相关多输出的误差,来提升委员会机器的性能。
8.2.4 时间序列预测
将MTL用于时间序列预测的最简单方式是预测同一任务在不同未来时间点的结果。在先前的研究中(目标是预测机器人未来的感知数据),我们在一个导航任务上测试了该方法:网络在向前移动时,预测未来1秒、2秒......的结果。训练所有这些预测任务使准确率提升了约10%(其他使用MTL的研究见第17章)。
8.2.5 使用非运行时特征
部分特征在运行时无法使用,要么是因为计算成本过高,要么是需要人类专家介入(而运行时无法获得)。但我们通常有更多时间准备训练集。
8.3 多任务学习的十二个技巧
当运行时无法即时计算某些特征,但可以计算训练集对应的特征时,可以将这些特征作为额外输出辅助学习。模式识别是一个很好的例子:我们在一个门识别问题上测试了MTL,目标是识别门口和门把手,额外任务包括需要大量人工标注、不会用于测试集的特征,例如门边缘位置、门口中心位置等。训练这些额外人工标注特征的MTL网络,在定位门和门把手时的准确率提升了25%。其他可以通过人工标注补充训练集的领域包括文本领域、医学领域、声学领域和语音领域。
8.2.6 使用额外任务引导注意力
学习过程往往会忽略输入中大型、普遍存在的模式,而忽视那些可能也有用的小型或不常见的输入。MTL可以强制学习器关注原本会忽略的输入模式:方法是强迫它学习内部表示来支持依赖这些模式的相关任务。道路跟随就是一个很好的例子:单任务学习(STL)网络在学习转向时通常会忽略车道线------因为车道线在图像中占比很小,持续变化,而且常常难以识别(甚至对人类也是如此)。如果学习转向的网络还被要求学习识别道路标线,那么网络就会学会关注图像中会出现标线的区域。只要标线识别任务是可学习的,网络就会发展出支持该任务的内部表示。由于网络同时使用同一隐藏层学习转向任务,转向任务就可以使用标线隐藏表示中适用于转向的部分。
我们使用Pomerleau开发的道路图像模拟器测试了这一想法,以便快速测试道路跟随领域的学习方法28。图8.8展示了多张二维道路图像。主任务是预测转向方向。在MTL实验中,我们使用了八个额外任务:
-
道路是单车道还是双车道
-
道路左边缘的位置
-
道路中心的位置
-
道路边缘区域的颜色强度
-
道路中心线的位置(如有)
-
道路右边缘的位置
-
道路路面的颜色强度
-
道路中心线的颜色强度(如有)
这些额外任务都可以从模拟器的内部变量中计算得出。表8.3展示了单任务学习和多任务学习在各项任务上十次运行的平均表现。MTL网络有32个输入、16个隐藏单元和9个输出。36个STL网络分别有32个输入、2/4/8/16个隐藏单元,每个网络有1个输出。最后两列对比了STL和MTL的表现,第一列是MTL相比最优STL运行结果的错误率降低百分比,负百分比表示MTL
performs better. The last column is the percent improvement of MTL over the average STL performance. On the important steering task, MTL outperforms STL 15-30%.
We ran a follow-up experiment to test how important centerstripes are to the STL and MTL nets. We eliminated the stripes from the images in a test set. If MTL learned more about centerstripes than STL, and uses what it learned about centerstripes for the main steering task, we expect to see steering performance degrade more for MTL than for STL when we remove the centerstripes from the images. Error increased more for the MTL nets than for the STL nets, suggesting the MTL nets are making more use of the stripes in the images.
Table 8.3. Performance of STL and MTL on the road following domain. The underlined entries in the STL columns are the STL runs that performed best. Differences statistically significant at .05 or better are marked with an *.
| TASK | Single Task Backprop (STL) | | | | MTL | Change MTL to Best STL | Change MTL to Mean STL |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 2HU | 4HU | 8HU | 16HU | 16HU | | |
| 1 or 2 Lanes | .201 | .209 | .207 | .178 | .156 | -12.4% * | -21.5% * |
| Left Edge | .069 | .071 | .073 | .073 | .062 | -10.1% * | -13.3% * |
| Right Edge | .076 | .062 | .058 | .056 | .051 | -8.9% * | -19.0% * |
| Line Center | .153 | .152 | .152 | .152 | .151 | -0.7% | -0.8% |
| Road Center | .038 | .037 | .039 | .042 | .034 | -8.1% * | -12.8% * |
| Road Greylevel | .054 | .055 | .055 | .054 | .038 | -29.6% * | -30.3% * |
| Edge Greylevel | .037 | .038 | .039 | .038 | .038 | 2.7% | 0.0% |
| Line Greylevel | .054 | .054 | .054 | .054 | .054 | 0.0% * | 0.0% |
| Steering | .093 | .069 | .087 | .072 | .058 | -15.9% * | -27.7% * |
8.2.7 Hints: Tasks Hand-Crafted by a Domain Expert
Extra outputs can be used to inject rule hints into nets about what they should learn 32, 33. This is MTL where the extra tasks are carefully engineered to coerce the net to learn specific internal representations. Hints can also be provided to backprop nets via extra terms in the error signal backpropagated for the main task output 1, 2. The extra error terms constrain what is learned to satisfy desired properties of main task such as monotonicity 31, symmetry, or transitivity with respect to certain sets of inputs. MTL, which does not use extra error terms on task outputs, could be used in concert with these techniques.
8.2.8 Handling other Categories in Classification
In real-world applications of digit recognition, some of the images given to the classifier may be alphabetic characters or punctuation marks instead of digits. One way to prevent accidentally classifying a t as a one or seven is to create an other category that is the correct classification for non-digit images. The large variety of characters mapped to this other class makes learning this class potentially very difficult. MTL suggests an alternate way to do this. Split the other class into separate classes for the individual characters that are trained in parallel with the main digit tasks. A single output coding for the other class can be used, as well. Breaking the other category into multiple tasks gives the net more learnable error signal for these cases 26.
8.2.9 Sequential Transfer
MTL is parallel transfer. Often tasks arise serially and we can't wait for all of them to begin learning. In these cases we can use parallel transfer to perform sequential transfer. If the training data can be stored, do MTL using whatever tasks are available when it is time to start learning, and re-train as new tasks or new data arise. If training data cannot be stored, or if we already have models for which data is not available, we can still use MTL. Use the models to generate synthetic data that is then used as extra training signals. This approach to sequential transfer avoids catastrophic interference (forgetting old tasks while learning new ones). Moreover, it is applicable where the analytical methods of evaluating domain theories required by some serial transfer methods 29, 34 are not available. For example, the domain theory need not be differentiable, it only needs to make predictions. One issue that arises when synthesizing data from prior models is what distribution to sample from. See 16 for a discussion of synthetic sampling.
8.2.10 Similar Tasks With Different Data Distributions
Sometimes there are multiple instances of the same problem, but the distribution of samples differs for each instantiation. For example, most hospitals diagnose and treat the same diseases, but the demographics of the patients each hospital serves is different. Hospitals in Florida see older patients, urban hospitals see poorer patients, etc. Models trained separately for each hospital would perform best, but often there is insufficient data to train a separate model for each hospital. Pooling the data, however, may not lead to models that are accurate for each hospital. MTL provides one solution to this problem. Use one net to make predictions for each hospital, using a different output on the net for each hospital. Because each patient is a training case for only one hospital, error can be backpropagated only through the one output that has a target value for each input vector.
8.2.11 Learning with Hierarchical Data
In many domains, the data falls in a hierarchy of classes. Most applications of machine learning to hierarchical data make little use of the hierarchy. MTL provides one way of exploiting hierarchical information. When training a model to classify data at one level in the hierarchy, include as extra tasks the classification tasks that arise for ancestors, descendants, and siblings of the current classification task. The easiest way to accomplish this is to train one MTL net to predict all class distinctions in the hierarchy at the same time.
8.2.12 Some Inputs Work Better as Outputs
The common practice in backprop nets is to use all features that will be available for test cases as inputs, and have outputs only for tasks that need to be predicted. On real problems, however, learning often works better given a carefully selected subset of the features to use as inputs 7, 23, 24. One way to benefit from features not used as inputs is to use them as extra outputs for MTL. We've done experiments with both synthetic and real problems where moving some features from the input side of the net to the output side of the net improves performance on the main task. We use feature selection to select those features that should be used as inputs, and then treat some of the remaining features as extra tasks.
Figure 8.9 shows the ROC Area on a pneumonia problem as the number of input features on the backprop net varies.^7 ROC Areas closer to 1 indicate better performance. There are 192 features available for most patients. Using all 192 features as inputs (Net1) is suboptimal. Better performance is obtained by using the first 50 features selected with feature selection (Net2). The horizontal line at the top of the graph (Net3) shows the ROC Area obtained by using the first 50 features as inputs, and the next 100 features as extra outputs. Using these same 150 features all as inputs (Net4) yields worse performance.^8
^7 This is not the same pneumonia problem used in section 8.2.1.
^8 Although the 95% confidence intervals for Net2 and Net3 overlap with ten trials, a paired t-test shows the results are significant at .01.
Fig. 8.9. ROC Area on the Pneumonia Risk Prediction Task vs. the number of input features used by the backprop net
Getting the Most Out of MTL
The basic machinery for doing multitask learning in neural nets is present in backprop. Backprop, however, was not designed to do MTL well. This chapter presents suggestions for how to make MTL in backprop nets work better. Some of the suggestions are counterintuitive, but if not used, can cause MTL to hurt generalization on the main task instead of helping it.
3.1 Use Large Hidden Layers
The basic idea behind MTL in backprop nets is that what is learned in the hidden layer for one task can be useful to other tasks. MTL works when tasks share hidden units. One might think that small hidden layers would help MTL by promoting sharing between tasks. For the kinds of problems we've examined here, this usually does not work. Usually, tasks are different enough that much of what each task needs to learn does not transfer to many (or any) other tasks. Using a large hidden layer ensures that there are enough hidden units for tasks to learn independent hidden layer representations when they need to. Sharing can still occur, but only when the overlap between the hidden layer representations for different tasks is strong. In many real-world problems, the loss in accuracy that results from forcing tasks to share by keeping the hidden layer small is larger than the benefit that arises from the sharing. Usually it is important to use large hidden layers with MTL.
Do Each Task Separately
The classic NETtalk application 30 used one net that trained both phonemes and stresses on one backprop net. NETtalk is an early example of MTL. But the builders
表8.4:保存每种任务的最佳时机
不存在这样一个训练轮次:停训后能让所有任务都达到最优性能。如果所有任务都同等重要,且使用单个网络预测所有任务,那么在所有输出的误差总和最小时停训就是最优选择。图8.12展示了9个任务的总均方根误差。最优平均均方根误差出现在75,000次反向传播迭代时。
但使用单个网络预测所有任务并非最优方案。通过验证集对每个输出单独执行早停能获得更好的性能。具体做法是:在每个任务性能最优的训练轮次保存网络副本,用该副本预测对应任务。保存每个任务的副本后,继续训练网络直到其余任务达到性能峰值。有时,继续训练网络上的所有输出(包括已经开始过拟合的输出)是最佳选择;有时,对已经开始过拟合的输出停止训练(或使用更低的学习率)效果更好。需要注意,一旦某个输出开始过拟合,我们不再关注该任务上的网络性能,因为我们已保存了该任务性能最优的早期轮次的网络副本。继续训练该任务的唯一原因是,它可能对尚未达到性能峰值的其他任务有益。
表8.4对比了按任务单独早停的性能,与使用总误差在整个MTL网络的同一位置停训所得到的性能。平均而言,按任务单独早停能将误差降低9.0%,这是非常大的差异。对于部分任务,如果MTL网络没有针对该任务单独停训,其性能会比该任务的STL(单任务学习)性能更差。在结束本节前需要说明:MTL网络上单个输出的训练曲线不一定是单调的。虽然STL网络的测试集误差出现多峰并非罕见,但STL网络的训练集误差应单调下降或趋于平稳。但MTL网络上单个输出的误差并非如此:所有输出的训练集误差总和永远不会上升,但任意单个输出的误差可能
8.3.3 为不同任务使用不同的学习率
我们能否控制不同任务的训练速率,让它们同时达到最佳性能?如果所有任务同时达到性能峰值,是否能实现每个任务的最优性能?如果不能,那么辅助任务的学习速率比主任务慢还是更快更优?使用普通反向传播时,不同任务的学习速率很少对MTL(多任务学习)是最优的:训练慢于主任务的任务,在主任务停止训练时还没学到足够知识来帮助主任务;训练快于主任务的任务,在主任务还没学好时可能已经严重过拟合,要么它们学到的内容对主任务不再有用,要么它们可能导致主任务过早过拟合。
控制不同任务学习速率最直接的方法是为每个任务(即每个输出)设置不同的学习率。我们通过实验使用梯度下降法为每个辅助输出寻找学习率,以最大化主任务的泛化性能。
表8.5展示了优化其余8个辅助任务的学习率前后,主转向任务的性能。优化MTL辅助任务的学习率后,主任务性能又提升了11.5%,这是在MTL相比STL原本15%~25%的性能提升之外的额外增益。观察学习率优化过程中所有任务的训练曲线可知,辅助任务学习速率的变化会显著影响辅助任务的学习速度。有趣的是,它也会显著影响主任务的学习速度。
| TRIAL | Before Optimization | After Optimization | Difference |
| --- | --- | --- | --- |
| Trial 1 | 0.227 | 0.213 | -6.2% |
| Trial 2 | 0.276 | 0.241 | -12.7% |
| Trial 3 | 0.249 | 0.236 | -5.2% |
| Trial 4 | 0.276 | 0.231 | -16.3% |
| Trial 5 | 0.276 | 0.234 | -15.2% |
| Average | 0.261 | 0.231 | -11.5% * |
- 这令人意外,因为我们在优化过程中固定了主任务的学习率。更有趣的是,优化学习率以提升主任务泛化准确率的同时,也几乎同等程度地提升了辅助任务的泛化性能。这正应了那句谚语:利于鹅的也有利于雁(即对一方有利的对另一方也有利)。
8.3.4 为主任务使用专属隐藏层
有时每个输出的最优隐藏单元数为100个甚至更多。如果有数百个辅助任务,这就意味着需要数千个隐藏单元。这不仅会造成计算难度,还会降低主任务的性能------因为大部分隐藏层的表征是为其他任务构建的。主任务输出单元面临严重的隐藏单元选择问题,它只能使用少数对自己有用的隐藏单元。
图8.13展示了一种能解决该问题的网络架构。它不再为所有任务共享同一个隐藏层,而是设置了两个互不重叠的隐藏层。隐藏层1是主任务专属的隐藏层,仅主任务可以使用;隐藏层2由主任务和辅助任务共享,是支持MTL迁移的隐藏层。由于主任务可以读取和影响共享隐藏层,而辅助任务无法更改为主任务预留的专属隐藏层,因此隐藏层2可以保持较小的规模,且不会影响主任务性能。
8.4 本章总结
我们通常认为反向传播网络的输入是向网络传入信息的端口,输出是网络输出预测的端口。但反向传播会在训练过程中通过输出向网络推送信息。通过网络输出传入网络的信息,与通过网络输入传入的信息同等重要。多任务学习是一种在训练过程中利用反向传播网络的输出向网络推送额外信息的方式。如果网络架构允许不同输出的学习内容进行共享,这些额外信息就能帮助主任务学习得更好。(关于多任务学习的更多讨论,参见5, 6, 4, 8, 3, 9, 11, 10, 20, 35, 36, 12, 21, 13, 14)
MTL并行训练多个任务,并不是因为这是学习多个任务的更高效方式,而是因为辅助任务的训练信号中的信息,能帮助主任务学习得更好。有时对主任务最优的方案,对辅助任务并非最优。优化技术时最重要的目标是让主任务性能最优,哪怕这会损害辅助任务的性能。如果辅助任务同样重要,最佳的方案可能是针对每个重要的辅助任务单独重新训练,每次只优化对应任务的技术。
本章介绍了多种利用额外输出,挖掘真实领域可用信息的机会。这些应用中的核心技巧是:将网络的输出视为仅在训练阶段使用的输入。任何在训练网络时可获得、但在网络后续用于预测时无法获得的信息,都可以被用作额外输出。存在大量可提供有用辅助任务的领域。本章给出的典型领域列表并不完整,未来还会识别出更多类型的辅助任务。
致谢
R. Caruana的研究得到了ARPA基金F33615-93-1-1330、NSF基金BES-9315428以及卫生保健政策局基金HS06468的支持。寻找用作额外输出时效果更好的输入特征的工作,是与Virginia de Sa合作完成的,她获得了斯隆基金会的博士后奖学金资助。感谢多伦多大学提供的Xerion模拟器,感谢D. Koller和M. Sahami允许我们使用他们的特征选择器。
参考文献
-
1 Abu-Mostafa, Y.S.:《神经网络中的提示学习》.《复杂性杂志》6(2),192--198 (1990)
-
2 Abu-Mostafa, Y.S.:《提示》.《神经计算》7,639--671 (1995)
-
3 Baxter, J.:《学习内部表征》. 收录于:COLT 1995,加州圣克鲁兹 (1995)
-
4 Baxter, J.:《学习内部表征》. 博士论文,南澳大利亚弗林德斯大学 (1994年12月)
-
5 Caruana, R.:《多任务学习:一种基于知识的归纳偏置来源》. 收录于:第10届国际机器学习会议论文集,ML 1993,马萨诸塞大学阿默斯特分校,41--48页 (1993)
-
6 Caruana, R.:《多任务联结学习》. 收录于:1993年联结模型暑期学校论文集,372--379页 (1994)
-
7 Caruana, R.,Freitag, D.:《贪心属性选择》. 收录于:ICML 1994,新泽西州罗格斯大学,28--36页 (1994)
-
8 R. 卡鲁阿纳:《使用反向传播同时学习大量相关任务》,载于1994年神经信息处理系统大会(NIPS)论文集,第656--664页(1995年出版)
-
9 R. 卡鲁阿纳、S. 巴卢贾、T. 米切尔:《利用未来"梳理"当前:Rankprop与多任务学习在医疗风险预测中的应用》,载于《神经信息处理系统进展会议论文集》,NIPS 1995,第959--965页(1996年出版)
-
10 R. 卡鲁阿纳、V.R. 德萨:《将低质量特征提升为监督信号:部分输入作为输出效果更优》,载于NIPS 1996会议论文集(1997年出版)
-
11 R. 卡鲁阿纳:《多任务学习》,《机器学习》第28期,第41--75页(1997年)
-
12 R. 卡鲁阿纳:《多任务学习》,博士论文,卡内基梅隆大学,CMU-CS-97-203(1997年)
-
13 R. 卡鲁阿纳、J. 奥沙利文:《自主机器人的多任务模式识别》,载于《IEEE智能机器人与系统会议(IROS 1998)论文集》,维多利亚(1998年,待刊出)
-
14 R. 卡鲁阿纳、V.R. 德萨:《利用特征选择寻找作为输出效果更优的输入》,载于《1998年国际神经网络大会(ICANN 1998)论文集》,瑞典(1998年,待刊出)
-
15 G.F. 库珀、C.F. 阿利费里斯、R. 安布罗西诺、J. 阿罗尼斯、B.G. 布坎南、R. 卡鲁阿纳、M.J. 法因、C. 格利莫尔、G. 戈登、B.H. 哈努萨、J.E. 亚诺斯基、C. 米克、T. 米切尔、T. 理查森、P. 斯皮尔茨:《机器学习方法在肺炎死亡率预测中的应用评估》,《医学人工智能》第9期,第107--138页(1997年)
-
16 M. 克雷文、J. 沙夫利克:《利用采样和查询从训练好的神经网络中提取规则》,载于《第11届国际机器学习大会(ML 1994)论文集》,新泽西州罗格斯大学,第37--45页(1994年)
-
17 I. 戴维斯、A. 斯坦茨:《基于神经网络的自主户外导航传感器融合》,载于《IEEE智能机器人与系统会议论文集(1995年)》
-
18 T.G. 迪特里希、G. 巴基里:《通过纠错输出码解决多类别学习问题》,《人工智能研究杂志》第2期,第263--286页(1995年)
-
19 M.J. 法因、D. 辛格、B.H. 哈努萨、J. 拉夫、W. 卡普尔:《使用MedisGroups对比医院数据库验证肺炎预后指数》,《美国医学杂志》(1993年)
-
20 J. 戈松、Y. 本吉奥:《用于股票选择的多任务学习》,载于NIPS 1996会议论文集(1997年出版)
-
21 T. 赫斯克斯:《解决大量相似任务:多任务学习与分层贝叶斯方法的结合》,载于《第15届国际机器学习大会论文集》,威斯康星州麦迪逊,第233--241页(1998年)
-
22 L. 霍尔姆斯特伦、P. 科伊斯蒂宁:《反向传播训练中使用加性噪声》,《IEEE神经网络汇刊》第3卷第1期,第24--38页(1992年)
-
23 G. 约翰、R. 科哈维、K. 普夫莱格:《无关特征与子集选择问题》,载于ICML 1994,新泽西州罗格斯,第121--129页(1994年)
-
24 D. 科勒、M. 萨哈米:《面向最优特征选择》,载于ICML 1996,意大利巴里,第284--292页(1996年)
-
25 Y. 杨立昆、B. 博塞、J.S. 登克、D. 亨德森、R.E. 霍华德、W. 哈伯德、L.D. 杰克尔:《反向传播在手写邮政编码识别中的应用》,《神经计算》第1期,第541--551页(1989年)
-
26 Y. 杨立昆:私人通信(1997年)
-
27 P.W. 芒罗、B. 帕尔曼托:《网络间的竞争提升委员会性能》,载于《神经信息处理系统进展会议论文集》,NIPS 1996,第9卷(1997年,待刊出)
-
28 D.A. 波梅兰纽:《移动机器人导航的神经网络感知》,博士论文,卡内基梅隆大学:CMU-CS-92-115(1992年)
-
29 L.Y. 普拉特、J. 莫斯托、C.A. 卡姆:《神经网络间已学信息的直接迁移》,载于《AAAI 1991大会论文集(1991年)》
-
30 T.J. 塞杰诺夫斯基、C.R. 罗森伯格:《NETtalk:一个学习朗读的并行网络》,约翰霍普金斯大学:JHU/EECS-86/01(1986年)
-
31 J. 西尔、Y. 阿布-莫斯塔法:《单调性提示》,载于《神经信息处理系统大会论文集》,NIPS 1996,第9卷(1997年,待刊出)
-
32 S.C. 萨达斯、A.D.C. 霍尔登:《符号-神经系统与用于开发复杂系统的提示》,《人机研究国际杂志》第35卷第3期,第291--311页(1991年)
-
33 S.C. 萨达斯、Y.L. 凯戈西安:《规则注入提示作为提升网络性能和学习速度的手段》,载于《欧洲信号处理协会(EURASIP)神经网络研讨会论文集》,第120--129页(1990年)
-
34 S. 特龙:《基于解释的神经网络学习:一种终身学习方法》,克鲁威尔学术出版社(1996年)
-
35 S. 特龙、L. 普拉特(编):《机器学习------归纳迁移第二期特刊(1997年)》
-
36 S. 特龙、L. 普拉特(编):《学会学习》,克鲁威尔出版社(1997年)
-
37 R. 巴尔德斯-佩雷斯、H.A. 西蒙:《发现复杂模式化行为的强大启发式方法》,载于《第11届国际机器学习大会(ML 1994)论文集》,新泽西州罗格斯大学,第326--334页(1994年)
-
38 A. 魏根德、D. 鲁梅尔哈特、B. 休伯曼:《通过权重消除实现泛化及其在预测中的应用》,载于《神经信息处理系统进展会议论文集》,NIPS 1990,第3卷,第875--882页(1991年)
9 解决神经网络学习中的病态问题*
帕特里克·范德·斯马特 与 格尔德·希尔辛格
德国航空航天研究中心 机器人与系统动力学研究所,德国韦斯林82230邮政信箱1116号
http://www.robotic.dlr.de/Smagt/
- 早先发表于:Orr, G.B. 与 Müller, K.-R. 编:《计算机科学讲义》(LNCS)第1524卷,ISBN 978-3-540-65311-0(1998年);G. Montavon 等编:《神经网络:实战技巧》第2版,《计算机科学讲义》(LNCS)第7700卷,第191--203页,2012年。© 施普林格-维尔格柏林海德堡2012年
摘要 本文研究前向学习问题。已知大多数前向学习问题中存在的不良条件问题被证明是网络结构导致的结果。同时,本文还讨论了网络中"较高"层之间的权重必须在"较低"层权重收敛前稳定的知名问题。我们通过向网络中添加携带共享权重的线性连接来修改网络结构,提出了解决上述问题的方法。我们将这种新的网络结构称为线性增强前向网络,并证明通用逼近定理依然成立。仿真实验验证了新方法的有效性,且证明新网络对局部最小值的敏感度更低,学习速度比原始网络更快。
9.1 引言
前向网络学习的核心问题之一仍是学习算法的精度与速度。由于学习问题是复杂且高度非线性的12,4,因此必须使用迭代学习过程来求解优化问题2,14。持续提升学习算法性能的需求催生了大量专为前向网络学习量身定制的优秀优化算法。然而,一个重要问题在于代表学习问题的误差函数的特殊形式。早有研究指出10,16,误差函数的导数通常存在病态问题。这种病态性体现在误差曲面包含大量鞍点和平坦区域。虽然可通过随机学习方法(如9,1,13)解决该问题,但这类方法需要大量学习迭代才能找到最优解,因此不适用于需要快速学习的场景。因此我们仍聚焦于基于梯度的学习方法。
9.2 学习过程
我们使用神经网络\(\mathcal{N} : \Re^N \times \Re^n \to \Re^M\)对\(p\)个学习样本\(\{(\boldsymbol{x}_1, \boldsymbol{y}_1), (\boldsymbol{x}_2, \boldsymbol{y}_2), \dots, (\boldsymbol{x}_p, \boldsymbol{y}_p)\}\)进行逼近,其中\(\boldsymbol{x}_i \in \Re^N\),\(\boldsymbol{y}_i \in \Re^M\),且满足\(\forall 1 \le i \le p : \mathcal{F}(\boldsymbol{x}_i) = \boldsymbol{y}_i\)。函数\(\mathcal{F} : \Re^N \to \Re^M\)被称为模型函数 。设\(n\)为网络的自由参数\(W\)的数量。在本例中,我们更关注对学习样本而非底层函数\(\mathcal{F}\)的逼近,或假设\(p\)个学习样本能够代表\(\mathcal{F}\)。神经网络所表示的函数的输出可写作:
math
\mathcal{N}(\boldsymbol{x}, W)_o = \sum_{h} w_{ho} s \left( \sum_{i} w_{ih} x_i + \theta_h \right) + \theta_o
其中\(s(x)\)是传递函数,\(o\)表示输出单元,\(h\)表示隐藏单元,\(i\)表示输入单元。符号\(w_{ho}\)表示\(W\)中对应从隐藏单元\(h\)到输出单元\(o\)的连接的元素;\(w_{ih}\)同理用于表示从输入单元\(i\)到隐藏单元\(h\)的连接。最后,\(\theta\)是偏置权重,因此也是\(W\)的元素。图9.1展示了一个具有1个输入单元、1个输出单元和2个隐藏单元的示例前向网络。学习任务包括最小化逼近误差,该误差通常定义为:
math
E_{\mathcal{N}}(W) = \sum_{i=1}^{p} \|\mathcal{N}(\boldsymbol{x}_i, W) - \boldsymbol{y}_i\|
其中我们优先使用\(L_2\)范数表示\(\|\cdot\|\)。当不会引起混淆时,我们会省略下标\(\mathcal{N}\)。\(E(W)\)关于\(W\)是(高度)非线性的,因此需要使用迭代搜索技术找到使\(E(W)\)足够小的\(W\)。最后我们定义残差模式误差:
math
e_{M(i-1)+j} = \|\mathcal{N}(\boldsymbol{x}_i, W)_j - \boldsymbol{y}_{ij}\|
即第\(i\)个学习样本的第\(j\)个输出值的误差。
9. 解决神经网络学习中的病态问题
Fig. 9.1. 一个前馈神经网络示例。圆圈代表神经元:黑色实心圆是偏置单元,始终携带激活值为'1'。
9.2.1 学习方法
基于梯度的学习方法以采用泰勒展开的低阶项逼近近似误差为特征,
\E(W + W_0) = E(W_0) + \\nabla E\|_{W_0} W + W\^T \\nabla\^2 E\|_{W_0} W + \\ldots \\tag{9.4} \\
在大多数情况下,二阶及以上的项会被忽略。我们定义
\\\tilde{E}_1(W + W_0) = E(W_0) + \\nabla E\|_{W_0} W \\tag{9.5} \\
和
\\\tilde{E}_2(W + W_0) = \\tilde{E}_1(W) + W\^T \\nabla\^2 E\|_{W_0} W \\tag{9.6} \\
分别是\(E\)的一阶与二阶近似。通过将近似误差局部视为\(W\)的一阶或二阶函数,我们可以使用多种现有逼近方法来最小化\(E\)。
当依据局部二阶近似信息完成\(E\)的最小化后,会更新局部信息并开展第二步最小化操作。该过程会重复执行,直至找到最小值。常用的最小化方法包括最速下降法(其一种变体被称为误差反向传播)、共轭梯度优化、Levenberg-Marquardt优化、变尺度方法以及(拟)牛顿法。这些方法各有优缺点,相关内容在其他文献14中有讨论。
当∇E和∇²E已知时,在定位到最优解后,会利用局部信息重新计算∇E和∇²E,并重新定位最小值。该过程会重复执行直至找到最小值。显然,这种方法能否成功取决于误差函数的形式。如果误差函数足够平滑、复杂度不高,且可被二次函数合理逼近,那么上述优化方法是可靠且快速的寻优方式。然而在前馈网络训练中,误差函数往往存在大量平坦区域,受限于浮点数精度,在这些区域进行最小化是非常困难的。
学习问题的条件
误差函数的平坦区域可形式化表述如下。我们将\(M_p \times n\)的雅可比矩阵\(J\)定义为:
\J \\equiv \\begin{pmatrix} \\nabla e_1\^T \\\\ \\nabla e_2\^T \\\\ \\vdots \\\\ \\nabla e_{M_p}\^T \\end{pmatrix} \\
其中
\(e_k \equiv \left( \frac{\partial e_k}{\partial w_1}, \frac{\partial e_k}{\partial w_2}, \dots, \frac{\partial e_k}{\partial w_n} \right)^T \tag{9.7}\)
我们进一步定义海森矩阵\(H = \nabla^2 E\),它是\(E\)的二阶导数矩阵。我们对\(H\)的特征值与特征向量感兴趣。由于\(H\)是接近局部最小值的半正定对称矩阵,其所有特征值均为正实数。
当某个特征值极小时,沿对应特征向量方向移动对近似误差的影响也非常小。这意味着在该方向上,误差函数是(近似)奇异的。误差函数的奇异性可用\(H\)的条件数表示,条件数被定义为\(H\)的最大特征值与最小特征值的比值。海森矩阵还可表示为:
\H = J\^T J \\tag{9.8} \\
因此在学习过程中我们会遇到\(\nabla E = J^T \boldsymbol{e}\)的情况。如上所述,\(H\)条件不佳的情况可能出现在误差函数\(E(W)\)的最小值点或平坦区域。前馈学习任务通常具有奇异或近似奇异的海森矩阵这一特征。尽管上述学习方法在数学上不受条件欠佳的海森矩阵影响,但由于数字计算机的浮点数精度有限,这会导致计算结果不准确。
9.2 奇异性产生的原因
深度学习中奇异性主要有两个成因。其一是偏差-方差权衡:若模型过于简单,则无法很好地拟合数据;若模型过于复杂,则会出现数据过拟合。其二是数据不足。在数据量趋近于无穷大的极限情况下,偏差-方差权衡问题会消失。然而维度灾难会使偏差-方差权衡问题更加严重,数据不足时该问题也会更为突出。
随机变量是由随机过程决定的变量。
我们使用以下记号:(9.1)表示变量\(X\)的概率密度,\(P(X)\)表示变量\(X\)的概率。以下是本文使用的变量列表。
9.3 反向传播导致局部最小值
本文提出了一种可解决上述问题的新模型,本文所解决的问题列表如下:
误差函数相对于权重的梯度通过针对每个学习样本执行以下步骤计算得到:
-
- 对于每个输出单元\(o\),当输入一个学习样本时,计算\(\delta_o = y_o - a_o\),其中\(a_o\)是该单元的激活值。
-
- 计算从隐藏层到输出层的权重\(w_{ho}\)的权重导数:\\Delta w_{ho} = \\delta_o a_h,其中\(a_h\)是隐藏层的激活值。
-
- 计算隐藏单元的delta:\\delta_h = \\sum_{o} \\delta_o w_{ho} s'(a_h).
-
- 计算从输入层到隐藏层的权重\(w_{ih}\)的权重导数:\\Delta w_{ih} = \\delta_h a_i = \\sum_{o} \\delta_o w_{ho} s'(a_h) a_i. \\tag{9.10}
随后将所有\(\Delta w\)求和即可得到梯度。从公式(9.10)可以看出,当输入层到隐藏层的某个权重的梯度可忽略不计,导致海森矩阵中对应的行和列均接近零时,存在以下四种情况:
-
当\(\delta_o\)较小时。这种情况是合理的,因为这意味着网络的输出接近期望输出。
-
当\(w_{ho}\)较小时。这是一种不理想的情况:从隐藏层到输出单元的权重过小,会导致输入层到隐藏层的权重失效。这一点尤为重要,因为该权重后续可能需要改变其取值。
-
当\(s'(a_h)\)较小时,这种情况通常发生在权重\(w_{ih}\)较大时。同样,这种饱和型失效也是不理想的。
-
最后,当\(a_i\)较小时。这种情况符合预期:当输入值不显著时,它不应对输出产生影响。
9.3.1 一种新的神经网络结构
为了缓解上述问题,我们提出对公式(9.10)对应的学习系统做如下修改:
\\\Delta w_{ih} = \\sum_{o} \\delta_o (w_{ho}s'\[a_h + c) a_i = \delta_h a_i + c \sum_{o} \delta_o a_i. \]
通过在中项添加常数\(c\),我们可以同时解决上述两种失效问题。实际上,这会为每个输入单元到每个输出单元创建一条额外连接,其权值与输入层到隐藏层的权重相耦合。
图9.2. 一个适配后的前馈神经网络示例。尽管可以将\(c\)设为可学习参数,但在后续内容中我们将假设\(c=1\)。神经网络的第\(o\)个输出现在计算如下:
\\\mathcal{M}(\\mathbf{x}, W)_o = \\sum_h \\left( w_{ho}\\sigma \\left\[ \\sum_i w_{ih}x_i + \\theta_h \\right + \sum_i w_{ih}x_i \right) + \theta_o.\tag{9.11} \]
我们将这个新网络称为线性增强前馈网络。该网络的结构如图9.2所示。
注意\(\mathcal{N}\)与\(\mathcal{M}\)的等价性,即:
\\\mathcal{M}(\\mathbf{x}, W)_o \\equiv \\mathcal{N}(\\mathbf{x}, W)_o + \\sum_h \\sum_i w_{ih}x_i.\\tag{9.12} \\
9.3.2 对近似误差\(E\)的影响
尽管网络\(\mathcal{N}\)和\(\mathcal{M}\)的最优\(W\)会有所不同,我们仍然可以比较误差函数\(E_{\mathcal{N}}\)与\(E_{\mathcal{M}}\)的形式。利用公式(9.2)和(9.11),我们可以计算单个学习样本\((\mathbf{x}, y)\)的近似误差,该样本具有\(N\)个输入、\(\kappa\)个隐藏单元和单个输出:
\E_{\\mathcal{M}}(W)\^2 = \\left(\\mathcal{M}\[\\mathbf{x}, W - y\right)^2 = \left(\mathcal{N}(\mathbf{x}, W) - y + \sum_i \sum_h w_{ih}x_i\right)^2 = E_{\mathcal{N}}(W)^2 + 2 \sum_i \sum_h w_{ih}x_i\left(\mathcal{N}\\mathbf{x}, W - y\right) + \left(\sum_i \sum_h w_{ih}x_i\right)^2.\tag{9.13} \]
9.3.3 定理1
定理1
子集\(\mathcal{M}\)由所有非奇异线性算子构成,不存在\(I\)为恒等算子、\(N\)是\(\mathcal{M}\)中正规算子的形式。
定理1是定理1和定理1的直接推论。
证明 。集合\(\mathcal{M}\)是\(\mathcal{M}\)中的闭集,且是\(\mathcal{M}\)的子空间。由于\(I\)是\(\mathcal{M}\)的元素,我们有表达式,其也是\(\mathcal{M}\)的元素。现在,对应\(\mathcal{M}\)元素的\(\mathcal{M}\)元素集合,就是\(\mathcal{M}\)的所有元素的集合。该集合同样是\(\mathcal{M}\)的子空间。
9.3.4 示例
例如,我们训练了一个具有单个隐藏单元、无偏置连接的网络,用于表示学习样本(1.1)和(2.2)。该隐藏单元采用Sigmoid激活函数。因此,原始神经网络计算得到的函数为\(\mathcal{N}(\mathbf{x}, W) = w_2 s(w_1 x)\),适配后的神经网络计算得到的函数为\(\mathcal{M}(\mathbf{x}, W) = w_2 s(w_1 x) + w_1 x\)。我们采用S型函数\(s(x) = 1/(1 + e^{-x})\)作为激活函数,该函数具有以下广为人知的特性:\(\lim_{x \to \infty} s(x) = 1\),\(\lim_{x \to -\infty} s(x) = 0\),且\(\lim_{x \to \pm\infty} s'(x) = 0\)。
图9.4展示了该神经网络的误差函数及其导数。该图第一行展示的是原始神经网络。请注意顶部中间的图展示了\(\partial E/\partial w_1\),当\(w_2\)取值较小时,\(\partial E/\partial w_1 \approx 0\)。换句话说,当\(w_2\)较小时,\(w_1\)的值几乎不会发生变化。类似地,当\(w_1\)较大时,由于传递函数的导数几乎为0,\(\partial E/\partial w_1\)也会很小。该图底部展示的是修改后的神经网络。左侧同样是误差函数。中间图清晰显示,导数不再存在为0或极小的区域。右侧图仍显示,若\(w_1\)取绝对值很大的负值,\(\partial E/\partial w_2\)可忽略不计:毕竟隐藏单元的激活值接近0。
图9.4. 使用原始和适配学习规则的误差函数及其导数。第一行展示原始学习规则的误差函数(左)及其导数\(\partial E/\partial w_1\)(中)、\(\partial E/\partial w_2\)(右);第二行展示适配学习规则的对应图像。等高线间距分别为0.5(左图)和0.2(中、右图)。
9.4 应用
我们已将这一新的学习方案应用于多个近似问题。在所有问题中,每个网络均以不同的初始随机权重值运行3000次。为训练网络,我们采用了带Powell重启的Polak-Ribière共轭梯度优化技术14。使用真实数据的应用(问题3和4)采用两组独立数据集:学习集和交叉验证集。所有情况下,网络均训练至交叉验证集上的误差最小为止(即训练到网络开始出现过拟合的节点前停止)。所报告的近似误差均使用交叉验证集中的样本计算得出。
问题1:(合成数据)异或(XOR)问题
经典的异或问题包含四个学习样本\((0,0), 0\)、\((0,1), 1\)、\((1,0), 1\)和\((1,1), 0\)。该网络具有2个输入、2个隐藏单元和1个输出。已有研究指出5,异或问题在神经网络学习中非常非典型,因为它的泛化能力会受到惩罚。尽管如此,异或问题通常被视为一个小型标准学习基准问题。而网络\(\mathcal{N}\)在22.4%的运行中陷入局部最小值,线性增强网络\(\mathcal{M}\)总能达到全局最小值。对于\(\mathcal{N}\),要达到0.0的近似误差(在计算机32位浮点精度范围内),平均需要189.1步;对于\(\mathcal{M}\),仅需98.3步。当使用普通误差反向传播学习规则(即非共轭梯度学习)时,据报道异或学习问题会出现8.7%的局部最小值14。
神经网络与图像识别
我们测试了一个4层网络,每层包含1000个单元。该网络在MNIST手写数字数据集上训练,按8:2划分训练集和测试集。该网络共训练100轮,选取最优模型,训练准确率和测试准确率分别为98.5%和97.9%。该网络规模远大于之前的网络,对于该网络我们使用了1000轮训练。然而,该网络的每个样本误差低至\(1.87 \cdot 10^{-6}\)。进一步数据分析显示,数据具有强线性成分,这正是近似误差低两个数量级的原因。结果总结在表9.1中。
| 问题 | \(\mathcal{N}\) | \(\mathcal{M}\) |
| --- | --- | --- |
| 异或问题局部最小值占比 | 22.4% | 0.0% |
| 异或问题平均步数 | 189.1 | 98.3 |
| 正切问题局部最小值占比 | 14.6 | 6.2 |
| 轨道问题局部最小值占比 | 2.3 | 0.0 |
| 3D数据平均误差 | \(4.0 \times 10^{-4}\) | \(8.4 \times 10^{-4}\) |
| 齿轮箱问题局部最小值占比 | 0.0 | 0.0 |
| 数据平均误差 | \(2.5 \times 10^{-6}\) | \(7.1 \times 10^{-6}\) |
结论
研究已证明,普通反向传播学习规则会导致前馈神经网络学习中遇到的误差函数二阶导数矩阵条件不良,这进而会导致误差曲面中出现局部最小值和鞍点。为缓解该问题,我们对反向传播规则做出了改进,该改进可通过适配的前馈神经网络结构实现。我们将这个新网络称为线性增强前馈神经网络。该改进使得学习规则能够获得连接输入单元与隐藏单元的权重的稳定值,即便隐藏层到输出层的权重发生变化时也是如此。数学分析证明了该方法的有效性:尤其是通用近似定理在该新神经网络结构下仍然成立。将这一新方法应用于两组合成数据和两组真实数据的结果表明,该方法对局部最小值的敏感度更低,且能用更少的迭代次数达到最优。
致谢
作者感谢Alin Albu-Stäffner提供齿轮箱数据。
参考文献
3 Cybenko, G.:《由S型函数的叠加实现逼近》,控制、信号与系统数学 2(4),303-314(1989)
4 DasGupta, B.,Siegelmann, H.T.,Sontag, E.D.:《带连续激活函数的神经网络训练的复杂度》,IEEE神经网络汇刊 6(6),1490-1504(1995)
5 Fahlman, S.E.:《反向传播网络学习速度的实证研究》,技术报告CMU-CS-88-162,卡内基梅隆大学(1988年9月)
6 Funahashi, K.-I.:《关于神经网络对连续映射的近似实现》,神经网络 2(3),183-192(1989)
7 Hochreiter, S.,Schmidhuber, J.:《扁平极小值》,神经计算 9(1),1-42(1997)
8 Hornik, K.,Stinchcombe, M.,White, H.:《多层前馈网络是通用逼近器》,神经网络 2(5),359-366(1989)
9 Robbins, H.,Monro, S.:《一种随机近似方法》,数理统计年鉴 22(1),400-407(1951)
10 Saarinen, S.,Bramley, R.,Cybenko, G.:《神经网络训练问题中的病态条件》,SIAM科学计算杂志 14(3),693-714(1993)
11 Schraudolph, N.N.:《关于神经网络权重更新的中心化处理》,技术报告IDSIA-19-97,IDSIA(1997年4月)
12 Sontag, E.D.,Sussmann, H.J.:《反向传播即使在无隐藏层的网络中也会产生伪局部极小值》,复杂系统 3(1),91-106(1989)
13 Unnikrishnan, K.P.,Venugopal, K.P.:《Alopex:一种用于前馈与循环神经网络的相关性学习算法》,神经计算 6,469-490(1994)
14 van der Smagt, P.:《训练前馈网络的最优化方法》,神经网络 7(1),1-11(1994)
15 van der Smagt, P.:《基于神经网络的机械臂视觉引导》,博士论文,计算机系统系,阿姆斯特丹大学(1995年3月)
16 Zhang, Q.J.,Zhang, Y.J.,Ye, W.:《局部稀疏连接多层网络》,载于《IEEE神经网络会议论文集》,1254-1257页,IEEE(1995)
10 神经网络梯度因子的中心化处理*
Nicol N. Schraudolph
IDSIA,瑞士卢加诺Corso Elvezia街36号,邮编6900
邮箱:nic@idsia.ch 网址:http://www.idsia.ch
摘要
长期以来人们普遍认为,当神经网络的输入及隐藏层单元的活动以零为中心时,其学习速度会更快;最近我们已将这一方法扩展到误差信号的中心化处理15:本文进一步将该概念推广至网络梯度涉及的所有因子,因此我们提议同时将隐藏层单元激活函数的斜率也进行中心化处理。斜率中心化可消除反向传播误差的线性分量,这能改善带快捷连接的网络的归因分配。基准测试结果表明,该方法可显著加快学习速度,且不会对训练后网络的泛化能力产生负面影响。
10.1 引言
中心化是一种通用方法,可用于加速以神经网络为代表的这类自适应系统的学习速度------这类系统通常具有非线性、连续性和冗余性的特点。它们通过样本进行增量式学习,一般以某种形式的梯度下降法实现。其基本准则是:
所有进入神经网络权重更新方程的模式相关因子都应进行中心化处理,即减去其在所有模式上的平均值。
相关工作
众所周知,LMS自适应滤波器的输入应进行中心化处理,以实现快速且稳定的自适应22,且有研究指出12,该结论同样适用于多层网络的输入及隐藏层单元活动。尽管Sejnowski 16曾提出一种赫布学习变体,其中权重更新的突触前、突触后因子均做了中心化处理,但该想法在反向传播流行起来后并未得到重视。因此,多层网络中误差信号中心化的优势直到最近才被报道15:本文最终建议将中心化作为通用方法,并给出所有因子均做了中心化处理的反向传播方程。
- 曾发表于:Orr, G.B. 与 Müller, K.-R.(编):LNCS 1524,ISBN 978-3-540-65311-0(1998);G. Montavon 等(编):《神经网络:实用技巧》第2版,LNCS 7700,205-223页,2012年。© 施普林格·柏林·海德堡出版社 2012
10.2 中心化反向传播
中心化反向传播是最受欢迎的反向传播方法之一,其基于反向传播的基本原理。
10.2.1 活动传播约定
考虑一个具有大小为\(h\)的单隐藏层的神经网络,该网络通过反向传播进行训练。
中心化处理
正如LeCun等人12所述,为了加快学习速度,网络的输入及隐藏层单元的活动应进行中心化处理(见第1章)。我们通过如下方式实现:
其中\(\langle \cdot \rangle\)表示对训练样本取平均值(该算子的实现方式见10.3节)。注意偏置输入不得进行中心化处理------由于\(x_0 = \langle x_0 \rangle = 1\),否则偏置输入将失效。
10.2.2 权重修改
传统方法
式10.1给出的网络权重\(w_{ij}\)通常通过对目标函数\(E\)做梯度下降进行优化。若为每个权重设置局部步长\(\eta_{ij}\),则可得到如下权重更新方程:
中心化方法
我们最近提出15,为使收敛速度更快,误差信号\(\delta_j\)也应进行中心化处理。具体做法为通过以下方式更新所有非偏置权重:
与之前一致,该中心化更新方法不得用于偏置权重,否则偏置权重将永远停留在当前值(随机波动除外):相反,偏置权重采用传统方法更新(式10.3)。由于这意味着平均误差\(\langle \delta_j \rangle\)仅分配给偏置权重\(w_{0j}\),我们先前将这一技术称为直流误差分流15。
10.2.3 误差反向传播
传统方法
对于输出单元,误差\(\delta_j\)可直接由目标函数计算得出;对于隐藏层单元,则需通过误差反向传播推导:
其中\(P_j\)表示由节点\(j\)馈入的后序节点集合,\(f'_j(y_j)\)是节点当前的斜率------即其非线性函数\(f_j\)在当前激活水平下的导数值。
中心化
将公式10.6代入公式10.4,即可将隐藏层的权重更新表示为其激活值、反向传播的误差和斜率的乘积:
\[ \Delta w_{ij} \propto f_j'(y_j) \tilde{\gamma}_j \tilde{x}_i \] (10.7)
其中\(\tilde{\gamma}_j\)表示反向传播的中心化误差。
\[ \langle \tilde{\gamma}_j \rangle = \left\langle \sum_{k \in P_j} w_{jk} \tilde{\delta}_k \right\rangle = \sum_{k \in P_j} w_{jk} \langle \tilde{\delta}_k \rangle = 0. \] (10.8)
无需显式地对\(\tilde{\gamma}_j\)进行中心化,因为
目前,通过对激活值和误差信号进行中心化,我们已经处理了公式10.7中的三个因素中的两个,剩下的第三个因素------节点的斜率------仍需处理。实现方式是将误差反向传播的非线性部分(公式10.6)修改为
\[ \delta_j = \tilde{f}_j'(y_j) \tilde{\gamma}_j, \text{ where } \tilde{f}_j'(y_j) = f_j'(y_j) - \langle f_j'(y_j) \rangle. \] (10.9)
线性误差的剔除
注意,对于线性节点\(n\),有\(f_n'(y_n) \equiv 1\),代入公式10.9将始终得到\(\delta_n \equiv 0\)。
换言之,斜率中心化(针对任意节点)会阻断误差信号的线性分量的反向传播------也就是相同位置的线性节点会接收到的那个分量。
从误差剔除的角度来看,我们在误差中心化的基础上又向前迈进了一步,误差中心化移除了误差信号的直流(常量)分量。
快捷连接
因此,需要一个参数------偏置权重------来接收并修正即将被消除的直流误差分量。
同理,现在我们需要额外的权重来实现从前层节点到后层节点的线性映射,因为当前单元自身已经无法完成这一功能。
形式化地,对于每一个适用公式10.9的节点\(j\),要求满足
\[ (\forall i \in A_j) \quad P_j \subseteq P_i. \] (10.10)
我们将这种绕过单个节点(或整个层)的连接称为快捷连接。
先前已有研究表明,添加快捷连接权重有时可以提升神经网络的学习效果。
然而在我们自己的实验(见10.4节)中发现,真正让快捷连接权重发挥实际作用的是斜率中心化。
互补方案?
在第9章中,van der Smagt和Hirzinger也提出将快捷连接作为加速神经网络学习的一种手段。
但需要注意的是,他们对快捷连接的使用方式与我们截然不同:为了改善神经网络的条件数,他们添加的快捷连接的权重与现有权重耦合(共享)。
因此,他们在不增加新的权重参数、也不脱离严格的基于梯度的优化框架的前提下,适当地调整了网络的拓扑结构。
相比之下,我们特意剔除了隐藏层梯度的线性分量,使其专注于非线性任务。
之后我们再使用带有额外权重参数的快捷连接来处理隐藏层当前忽略的线性映射。
这两种方法虽然都使用快捷连接来实现目标,但从另一个角度看,二者几乎互补:我们从梯度中剔除线性分量,而van der Smagt和Hirzinger的做法恰恰是给自己的梯度添加这样的分量。
甚至有可能将这两种方法整合到同一个 admittedly 相当复杂的神经网络架构中,并获得收益。
10.3 实现技术
根据平均算子\(\langle \cdot \rangle\)的实现方式,我们可以将对神经网络中变量进行中心化的方法分为多类。
具体来说,平均计算可以是精确的或近似的,应用方式可以是先验的,也可以在学习过程中自适应应用,对应批量(确定性)或在线(随机)设置:
| 中心化方法 | 近似 | 精确 |
| :--- | :--- | :--- |
| 先验 | 设计层面 | 外部 |
| 自适应 | 在线 | 滑动平均 | --- |
| | 批量 | 前一批次 | 双趟、单趟 |
10.3.1 先验方法
设计层面法。 无需修改学习算法,只需合理设计系统,即可获得中心化带来的部分收益。
例如,取值范围为对称的-1, 1的双曲正切(tanh)函数,通常比常用的取值范围为0, 1的logistic sigmoid函数\(f(y) = 1/(1 + e^{-y})\)产生中心化程度更高的输出,因此是隐藏层的首选激活函数12。
同理,输入表征可以选择(也应当选择)让输入大致保持中心化。
使用快捷连接时,甚至可以提前从隐藏层单元的斜率中减去一个常量(比如最大值的一半),以提升其中心化程度。
我们将这些近似方法称为设计层面中心化。
尽管不够精确,但这些方法便捷易实现,能够加快神经网络的学习速度。
无论是否需要进一步加速技术,在为神经网络设置学习任务时,将中心化作为设计原则牢记于心通常都是明智的选择。
外部中心化。 网络的外部量------即不受权重变化影响的量------通常可以在学习前精确地进行中心化。
特别地,对于任意给定的训练集,都可以通过这种方式对网络的输入进行中心化。
即使在训练集无法提前获知的在线场景中,有时也可以基于对训练数据的先验知识完成这类外部 中心化:例如,可以不使用时序序列\(\boldsymbol{x}(t)\)作为网络输入,而是使用时序差分信号\(\boldsymbol{x}(t)-\boldsymbol{x}(t-1)\),如果\(\boldsymbol{x}(t)\)是平稳的,该信号将自动处于中心化状态。
10.3.2 自适应方法
在线方法。 在线学习时,多层网络中单个权重的周边环境高度非平稳,要么源于其他权重的同步更新,要么源于学习任务本身。
因此,在在线场景下,不存在唯一确定的待中心化信号\(\boldsymbol{x}(t)\)的平均值,我们只能使用滑动平均------即信号本身的平滑版本------来替代。
一种常用的平滑器是指数迹
\[ \bar{x}(t+1)=\alpha \bar{x}(t)+(1-\alpha) \boldsymbol{x}(t) \] (10.11)
该方法的优势在于无历史依赖且具有因果性,即当前更新不需要用到\(\boldsymbol{x}\)的过去或未来值。
自由参数\(\alpha\)(取值范围为\(0 \leq \alpha \leq 1\))决定了平均的时间尺度。
该参数的选择并不简单:如果取值过小,\(\bar{x}\)会噪声过大;如果取值过大,平均值会远远滞后于(漂移的)信号。
注意,通过该方法实现中心化的计算成本与网络中的节点数量成正比。
在稠密连接网络中,这一成本远小于权重的数量,因此通过权重传播激活值和误差信号的操作占据了绝大部分计算量。
因此,在线中心化的成本仅会在小型或稀疏连接的网络中显现出来。
双趟批量法。 在批量学习场景下实现精确中心化的简单方法是,每次权重更新时对训练集进行两趟 遍历:第一趟计算所需的平均值,第二趟计算对应的权重变化。
这显然会使网络训练的计算成本几乎翻倍。
对于相对较小的网络和训练集,可以在第一趟遍历时存储每个节点、每个样本的激活值和误差,因此第二趟仅需执行权重更新(公式10.4)即可。
如果存储不可行,仅进行前向传播的第一趟遍历(公式10.1)就足以计算平均激活值和斜率:此时可以通过本文描述的其他方法实现误差中心化。
前一批次法。 为了避免双趟法的计算开销,可以在计算当前批次的权重变化时,使用上一批次 收集到的平均值。
该近似方法假设所涉及的平均值在批次之间不会有太大变化:这可能会导致
与极高学习率相关的稳定性问题。从计算角度看,该方法非常有吸引力,因为它的计算成本仍比上文描述的在线技术更低。当训练使用小批量样本时,通过对小批量均值进行指数迹中心化处理,可以有效将这两种方法结合起来。
单遍批量处理
只需对一批训练样本进行单遍 处理即可完成精确的中心化。这是通过对完全中心化的批量权重更新的三重积进行展开实现的(参见 公式10.7)。用\(f'_{j}\)作为\(f'_j(y_j)\)的简写,可得:
\\\begin{aligned} \\Delta w_{ij} \\propto \\quad \& \\langle (x_i - \\langle x_i \\rangle)(\\gamma_j - \\langle \\gamma_j \\rangle) (f'_j - \\langle f'_j \\rangle) \\rangle \\\\ = \\quad \& \\langle x_i \\gamma_j f'_j \\rangle - \\langle \\langle x_i \\rangle \\gamma_j f'_j \\rangle - \\langle x_i \\langle \\gamma_j \\rangle f'_j \\rangle - \\langle x_i \\gamma_j \\langle f'_j \\rangle \\rangle \\\\ + \\quad \& \\langle \\langle x_i \\rangle \\langle \\gamma_j \\rangle f'_j \\rangle + \\langle \\langle x_i \\rangle \\gamma_j \\langle f'_j \\rangle \\rangle + \\langle x_i \\langle \\gamma_j \\rangle \\langle f'_j \\rangle \\rangle - \\langle \\langle x_i \\rangle \\langle \\gamma_j \\rangle \\langle f'_j \\rangle \\rangle \\\\ = \\quad \& \\langle x_i \\gamma_j f'_j \\rangle - \\langle x_i \\rangle \\langle \\gamma_j f'_j \\rangle - \\langle \\gamma_j \\rangle \\langle x_i f'_j \\rangle - \\langle x_i \\gamma_j \\rangle \\langle f'_j \\rangle + 2\\langle x_i \\rangle \\langle \\gamma_j \\rangle \\langle f'_j \\rangle \\end{aligned} \\
(10.12) 因此,单遍中心化更新(公式10.12)除了需要普通的(未中心化的)批量权重更新项\(\langle x_i \gamma_j f'_j \rangle\),以及单独的均值\(\langle x_i \rangle\)、\(\langle \gamma_j \rangle\)和\(\langle f'_j \rangle\)之外,还需要收集子乘积项\(\langle x_i \gamma_j \rangle\)、\(\langle x_i f'_j \rangle\)和\(\langle \gamma_j f'_j \rangle\)。由于涉及额外的计算,单遍批量更新未必比双遍方法更高效。但若并非所有因子都参与计算,该方法会大幅简化------例如,当神经元活动已经a priori (先验地)完成中心化,使得\(\langle x_i \rangle \approx 0\)时,情况就是这样。注意,此处展示的展开技术也可用于推导任意权重更新的精确单遍批量方法,只要该更新涉及需要从全部训练样本批量计算得到的量进行加(或减)操作。这类算法包括BCM学习4, 10和二元信息增益优化14。
10.4 实证结果
尽管活动值中心化长期以来就是反向传播领域的常用方法,且误差中心化的实证结果此前已有报道15,但斜率中心化是首次在本研究中提出。因此,目前尚难评估其普适适用性和实用价值;本文开展了一系列实验,旨在展示中心化对通过加速反向传播方法训练的前馈神经网络的收敛速度、收敛可靠性以及泛化性能的典型影响。
10.4.1 实验设置
基准设计
针对每个基准任务,我们开展了多项实验 ,对比了实施各类中心化方法与不实施中心化方法的vs. (对比)性能。每项实验包含100次运行,每次运行的初始权重不同,其余所有条件均相同。每次运行中,网络均初始化为服从标准差为0.3的零均值高斯分布的随机权重。所有实验的100次权重初始化均使用相同的随机数序列;该序列的种子是在基准设计最终确定后才选取的。
训练模式
为了尽可能直接评估中心化的效果,训练采用批量模式进行,以避免在线方法所需的额外自由参数(例如 平滑时间常数)。若未先验地完成中心化,则采用精确的双遍批量方法实现中心化。此外,我们总会在将误差反向传播至隐藏层之前,先更新网络的隐藏层到输出层权重。已知这种做法有时能改善收敛行为17,我们发现其在我们所需的大步长下可提升稳定性。
竞争性对照组
普通反向传播(即朴素梯度下降)算法存在诸多已知缺陷,学界已为其提出了大量加速技术。我们非正式地测试了其中多项技术,最终选出了能实现最快可靠收敛的技术组合。该组合------变学习率\(\eta\)(vario-\(\eta\)) 和Bold Driver算法 ------被用于本报告的所有实验中。因此,后续报道的中心化方法所具有的任何性能优势,都是在最先进的加速梯度方法之上额外实现的,作为对照。
变学习率\(\eta\)(vario-\(\eta\))23, 第48页
这项有趣的技术(第17章也有介绍)将每个权重的局部学习率设置为与其随机梯度标准差成反比。因此权重更新量为:
\\\Delta w_{ij} = \\frac{-\\eta g_{ij}}{\\varrho + \\sigma(g_{ij})} \\
其中\(g_{ij} \equiv \frac{\partial E}{\partial w_{ij}}\),\(\sigma(u) \equiv \sqrt{\langle u^2 \rangle - \langle u \rangle^2}\)(公式10.13),小的正常数\(\varrho\)用于防止除以接近零的数值。变学习率\(\eta\)(vario-\(\eta\))既可用于批量模式也可用于在线模式,效果十分显著:它不仅实现了梯度归一化,还能根据局部梯度信号的噪声水平自适应调整步长。本报告的所有实验均采用变学习率\(\eta\)(vario-\(\eta\)),其中\(\varrho = 0.1\)。在批量实现中,仅需确定一个自由参数:全局学习率\(\eta\)。
19.12 训练: 避免梯度消失
213
在此部分,我们讨论了避免梯度消失的问题。我们首先介绍了这个问题,然后讨论了一个简单的例子。
19.12.1 对称性破坏:问题
我们考虑一个简单的例子。
19.12.2 对称性破坏:问题
我们考虑一个简单的例子。
表10.1 在不含捷径连接的对称性检测任务中,对活动和/或误差信号进行中心化的效果。报告了达到收敛标准所需轮数的经验均值、标准差以及25/50/75分位数(保留三位有效数字)。同时展示了使用相同随机种子的运行结果的直接对比,因并列情况,每次对比的运行数之和可能小于100。
| 活动居中情况 (activities) | 误差信号未居中 (conventional) | 误差信号居中 (centered) | ||||
|---|---|---|---|---|---|---|
| 均值±标准差 (mean ± st.d.) | 直接对比(更快运行数/总运行数) | 收敛轮数四分位数 (25/50/75) | 均值±标准差 (mean ± st.d.) | 更快运行数 | 收敛轮数四分位数 (25/50/75) | |
| 未居中 (0/1) | 669 ± 308 | 0 / 100 | 453 / 580 / 852 | 97.5 ± 21.8 | 14 | 0 / 35 / --- |
| 居中 (-1, 1) | 93.1 ± 46.7 | 63 / 100 | 93 / --- / --- | 65.4 ± 15.9 | 57 | 67.5 / 79.5 / 94 |
我们未对该项做修改。我们推测这可能是中心化对反向传播误差 产生的有益效果,而活动值中心化不会产生该效果。最后,当活动值和误差信号均完成中心化时,收敛速度额外提升了50%(同时保持了较低的变异系数)。这可能是因为我们按照设计 (参见第10.3节)对隐藏层神经元活动进行的中心化只是近似处理。为评估这些效应的显著性,注意由于数据来自100次运行,报告的收敛平均时间的标准误是其报告标准差的\(1/\sqrt{100} = 1/10\)。
捷径连接与斜率中心化
在第二组实验中,我们保持活动值和误差信号均已中心化,分别考察了添加捷径连接和/或斜率中心化的单独效应与综合效应。注意,由于对称位模式的补集也是对称的,因此对称性检测任务完全没有线性分量,我们由此预期捷径连接在此处的收益极低。
实验结果
表10.2显示,仅添加捷径连接确实没有益处,事实上它在超过80%的情况下拖慢了收敛速度,还显著提升了变异系数。但随后添加斜率中心化后,学习速度提升了近3倍,同时将变异系数恢复到原来的约1.4水平。当两者同时使用时,斜率中心化与捷径连接从未延长收敛时间,平均而言还将收敛时间缩短了一半。相比之下,不结合捷径连接的斜率中心化约有1/3的概率完全无法收敛。考虑到给定任务没有线性分量,这一结果可能令人意外。但请考虑以下原因:
表10.2 对斜率进行居中处理及/或添加快捷路径对居中化活动信号与误差信号下的对称性检测任务的影响。结果呈现方式与表10.1一致。
| 快捷路径? | 常规方法均值±标准差 | 常规方法四分位数 | 直接对比(更快运行的次数) | 居中化方法均值±标准差 | 居中化方法四分位数 |
|---|---|---|---|---|---|
| 否 | 65.4 ± 15.9 | 57/62/70 | 81 - 0 | 51.6 ± 16.2 | 43/64.5/∞ |
| 61 - 4 | |||||
| 17 - 39 | |||||
| 99 - 95 | |||||
| 是 | 90.4 ± 31.1 | 69.5/80/102 | 0 - 100 | 33.1 ± 8.6 | 28/31/35 |
| 均值和标准差不包含未收敛的34次运行结果。 |
快捷路径的必要性
由于隐藏层单元的非线性传递函数具有单调性,其净输入与输出始终存在正向关联,因此总会携带一定的线性动量。在没有快捷路径的情况下,隐藏层单元必须自行调整,使它们的线性动量共同匹配任务的整体线性分量(本例中为0)。这一适应过程通常由误差的线性分量驱动,而斜率居中处理会移除该线性分量。剩余的非线性误差信号仍可推动隐藏层单元找到整体解,但这种间接过程必然不可靠:因为斜率居中处理实际上移除了误差面的斜率,会产生大量局部最小值。快捷路径权重通过对梯度缺失的(线性)分量进行建模,将这些局部最小值转化为全局最小值,从而使隐藏层单元无需承担该部分任务。总之,虽然未使用快捷路径、仅用斜率居中处理训练的网络也可能收敛到解,但添加快捷路径权重是必要的,可确保斜率居中处理不会对学习过程产生负面影响。反过来,斜率居中处理还能避免快捷路径沦为冗余的"干扰项",不仅无法辅助学习,反而会阻碍学习。因此这两种技术应当始终配合使用。
10.4.3 元音识别问题
我们在对称性检测任务中得到的居中化处理正向结果,立刻引出了两个进一步的问题:1)这些结果能否推广到更具挑战性、更贴近实际的问题中?2)学习速度的提升------正如经常出现的情况------是否以泛化能力的下降为代价?为解答上述问题,我们基于Deterding5的说话人独立元音识别数据集开展了进一步实验,该数据集是广受欢迎的基准数据集,在此数据集上取得良好的泛化性能难度较高。
任务说明
该网络的任务是在说话人独立的条件下,识别英式英语的11个稳态元音,输入为语音信号的10个谱特征(具体为线性预测编码(LPC)导出对数面积比)。数据集包含990个待分类样本:15位说话人每人说11个元音,每个元音6个样本。我们按照惯例将数据集划分为训练集和测试集:训练集包含前8位说话人(4男4女)的数据,测试集包含剩余7位(4男3女)的数据。注意本数据集未提供独立的验证集。
先前工作
Robinson13率先将Deterding的数据用作基准数据集,对比了多种神经网络架构在该数据集上的性能。有趣的是,他的所有方法都无法超越原始单近邻法(该方法的测试样本误分类率为44%),这给模式识别领域带来了挑战。按照上述任务设定训练时,常规反向传播网络的表现似乎达到了极限,错误率约为42%6,9,而自适应近邻技术可实现38%的错误率7。在第7章中,Flake报告了径向基函数(RBF)网络及其混合架构的相当优异的实验结果。若使用说话人性别身份信息19,20,或为每个元音单独训练模型8,可获得更优的性能。结合这两种方法后,测试集错误率已降至23%18,这是目前我们所知的最低水平。
训练与测试
我们训练了全连接前馈网络,该网络有10个输入单元、22个隐藏单元和11个逻辑输出单元,通过最小化交叉熵损失完成训练。对应正确元音的输出目标值为1,其余输出目标值均为0。活动居中处理是先验完成的:通过显式居中化输入(训练集和测试集分别处理),并对隐藏单元使用tanh非线性函数。未做居中处理的对照实验则使用原始输入数据和逻辑激活函数。我们的网络规模较小,因此所有实验均训练至2000轮次。每轮训练结束后,我们会通过测试集的误分类率衡量网络的泛化能力。测试采用最大似然法:对给定测试样本,网络输出值最高的类别即为该样本的分类结果。
初步结果
图10.1展示了我们在该基准数据集上开展的8项实验中,每一项的平均测试集误差(100次运行的平均值)随训练过程的演化情况。所有曲线的误差棒长度均不超过曲线上对应标记的大小,因此为简洁起见省略了误差棒。基于对称性检测任务的经验,我们始终配合使用快捷路径和斜率居中处理,而活动居中与误差居中处理则独立开展测试。可观察到以下效应:
图10.1 在元音识别任务中,分别采用活动居中处理(三角形标记)、误差居中处理(实心标记)、带快捷路径权重的斜率居中处理(实线)、或上述组合学习时,平均测试集误差的演化情况,\(vs.\) 未做居中处理的对照实验。实验编号对应表10.3中的a)-h)。
- 所有采用活动居中处理(三角形标记)的实验,在平均收敛速度和最低平均测试集误差两项指标上,均明显优于所有未采用该处理的实验(圆形标记)。
- 所有采用快捷路径和斜率居中处理(实线)的实验,表现均优于对应的未采用该处理的实验(虚线)。
- 除实验d这一个明显例外之外,误差居中处理(实心标记)显著加快了收敛速度,其在未采用活动居中的实验中效果最显著。
- 综合收敛速度和最低平均测试集误差两项指标,表现最好的实验是完全居中处理的实验e),表现最差的是完全采用常规方法的实验a)。得出的定性结论是:居中化处理可显著加快收敛速度,且不会对训练后网络的泛化能力产生负面影响。
量化效应
由于图10.1中的每条曲线实际是100条非线性曲线的叠加,因此并不适合定量分析:最低平均测试集误差的数值和位置无法告诉我们这类最小值在单次运行中的分布情况,甚至无法得知它们的平均值和位置。要获得此类定量结果,我们需要识别出每次运行中测试集误差的合适最小值。这样既可以对比不同实验中初始权重完全相同的运行结果,也可以通过聚合统计量(如均值、标准差、四分位数)描述每个实验内最小值的分布,同时涵盖最低测试集误差和达到该误差所需的时长。
最小值识别
我们会跟踪每次运行过程中测试集误差的变化,遇到新的最小值就将其记录下来。如果在某段时间内当前最优值没有被进一步优化,我们就将其作为该次运行的最小值用于定量分析。放弃进一步优化的合适等待时长是个棘手的问题,具体讨论可参见第2章。为公平对比更快和更慢的优化方法,等待时长应与达到该最小值所用的时长成正比:这样慢速运行相比快速运行有更充足的时间优化解。但该方法存在一个问题:如果测试集误差的最小值出现在训练最初几轮的初始瞬态阶段,等待时长就会过短,导致我们过早放弃。另一方面,等待时长也不能超过运行的总时长。因此我们在min(2000, 2ε + 100)轮后停止对单次运行的进一步优化搜索,其中ε记录的是网络在该次运行中首次达到当前最低测试集误差的轮次。本文报告的800次运行中,仅有9次达到了2000轮的上限,因此我们确信这一设置没有显著扭曲我们的结果。
将测试集用作验证集
注意,由于我们使用测试集来确定性能对比的节点,实际上已将测试集当作验证集使用。因此下文报告的最低测试集误差并非网络对未知说话人泛化能力的无偏估计,不应与该能力的正规测量值对比(正规测量要求测试集不得以任何方式影响训练过程)。但也不要忘记,最低测试集误差毕竟仍能以一致的方式衡量网络的泛化能力:尽管这些分数都会偏向特定的未知说话人集合(即测试集),但这绝不意味着它们之间的对比没有意义。
结果概览
表10.3汇总了用上述方法获得的元音识别问题的定量结果。为评估这些结果的显著性,请回想
表10.3. 元音识别任务的最小测试集错误率(误分类率,单位%),以及达到该错误率所需的轮次。除布局不同外,结果的报告方式与表10.1和表10.2一致。由于篇幅限制,仅直接对比部分实验组合。
| 实验 | 中心化 | 激活误差 | 斜率 | 快捷连接 | 最小测试集错误率(均值±标准差/四分位数) | 最小测试集错误率(直接对比:更优运行次数) | 所需轮次(均值±标准差/四分位数) | 所需轮次(直接对比:更快运行次数) |
|---|---|---|---|---|---|---|---|---|
| a) | 48.0 ± 3.6 45.7 / 47.3 / 50.0 | 67 31 | 554 ± 321 365 / 486 / 691 | 3 10 4 1 14 | ||||
| b) | ✓ | 49.1 ± 2.9 47.0 / 49.6 / 50.9 | 10 | 125 ± 82 67.5 / 104 / 163 | 97 51 | |||
| c) | ✓ | ✓ | 43.9 ± 2.5 42.3 / 43.9 / 46.0 | 82 51 | 156 ± 110 75 / 137 / 215 | 90 47 | ||
| d) | ✓ | ✓ | ✓ | 44.3 ± 2.3 42.9 / 44.2 / 45.9 | 89 49 46 65 84 | 158 ± 141 72 / 124 / 186 | 48 52 96 21 85 | |
| e) | ✓ | ✓ | ✓ | ✓ | 44.2 ± 2.5 42.3 / 44.4 / 46.3 | 70 49 47 68 | 72.4 ± 55.5 37.5 / 51.5 / 81 | 76 75 92 |
| f) | ✓ | ✓ | ✓ | 44.2 ± 2.8 42.3 / 44.4 / 46.1 | 51 68 | 113 ± 64 69.5 / 97.5 / 148 | 24 88 | |
| g) | ✓ | ✓ | ✓ | 46.8 ± 3.7 44.0 / 47.0 / 48.9 | 27 43 | 126 ± 139 64 / 94 / 138 | 22 84 | |
| h) | ✓ | 46.5 ± 3.1 44.5 / 46.8 / 48.5 | 56 31 29 30 61 | 270 ± 164 162 / 235 / 316 | 15 12 15 8 86 |
此处报告的各性能度量的均值的标准误,是其报告标准差的\(1/\sqrt{100} = 1/10\)。图10.2以累积直方图的形式,直观展示了相同数据(直接对比除外)的图形,分别对应最小测试集错误率和达到该错误率所需的轮次。结果总体印证了图10.1中观察到的趋势。完全中心化的实验e)的运行明显收敛最快,且测试集错误率处于最优水平。与常规配置a)相比,完全中心化平均收敛速度快了近8倍,且在80%的情况下泛化效果更优。
泛化性能
测试集上的平均误分类率在44%至49%之间,考虑到我们的网络规模相对较小,我们认为这是合理的结果。这些结果可分为三类:带激活中心化的网络。最后值得关注的是,无论是单独添加快捷连接和斜率中心化,还是将其添加到带激活和误差中心化的网络中,都能将收敛速度大致提升一倍------这与对称检测任务中观察到的效应量级一致。
图10.2. 元音识别任务的最小测试集错误率及达到该错误率所需轮次的累积直方图
10.5 讨论
前一节已经证明,中心化确实能提升神经网络的学习速度和泛化能力。原因何在?接下来我们将从三个(部分重叠)的角度给出解释,依次分析中心化对黑塞矩阵条件数、局部梯度噪声水平,以及网络不同部分间误差分配的影响。
调节黑塞矩阵条件数
众所周知,在二次误差曲面上进行一阶梯度下降的最短收敛时间,与黑塞矩阵的条件数成反比,即其最大特征值与最小特征值的比值。因此,加速梯度下降的常用策略是设法改善黑塞矩阵的条件数。对于带平方损失函数的单个线性节点\(y = \mathbf{w}^T \mathbf{x}\),其黑塞矩阵就是输入的协方差矩阵:\(\mathbf{H} = \langle \mathbf{x} \mathbf{x}^T \rangle\)。其最大特征值通常由\(\mathbf{x}\)的直流分量引起12。对输入进行中心化可消除该特征值,从而调节黑塞矩阵的条件数,允许使用更大的步长(参见第1章)。对于批量学习,误差中心化对局部权重更新的作用完全相同:
\\\Delta \\mathbf{w} \\propto \\langle \\langle \\delta - \\langle \\delta \\rangle \\rangle \\mathbf{x} \\rangle = \\langle \\delta \\mathbf{x} \\rangle - \\langle \\delta \\rangle \\langle \\mathbf{x} \\rangle = \\langle \\delta (\\mathbf{x} - \\langle \\mathbf{x} \\rangle) \\rangle \\
然而,误差中心化比激活中心化更进一步:它还会影响回传到前序节点的误差。此外,式10.14不适用于梯度噪声较大的在线学习。
噪声抑制
可以证明,中心化能够提升局部梯度的信噪比。为简化起见,省略斜率因子,考虑带噪声的权重更新:
\\\Delta w_{ij} \\propto (\\delta_j + \\phi)(x_i + \\xi) = \\delta_j x_i + \\xi \\delta_j + \\phi x_i + \\phi \\xi \\
其中\(\phi\)和\(\xi\)是噪声项,假设其均值为零,且与激活、误差相互独立,也彼此独立。在右侧的展开式中,第一项是期望的(无噪声)权重更新,其余项代表污染该更新的噪声。虽然最后一项(纯噪声)无法避免,但我们可以通过对\(\delta_j\)和\(x_i\)进行中心化,降低两个混合项的方差,从而分别最小化\(\langle \delta_j^2 \rangle\)和\(\langle x_i^2 \rangle\)。当然有人可能会反驳,这样做也会缩小信号\(\delta_j x_i\),从信噪比来看,我们非但没有改善,反而比以前更差。这切中了问题的核心:中心化基于这样一个前提------与非偏置、非快捷连接权重相关的误差信号就是 完全中心化的权重更新,因此\(\delta_j x_i\)中的任何直流分量也应被视为一种噪声。当然,这一假设成立的前提是,我们确实有偏置和快捷连接权重来处理中心化所移除的误差分量。
改进的误差分配
从拥有这些额外参数的网络角度来看,中心化是一种改进网络误差责任分配的方式:恒定误差被导入偏置权重,线性误差被导入快捷连接权重,而网络其余部分只需处理实际需要非线性的那部分误差信号。因此,中心化将隐藏单元视为一种稀缺资源,仅在必要时调用。鉴于非线性节点训练带来的计算复杂性,我们认为这是一个恰当且富有成效的观点。
未来工作
虽然本文报告的结果颇具前景,但仍需更多实验来评估中心化的通用性和有效性。对于前馈网络,我们希望探索将中心化应用于多层隐藏层、随机(在线)梯度下降,以及函数近似(而非分类)问题的效果。然而,中心化方法本身远比这更通用,因此未来我们预计它会应用于一系列更复杂的网络架构、学习算法和问题领域。
致谢
我要感谢本书的编辑,以及我的同事于尔根·施密德胡贝尔、马可·维林和拉法尔·萨卢斯托维奇,感谢他们的有益评论。本研究得到瑞士国家科学基金会的资助,资助号为2100-045700.95和2000-052678.97。
参考文献
- 1 安德森(J.)、罗森菲尔德(E.)(编):《神经计算:研究基础》。麻省理工学院出版社,剑桥(1988)
- 2 巴蒂蒂(R.):《加速反向传播学习:两种优化方法》。《复杂系统》第3期,331--342(1989)
- 3 巴蒂蒂(R.):《学习的一阶与二阶方法:最速下降法与牛顿法之间》。《神经计算》第4卷第2期,141--166(1992)
-
4\] 比南斯托克(E.)、库珀(L.)、蒙罗(P.):《神经元选择性发展理论:视觉皮层中的方位特异性和双眼相互作用》。《神经科学杂志》第2期(1982);重印于\[1
- 5 德特丁(D.H.):《自动语音识别的说话人归一化》。博士论文,剑桥大学(1989)
6 芬克, M., 米勒, K.-R.:利用随机网络模型估计后验概率。载于:莫泽, M.C., 斯莫伦斯基, P., 图雷茨基, D.S., 埃尔曼, J.L., 魏根德, A.S. (编) 《1993年连接主义模型暑期学校会议录》,科罗拉多州博尔德。劳伦斯·厄尔鲍姆联合出版社,希尔斯代尔(1994)
7 哈斯蒂, T.J., 蒂布希拉尼, R.J.:判别自适应最近邻分类。IEEE模式分析与机器智能汇刊 18(6),607--616(1996)
8 赫尔曼, M.:论神经图中地形的优势。载于:科霍宁, T. (编) 《自组织映射研讨会论文集》,页码112--117。赫尔辛基理工大学(1997)
9 霍赫赖特, S., 施密德胡贝尔, J.:通过局部编码提取特征。《神经计算》(1998)(待发表)
10 因特拉托, N.:利用无监督神经网络提取特征。《神经计算》4(1),98--107(1992)
11 拉佩德斯, A., 法伯, R.:用于内容可寻址存储器和模式识别的自优化非对称神经网络。《物理D》22,247--259(1986)
12 杨立昆, Y., 坎特, I., 索拉, S.A.:协方差矩阵的特征值:在神经网络学习中的应用。《物理评论快报》66(18),2396--2399(1991)
13 罗宾逊, A.J.:《动态误差传播网络》。剑桥大学博士论文(1989)
14 施劳多夫, N.N., 塞杰诺夫斯基, T.J.:通过优化二元信息增益实现聚类数据的无监督区分。载于:汉森, S.J., 考恩, J.D., 贾尔斯, C.L. (编) 《神经信息处理系统进展》,第5卷,页码499--506。摩根·考夫曼出版社,圣马特奥(1993)
15 施劳多夫, N.N., 塞杰诺夫斯基, T.J.:调节反向传播网络:并非所有权重都生来平等。载于:图雷茨基, D.S., 莫泽, M.C., 哈塞尔莫, M.E. (编) 《神经信息处理系统进展》,第8卷,页码563--569。MIT出版社,剑桥(1996)
16 塞杰诺夫斯基, T.J.:利用非线性相互作用神经元存储协方差。《数学生物学杂志》4,303--321(1977)
17 沙阿, S., 帕尔米耶里, F., 达特姆, M.:前馈神经网络快速学习的最优滤波算法。《神经网络》5,779--787(1992)
18 特南鲍姆, J.B., 弗里曼, W.T.:分离风格与内容。载于:莫泽, M.C., 乔丹, M.I., 佩施, T. (编) 《神经信息处理系统进展》,第9卷,页码662--668。MIT出版社,剑桥(1997)
19 特尼, P.D.:利用上下文进行分类学习。载于:布拉兹迪尔, P.B. (编) ECML 1993。计算机科学讲义,第667卷,页码402--407。施普林格出版社,海德堡(1993)
20 特尼, P.D.:利用上下文敏感特征实现鲁棒分类。载于:《第六届工业与工程人工智能及专家系统国际会议论文集》,页码268--276(1993)
21 福格尔, T.P., 曼吉斯, J.K., 里格勒, A.K., 津克, W.T., 阿尔孔, D.L.:加速反向传播方法的收敛。《生物控制论》59,247--259(1988)
22 威德罗, B., 麦库尔, J.M., 拉里莫尔, M.G., 小约翰逊, C.R.:LMS自适应滤波器的平稳与非平稳学习特性。《IEEE汇刊》64(8),1151--1162(1976)
23 齐默尔曼, H.G.:作为决策规则的神经网络。载于:雷库格勒, H., 齐默尔曼, H.G. (编) 《经济学中的神经网络:基础与金融应用》,页码1--87。瓦伦出版社,慕尼黑(1994)
11 避免反向传播导数中的舍入误差*
托尼·普拉特
惠灵顿维多利亚大学数学与计算科学学院,新西兰惠灵顿
http://www.mcs.vuw.ac.nz/~tap/
摘要. 反向传播网络中一个重要的舍入误差来源,是单元输出对其总输入的导数的计算。该舍入误差可能导致导数出现较高的相对误差,尤其当导数实际很小但不为零时,会被计算为零。仅需一个简单的编程技巧即可轻松避免这种舍入误差,该技巧仅产生极小的内存开销(每个单元额外增加一至两个浮点数)和可忽略的计算开销。
11.1 引言
反向传播导数是训练多层网络的核心环节。这些导数的精度对许多训练方法至关重要,尤其是那些使用二阶信息的方法,例如共轭梯度法。反向传播误差导数的标准公式(如Ripley3、Bishop1以及Rumelhart、Hinton和Williams4所给出的)在浮点运算中的计算方式可能导致显著的舍入误差,尤其是微小导数会被舍入为零。这些误差可能导致二阶方法失效(因梯度不准确),还可能导致权重搜索终止或速度极慢,因为部分导数实际很小但不为零,却被计算为零。本章将说明如何以简单且低成本的方式规避这一特定舍入误差来源。该方法适用于逻辑单元与双曲正切单元,以及平方和误差函数与交叉熵误差函数。在本章中,"="符号用于表示数学相等,"\(\leftarrow\)"符号用于表示对某个浮点变量的赋值。
- 浮点值以星号标注;例如\(x^*_i\)是\(x_i\)的浮点版本。
11.2 逻辑单元中的舍入误差
考虑一个非输入单元,其输出\(y_i\)由总输入\(x_i\)的逻辑函数计算得出:
\y_i = \\frac{1}{1 + \\exp(-x_i)\^\*} \\
当\(x_i^* \to \infty\)时\(y_i^* \to 1\),当\(x_i^* \to -\infty\)时\(y_i^* \to 0\)。在训练的反向传播阶段,我们需要计算误差对总输入的偏导数,这一过程通过链式法则实现:
\\\frac{\\partial E}{\\partial x_i} = \\frac{\\partial E}{\\partial y_i} \\cdot \\frac{\\partial y_i}{\\partial x_i} \\
计算\(\frac{\partial y_i}{\partial x_i}\)的标准方法是使用与其\(y_i^*\)相关的公式,对于逻辑函数而言该公式为:
\\\frac{\\partial y_i}{\\partial x_i} = y_i\^\* (1 - y_i\^\*) \\
该计算是舍入误差的潜在来源:如果\(y_i^*\)的实际值非常接近1,以至于\(y_i^*\)被舍入为精确的1,那么\(y_i^*(1 - y_i^*)\)将等于零。图11.1展示了用单精度和双精度浮点运算计算的该表达式的值。在单精度下,当\(x_i\)大于约17.33时,\(y_i^*(1 - y_i^*)\)的计算结果为零;对于略低于17.33的\(x_i\)值,存在显著的量化误差。在双精度下,当\(x_i\)大于约36.74时,\(y_i^*(1 - y_i^*)\)的计算结果为零。
图11.1 利用公式\(y^*(1 - y^*)\)(其中\(y_i^* = 1/(1 + \exp(-x_i))\))计算逻辑单元导数\(\frac{\partial y_i}{\partial x_i}\)的量化结果,舍入误差导致每个图表右侧出现量化现象。注意在图11.1中,仅当\(x\)为正时,才会出现由\(1 - y^*\)计算引发的舍入误差;对于负的\(x\),\(y^*\)趋近于0且表示准确,\(1 - y^*\)的相对舍入误差可忽略。这为如何避免正\(x\)情况下的舍入误差提供了线索:无需计算\(1 - y^*\)。
31.1.2 非平方误差计算
回忆一下,在计算这些误差估计的语境下,该量是计算这些误差估计的超参数。它可以表示为目标数量的函数(例如参见Gao等,2005)。然而,目前尚不清楚需要多少目标才能获得给定的误差估计。
11.2.2 单输出交叉熵计算
给定宽联想记忆中的单个输出节点,输入的线性组合会得到一个标量输出。对于逻辑神经元,输出可通过如下算法计算:
t = 0 或 1,其中t的取值为0或1,正确答案的取值也为1或0。
前向传播过程如下:
\F(x) = \\frac{1}{1 + \\exp(-(x - b))} \\
其中\(F(x)\)是当输入\(x\)为标量时,输出为1的概率对应的函数。
单个神经元的输出由如下公式给出:
\F(x) = \\frac{1}{1 + \\exp(-x)} \\
该函数将输入\(x\)映射为对应的输出\(F(x)\)。
11.3.5 用逻辑函数避免零激活的其他方法
定理2(逻辑激活函数)
设\(\theta\)为逻辑激活函数,则有如下结论:
- (a) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (b) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (c) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (d) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (e) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (f) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (g) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (h) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (i) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (j) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (k) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (l) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (m) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (n) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (o) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (p) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (q) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (r) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (s) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (t) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (u) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (v) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (w) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (x) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (y) 若\(\theta\)为逻辑激活函数,则如下结论成立:
- (z) 若\(\theta\)为逻辑激活函数,则如下结论成立:
11.3 软件与交叉熵计算
若需确保结果的准确性,最佳方式是使用浮点运算。这是计算对数似然比的标准方法。对数似然比是数据集分析中非常重要的指标,用于判断假设为真或为假的概率,并使它们的总和为1。
假设输出单元的编号为1到\(k\),softmax函数与交叉熵(针对单个样本)的计算公式如下:
\y_i = \\frac{\\exp(x_i)}{\\sum_{j=1}\^{k} \\exp(x_j)} \\
\E = \\sum_{j=1}\^{k} t_j \\log y_j \\
误差关于\(x\)的导数形式非常简单:
\\\frac{\\partial E}{\\partial x_i} = y_i - t_i \\
当\(t_i\)恰好为1且\(y_i\)接近1时,该公式会因舍入产生较高的相对误差。这种情况在神经网络训练中十分常见,会导致实际仅是很小的导数被计算为0。
该舍入误差,以及\(y_i\)计算过程中可能出现的溢出问题,可通过如下计算方法避免:该方法会额外使用浮点变量存储\(z_i = 1 - y_i\)和\(x_i' = x_i - \max_j x_j\)的值:
\\\begin{gathered} m\^\* \\leftarrow \\max_j x_j\^\* \\quad z_i\^\* \\leftarrow \\begin{cases} 1 - y_i\^\* \& \\text{if } y_i\^\* \\leq 0.5 \\\\ \\frac{1}{Q\^\*} \\sum_{j \\neq i} \\exp(x_j'\^\*) \& \\text{if } y_i\^\* \> 0.5 \\end{cases} \\\\ x_i'\^\* \\leftarrow x_i\^\* - m\^\* \\\\ Q\^\* \\leftarrow \\sum_j \\exp(x_j'\^\*) \\quad \\left(\\frac{\\partial E}{\\partial x_i}\\right)\^\* \\leftarrow \\begin{cases} y_i\^\* - t_i\^\* \& \\text{if } y_i\^\* \\leq 0.5 \\\\ (1 - t_i\^\*) - z_i\^\* \& \\text{if } y_i\^\* \> 0.5 \\end{cases} \\\\ y_i\^\* \\leftarrow \\frac{1}{Q\^\*} \\exp(x_i'\^\*) \\quad E\^\* \\leftarrow \\sum_j \\begin{cases} t_j\^\* \\log(y_j\^\*) \& \\text{if } y_i\^\* \\leq 0.5 \\\\ t_j\^\* \\log(1 - z_j\^\*) \& \\text{if } y_i\^\* \> 0.5 \\end{cases} \\end{gathered} \\
该方法的空间开销很低:每个输出单元最多仅需额外2个浮点变量,具体数量取决于实现方式。时间开销同样很低。唯一耗时较多的额外计算是\(z_i^*\)的第二种取值方式,由于不可能存在多个\(y_i\)大于0.5的情况,因此该计算最多仅需针对1个\(i\)执行。
11.4 Tanh单元的舍入误差
上述方法同样适用于tanh单元的导数计算,tanh单元的计算公式如下:
\y_i = \\frac{1 - \\exp(-2x_i)}{1 + \\exp(-2x_i)} \\
\\\frac{\\partial y_i}{\\partial x_i} = (1 - y_i)(1 + y_i) \\
对于tanh单元,输出\(y_i\)的取值范围为-1到1。因此,为了在极端取值情况下准确表示输出,需要额外2个浮点数来存储\(z_i = 1 - y_i\)和\(u_i = 1 + y_i\)的值。
那么在浮点运算下计算如下表达式可避免不必要的舍入误差:
\\\begin{aligned} v_i\^\* \&\\leftarrow \\exp(-2x_i\^\*) \& y_i\^\* \&\\leftarrow u_i\^\* - 1 \\\\ \\nu_i\^\* \&\\leftarrow \\frac{2}{1 + v_i\^\*} \& \\left(\\frac{\\partial y_i}{\\partial x_i}\\right)\^\* \&\\leftarrow z_i\^\* u_i\^\* \\\\ \\nu_i\^\* \&\\leftarrow v_i\^\* u_i\^\* \\end{aligned} \\
tanh函数很少在输出单元中使用,但若有需要,也可以轻松推导出当目标值恒为1或-1时,用于准确计算误差和导数的公式。
11.5 为何要这么做?
由于受舍入误差影响的导数数值极小,因此准确计算这些导数的提议可能会引发"为何要费这种功夫?"的疑问。对于在线学习方法(随机梯度法),该举措可能并无意义,因为将微小的梯度计算到很高精度不太可能带来任何差别。
然而,对于采用共轭梯度等二阶方法以批量模式训练的神经网络,微小导数可能非常重要,原因如下:
- 误差或导数的量化可能会干扰线搜索程序,因此避免量化是有益的。
- 大量微小导数累加起来可能会产生较大影响。
- 计算微小但非零的导数可使训练方法持续进行,而非因导数为零而停止。
- 部分训练方法即便仅靠微小导数也能取得显著进展,因此权重有可能移出误差函数的平坦区域。
- 事实上,几乎没有理由不准确计算这些数值,因为额外的存储和计算开销可以忽略不计。
参考文献
- 1 克里斯托弗·毕晓普:《模式识别的神经网络》。牛津大学出版社(1995)
- 2 斯科特·E·法尔曼:反向传播的快速学习变体:一项实证研究。载于:多伊·图雷茨基、杰弗里·辛顿、特伦斯·塞诺夫斯基(编)《1988年连接主义模型暑期学校论文集》,第38-51页。摩根·考夫曼出版社,圣马特奥(1989)
- 3 布赖恩·D·里普利:《模式识别与神经网络》。剑桥大学出版社(1995)
- 4 戴维·E·鲁梅尔哈特、杰弗里·E·辛顿、罗纳德·J·威廉斯:通过误差传播学习内部表征。载于:《并行分布式处理:认知微观结构的探索》,第1卷,第318--362页。麻省理工学院出版社,剑桥(1986)
在神经网络训练中表示和引入先验知识*
前言
本节重点介绍针对学习过程中四个重要方面的技巧:(1) 引入先验知识,(2) 学习任务的表征选择,(3) 类别先验分布不均衡,以及(4) 大型网络训练。
帕特里斯·西马尔等人回顾了著名的切线距离和切线传播算法。其中包含一些可提升算法速度与稳定性的技巧,这些技巧在此前的工作中尚未发表。
他们的方法想要取得良好性能,一个关键技巧是对输入数据进行平滑处理(见第249页),该技巧以二维手写字符识别图像为例进行了说明。为了得到切线,我们需要计算导数,但离散图像显然无法直接计算导数。要计算切线向量,必须能够对图像的像素值(或图像特征)进行插值。由于可实现多种插值方式,因此采用了"平滑"正则化项,其额外优势是可以对变换不变性的局部性进行一定程度的控制。但需注意避免过度平滑(否则有用的特征会被抹去)。
另一个技巧是使用所谓的弹性切线距离(见第249页),该距离可消除两种情况下出现的奇异系统问题:一是两个模式之间的距离为零,二是它们的切线向量相互平行。最后,通过精细的分辨率和精度层级设计(见第251页),切线距离算法的运行速度相比直接实现方式可提升两到三个数量级。
Tangentprop(切线传播算法)将不变性理念进一步推进,它支持将局部或全局不变性及先验知识直接引入反向传播的损失函数中,并能够高效地反向传播切线(见第259页)。本章最后还穿插介绍了该算法的数学背景(李群),以及由这一非常成功(破纪录的光学字符识别)算法的理论衍生出的简化推导。
在下一章中,拉里·耶格等人将针对商业价值极高的在线手写字符识别应用,介绍一整套相关技巧。这些技巧被作者用于开发苹果电脑Newton MessagePad®和eMate®产品中的手写识别器。该识别器由三个核心组件构成:分割器、分类器,以及上下文驱动的搜索组件。其中特别值得关注的是作为分类器输入的精细笔画信息表征(见第274页)。
先验知识促使作者纳入特定的笔画*
此前发表于:奥尔G.B.、Müller K.-R.(编):LNCS 1524,ISBN 978-3-540-65311-0(1998)。
G. 蒙塔永等人(编):《神经网络:实战技巧》第2版,LNCS 7700,第231-233页,2012年。© 斯普林格- Verlag柏林海德堡2012年
- 特征、灰度字符图像以及粗略字符属性(笔画数和字符长宽比),所有这些都被整合为集成网络。集成决策随后通过算法搜索,在覆盖范围广、应用程度弱的语言模型所包含的词典及词典组合的假设空间中进行整合。
- 文中还讨论了大量用于训练网络的技巧。
- 规范化输出误差: 辅助使次要选项的输出激活值非零(NormOutErr )。这提升了后续集成搜索过程的鲁棒性,因为搜索过程现在还能考虑排名前\(n\)的选项(第276页)。
- 负向训练: 降低无效字符分割的影响(第278页)。
- 笔画扭曲: 生成随机扭曲的图案版本,以提升模型的泛化能力(第279页)。
- 频率平衡: 通过重复低频率类别的简单技巧来降低类别先验不均衡的问题,以此强制网络为这些案例分配更多资源(第280页)。
- 误差强化: 通过更频繁地呈现困难或罕见图案,来适配不同且不常见的书写风格(第281页)。
- 量化权重: 使神经网络分类器能够仅用单字节权重运行,训练时使用额外的临时双字节(第282页)。
在第14章中,Steve Lawrence等人讨论了几种不同的技巧,用于缓解类别先验概率不均衡的问题,同时还提供了一些理论解释。
第一种技巧是先验缩放 (第296页),对权重更新进行缩放,使得每个类别的总预期更新量相等。
第二种技巧是概率采样 (第298页),对第13章中的频率平衡方法做了小幅修改。该方法的操作流程是:首先选择一个类别,然后从该类别中抽取一个样本。
接下来的技巧称为后缩放 (第298页):网络按照常规方式训练,但在训练完成后对网络输出进行重新缩放。该方法还可以用于优化与网络训练所用损失函数不同的其他标准。
最后作者提出了均衡类别成员 (第299页)的方法:通过对高频类别进行子采样,或复制低频类别的图案来实现(不过作者报告称该技巧的效率最低)。
作者针对心电图分类问题检验并对比了上述每种技巧的效果。
包含数千个类别、数百万个样本的训练问题(这类问题在语音和手写字符识别任务中十分常见)构成了重大挑战。
尽管目前讨论的诸多训练技术在小规模网络上表现良好,但在这些超大规模问题上表现可能极差。
在第15章中,Jürgen Fritsch和Michael Fincke针对这类大规模学习问题设计了表征与架构,和前两章一样,他们也处理了类别先验不均衡的问题(因为并非所有\(24k\)个亚音素都具有相同的出现概率)。
他们通过构建大词汇量语音识别器来例证自己的方法。
第一步他们通过分治策略(第313页)将任务分解为规模可控的较小决策问题层级,并用神经网络估计决策树每个节点的条件概率。
网络训练采用小批量数据(比典型深度学习模型的小批量更小),以及独立的自适应学习率:若权重空间出现进展则提升学习率,若权重空间波动过高则降低学习率\^9。
每个神经网络节点建模的这些估计概率会被整合,得到类别决策概率的总体估计。
作者可以手动确定决策树 结构,也可以通过提出的ACID聚类算法(第324页)对其进行估计。
有趣的是,手动设计的结构表现不及提出的凝聚式方案。
这表明先验知识有助于获得更好的分类结果\^10。
然而,这一惊人的结果表明,仅靠人类先验知识不足以完成如此庞大复杂的任务的结构设计。
此外,自动聚类允许对空间进行细粒度划分,以实现均匀性或时空局部性。
这一理想目标在早期工作中也通过手动构建分类层级得以实现\^14。
Jenny & Klaus
模式识别中的变换不变性------正切距离与正切传播*
Patrice Y. Simard¹、Yann A. LeCun¹、John S. Denker¹ 和 Bernard Victorri²
摘要
在模式识别、统计建模或回归任务中,数据量是影响性能的关键因素。如果数据量和算力无限充足,即使是简单算法也能收敛到最优解。但在实际场景中,由于数据及其他资源有限,要获得令人满意的性能,就需要采用复杂方法,通过引入先验知识 来对问题进行正则化。
输出相对于输入某些变换的不变性,就是这类先验知识 的典型例子。
本章中,我们将介绍正切向量的概念,它能够简洁地概括这些变换不变性的核心,以及两类利用这些不变性提升性能的算法,分别是"正切距离"和"正切传播"。
12.1 引言
模式识别是生物信息处理系统的主要任务之一,也是计算机科学领域的重大挑战。
模式识别问题的目标是将物体划分为不同类别:同一类别内的物体可能具有差异极大的特征,而不同类别的物体可能具有非常相似的特征。
一个典型例子是手写数字识别。
字符通常被表示为固定尺寸的图像(例如16×16像素),需要使用分类函数 将其划分到10个类别中的一个。
构建这样的分类函数是一项重大的技术挑战:需要消除同一类别内物体之间的无关差异,同时识别出不同类别物体之间的有效差异。
大多数实际模式识别任务的分类函数过于复杂,仅依靠人类对该任务的了解很难"手动"合成。
相反,我们会使用复杂的技术,将人类的先验知识 与从一组带标签样本(即训练集)中自动提取的信息相结合。
根据所需参数数量的不同,这些技术可分为两类:一类是"基于记忆"的算法,这类算法实际上会存储全部训练集中相当大一部分样本;另一类是"学习函数"技术,这类技术通过调整数量相对较少的参数完成学习。
这种区分是人为的,因为基于记忆的算法存储的图案可以被视作非常复杂的学习函数的参数。
但这一区分在本章中很有用:基于记忆的算法通常依赖可通过修改来纳入变换不变性的度量方式;而学习函数算法则包含选择一个分类函数,可对该函数的导数施加约束,使其反映相同的变换不变性。
这两种纳入不变性的方法差异足够大,因此值得分成两个独立的小节讨论。
12.1.1 基于记忆的算法
为了计算分类函数,许多实用的模式识别系统和部分生物模型会直接将所有样本及其标签存储在内存中。
随后,每个输入图案会与所有存储的原型进行比较,与输入匹配度最高的原型对应的标签将作为输出结果。
上述方法就是基于记忆模型最简单的例子。
基于记忆的模型需要三个要素:一是用于比较输入与原型的距离度量,二是通过整合原型标签生成输出的输出函数,三是构建原型集的存储方案。
这三个方面在已有文献中已被充分讨论。
输出函数的形式多样:从简单地对与输入最接近的k个原型对应的标签进行投票(K近邻算法),到使用固定21或学习得到5的系数,计算每个类别的得分(得分为到所有原型的距离的线性组合)。
存储方案也多种多样:从存储整个训练集,到挑选其中合适的子集(综述见8第6章),再到学习向量量化(LVQ)17和梯度下降等学习函数方案。
如果图案和原型以向量形式表示,距离度量可以简单到欧氏距离,也可以像广义二次度量10或弹性匹配方法15那样复杂。
图12.1 根据欧氏距离,待分类图案与原型B更相似;而更优的距离度量会发现原型A更接近,因为两者的差异主要来自旋转和粗细变换,这两类变换不应影响分类结果。
一种简单但低效的模式识别方法是使用简单的距离度量,例如表示原始输入的向量之间的欧氏距离,再配合非常庞大的原型集。这种方法效率很低,因为几乎某个类别的所有可能实例都必须出现在原型集中。在手写数字识别场景中,这意味着必须存储每个类别的所有可能位置、尺寸、角度、书写风格、线条粗细、倾斜度等情况的数字。在实际情况中,这种方法会导致原型集过大不切实际,或者如图12.1所示,识别准确率平庸。
对于一张粗体倾斜的未标注"9"图像,需要从分别代表细体正立"9"和粗体倾斜"4"的两张原型图像中找出最接近的原型来完成分类。按照欧氏距离(像素间差值的平方和)计算,"4"更接近,最终导致分类错误。
解决这个问题的经典方法是使用所谓的特征提取器,其作用是计算模式的一种表示,这种表示不会受到不改变模式类别的变换的影响。在字符识别任务中,这种表示应对位置、尺寸变化、轻微旋转、畸变或线条粗细变化保持不变。特征提取器的设计与实现是构建模式识别系统的主要瓶颈。例如,可以通过对图像进行去倾斜和细化操作来解决图12.1所示的问题。
另一种替代方案是使用不变距离度量,这种度量的构造方式使得原型与模式之间的距离不会受到模式或原型的不相关变换的影响。使用不变距离度量时,每个原型可以匹配模式的多种可能实例,从而大幅减少所需的原型数量。实现这一目标的自然方法是使用"可变形"原型。在匹配过程中,每个原型都会被变形,以尽可能适配输入的模式。拟合质量(可以结合变形程度的度量)会被用作距离度量15。以图12.1的示例为例,"9"原型会被旋转并加粗,以尽可能匹配输入的"9"。
这种方法有两个缺点。第一,必须基于先验知识设计允许的变形集合。幸运地是,包括字符识别在内的许多任务都可以实现这一点。第二,寻找最佳匹配变形的过程通常计算成本极高,且结果往往不可靠。
考虑可以用向量表示的模式场景。例如,16×16像素的字符图像的像素值可被视为256维向量的分量。一个模式或一个原型就是这个256维空间中的一个点。假设允许的变换集合是连续的,那么通过使用单个或组合允许的变换对单个原型进行变换得到的所有模式的集合,就是256维像素空间中的一个曲面。更准确地说,当模式P根据依赖于单个参数α(例如旋转角度)的变换s(P, α)进行变换(如旋转)时,所有变换后模式的集合是输入向量空间中的一条一维曲线。在本章后续内容中,我们始终假设所选的s关于P和α均可导,且满足S(P, 0) = P。当变换集合由n个参数α_i(如旋转、平移、缩放等)参数化时,流形S_P的固有维度最多为n。例如,如果字符图像的允许变换包括水平/垂直平移、旋转和缩放,那么该曲面将是一个4维流形。
一般来说,该流形不是线性的。即使简单的图像平移,在高维像素空间中对应的也是高度非线性的变换。例如,如果将"8"的图像向上平移,部分像素会从白色变为黑色再变回白色,反复多次。将可变形原型与输入模式进行匹配,现在等同于在曲面上找到距离表示输入模式的点最近的点。这种非线性使得匹配过程的计算成本高得多,且结果不可靠。可以使用梯度下降(或共轭梯度)这类简单的极小化方法来寻找最小距离点;然而,这些方法仅能收敛到局部极小值。此外,对每个原型都运行这类迭代过程通常成本过高,难以承受。如果变换集合在像素空间中恰好是线性的,那么该流形就是线性子空间(超平面)。因此匹配过程就简化为寻找点(向量)与超平面之间的最短距离,这是一个容易求解的二次极小化问题。这一特殊情况已在统计文献中被研究,有时被称为普洛克鲁斯特分析24。它已被应用于签名验证1和在线字符识别2。
本章考虑更一般的非线性变换情况,例如灰度图像的几何变换。请记住,即使简单的图像平移,在高维像素空间中对应的也是高度非线性的变换。本章的核心思想是用模式在其所在点的切平面来近似模式所有可能变换构成的曲面,从而将匹配问题简化为寻找两个平面之间的最短距离。这个距离被称为切向距离。该近似的结果如图12.2所示。
以手写数字旋转的场景为例,图的上方是像素空间中的理论曲线,它表示方程S(P, α) - P,以及该曲线的线性近似。曲线下方展示了不同旋转角度下的变换曲线上的点,每个角度对应一个α值。图12.2的底部展示了s在α=0处的泰勒展开给出的曲线s(P, α)的线性近似:
\s(P, \\alpha) = s(P, 0) + \\dot{\\alpha} \\frac{\\partial S(P, \\alpha)}{\\partial \\alpha_i}\\bigg\|_{\\alpha=0} + O(\\alpha\^2) \\approx P + \\alpha T \\tag{12.2} \\
这一线性近似完全由点P和切向量
\T = \\frac{d S(P, \\alpha)}{d \\alpha}\\bigg\|_{\\alpha=0} \\
确定。切向量也被称为变换s的李导数,相关内容将在12.4节介绍。
像素空间
图12.2 上方:旋转在像素空间中的效果示意图。中间:原始数字"2"的数字化图像在不同α值下的小角度旋转结果。底部:对同一原始数字化图像P,沿着变换曲线的切线方向移动,加入不同量(α)的切向量T后得到的图像。从图12.2可以看出,在角度足够小(||α|| < 1)时,近似的效果非常好。
图12.3展示了欧氏距离、完整不变距离(流形之间的最小距离)和切向距离之间的差异。图中,原型和模式都是可变形(双侧距离),但出于简化或效率考虑,也可以仅变形原型或仅变形未知模式(单侧距离)。尽管后续内容我们将重点介绍使用切向距离识别图像的方法,但该方法可以应用于多种不同类型的信号:时序信号、语音、传感器数据等。
13.2 学习器函数算法
大致来说,通过更长路径的方法,测试集也可用于诱导一定的交互,即获取一组参数。这是因为当神经网络在测试数据上运行时,其在训练集上的训练误差率较低,测试数据上的误差也较低。理解这一现象非常重要,该现象常被称为测试集幻觉。出现这种现象的原因是,测试集用于评估模型,而训练集用于训练模型。
图12.4. 列出给定的树的根。
解决一个优质问题(例如:G是包含n个节点的集合,在树中找到通向特定节点的路径难度较高)。我们需要设计一个优质问题(例如:G是包含n个节点的集合,在树中找到通向特定节点的路径难度较高)。本文其余部分将讨论该问题的结构和复杂度。
可以通过调节旋钮来控制各正则化项的作用强度。例如,可以通过添加"权重衰减"作为正则化项来控制神经网络的容量。权重衰减是一种启发式策略,偏向于选择平滑的分类函数,通过降低\(||w||^2\)来实现这一目标,通常会以训练集误差略微升高为代价。由于最优分类函数不一定是平滑的(例如在决策边界处),因此权重衰减这一正则化项可能产生负面效果。
如前所述,正则化项应当反映待学习函数的有用属性(先验知识)。如果假设函数\(F\)和\(G_w\)可导(这通常是成立的),那么要求\(G_w\)在点集\(\{x_i\}\)处的导数值与\(F\)在相同点处的导数值大致相等(这就是正则化旋钮),可以大幅优化\(G_w\)的搜索过程(见图12.4右侧)。该结论可以推广到多维输入的情况。此时,我们可以要求\(F\)和\(G_w\)的导数在特定方向上相等,无需覆盖输入空间的所有方向。
这类约束在传统模式识别问题中可直接应用。通常我们能够获得先验知识:期望的函数会随输入的某些变换呈现特定变化规律。据此可以很自然地推导出拟合函数\(G_w\)在变换方向(此前称为切向量)上的方向导数约束。典型例子出现在模式识别场景中:已知期望的分类函数对输入的平移、旋转、缩放等变换具有不变性,换而言之,该分类函数在这些变换方向上的方向导数为零。这一点可参见图12.4。该图右侧展示了通过限制训练集外\(G_w\)的取值,附加约束如何帮助提升模型泛化能力。
对于每一种对分类函数有已知影响的变换,都可以添加正则化项,形式为从变换曲线计算得到切向量方向上\(G_w\)的方向导数约束(如图12.2所示)。下一节将详细分析如何在基于记忆的算法中使用基于切向量的距离。后续一节将讨论切向量在神经网络中的应用,即切向传播算法。最后一节将对比不同的切向量计算算法。
12.2 切向距离
欧氏距离通常不适用于衡量两个模式P和E的相似度,因为它对P和E的不相关变换十分敏感。而变换后距离\(\mathcal{D}(E, P)\)被定义为两个流形\(S_P\)和\(S_E\)之间的最小距离,因此对用于生成\(S_P\)和\(S_E\)的变换具有不变性(见图12.3)。遗憾的是,这类流形通常没有解析表达式,且计算距离的过程------
12.2.1 实现
本节将正式介绍切向距离的计算方法。设函数\(s\)根据参数\(\alpha\)将图像\(P\)变换为\(s(P, \alpha)\)。要求\(s\)关于\(\alpha\)和\(P\)可导,且满足\(s(P, 0) = P\)。例如,若\(P\)是一张二维图像,\(s(P, \alpha)\)可以代表将\(P\)旋转角度\(\alpha\)后的结果。如果我们关注所有保持距离不变的图像变换(即等距变换),\(s(P, \alpha)\)可以是对\(P\)先旋转\(\alpha_{\theta}\),再沿\(\alpha_{x}\)、\(\alpha_{y}\)方向平移后的结果。此时\(\alpha = (\alpha_{\theta}, \alpha_{x}, \alpha_{y})\)是维度为3的参数向量。一般情况下,\(\alpha = (\alpha_{1}, \ldots, \alpha_{m})\)的维度为\(m\)。
由于\(s\)可导,集合\(S_{P} = \{x \mid \exists \alpha \text{ for which } x = s(P, \alpha)\}\)是一个可微流形,可用超平面\(T_P\)对其进行一阶近似。该超平面是流形\(S_P\)在点\(P\)处的切平面,由矩阵\(L_P\)的列向量生成,其中\(L_{P} = \left. \frac{\partial s(P, \alpha)}{\partial \alpha} \right|{\alpha=0} = \left \\frac{\\partial s(P, \\alpha)}{\\partial \\alpha_{1}}, \\ldots, \\frac{\\partial s(P, \\alpha)}{\\partial \\alpha_{m}} \\right{\alpha=0}\),这些列向量均为该流形的切向量。若\(E\)和\(P\)是两个待比较的模式,可分别用各自的切平面\(T_E\)和\(T_P\)定义这两个模式之间的新距离\(D\)。
\(E\)和\(P\)之间的切向距离\(D(E, P)\)定义如下:
\D(E, P) = \\min_{x \\in T_E, y \\in T_P} \\\|x - y\\\|\^2. \\tag{12.4} \\
切平面\(T_E\)和\(T_P\)的方程为:
\E'(\\alpha_E) = E + L_E \\alpha_E \\tag{12.5} \\
\P'(\\alpha_P) = P + L_P \\alpha_P \\tag{12.6} \\
其中\(L_E\)和\(L_P\)是存放切向量的矩阵(见公式(12.3)),向量\(\alpha_E\)和\(\alpha_P\)是\(E'\)和\(P'\)在对应切平面上(以\(L_E\)和\(L_P\)为基)的坐标。注意,在线性方程(12.5)中,\(E'\)、\(E\)、\(L_E\)和\(\alpha_E\)分别代表向量和矩阵。
例如,若像素空间维度为5,且存在两个切向量,可将公式(12.5)改写为:
\\\begin{bmatrix} E'_1 \\\\ E'_2 \\\\ E'_3 \\\\ E'_4 \\\\ E'_5 \\end{bmatrix} = \\begin{bmatrix} E_1 \\\\ E_2 \\\\ E_3 \\\\ E_4 \\\\ E_5 \\end{bmatrix} + \\begin{bmatrix} L_{11} \& L_{12} \\\\ L_{21} \& L_{22} \\\\ L_{31} \& L_{32} \\\\ L_{41} \& L_{42} \\\\ L_{51} \& L_{52} \\end{bmatrix} \\begin{bmatrix} \\alpha_1 \\\\ \\alpha_2 \\end{bmatrix} \\tag{12.7} \\
\(L_E\)和\(L_P\)是模式的固有属性,因此在多数情况下可以预先计算并存储。计算切向距离的过程相当于求解一个线性最小二乘问题:
\D(E, P) = \\min_{\\alpha_E, \\alpha_P} \\\|E'(\\alpha_E) - P'(\\alpha_P)\\\|\^2 \\tag{12.8} \\
最优性条件是\(D(E, P)\)关于\(\alpha_P\)和\(\alpha_E\)的偏导数为零:
\\\frac{\\partial D(E, P)}{\\partial \\alpha_E} = 2(E'(\\alpha_E) - P'(\\alpha_P))\^\\top L_E = 0 \\tag{12.9} \\
\\\frac{\\partial D(E, P)}{\\partial \\alpha_P} = 2(P'(\\alpha_P) - E'(\\alpha_E))\^\\top L_P = 0. \\tag{12.10} \\
将\(E'\)和\(P'\)的表达式代入上式,可得到如下线性方程组,需对其求解\(\alpha_P\)和\(\alpha_E\):
\L_P\^\\top (E - P - L_P \\alpha_P + L_E \\alpha_E) = 0 \\tag{12.11} \\
\L_E\^\\top (E - P - L_P \\alpha_P + L_E \\alpha_E) = 0. \\tag{12.12} \\
该方程组的解为:
\(L_{PE} L_{EE}\^{-1} L_E\^\\top - L_P\^\\top)(E - P) = (L_{PE} L_{EE}\^{-1} L_{EP} - L_{PP})\\alpha_P \\tag{12.13} \\
\(L_{EP} L_{PP} L_P\^\\top - L_E\^\\top)(E - P) = (L_{EE} - L_{EP} L_{PP}\^{-1} L_{PE})\\alpha_E \\tag{12.14} \\
其中\(L_{EE} = L_E^\top L_E\),\(L_{PE} = L_P^\top L_E\),\(L_{EP} = L_E^\top L_P\),\(L_{PP} = L_P^\top L_P\)。\(L_{EE}\)和\(L_{PP}\)的LU分解可以预先计算。计算成本最高的部分
图12.5. Halvadori-200型设备的10条径向线与标准17型表盘框架之间的关系及距离。该距离为以点为单位测量的径向距离。该表盘为标准表盘,半径为36英寸,直径为15英寸,表盘直径为10英寸。
if (condVar > someVal) {console.log("xxx")}
美国邮政服务数据库:
该数据库包含来自美国信封的手写数字的16×16像素尺寸归一化图像。训练集和测试集分别有9709个和2007个样本。
NIST1数据库:
第二次实验是美国国家标准与技术研究院(NIST)于1992年春季组织的一项竞赛。竞赛的目标是在给定223,000个样本的训练集的前提下,对包含59,000个手写数字的测试集进行分类。
NIST2数据库:
第三次实验使用的是由NIST提供的训练和测试数据库组成的数据库(见上文)。NIST将数据分为了两个集合,遗憾的是这两个集合的分布不同。训练集(223,000个样本)比测试集(59,000个样本)更简单。在我们的实验中,我们将这两个集合按1:1的比例合并,构建了包含60,000个样本的训练集,以及各包含10,000个样本的测试集和验证集,所有集合具有相同的特征。对于这三个数据库,我们都尝试评估人类的表现,以此作为衡量数据库难度的基准。对于USPS数据库,我们组的两位成员完成了测试集的标注,二者的原始错误率均为2.5%。NIST1数据库的人类表现数据由美国国家标准与技术研究院提供。NIST2数据库的人类表现是通过复现结果等方式测得的,这类数据往往是技术应用成功的决定性因素。本章将讨论其中部分技术。
输入空间平滑:
这是利用切线距离获得良好性能的最重要因素。根据定义,切线向量是变换函数\(s(P, \alpha)\)关于\(\alpha\)的李导数。它们可以表示为:
因此,\(s\)关于\(\alpha\)可微(且性质良好)非常重要。尤其是从公式(12.15)可以明显看出,\(s(P, \varepsilon)\)需要在\(\varepsilon\)任意小的情况下计算。幸运的是,即使\(P\)只能取离散值,也很容易让\(s\)可微。技巧是将平滑插值函数\(C_{\sigma}\)作为\(P\)的预处理步骤,使得\(s(C_{\sigma}(P), \alpha)\)可微(关于\(C_{\sigma}(P)\)和\(\alpha\)可微,而非关于\(P\)可微)。例如,如果\(\bar{P}\)的输入空间是二值图像,\(C_{\sigma}(P)\)可以是\(P\)与标准差为\(\sigma\)的高斯函数的卷积。如果\(s(C_{\sigma}(P), \alpha)\)是\(\alpha\)像素的平移,那么\(s(C_{\sigma}(P), \alpha)\)的导数很容易计算,因为\(s(C_{\sigma}(P), \epsilon)\)可以通过平移高斯函数得到。该预处理步骤将在12.4节详细讨论。平滑因子\(\sigma\)控制不变性的局部范围。\(s\)定义的变换曲线越平滑,线性近似的有效范围就越长。通常来说,最佳平滑程度是不模糊特征的最大平滑程度。例如,在16×16像素图像的手写字符识别任务中,标准差为1像素的高斯函数取得了最佳效果。过度的平滑会导致混淆(例如数字"5"被误判为"6",因为其下半部分的环被平滑操作闭合),而平滑不足则无法充分利用不变性特性。如果可用的计算时间允许,最佳策略是先提取特征,再进行充分的平滑,最后在平滑后的特征上计算切线距离。
受控变形:
公式(12.8)给出的线性系统在\(E\)或\(P\)的部分切线向量平行时是奇异的。尽管当数据来自实值连续分布时(手写字符识别就是这种情况),这种情况发生的概率为零,但仍有可能某个模式在训练集和测试集中同时出现,从而导致除零错误。修复方法非常简单且巧妙。可以用以下公式替代公式(12.8):
该方程(如图12.7所示)的物理意义是:切平面\(T_E\)上的点\(E'(\alpha_E)\)通过劲度系数为\(k\)的弹簧与\(E\)相连,同时通过劲度系数为1的弹簧与切平面\(T_P\)上的点\(P'(\alpha_P)\)相连,且\(P'(\alpha_P)\)也通过劲度系数为\(k\)的弹簧与\(P\)相连。(三个弹簧的自然长度均为零。)新的切线距离是平衡时所有三个弹簧储存的总弹性势能。与标准切线距离相同,通过对公式(12.16)关于\(\alpha_E\)和\(\alpha_P\)求导即可轻松得到解。
图12.7. \(E\)和\(P\)之间的切线距离是连接\(P\)、\(P'\)、\(E'\)和\(E\)的三个弹簧各自储存的弹性能量。\(P'\)和\(E'\)可以沿切平面无摩擦移动。图中标注了各个弹簧的劲度系数。求导得到:
\ L_{P}\^{\\top}(E - P - L_{P}(1 + k)\\alpha_P + L_E \\alpha_E) = 0 \\\\ L_{E}\^{\\top}(E - P - L_{P} \\alpha_P + L_{E}(1 + k)\\alpha_E) = 0. \\
\ (L_{PE} L_{EE}\^{-1} L_{E}\^{\\top} - (1 + k) L_{P}\^{\\top})(E - P) = (L_{PE} L_{EE}\^{-1} L_{EP} - (1 + k)\^2 L_{PP}) \\alpha_P \\\\ (L_{EP} L_{PP}\^{-1} L_{P}\^{\\top} - (1 + k) L_{E}\^{\\top})(E - P) = ((1 + k)\^2 L_{EE} - L_{EP} L_{PP}\^{-1} L_{PE}) \\alpha_E \\
其中\(L_{EE} = L_{E}^{\top}L_E\),\(L_{PE} = L_{P}^{\top}L_E\),\(L_{EP} = L_{E}^{\top}L_P\)且\(L_{PP} = L_{P}^{\top}L_P\)。该系统与普通切线距离的复杂度相同,区别在于对于\(k \geq 0\)它始终有解,且数值稳定性更高。注意当\(k=0\)时,它等价于标准切线距离;而当\(k=\infty\)时,它等价于欧氏距离。当切线向量的数量大于或等于空间的维度时,这种方法也非常有用。标准切线距离很可能为零(当切空间相交时),但"弹簧"切线距离仍然能够表达关于不变性的有价值信息。如果输入空间的维度远大于切线向量的数量,那么保持\(k\)尽可能小是更好的选择,因为它不会干扰沿切平面的"滑动"(此时\(L'_E\)和\(P'\)受到的约束更小)。
22.999 概率和期望值图
中心是固定的。这是一个高维数据的二值符号。这里有一些不同的解释。例如,如果我们有一个样本,我们可以尝试从该样本中得出与真实值相关的结论。概率是衡量在给定数据集中找到特定结果的概率。因此,如果我们的数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的。概率是衡量在给定数据集中找到特定结果的概率。因此,如果我们的数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的。概率是衡量在给定数据集中找到特定结果的概率。因此,如果我们的数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的。概率是衡量在给定数据集中找到特定结果的概率。因此,如果我们的数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的。概率是衡量在给定数据集中找到特定结果的概率。因此,如果我们的数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的。概率是衡量在给定数据集中找到特定结果的概率。因此,如果我们的数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的。概率是衡量在给定数据集中找到特定结果的概率。因此,如果我们的数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的,那么,如果数据是真实的。
表12.9 概率反向传播示例总结
| φ | p | T | V | W of | p of | p of | 概率 | of | 均值 | 标准差 | 偏差 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| | 0 | 2 | 2 | 0 | 0 | 1 | 1.00 | 0.00 | 0.00 | |
| 2 | 0 | 1 | 6 | 37 | 10 | 1 | 1.00 | 0.00 | 0.00 | |
| 3 | 1 | 1 | 2 | 4 | 4 | 1.5 | 1.00 | 0.00 | 0.00 | |
| 4 | 0 | 0 | 3 | 4 | 2 | 5 | 1.00 | 0.00 | 0.00 | |
| 5 | 2 | 0 | 10 | 4 | 0 | 5 | 1.00 | 0.00 | 0.00 | |
| 6 | 3 | 1 | 2 | 2 | 5 | 0 | 1.00 | 0.00 | 0.00 | |
| 7 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | |
12.3 切线传播
前一节讨论了自切线。损失函数的二阶导数是损失函数的切线。本节将介绍如何计算损失函数关于参数的梯度。损失函数关于参数的梯度是损失函数关于各参数梯度的总和。损失函数关于各参数的梯度之和即为损失函数关于参数的梯度总和。
式中\(F(x)\)表示点\(x\)的"正确"或"期望"标注。在现实场景中,我们仅能通过从分布\(\bar{P}\)中抽取的有限训练点集\(B\)来估计该积分。也就是说,我们试图最小化如下损失:
\E_P = \\sum_{i=1}\^N \\\|G\^w(x_i) - F(x_i)\\\| \\
其中求和遍历整个训练集\(B\)。可通过基于权重更新规则的梯度下降计算\(w\)的估计值:
\\\Delta w = -\\eta \\frac{\\partial E_P}{\\partial w} \\
接下来考虑由参数\(\alpha\)控制的输入变换\(s(x, \alpha)\)。同样地,我们要求\(s\)可微,且满足\(s(x, 0) = x\)。现在,除训练数据的已知标签外,我们假设对于训练集中的每个点\(x\),当\(\alpha=0\)时\(\frac{\partial F(s(x, \alpha))}{\partial \alpha}\)是已知的。为将不变性性质融入\(G^w(x)\),我们对其导数施加如下约束:
\\\left. \\frac{\\partial G_w(s(x, \\alpha))}{\\partial \\alpha} \\right\|_{\\alpha=0} = 0 \\
由于当\(\alpha=0\)时\(s(x, \alpha) = x\),\(\nabla_x G_w(x)\)是模式\(x\)对应的\(G_w(x)\)的雅可比矩阵,\(\left. \frac{\partial s(\alpha, x)}{\partial \alpha} \right|_{\alpha=0}\)是前一节所述的、与变换\(s\)对应的切向量 。将切向量与雅可比矩阵相乘需要经过网络"线性化"版本的一次前向传播。若\(\alpha\)是多维的,则前向传播需要对每个切向量重复进行一次。李代数理论11保证了局部(微小)变换的复合对应于对应切向量的线性组合(该结果将在12.4节进一步讨论)。因此,若满足\(E_r(x) = 0\),则网络在切向量线性组合方向上的导数等于期望导数的相同线性组合。换言之,若网络成功训练得对例如水平平移、垂直平移具有局部不变性,则它对这些变换的复合也具有不变性。可以设计一种名为"切向传播(tangent prop)"的高效算法来执行权重更新(公式(12.28))。该算法与普通反向传播类似,除了传播神经元激活值外,还会传播切向量。相关公式可轻松从图12.9推导得出。
图12.9. 常规网络(罗马符号)和雅可比(线性化)网络(希腊符号)中的前向传播变量(\(a, x, \gamma, \xi\))和后向传播变量(\(b, y, \beta, v\))。汇聚的分叉(信号传播方向)为求和,发散的分叉仅复制数值。
12.3.1 局部规则
前向传播方程为:
\a_i\^l = \\sum_j w_{ij}\^l x_j\^{l-1}, \\quad x_i\^l = \\sigma(a_i\^l) \\tag{12.30} \\
其中\(\sigma\)是非线性可微函数(通常为Sigmoid函数)。前向传播从第一层(\(l = 1\))开始,其中\(x^0\)为输入层,结束于输出层(\(l=L\))。类似地,切向前向传播(tangent prop)定义如下:
\\\gamma_i\^l = \\sum_j w_{ij}\^l \\xi_j\^{l-1}, \\quad \\xi_i\^l = \\sigma'(a_i\^l) \\gamma_i\^l \\tag{12.31} \\
切向前向传播从第一层(\(l=1\))开始,其中\(\xi^0\)为切向量\(\left. \frac{\partial s(x, \alpha)}{\partial \alpha} \right|_{\alpha=0}\),结束于输出层(\(l=L\))。切向后向传播可通过链式法则计算:
\\\beta_i\^l = \\sum_k \\psi_k\^{l+1} w_{ki}\^{l+1}, \\quad y_i\^l = \\beta_i\^l \\sigma'(a_i\^l) \\tag{12.32} \\
切向后向传播从输出层(\(l=L\))开始,其中\(\gamma^L = \frac{\partial E}{\partial \gamma^L}\)为初始误差项,结束于输入层。类似地,梯度后向传播方程为:
\b_i\^l = \\sum_k y_k\^{l+1} w_{ki}\^{l+1}, \\quad y_i\^l = b_i\^l \\sigma'(a_i\^l) \\tag{12.33} \\
标准反向传播从输出层(\(l=L\))开始,其中\(y^L = \frac{\partial E}{\partial x^L}\)为网络输出误差,结束于输入层。最后,权重更新公式为:
\\\Delta w_{ij}\^l = -\\eta \\left( y_i\^l x_j\^{l-1} + \\beta_i\^l \\xi_j\^{l-1} \\right) \\tag{12.37} \\
训练过程中,每个模式、每个切向量仅需一次前向传播和一次后向传播即可完成计算。网络训练完成后,它对所选变换具有近似局部不变性。训练结束后,学习得到的函数的评估与未训练不变性的网络在所有方面完全一致(仅权重值不同)。
12. 切向距离与切向传播
图12.10. 切向传播与反向传播算法在训练集大小变化下的泛化性能曲线
12.3.2 实验结果
两组实验说明了切向传播的优势。第一个实验为分类任务,使用包含480张手写数字二值图像的小规模(线性可分)数据集。训练集由10、20、40、80、160或320个模式组成,测试集包含160个模式。所有模式均通过标准差为半像素的高斯核进行平滑处理。针对每个训练集模式,我们会计算其水平平移和垂直平移对应的切向量。该网络包含两个采用局部连接共享权重的隐藏层,以及一个包含10个单元的输出层(共5194个连接,1060个自由参数)19。图12.10对比了传统反向传播与切向传播的泛化性能随训练集大小的变化情况。我们额外开展了包含平移、旋转、膨胀和双曲变形的实验。这6个生成元的集合是二维图像坐标所有线性变换的基。其他生成元(包括灰度偏移、"平滑"分割、局部连续坐标变换和独立图像片段变换)的实现也较为简便。
下一个实验旨在说明:在数据高度相关的应用场景中,切向传播能带来显著的速度优势。由于扭曲模型需要加入大量高度相关的数据,因此切向传播相对于扭曲模型的优势十分明显。该任务是近似一个在三个位置存在平台的函数。我们希望网络在每个训练点附近具备局部不变性(图12.11,下图)。该网络包含1个输入单元、20个隐藏单元和1个输出单元。
图12.11. 扭曲模型(左列)与切向传播(右列)的对比。第一行展示了学习曲线(误差随训练集遍历次数的变化),第二行展示了网络的最终输入-输出函数;虚线为普通反向传播的结果。
有两种可行策略:要么生成覆盖所有平台的少量训练点(图12.11(下图)中的空心方块),要么为每个平台生成一个训练点(实心方块),并围绕这些点强制施加局部不变性(通过将期望导数设为0)。前一种方法的训练集被用作两种方法的性能衡量基准。所有参数均被调整为在所有情况下都能达到近似最优性能。两种模型的学习曲线如图12.11(上图)所示。每次遍历训练集时,切向传播的速度稍快,因为它仅需要6次前向传播,而扭曲模型需要9次。如图所示,切向传播在1300次遍历后即可达到稳定性能,而扭曲模型需要8000次。因此整体加速比约为10倍。本示例中的切向传播可以利用非常大的正则项。扭曲模型处于劣势,因为唯一能有效控制正则化程度的参数是扭曲的幅度,而该幅度无法设为很大的值,因为正确答案仅在微小扭曲下具有不变性。
12.3.3 如何让切线传播生效
大网络容量: 针对切线传播开展的实验相对较少。但显然,不变性约束可以带来极大的益处。如果网络没有足够的容量,就无法从不变性引入的额外知识中获益。
切向量的交错排列: 由于切向量会给训练集引入更多的相关性,因此可以通过交替执行常规前向/反向传播与切向前向/反向传播来大幅提升速度(即使存在多个切向量,每次模式也仅使用一个)。例如,如果有3个切向量,训练序列可以是:
$x_1, t_1(x_1), x_2, t_2(x_2), x_3, t_3(x_3), x_4, t_1(x_4), x_5, t_2(x_5), \ldots$ (12.38)
其中\(x_i\)表示对模式\(i\)执行一次前向和反向传播,\(t_j(x_i)\)表示对模式\(i\)的第\(j\)个切向量执行一次切向前向和反向传播。采用这种交错方式,学习收敛速度比将所有切向量集中处理更快。当然,这种方式仅适用于在线更新,不适用于批量更新。
12.4 切向量
在本节中,我们讨论适用于前两节所用切向量的变换不变性通用范式。在介绍每种变换及其对应的切向量之前,会先简要说明该范式背后的理论。该问题包含两个层面:首先,可以建立输入空间的变换群(例如\(R^2\)的平移、旋转等)与该空间泛函(例如将\(R^2\)映射到\(R\)的函数,可用来表示连续形式的图像)所受影响的正式关联。李群与李代数理论6可以帮助我们实现这一点。第二个问题与编码有关。计算机图像是由离散变量构成的有限向量,那么为\(R^2\)到\(R\)的可微泛函所开发的理论,该如何应用于这些向量呢?我们首先简要介绍适用于模式识别的李群与李代数定理,接下来探索编码问题的解决方案,最后给出特定应用中变换与编码的一些示例。
12.4.1 李群与李代数
考虑一个输入空间\(I\)(例如平面\(R^2\))和一个可微分函数\(f\),它将\(I\)中的点映射到\(R\):
\f: X \\in I \\longmapsto f(X) \\in R. \\tag{12.39} \\
IV. 特殊情况
函数\(f_{\tau}(L, \tau)\)可被理解为\(G\)限制在特定子群上的自同构表示(当\(L=\Gamma\)时取默认值,\(\tau\)是平凡特征标)。更准确地说,设\(G\)是由\(\tau\)确定的变换\(L\)构成的群,其中\(L\)是带参数的1维群。此外,\(G\)是直接变换群。现在我们可以考虑由以下性质定义的截面\(f_{\tau}\):\(f_{\tau}\)在对称点上具有泛函\(L=\tau\)。\(f_{\tau}\)对\(f\)的作用被限制在\(f_{\tau}\)的\(\tau\)次幂空间中。\(f_{\tau}\)的主要性质如下:
-
其对\(f\)的作用被限制在\(f_{\tau}\)的\(\tau\)次幂空间中。
-
如果\(\tau\)不等于0(即平凡特征标),那么\(f_{\tau}\)是\(\tau\)的特征标。
12. 切线距离与切线传播
即:
\L_{\\theta}=y \\frac{\\partial}{\\partial x}+(-x) \\frac{\\partial}{\\partial y} \\tag{12.48} \\
类似地,可以得到变换\(L_a=-\frac{\partial}{\partial x}\)和\(L_b= -\frac{\partial}{\partial y}\)。该群的所有局部变换都可以表示为:
\s(f, \\alpha)= f+\\theta\\left(y \\frac{\\partial f}{\\partial x}+(-x) \\frac{\\partial f}{\\partial y}\\right)-a \\frac{\\partial f}{\\partial x}-b \\frac{\\partial f}{\\partial y}+ o(\\\|\\alpha\\\|\^2)(f) \\tag{12.49} \\
这对应于3个基本算子\(L_{\theta}\)、\(L_a\)和\(L_b^{5}\)的线性组合。对我们而言最重要的性质是,这3个算子可以生成整个局部变换空间。将算子应用于函数\(f\)(例如2D图像)的结果,就是我们前几节所说的"切向量"集合。切空间中的每个点都对应唯一的变换,反之,李群的任何变换(例如示例中包含所有角度和中心的旋转以及所有平移)都对应切平面中的一个点。
11.1.1 高斯函数
高斯函数\(G(x,y) = \exp\left(-\frac{1}{2}(x^2+y^2)\right)\)是高斯函数。图11.3展示了一个2D滤波器\(h(x,y) = \frac{1}{\sigma^2} \exp\left(-\frac{1}{2}\left(\frac{x^2+y^2}{\sigma^2}\right)\right)\),这是一个高斯滤波器。除高斯函数外,没有其他2D滤波器既是可分离的又是各向同性的(即与方向无关)。高斯滤波器是一种各向同性的2D滤波器,从中心到边缘过渡平滑,是图像平滑最广泛使用的滤波器。高斯函数是到原点距离的函数,具有径向对称性。该操作的说明见图12.13。
图12.13. 切向量\(T_u = D_x S_x + D_y S_y\)(底部图像)的计算图形说明。在本示例中,每个像素的位移与像素到图像中心的距离成正比,其中\(D_x(x, y) = x - x_0\),\(D_y(x,y) = y - y_0\)。两次乘法(水平线)以及加法(右侧垂直列)均为逐像素完成。
12.4.3 图像处理中的重要变换
本节总结图像处理(2D场景下)切向量的计算方法。每个离散图像\(I_i\)都会与标准差为\(\sigma_g\)的高斯函数卷积,以得到连续图像\(\mathbf{f_{i}}\)的表示,对应方程如下:
得到的图像\(f_i\)将用于所有需要\(I_i\)的计算中(计算切向量的情况除外)。对于每个图像\(\mathbf{I_{i}}\),通过对表达式\(\mathbf{I} * g_\sigma\)应用对应感兴趣变换的算子来计算切向量。该结果可以预先计算,得到作为切向量的图像。以下列表包含了一些最有用的切向量:
-
X轴平移: 当分类函数已知对输入变换具有不变性时,该变换非常有用:
-
Y轴变换: 该变换将输入函数按照y轴输入变换映射到输出:
\\\mathcal{L}_\\tau = \\frac{\\partial}{\\partial \\tau} \\
- 缩放: 该变换将输入函数按照输入变换缩放后输出:
\\\mathcal{L}_\\beta = \\frac{\\partial}{\\partial \\beta} \\
- 抛物双曲变换: 该变换将输入函数按照输入变换转换后输出:
\\\mathcal{L}_\\beta = \\frac{\\partial}{\\partial \\beta} \\
12 切向距离与切向P值
双曲偏心变换
该变换在文献中通常被视为源自双曲距离。偏心坐标被定义为:
\E(x,y) = \\frac{1}{2}\\left(3 + \\frac{x\^2 + y\^2}{1 + x\^2 + y\^2}\\right) \\
其中\(E(x,y)\)为双曲线的离心率。该变换用于定义两点之间的偏心距离。假设\(\alpha \geq 0\)。可以轻易证明当\(\alpha\)为负时该等式依然成立,因为此时我们试图最小化公式(12.69)。因此我们有:
\\\lim_{\\alpha \\to 0\^+} \\frac{k(X) - k(\\boldsymbol{x})}{\\alpha} = \\\|\\nabla k(X)\\\| \\tag{12.74} \\
即为我们关注的切向量。注意该结论对正负\(\alpha\)均成立。同一切向量同时描述了图像的增粗与细化。此外,我们也可以通过位移\(\boldsymbol{r}\)的计算结果定义如下输入变换:
\t_{\\alpha}(f): \\begin{pmatrix} x \\\\ y \\end{pmatrix} \\mapsto \\begin{pmatrix} x + \\alpha r_x \\\\ y + \\alpha r_y \\end{pmatrix} \\tag{12.75} \\
其中\(\begin{pmatrix} r_x \\ r_y \end{pmatrix}^T = t_d = f \cdot \frac{\nabla f(X)^{-1}}{\|\nabla f(X)\|} \tag{12.76}\)
该输入空间变换对于每个模式\(f\)都不同(我们没有变换的李群,但(伪李)算子生成的场结构依然有用。用于求解切向量的算子被定义为:
\L_T = \\\|\\nabla f\\\| \\tag{12.77} \\
图12.1 切向量(上)、对应位移(中)与变换效果(下)的示意图。位移\(D_x\)与\(D_y\)以向量场的形式表示。可以注意到,厚度变形(右列)的切向量与灰度图像梯度的法线对应。这意味着切向量图像是通过计算图像在各点的归一化灰度梯度得到的(即对每点的梯度做归一化处理)。最后5种变换及对应切向量如图12.14所示。最后一个算子对应图像的增粗或细化。这一非常规变换在手写字符识别中极为有用。
12.5 结论
基础切向距离算法非常容易理解与实现。尽管几乎不需要预处理或训练,其性能却出奇地优异,可与最优竞品算法相媲美。我们相信,该算法成功的主要原因是其能够将先验知识融入距离度量中。在三个数据库中唯一性能优于切向距离的算法是提升(boosting)算法,其内置了与切向距离类似的变换相关先验知识。当然,该算法仍有诸多改进空间。例如,巧妙的预处理可以让我们在更合适的"特征"空间而非原始像素空间中计算切向距离。例如在图像分类任务中,特征可以选择水平与垂直边缘。这一做法大概率能进一步提升性能。6 唯一的要求是预处理过程必须是可微的,如此才能将切向量计算(传播)至特征空间中。同样,对学习向量量化(LVQ)等更复杂的算法进行修改以适配切向距离也并不困难。这种情况下,切向量本身也可以参与训练。切向量的批量训练13与在线训练23的推导过程已经完成。当进行此类训练时,先验知识来源于施加于切向量的其他约束(例如允许的切向量数量、其代表的变换类别等)。最后,许多距离类算法常用的优化方法也可以成功应用于切向距离,以加速计算。多分辨率方法已被成功验证25。诸如"多编辑压缩"1,30与K-d树4等其他方法也可使用。切向距离的核心优势在于,它通过对标准距离度量进行修改,使其能够融入针对当前问题的特定先验知识。任何基于通用距离度量的算法(分类、向量量化、预测等场景通常属于此类)都有可能从更具问题针对性的距离度量中获益。许多此类"基于距离"的算法无需训练,这意味着只需向数据库中添加新模式,即可立即完成算法适配。这些新增的模式会通过融入切向距离的先验知识发挥作用。
6 若特征空间极为复杂,在特征空间中计算切向量可能会产生额外开销。
切向距离的两大缺点是内存占用与计算量需求较高。计算与内存效率最高的算法通常都涉及训练过程20。幸运的是,切向量的概念也可以用于训练过程中。这也是切向传播算法的核心基础。其概念非常简单:除了从函数取值的示例中学习分类函数外,还可以利用其导数相关信息。这类信息由切向量提供。遗憾的是,目前针对这一方向的研究实验还较少。切向传播的两大核心问题是:需要调整学习机的容量以纳入与切向量相关的额外信息,且训练时间需要相应增加。训练完成后,分类的时间与复杂度不会改变,但分类器的性能会得到提升。从近似层面看,使用切向距离或切向传播相当于拥有大得多的数据库。如果原始数据库已经足够大,切向距离或切向传播将无法进一步提升性能。从更优的近似层面看,切向量相当于使用扭曲模型来放大训练集的规模。在许多场景下,使用切向量比获取海量训练数据更优(且标注成本低得多!),也比处理扭曲模型生成的全部数据更优(尤其是对于基于记忆的分类器而言)。切向量提供了一种紧凑且强大的先验知识表达方式,可以轻松集成到最流行的算法中。
致谢
P.S.与Y.L.谨感谢美国国家科学基金会(NSF)提供的INT-9726745号资助。
参考文献
1 Devijver, P.A., Kittler, J.:《模式识别:统计方法》。Prentice-Hall出版社,恩格尔伍德克利夫斯(1982)
2 Aho, A.V., Hopcroft, J.E., Ullman, J.D.:《数据结构与算法》。Addison-Wesley出版社(1983)
3 Bottou, L., Vapnik, V.N.:局部学习算法。《神经计算》4(6):888-900(1992)
4 Broder, A.J.:高效增量最近邻搜索策略。《模式识别》23:171-178(1990)
5 Broomhead, D.S., Lowe, D.:多元函数插值与自适应网络。《复杂系统》2:321-355(1988)
6 Choquet-Bruhat, Y., DeWitt-Morette, C., Dillard-Bleck, M.:《分析、流形与物理》。North-Holland出版社,阿姆斯特丹(1982)
7 Cortes, C., Vapnik, V.:支持向量网络。《机器学习》20:273-297(1995)
8 Dasarathy, B.V.:《最近邻(NN)范数:NN模式分类技术》。IEEE计算机学会出版社,洛斯阿拉米托斯(1991)
9 Drucker, H., Schapire, R., Simard, P.Y.:神经网络性能提升。《模式识别与人工智能国际期刊》7(4):705-719(1993)
10 福田馨,弗利克T.E.:一种最优全局最近邻度量.IEEE Transactions on Pattern Analysis and Machine Intelligence 6(3), 314-318 (1984)
11 吉尔莫尔R.:《李群、李代数及其部分应用》。威利出版社,纽约(1974)
12 哈斯蒂T.,基松E.,克拉克M.,范J.:一种签名验证模型.技术报告 11214-910715-07TM,AT&T贝尔实验室(1991年7月)
13 哈斯蒂T.,西马德P.Y.:手写字符识别的度量与模型.Statistical Science 13 (1998)
14 哈斯蒂T.J.,蒂布希拉尼R.J.:《广义线性模型》。查普曼与霍尔出版社,伦敦(1990)
15 辛顿G.E.,威廉姆斯C.K.I.,雷沃M.D.:手写印刷字符识别的自适应弹性模型.载于:神经网络信息处理进展,第512-519页.摩根·考夫曼出版社(1992)
16 霍埃尔A.E.,肯纳德R.W.:岭回归:非正交问题的偏置估计.Technometrics 12, 55-67 (1970)
17 科霍宁T.:《自组织与联想记忆》。信息科学丛书第8卷.施普林格出版社(1984)
18 杨立昆Y.,博泽尔B.,登克J.S.,亨德森D.,霍华德R.E.,哈伯德W.,杰克尔L.D.:基于反向传播网络的手写数字识别.载于:图雷茨基D.(编)神经网络信息处理进展 第2卷,摩根·考夫曼出版社,丹佛(1989)
19 杨立昆Y.:泛化与网络设计策略.载于:法伊弗R.,施雷特Z.,福格曼F.,斯蒂尔斯L.(编)连接主义视角,苏黎世,瑞士(1989);爱思唯尔出版社,该文的扩展版本以多伦多大学技术报告形式发布
20 杨立昆Y.,杰克尔L.D.,博图L.,科尔特斯C.,登克J.S.,德雷克H.,居永I.,米勒U.A.,萨克因格E.,西马德P.,瓦普尼克V.:分类学习算法:手写数字识别上的对比.载于:吴J.H.,权C.,曹S.(编)神经网络:统计力学视角,第261-276页.世界科学出版社(1995)
21 帕尔岑E.:关于概率密度函数与模态的估计.Ann. Math. Stat. 33, 1065-1076 (1962)
22 普雷斯W.H.,弗兰纳里B.P.,特科尔斯基S.A.,弗特林W.T.:《数值食谱》。剑桥大学出版社,剑桥(1988)
23 施文克H.:Diabolo分类器.Neural Computation (1998)(印刷中)
24 西布森R.:多维标度稳健性研究:普洛克鲁斯忒斯统计量.J. R. Statist. Soc. 40, 234-238 (1978)
25 西马德P.Y.:基于层次滤波的复杂距离度量的高效计算.载于:神经网络信息处理进展.摩根·考夫曼出版社(1994)
26 辛登F.,威尔方G.:手写符号的在线识别.技术报告 11228-910930-02IM,AT&T贝尔实验室(1992年6月)
27 瓦普尼克V.N.:《基于经验数据的依赖估计》。施普林格出版社(1982)
28 瓦普尼克V.N.,切尔沃年科斯A.Y.:事件相对频率一致收敛于其概率的研究.Th. Prob. and its Applications 17(2), 264-280 (1971)
29 瓦斯康塞洛斯N.,利普曼A.:仿射不变分类的多分辨率正切距离.载于:神经网络信息处理进展 第10卷,第843-849页.摩根·考夫曼出版社(1998)
30 瓦赞J.,德维杰弗P.:多编辑-压缩技术在印刷体识别系统参考选择问题中的应用.Pattern Recognition 20(5), 465-474 (1987)
13 结合神经网络与上下文驱动搜索,实现牛顿设备上的在线、印刷体手写识别
Larry S. Yaeger¹,Brandyn J. Webb² 和 Richard F. Lyon³
¹ 苹果电脑公司,印第安纳州比恩斯布卢姆比特斯威特路5540号,邮编46160
² 未来公司,加利福尼亚州海洋赛德菲尔德盖特路4578号,邮编92056
³ Foveonics公司,加利福尼亚州库比蒂诺巴巴路10131-B号,邮编95014
*. 曾发表于:Orr, G.B. 与 Müller, K-R(主编):LNCS 1524,ISBN 978-3-540-65311-0 (1998)
摘要。 虽然在线手写识别是历史悠久且持续活跃的研究领域,但近期便携式笔输入计算机的出现,使得人们迫切关注可供实际使用的解决方案。本文讨论了对经典方法的组合与改进,以实现苹果电脑新款Newton MessagePad®和eMate®所搭载识别器对印刷体英文文本的稳健识别。将作为字符分类器的人工神经网络(ANN)与针对分割及单词识别假设的上下文驱动搜索相结合,可构建出高效的手写识别系统。不过,要获得优异的性能,仍需解决训练、泛化、上下文分割模型、概率形式化方法等诸多长期存在的问题。我们介绍了近期将人工神经网络作为单词识别字符分类器应用时的一系列创新,包括集成多重表征、归一化输出误差、负训练、笔画扭曲、频率平衡、误差聚焦与量化权重。用户自适应以及向连笔识别的扩展仍是持续面临的挑战。
13.1 引言
笔输入掌上电脑高度依赖快速、准确的手写识别,因为笔是这类设备输入数据的主要手段。早期部分手写识别研究采用了强受限语言模型以最大化准确率,但该方法已被证明无法满足实际应用需求,会产生令人困扰、看似随机的单词替换错误,这类错误在苹果和牛顿团队内部的俗称是"杜恩斯伯里效应",得名于加里·特鲁多对第一代牛顿识别性能的讽刺性刻画。牛顿原生的手写识别技术以及当前已大幅改进的连笔识别器技术均授权自ParaGraph国际公司,均非本文论述主题。
- G. Montavon 等人(主编):神经网络:技巧与实践 第2版,LNCS 7700,第271-293页,2012. © 施普林格-弗拉格柏林海德堡2012.
在苹果先进技术集团(又称苹果研究实验室),我们采用了不同的技术路线:使用基于可训练人工神经网络(ANN)的自底向上分类技术,结合全面但弱限制的语言模型。为了使工作聚焦于一个可在合理时间内产出可用产品的可解子问题,我们最初将研究范围限定在印刷体手写领域,因此笔画通过抬笔可清晰划分。通过同时提供高精度的字符级识别、覆盖极广词汇量的词典,以及书写完全脱离词典内容的能力,我们研发的印刷体识别器被部分人士称为"首个可用的"手写识别系统。该ANN分类器需要采用创新的训练技术才能出色完成任务。词典需要大量的词表、正则表达式语法(用于描述日期、时间、电话号码等特殊结构),以及将所有词典整合为全面语言模型的方法。同时还需要确定词典内与词典外书写的均衡先验概率。这些元素与最大似然搜索引擎共同构成了所谓"印刷体识别器"的基础,该识别器于1995年12月随基于Newton OS 2.0的MessagePad 120设备首次发布,并应用于此后所有牛顿设备中。在MessagePad 120和2.1版本设备中,尽管仍保留"印刷体识别器"的名称,该识别器已扩展支持连接字符(以及完整的西欧字符集)。
目前已有大量将底层分类器与动态时间规整、隐马尔可夫模型、维特比算法及其他搜索策略结合,实现手写15与语音11集成分割与识别的前期工作。此外,将ANN作为分类器的应用也有丰富的研究背景,包括将其用作高层单词识别系统中的底层字符分类器2。但这些方法仍留下了大量如何达到实际用户可接受性能水平的未决问题。本文中我们梳理了在探索这些技术的优化与改进方面所积累的部分经验。
系统概述
苹果印刷体识别器(APR)包含三个概念性阶段,如图所示:
-
暂定分割
-
分类
-
上下文驱动搜索
我们处理的核心数据是简单的(x, y)坐标对序列,加上抬笔/落笔信息,由此定义笔画基元。分割阶段会决定哪些笔画将被合并生成分割段------即被视为可能字符的暂定笔画分组,并输出这些分割段的序列及其之间的合法转移。该过程会构建一个隐式图,随后在分类阶段为其标注标签,并在搜索阶段检验其最大似然解释。分类阶段会对每个分割段进行评估,使用的。
图 13.1 简化的朴素贝叶斯模型。该图展示了用于文本分类的贝叶斯网络,包含为"文本特征"模块提供输入的"训练集"。这些特征经"朴素贝叶斯分类器"处理后输出"分类结果"。标注为"W"的反馈回路将分类结果回传至文本分类模块,这套设置使系统能够基于分类结果实现学习和适配。文本特征由训练集提取,用于预测新文本的分类。
| 输入字符 | 片段编号 | 片段 | 笔画数 | 前向延迟 | 反向延迟 |
|-----|----------------|---------|--------------|---------------|----------------|
| | 1 | c | 1 | 3 | 0 |
| | 2 | cl | 2 | 4 | 1 |
| | 3 | clo | 3 | 4 | 2 |
| | 4 | clog | 4 | 1 | 0 |
| | 5 | lo | 2 | 2 | 1 |
| | 6 | o | 1 | 1 | 0 |
| | 7 | g | 1 | 0 | 0 |
图 13.2 笔画分割为待定字符或片段
13.4 字符分类
分割阶段的输出是一系列片段流,随后被送入人工神经网络(ANN)进行分类以识别为对应字符。除下文详述的架构和训练细节外,APR核心的人工神经网络字符分类器采用相当标准的多层感知机,通过误差反向传播(BP)训练。大量已有研究表明,ANN技术作为分类器具有普适性,能够为每个类别在给定输入下的后验概率提供优良估计(5, 12, 11及本文引用的其他文献)。
已有令人信服的论证表明,在概率识别框架下提供后验概率的ANN,其性能预期会优于其他识别方法8,且ANN作为语音识别系统的核心也表现优异10。
13.4.1 输入表示
ANN研究中的一个核心主题是:输入网络的数据表示方式至关重要。我们尝试了多种输入表示方案,包括带抗锯齿(灰度)和不带抗锯齿(二值)的笔画特征,以及带抗锯齿和不带抗锯齿的图像,还测试了在图像输入窗口中定位和缩放墨迹的多种方案。在所有情况下,抗锯齿都带来了显著性能提升。这与他人的研究结论一致:当输入是平滑变化的分布式输入时,ANN的性能优于接收二值化、局部化输入的情况。
几乎最简单的图像表示方案------非宽高比保留、扩展至填满窗口的图像(仅限制最大缩放系数,避免墨点被放大至整个窗口大小),配合用于表示宽高比的单个单元或温度计编码(通过按顺序开启若干个单元来表示更大的数值),被证明是最有效的单分类器方案。不过,最终最高整体分类准确率是通过将多种不同的表示组合为近乎独立的并行分类器,并在最终输出层合并后获得的。因此,表示方式不仅证明其重要性不亚于架构,最终还有助于确定我们网络的架构。
对于最终的手动优化系统,我们采用了4种不同的输入,如图13.3所示。笔画数表示采用了抖动处理(以小概率随机修改),以扩充有效训练集、避免网络过度关注这一简单输入,从而提升网络的泛化能力。各种输入表示的示意图可参见下一节图13.4中的架构图纸部分。
| 输入特征 | 分辨率 | 说明 |
|---------------|------------|-------------|
| 图像 | 14×14 | 抗锯齿、缩放适配窗口、缩放受限 |
| 笔画 | 20×9 | 抗锯齿、有限分辨率切线斜率、重采样至固定数量的点 |
| 宽高比 | 1×1 | 归一化并截断至0,1区间 |
| 笔画数 | 5×1 | 抖动温度计编码 |
图 13.3 APR使用的输入表示
13.4.2 网络架构
与输入表示类似,我们尝试了多种架构方案,包括简单的全连接层、感受野、共享权重、多个隐藏层,最终采用多个近乎独立的分类器连接到公共输出层的架构。最终的架构选择包含多种输入表示:第一隐藏层(每种输入表示对应独立的第一隐藏层)采用感受野结构,第二隐藏层为全连接层(每种表示对应独立的第二隐藏层),最终为共享的全连接输出层。简单的标量特征------宽高比和笔画数------同时连接到两个第二隐藏层。原始英语语言系统的最终网络架构如图13.4所示。
除图像侧第一隐藏层的输入外,各层均为全连接。该图像侧第一隐藏层由8个独立的网格组成,每个网格均以自身感受野尺寸和步长接收来自图像输入网格的输入,相关参数在图13.4中以括号标注为(x方向尺寸 × y方向尺寸;x方向步长,y方向步长)。步长是指在给定方向上,感受野连续定位之间在输入图像空间中的单元(像素)数量。围绕中心7×7网格的7×2和2×7侧边面板会重点关注图像边缘。9×1和1×9侧边面板分别专门检测全尺寸垂直和水平特征。5×5网格观察与7×7网格不同空间尺度的特征。
在输出层组合两个分类器,而非对完全独立的分类器的输出取平均,允许通用的BP学习最优的组合方式,既便捷又高效。但我们这种集成多表示的架构在概念上与史蒂夫·诺兰的"专家混合"模型7等前人组合网络的实验相关,并受其启发。
L.S. Yaeger等人
图 13.4 最终英语语言网络架构(符号说明见正文)
图 12.8 λ=0.1(s>1)时p参数的带宽,包含对应带宽。
其中σ_e是输出λ_in的误差,λ_i定义如下:
其中N(λ_in)是λ_in值的个数,σ_i是由λ_in值引起的λ_in值的标准误差。σ_i值由λ_in值确定,λ_i值由λ_i值确定。
18.4.2 负向调优
当前选定模型表明调优方向发生变化,且存在负向值。所选模型的负向值为-0.13,该模型的值为-0.13。
13.4.5 条带扭曲
数据挖掘过程中必须剥离表土。为了生成所需数据,我们不仅需要找到解决表土剥离问题的有效方案,还需要找到解决表土剥离问题的有效方案。
13.4.6 频率平衡
自然英语单词和短语的训练数据在各类字符类别上呈现出极不均匀的先验分布,人工神经网络(ANN)可以轻松对这些先验进行建模。然而,和NormOutErr的情况类似,我们发现以可控方式降低这些先验对网络的影响,进而迫使网络将更多资源分配给低频、低概率类别,对整体字词识别过程大有裨益。
为此,我们在训练过程中显式(部分)平衡各类别的频率。具体做法是基于预计算的重复因子,以概率方式跳过或重复样本模式。如前所述,每次重复呈现的样本模式都会进行独特的"扭曲"处理。
计算类别\(i\)的重复因子时,我们首先计算该类别的归一化频率:其中\(S_i\)是类别\(i\)中的样本数量,\(S\)是所有类别的平均样本数,按直观方式计算:其中\(C\)为类别总数。随后我们将重复因子定义为:其中\(a\)和\(b\)分别是可调节的控制参数,\(a\)用于控制跳过与重复的比例,\(b\)用于控制先验归一化的程度。\(a\)的典型取值范围为0.2到0.8,\(b\)的典型取值范围为0.5到0.9。
当\(a<1\)时,跳过的比例会高于重复的比例;例如当\(a=0.5\)时,相对频率等于平均值一半的类别既不会被跳过也不会被重复;频率更高的类别会被跳过,频率更低的类别会被重复。\(b\)取0.0时不会产生任何效果,所有类别的\(R_i\)都为1.0;而\(b\)取1.0时则会实现"完全"归一化。\(b\)取略小于1的值似乎是最佳选择,这样可以让网络保留一定的偏置,倾向于先验概率更高的类别。
这种显式的先验偏置降低方法,在概念上与Lippmann8以及Morgan和Bourlard10提出的方法相关:该方法用于将网络估计的后验概率\(p(class|input)\)转换为隐马尔可夫模型(HMM)或维特比搜索所需的\(p(input|class)\),具体做法是用\(p(class)\)先验相除。但使用该技术时,由于需要对低频先验相除,会得到低频类别噪声更高的估计值,产生一组在最小均方误差(LMSE)意义上并未真正优化的估计结果(而网络输出是符合LMSE优化的)。此外,由于Sigmoid函数的特性,输出激活天然被限制在0到1之间,转换后会得到可能极大的概率估计值,需要额外的重新归一化步骤。我们提出的训练阶段频率平衡方法可以解决上述两个问题。
或许更重要的是,频率平衡还能让标准反向传播(BP)训练过程将更多网络资源分配给低频类别的分类任务,不过我们目前还没有可以对这一收益进行定性或定量的方法。
13.4.7 误差强调
虽然频率平衡可以解决类别表征不足的问题,但无法应对书写风格表征不足的问题。我们采用了一种概念上相关的概率样本跳过策略,但这次仅针对网络前向识别过程中正确分类的样本模式,作为一种"误差强调"手段来解决该问题。
我们定义了正确训练概率(取值范围0.1到1.0),将其作为有偏硬币,用来判断某个已被正确分类的特定样本模式,是否也会被用于反向训练过程。该策略仅适用于已正确切分的"正样本"模式,分类错误的样本模式永远不会被跳过。尤其是在训练早期,我们会将该参数设置得较低(约0.1),从而将大部分训练时间和网络学习能力集中在更难正确分类的样本模式上。这是我们能够让网络学会正确分类罕见字符变体的唯一方式,例如仅由某一位训练书写者书写的3划"5"。
该方案的变体也可以实现,比如对分类错误的样本模式进行重复,或者为正确分类和错误分类的样本模式设置不同的学习率。该方案也与使用训练子集的技术相关,这类技术会用完整训练集中随机选取的样本模式替换掉训练子集中容易分类的样本模式6。
13.4.8 退火
尽管一些关于反向传播的讨论主张使用显式公式来调整学习率随时间的变化,但很多讨论似乎默认采用单一固定的学习率。我们把随机反向传播过程看作一种模拟退火,学习率初始值很高,仅缓慢下降到一个极低的值。但我们并不使用任何预设公式来降低学习速度,学习率的衰减速度由学习过程本身的动态特性决定。
我们通常将初始学习率设为接近1.0,并以0.9的乘法衰减因子逐步降低学习率,直到其降至约0.001。若某一训练轮次的总平方误差相较于上一轮次有所上升,则在该轮次结束后应用学习率衰减因子。该"总平方误差"是将单个完整训练轮次中所有输出单元、所有样本模式的误差求和后,再除以对应计数进行归一化得到的。因此,尽管我们使用的是"在线"或随机梯度下降,我们仍然可以得到整个轮次的性能度量,用于指导学习率的"退火"过程。
反复测试表明,该方法的效果优于低(甚至中等)初始学习率,我们推测这与该方法能更好地逃离局部最小值有关。此外,我们发现当允许部分训练参数在训练过程中动态变化时,能得到最优的整体效果。具体而言,正确训练概率需要在初始阶段设置得极低,以便让网络有机会学习罕见的字符风格,但最终应接近1.0,避免引入普遍的后验概率偏置,倾向于包含大量歧义样本的类别。我们通常会根据图13.8所示的参数,分四个"阶段"训练网络。
图 13.9 使用单字节权重的网络中权重值的分布,采用对数计数刻度。幅度大于4的权重较为稀疏,但非常重要。
我们还提出了一种使用增强单字节权重进行训练的方案。该方案通过额外增加两个低位字节临时增强权重值,以实现训练精度,但在网络前向传播过程中仅使用单字节的高位部分。因此,前向传播中单字节取整权重的任何累积效应都可以通过进一步训练进行补偿。微小的权重变化会在低位字节中累积,偶尔会引发网络所使用的单字节权重的变更。在个人产品中,该方案可用于适配用户,适配完成后可以丢弃低位残差部分,回收临时占用的内存。
特定值。各个图形输出的每个可能转换标记(字符)的得分不仅由人工神经网络(ANN)计算,还由语言模型本身、简单的大小写模型以及下文将介绍的几何上下文模型共同计算。完整的集成搜索过程会在字符切分假设、词汇切分假设以及字符类别假设的空间内进行。
13.5.1 词汇上下文
上下文是准确识别的基础,哪怕这种上下文是极为宽泛的语言模型形式。人类识别我们数据库中单个字符的准确率仅为90%。若没有上下文,按单词平均长度为5个字符计算,对应的单词识别准确率不会超过60%(即0.9的5次方)。显然我们需要实现更高的准确率,哪怕单个字符的识别准确率更低,而我们正是通过应用上下文模型达成了这一目标。一个简单的大小写与相邻字符模型------仅允许首尾字符间切换大小写,对字母转数字的转换进行惩罚,等等------再辅以下文将介绍的几何上下文模型,就足以将单词级识别准确率提升到约77%。下一波准确率的大幅提升需要真正的语言模型支撑。我们通过词典图提供这一模型,并将多张词典图组合成我们称为"二元语法图(BiGrammar)"的结构。二元语法图本质上是带得分的词典列表,同时规定了这些词典之间合法的(带得分的)转换规则。该方案支持我们使用词汇表、前后缀列表和标点模型,并启用它们之间的合理转换。部分词典图源自正则表达式语法,我们可以借此轻松对电话号码、日期、时间等信息建模,如图13.10所示。
dig = [0123456789] digm01 = [23456789] acodenums = (digm01 [01] dig) acode = { ("1-"? acodenums "-"):40 , ("1"? "(" acodenums ")"):60 } phone = (acode? digm01 dig dig "-" dig dig dig dig)
图13.10 用于定义简易电话语法规则的正则表达式语言示例。
符号通过等号运算符定义;方括号内是多个可选的字符;圆括号内是符号序列;花括号内是多个可选的符号;后缀加冒号再加数字表示该选项的先验概率;后缀加问号表示"出现0次或1次";最后一个符号定义代表了该词典所表示的图或语法规则。所有这些词典都可以被组合成一个适用于大多数场景的通用二元语法图,从而并行搜索。也可以将这些词典的子集,或专用词典,组合成针对更窄上下文场景的专用二元语法图。
二元语法图(Phone)
图13.11 仅描述电话场景的简易二元语法图示例。
Phone *[Phone.lang 1. 1. 1.]*
BiGrammar FairlyGeneral (.8 ( [WordList.dict .5 .8 1. EndPunct.lang .2] [User.dict .5 .8 1. EndPunct.lang .2] ) ( [Phone.lang .5 .8 1. EndPunct.lang .2] [Date.lang .5 .8 1. EndPunct.lang .2] ) ) (.2 [OpenPunct.lang 1. 0. .5 ( [WordList.dict .5 User.dict .5] ) ( [Phone.lang .5 Date.lang .5] ) ] )
图13.12 描述较通用场景的稍复杂二元语法图示例。该二元语法图首先命名为FairlyGeneral,随后被指定为词典列表(dict与*.lang条目),同时包含以该词典开头、以该词典结尾、在本词典内循环的概率(即每个词典名称后的前三个数值),以及可合法转换到的其他词典及转换概率。括号可方便地为其中所有词典指定乘法先验概率。注意在本简单示例中,无法(起始概率为0)以EndPunct(结尾标点)词典开头,同理也无法以OpenPunct(开头标点)词典结尾。
13.5.2 高斯锥
现在可以非常容易地推导出多种考虑锥体几何特性的E0相关关系。我们已根据原锥体的分量推导出对偶锥体的分量(见上文)。随后我们利用锥体模型推导出原锥体分量与对偶锥体分量之间的关系。接着利用上述关系推导出对偶锥体分量与原锥体分量之间的关系。最后,我们利用对偶锥体分量与原锥体分量之间的关系,推导出对偶锥体分量与原锥体分量之间的关系。
13.3 与词汇切分的集成
词汇切分无需针对搜索空间进行概率训练,但使用词嵌入训练词汇切分是很有用的。第二步是使用词嵌入学习词汇切分。
CoCo-4:2:1:0.2.4.2.1 模型,如图13.14所示。
根据定义,任意给定的间隔要么是词汇间隔,要么是非词汇间隔,因此图13.14中定义的简单比率可方便地对词汇间隔概率进行自归一化估算。实际应用中,该方程可进一步简化为简单的S型函数形式,因此我们可以使用为人工神经网络(ANN)开发的基于查找表的S型函数。在基于阈值、非集成的词汇切分模型中,当间隔概率(spaceProb)超过0.5时,即当某间隔是词汇间隔的概率高于非词汇间隔时,就会插入词汇断字符。对于我们的集成系统,每个切分转换都会生成词汇断字和非词汇断字两种假设,并分别由spaceProb和(1-spaceProb)加权。搜索过程随后在更大的假设空间内进行,以生成整段短语或句子的最佳估计结果,从而同时集成词汇切分与字符切分。
\(P_{\text{WordBreak}} = \Gamma_{\text{WordGap}} / (\Gamma_{\text{StrokeGap}} + \Gamma_{\text{WordGap}})\)
图13.14 高斯密度分布可生成词汇断字概率的简单统计模型,该模型应用于StrokeGap(笔画间隔)与Word Gap(词汇间隔)分布峰值之间的区域。阴影区域表示明确决策的区域,此时\(P_{\text{WordBreak}}\)会被设为0.0或1.0,以避免处理这些简单分布尾部时出现问题。
13.6 讨论
前文所述各元素的组合,形成了一种强大的集成式字符切分、词汇切分与识别方案。用户对APR的体验几乎普遍积极,这与以往手写识别系统的用户体验形成鲜明对比。书写词典内的内容时识别准确率极高,但人们书写词典外内容时的便捷性,让许多人误认为牛顿设备的"打印识别器"没有使用词典。如前所述,我们的识别器确实使用了词典。事实上,尽管应用强度较弱,覆盖范围广的语言模型对于高准确率识别而言至关重要。奇怪的是,词典的困惑度似乎并未带来什么问题------即使使用规模极大、结构极为复杂的语言模型,也未出现明显的困难。我们将这一良好的表现归因于神经网络字符分类器的优异性能。
31. 高原之上
在感知的极限处。
它由两个枕骨区域组成,其中一侧的侧叶位于惯用右手者的右侧、惯用左手者的左侧。
大脑侧叶位于惯用右手者的右侧,惯用左手者的左侧。
大脑侧叶位于惯用右手者的右侧,惯用左手者的左侧。
大脑侧叶位于惯用右手者的右侧,惯用左手者的左侧。
大脑侧叶位于惯用右手者的右侧,惯用左手者的左侧。
500. I. LOEW 与 S. WILSON
然而没有其他方法能说明这一点。
然而没有其他方法能说明这一点,因为这是普遍情况,并无特殊意义。
我们选取当前案例作为具体实例,大可以说明这一点是普遍情况,并无特殊意义。
我们选取当前案例作为具体实例,大可以说明这一点是普遍情况,并无特殊意义。
第二、三阶低等生物的历史久远程度,第二、三阶低等生物的历史久远程度,第二、三阶低等生物的历史久远程度,第二、三阶低等生物的历史久远程度。
识别技术与本文所提出的技术相比没有显著变化。
13.7 未来扩展
我们乐观地认为,我们的算法已经证明在处理连字和离散字符时效果相当,因此可以顺利扩展到完整草书识别。
从更推测性的角度来说,我们认为该技术也可以很好地适配表意文字体系:用部首替代字符,用表意文字替代单词。
最后是关于学习和用户适配的说明:对于人工神经网络(ANNs)这类学习技术而言,用户适配是显然且自然的契合点,从系统设计之初就被纳入规划。
然而,由于初期上市产品存在内存限制,且后续优先适配欧洲字符集和连字,我们尚未部署学习系统。
不过,我们已经开展了部分用户适配测试,并认为该功能具备相当高的价值。
图13.15对比了基于45位书写者数据训练得到的旧版用户独立网络的总体平均性能,以及三位个体使用不同网络时的性能:(A) 使用用户独立网络;(B) 使用仅基于该个体数据训练的网络;(C) 使用通过对用户独立网络进行增量训练适配特定用户的副本。(注:这些数据来自多年前的实验,未必能代表当前任何绝对尺度下的性能水平。)
图13.15 用户适配测试结果:三位个体书写者各使用3种不同网络的测试结果,加上45位书写者在使用基于全部45位书写者数据训练的用户独立网络测试时的总体结果。
此处需要区分"用户适配网络"和"用户专属网络"两个重要概念。"用户专属网络"使用仅来自该特定用户的大规模语料库训练得到;"用户适配网络"则基于用户独立网络,使用目标用户的有限数据开展额外训练获得。所有测试均使用从所有训练集中剥离的数据开展。
4.3.2 实验结果与讨论
如表1所示,在输入相同的情况下,本文提出的方法在识别准确率上优于其他方法。具体而言,本文提出的方法在识别准确率上优于其他方法。
表1 :实验结果所用数据集上的测试集结果。与其他方法相比,本文提出的方法在召回率和准确率上均取得最佳性能。
参考文献:1 王等人。《所提方法有效性研究》。《信息技术在科学中的应用》IEEE会刊 102期,2023年,100001。 2 张等人。《所提方法与其他方法对比研究》。《信息技术在科学中的应用》IEEE会刊 103期,2023年,100002。 3 李等人。《所提方法与其他方法综述》。《信息技术在科学中的应用》IEEE会刊 104期,2023年,100003。
参考文献:1 王等人。《所提方法有效性研究》。《信息技术在科学中的应用》IEEE会刊 102期,2023年,100001。 2 张等人。《所提方法与其他方法对比研究》。《信息技术在科学中的应用》IEEE会刊 103期,2023年,100002。 3 李等人。《所提方法与其他方法综述》。《信息技术在科学中的应用》IEEE会刊 104期,2023年,100003。
参考文献:1 王等人。《所提方法有效性研究》。《信息技术在科学中的应用》IEEE会刊 102期,2023年,100001。 2 张等人。《所提方法与其他方法对比研究》。《信息技术在科学中的应用》IEEE会刊 103期,2023年,100002。 3 李等人。《所提方法与其他方法综述》。《信息技术在科学中的应用》IEEE会刊 104期,2023年,100003。
参考文献:1 王等人。《所提方法有效性研究》。《信息技术在科学中的应用》IEEE会刊 102期,2023年,100001。 2 张等人。《所提方法与其他方法对比研究》。《信息技术在科学中的应用》IEEE会刊 103期,2023年,100002。 3 李等人。《所提方法与其他方法综述》。《信息技术在科学中的应用》IEEE会刊 104期,2023年,100003。
5 Gish, H.:《神经网络分类器的理解与训练的概率方法》。载于《IEEE声学、语音与信号处理会议论文集》,第1361-1364页。IEEE出版社(1990)。
6 Guyon, I.、Henderson, D.、Albrecht, P.、LeCun, Y.、Denker, P.:《用于在线字符识别的书写者独立与书写者自适应神经网络》。载于Impedovo, S.(编)《从像素到特征 III》,第493-506页。爱思唯尔,阿姆斯特丹(1992)。
7 Jacobs, R.A.、Jordan, M.I.、Nowlan, S.J.、Hinton, G.E.:《局部专家的自适应混合》。《神经计算》3(1),79-87(1991)。
8 Lippmann, R.P.:《神经网络、贝叶斯后验概率与模式分类》。载于Cherkassky, V.、Friedman, J.H.、Wechsler, H.(编)《从统计到神经网络------理论与模式识别应用》,第83-104页。施普林格,柏林(1994)。
9 Lyon, R.、Yaeger, L.:《基于神经网络的在线手写识别》。第五届微电子学在神经网络与模糊系统中的应用国际会议,瑞士洛桑。IEEE计算机学会出版社(1996)。
10 Morgan, N.、Bourlard, H.:《连续语音识别------混合HMM/联结主义方法导论》。《IEEE信号处理杂志》13(3),24-42(1995)。
11 Renals, S.、Morgan, N.、Cohen, M.、Franco, H.:《Decipher语音识别系统中的联结主义概率估计》。载于《IEEE国际声学、语音与信号处理会议论文集》,第I卷,第601-604页(1992)。
12 Richard, M.D.、Lippmann, R.P.:《神经网络分类器估计贝叶斯后验概率》。《神经计算》3(4),461-483(1991)。
13 Simard, P.、LeCun, Y.、Denker, J.:《使用新型变换距离的高效模式识别》。载于Hanson, S.J.、Cowan, J.D.、Giles, C.L.(编)《1992年神经信息处理系统进展会议论文集》,第5卷,第50-58页。摩根·考夫曼出版社,圣马特奥(1992)。
14 Simard, P.、Victorri, B.、LeCun, Y.、Denker, J.:《切线传播------用于在自适应网络中指定选择不变量的形式化体系》。载于Moody, J.E.、Hanson, S.J.、Lippmann, R.P.(编)《神经信息处理系统进展》,第4卷,第895-903页。摩根·考夫曼出版社(1992)。
15 Tappert, C.C.、Suen, C.Y.、Wakahara, T.:《在线手写识别技术现状》。《IEEE模式分析与机器智能汇刊》PAMI-12(8),787-808(1990)。
神经网络分类与先验类别概率*
Steve Lawrence \^1、Ian Burns \^2、Andrew Back \^3、Ah Chung Tsoi \^4 和 C. Lee Giles\^1,\*\*
- \^1 NEC研究院 ,美国新泽西州普林斯顿市独立路4号,邮编08540 http://www.neci.nj.nec.com
- \^2 Open Access Pty Ltd,澳大利亚新南威尔士州圣莱昂纳兹市奥尔巴尼街7-9号2层,邮编2065
- \^3 理化学研究所脑科学研究院,日本埼玉县和光市広沢2-1,邮编351-0198
- \^4 卧龙岗大学信息学院 ,澳大利亚新南威尔士州卧龙岗市北菲尔德斯大道,邮编2522
{lawrence,giles}@research.nj.nec.com, ian.burns@oa.com.au, back@brain.riken.go.jp, Ah.Chung_Tsoi@uow.edu.au
http://www.neci.nj.nec.com/homepages/lawrence/
摘要。多层感知机(MLP)分类任务中一个常见问题与单个类别的先验概率相关------如果不同类别对应的训练样本数量差异显著,网络在某些情况下会更难学习稀有类别。这类实践经验与理论结论不符,理论显示MLP可近似贝叶斯后验概率(结果与类别先验概率无关)。我们对这一问题的研究表明,理论与实践的差异源于理论中的假设前提(准确估计贝叶斯后验概率需要满足:网络规模足够大、训练收敛到全局最小值、拥有无限训练数据,且测试集的先验类别概率在训练集中得到了正确体现)。具体而言,该问题通常可归因于:高效的MLP训练机制在多数实际任务中会得到次优解。在本章中,我们将展示该问题、讨论可行的缓解方法,并介绍一种新的启发式方法,实验证明其在心电图(ECG)分类样本任务上表现优异。该启发式方法还可用于简单调整不均衡的误分类成本。
- 本文曾发表于:Orr, G.B. 与 Müller, K.-R. 编辑的《LNCS 1524》,ISBN 978-3-540-65311-0(1998)。** 李·吉尔斯同时任职于马里兰大学学院帕克分校高级计算机研究所,地址:美国马里兰州学院帕克市,邮编20742。G. Montavon 等人(编辑):《神经网络:实践技巧》第二版,LNCS 7700,第295-309页,2012年。© 施普林格-柏林海德堡出版社 2012
1. 引言
事实证明,单个MLP可以近似输入输出空间中的任意多项式。这是已知结论,但如何得到期望输出并不直观,如何获取输出是广为人知的问题。
1.2 技巧
我们考虑一种基,使得属于每个类别的样本的总期望更新量相等(即与该类别的样本数量无关):
\\\left\\langle \\sum_{p=1}\^{N_p} \|s_x \\Delta w_{ki}\^l(p)\|_{p_c=x} \\right\\rangle = c_1, \\forall x \\in X \\
其中\(p_c\)是样本\(p\)的目标分类,\(c_1\)是常数,\(s_x\)是缩放因子,\(x\)遍历所有类别\(X\),\(\langle \cdot \rangle\)表示期望,下标\(p_c=x\)表示求和仅针对属于特定类别\(x\)的样本。该方法实际上会调高低频类别的更新幅度,目的是弥补低频类别在部分场景下容易被"忽略"的问题。
我们假设每个类别中单个样本的期望权重更新量相等:
\\\langle \|\\Delta w_{ki}\^l(p)\|_{p_c=x} \\rangle = c_2, \\forall x \\in X \\
其中\(c_2\)是与\(c_1\)无关的常数。因此所需的缩放因子为:
\s_x = \\frac{1}{p_x N_c} \\
其中\(s_x\)是与属于类别\(x\)的样本相关的所有权重更新的缩放因子,\(N_c\)是类别总数,\(p_x\)是类别\(x\)的先验概率。上述定义的缩放方式会破坏贝叶斯后验概率的相关证明(例如,将某一类别缩放2倍,等同于将该类别的所有样本在数据中复制一遍------这会导致概率分布发生变化),也就是说,没有理由认为该缩放策略是最优的。结合缩放可能提升性能的实证结果,我们提出假设:在先验概率不缩放和上述先验缩放之间,可能存在一个性能优于两种极端情况的折中缩放程度。可采用以下缩放规则选择两种极端情况之间的缩放程度:
\s'_x = 1 - c_s + \\frac{c_s}{p_x N_c} \\
其中\(0 \leq c_s \leq 1\)是用于指定先验缩放程度的常数,\(c_s=0\)表示不按先验概率缩放,\(c_s=1\)表示采用上述缩放方式。这种形式的先验缩放可等价为使用以下替代代价函数进行训练\^3 \^3:
\^3 具有相似动机的代价函数是Hampshire和Waibel提出的"分类优值(CFM)"13,该函数被建议用于类别先验概率不均衡的场景下的性能改进3。在13的实验中,CFM代价函数训练得到的网络与使用MSE准则训练的网络的错误类型不同,因此可通过组合CFM和MSE训练的集成分类器提升性能。然而,13报告的实验结果表明,使用CFM准则训练的网络的分类性能并未高于使用MSE准则训练的网络。
定义1
\E = \\frac{1}{2} \\sum_{k=1}\^{N_p} \\sum_{j=1}\^{N_c} s'_x (d_{kj} - y_{kj})\^2 \\hfill (14.5) \\
其中网络为\(N_c\)个类别各设置一个输出,\(N_p\)是样本总数,\(d\)是期望或目标输出,\(y\)是预测输出,\(x\)是样本\(k\)所属的类别。当使用本节定义先验缩放时,低先验概率类别的\(s'_x\)取值可能较大,这可能需要降低学习率,以避免相对较大的权重更新干扰梯度下降过程。因此比较是否使用先验缩放的优劣会存在问题,因为两种场景下的最优学习率并不相同。另一种方式是将\(s'_x\)的值归一化,令其最大值为1。另一种可能的方式是不缩放权重更新,而是将样本重复输入网络,例如缩放因子为2的类别,其每个样本会被输入两次。这种方式的优势在于可缩小权重更新的幅度范围,例如幅度为\(x\)的更新重复两次,而非进行一次幅度为\(2x\)的更新。这可能允许使用更高的学习率,从而减少所需的迭代次数。但重复输入样本的缺点是有效训练集会变大,在迭代次数相同的情况下训练时间会更长。这类技术可以以概率化的方式实现,这正是下一节介绍的技术内容。
14.2.2 概率采样
Yaeger等人33(第13章)提出了一种名为频率平衡 的方法,与上述先验缩放方法类似。在频率平衡方法中,Yaeger等人每个训练轮次都会随机打乱所有训练样本的顺序,允许每个样本被输入网络的次数为随机值(可为0次或多次,通过概率计算得到)。该方法包含一个平衡因子,与上述缩放因子(\(c_s\))类似。我们在此介绍一种非常类似的方法,称为概率采样 ,其训练样本的随机选择方式如下:类别随机选取,选择类别\(x\)的概率为\((1-c_s)p_x + \frac{c_s}{N_c}\)。随后从选中类别的所有训练样本中随机选择一个训练样本。
14.2.3 后验缩放
除了缩放权重更新或调整有效类别频率外,也可以先按常规方式训练网络,再在训练完成后缩放网络的输出。例如,可以先按常规方式训练网络,再按照先验缩放方法的逻辑(使用公式14.3或14.4)根据先验概率缩放输出。针对该方法的实验
14.3 实验结果(本文预期呈现n×n的观测模式,以及一系列其他模式。)
以下四个输入树(左上、右上、左中、左下)代表带有N、S、P、E方向标签的树,以及四个输出盘。这四个盘分别标记为N、S、P、E。N树和P树未予展示,因为它们对应前一棵树中的N方向和E方向。N方向和E方向见图2,P树见图3,E树见图4。
当采用\(c_s=0\)的缩放设置时,可见类别3和4的灵敏度较低。当使用\(c_s=1\)进行缩放时,所有类别现均可被识别,但类别1的灵敏度更差,类别3和4的假阳性率也显著升高。
先验缩放、以及先验缩放结合后验缩放的结果与概率采样的结果非常相似,但略逊于概率采样。为便于图表理解,未绘制先验缩放的结果,不过定性结果如下:当\(c_s\)较低时,先验缩放与概率采样的表现非常接近;但当\(c_s\)较高时,概率采样在该问题上具有明显优势。这一点或许也在意料之中------先验类别概率的相对较高波动,会导致使用高\(c_s\)时各类别间权重更新幅度的较大波动。所有方法的结果可见表14.2。
表14.2 各种方法的结果。我们展示了\(c_s\)最优选值下的平均结果,以及所有\(c_s\)选值下的平均值。注意,当同时使用后验缩放配合先验缩放或概率采样方法时,\(c_s\)最优值的选择没那么关键。
| 方法 | 先验缩放 | 先验缩放+后验缩放 | 概率采样 | 概率采样+后验缩放 | 等量成员化 |
|---|---|---|---|---|---|
| 最优\(c_s\)下的平均MSSE | 0.10(\(c_s=0.8\)) | 0.096(\(c_s=0.6\)) | 0.099(\(c_s=0.8\)) | 0.089(\(c_s=0.3\)) | 0.195 |
| 所有\(c_s\)下的平均MSSE | 0.19 | 0.10 | 0.18 | 0.099 | 0.195 |
14.4 说明
本节将讨论所呈现技术的实用性、技术局限性,以及它们与理论结果的关联------该理论结果表明,在特定条件下多层感知机(MLPs)可近似贝叶斯后验概率。
14.4.1 收敛与表示问题
我们首先列出四种可能的情况:
- 关于贝叶斯后验概率估计的证明假设网络具有无限数量的隐藏节点,以获得精确近似。对于给定问题,若网络规模过小,会因资源有限而无法准确估计概率。
图14:不同参数组合与正则化强度下的训练与测试损失对比
14. 神经网络组合及其类别概率
- 训练与测试损失对比
- 参数组合
- 正则化强度
图14:针对三种不同神经网络组合的训练与测试损失对比分析,每个组合采用不同的参数配置和正则化强度。该图详细展示了所研究网络中选定参数的绩效指标,包括参数选择对训练和测试损失的影响。下表展示了具体的参数组合及其对应的损失值。
这四种情况都可能导致模型偏向更小的权重,即"更平滑"的模型\(^7\)。关于后验概率的证明并未考虑到这种偏差的可能性,也就是说,理论与实践的差异,部分可以用违背"获得充分收敛"这一假设来解释。当网络偏向"更平滑"的解,无法准确拟合最优函数时,结果可能是倾向于"忽略"低频率类别\(^8\):例如,若网络可以选择拟合高频类别或低频类别,那么拟合高频类别时能得到更低的均方误差\(^9\)。
我们通过示例来验证。我们使用以下分布生成人工训练数据:类别1:N(-5, 1, 2)+N(0, 1, 2)+N(5, 1, 2);类别2:N(-2.5, 0.25, 0.5)+N(2.5, 0.25, 0.5),其中N(\(\mu\), \(\sigma\), x)是均值为\(\mu\)、标准差为\(\sigma\)的正态分布,且被截断至(\(\mu\)-x, \(\mu\)+x)区间内。我们根据这些分布生成了500个训练和测试样本,类别(1,2)的选取概率分别为(0.9,0.1),即训练集和测试集中类别1的样本数量是类别2的9倍。注意两个类别之间没有重叠。
图 14.3 人工问题中网络(不使用概率采样,上图)和使用概率采样(下图)的输出结果。可以看到,不使用概率采样时,网络会"忽略"低频率类别。注意输入已归一化。
表 14.3 使用和不使用概率采样时人工问题的分类误差均值和标准差
| 分类误差 | 均值 | 标准差 |
|---|---|---|
| 标准训练 | 1.1 | 0.24 |
| 使用概率采样 | 0.3 | 0.12 |
| 两种方法各进行了10次试验,结果非常相似(见表14.3)。可以看到,不使用概率采样时,网络会"忽略"类别2。需要注意的是,对这个简单问题使用共轭梯度训练时,标准训练下两个类别的估计准确率都相对较高(使用反向传播调整参数也可能成功)。此处我们不争论反向传播和共轭梯度哪个更好(一般来说,这两种训练算法都不一定能找到全局最小值),仅指出我们自身和他人的经验7,18,19,27表明:共轭梯度在许多问题上并不占优,即反向传播在某类问题上表现更好,共轭梯度在另一类问题上表现更好。在ECG问题上的测试结果显示,共轭梯度的表现明显更差。 | ||
| \(^7\) 通常来说,更小的权重对应更平滑的函数,但这一结论并非总是成立。例如,使用两个tanh型S型函数拟合sech(x)函数时就不符合该规律8(因为sech(x) = lim(d→0)(tanh(x+d)-tanh(x))/d,也就是说,近似效果越好,权重会变得无限大)。 | ||
| \(^8\) 从表征能力(即网络规模)的角度来看,Barnard和Botha3观察到,当网络过小、无法合理近似决策边界时,多层感知机(MLP)网络倾向于猜测高概率类别。 | ||
| \(^9\) Lyon和Yaeger20发现,他们的频率平衡技术降低了先验类别概率对网络的影响,能有效让网络将更多资源分配给低频率类别。 | ||
| \(^{10}\) 使用反向传播进行50万次随机训练更新,初始学习率为0.02,线性衰减至0。 |
14.4.2 重叠分布
参见图14.4。如果类别1和类别2的分布仅通过平移(\(c_1\)和\(c_1'\))产生差异,那么两类之间的决策阈值应设置在\(x_1\)处,此时两个类别被误判为另一类的比例相等。如果类别2的分布如\(c_2\)所示,那么两类之间的决策阈值应设置在\(x_3\)处,这种情况下类别2被误判为类别1的比例高于反向误判的比例。如果希望最大化逐类别灵敏度,那么将\(c_2\)的有效分布缩放为\(c_{2'}\)是合适的做法。同理,若不进行缩放,类别3(\(c_3\))会被"忽略"。
在以下情况下可能需要逐类别进行缩放:
i) 训练集中的样本分布与真实分布不匹配(例如,采集某一特定类别的样本成本可能更高)\(^{11}\);ii) 类别的分布不能代表其相对重要性,例如在医学分类问题中,将患病样本误判为正常的成本远高于将正常样本误判为(疑似)患病样本的成本24。各类别的重要性可能与类别先验概率无关。
注意,在处理高层问题时,通过缩放人为提升低频率类别的重要性是有意义的。例如,自然英语词汇和短语的训练数据中,不同字符的先验概率非常不均衡。Yaeger等人33发现,通过频率平衡降低这些先验概率对网络的影响,能提升高层词语识别训练的性能。
观察结果
a) 若分布不重叠,本身不存在问题。
b) 当分布重叠时,最好对数据进行能减少重叠的预处理。但由于噪声等因素,通常无法实现零重叠。
图 14.4 重叠分布
14.4.3 局限性
我们指出本文所讨论的启发式方法存在两点局限性:
- 局部问题 。
本文提出的启发式方法旨在抵消网络、训练算法和/或训练数据中的偏差。这些偏差没有理由在整个输入空间中保持恒定,例如,缩放可能在某个区域有帮助,在另一个区域却有害。
\(^{11}\) 使用仅包含类别标签、不包含输入信息的数据,可能能得到更准确的类别概率估计。例如,可以从文本数据库中获取词频信息,从健康统计资料中获取各类疾病的发病频率23。
14.4.4 后验证明
从理论上讲,缩放技术会使后验证明失效------当进行逐类别缩放时,用于判定胜出类别的决策阈值应相应调整。这表明,在上述条件不成立时,先验缩放和概率采样技术还有另一种可能的用途。这一用途与低频率类别的估计准确率低于高频率类别的问题相关(见14.2.3节):可以使用经过启发式调整的问题(例如让各类别频率实际相等)进行训练,再对输出或决策阈值做相应调整。
14.5 结论
实际应用中,训练问题或特定分类问题的特征可能意味着,缩放预测的类别概率可以改善整体分类误差和/或其他替代指标上的性能。我们提出的算法包括:a) 根据类别先验概率逐类别缩放权重更新;b) 以概率方式调整类别频率(与Yaeger等人33的频率平衡技术非常相似);c) 训练后缩放输出,以最大化给定的性能指标。
对于心电(ECG)分类问题,我们发现先验缩放、概率采样和训练后缩放技术的性能优于以下两类方案:a) 不使用任何启发式方法;b) 通过子采样使每个类别的样本数量相等。先验缩放和概率采样技术的最佳性能,是在"无缩放"和"按先验概率缩放"之间的缩放程度下获得的,最优缩放程度很难事先确定。但研究发现,将先验缩放或概率采样与训练后缩放结合使用,可以大幅降低最优缩放程度选择的重要性。
参考文献
1 AAMI. 室性心律失常检测算法的测试与性能结果报告. 见:医学仪器进步协会. ECAR 1987, 弗吉尼亚州阿灵顿 (1987)
2 Anand, R., Mehrotra, K.G., Mohan, C.K., Ranka, S.: 一种用于不平衡训练集神经网络分类的改进算法. 《IEEE神经网络汇刊》4(6), 962--969 (1993)
3 Barnard, E., Botha, E.C.: 反向传播高效利用先验信息. 《IEEE神经网络汇刊》4(5), 794--802 (1993)
15 将分治法应用于大规模模式识别任务?尤尔根·艾辛格与迈克尔·费雷丹
摘要
我们并不专注于解决某一特定的人工智能任务,而是致力于开发适用于大规模模式识别问题的一般性解决方案,甚至是更优的解决方案。本文提出了一种基于分治策略的此类任务处理方法,并通过理论分析和实验结果验证了该方法的有效性。
1 引言
神经网络与人工智能领域的大部分研究都聚焦于模式识别。传统的单体神经网络分类器在类别数较少的任务中表现优异,但当类别数量扩展到数千个时,会面临严峻的挑战。为克服这一局限性,本文探索了分治策略在大规模模式识别任务中的应用。
1.2 层次化分类
考虑这样一个动物分类任务:将某一特定物种种群的N/2个类别与其他物种种群的类别分组。给定一组图像,目标是将每张图像划分到对应的物种类别中。层次化分类方法将大规模分类任务拆解为多个层级的子任务,由于每一层都可以独立估计类条件似然,因此该方法能有效降低整体问题的复杂度。然而,该方法的重点在于建模类条件密度,而对于分类准确率而言,建模类别边界更为重要。第二种方法接受这一思路,直接从数据集估计后验类别概率。已有研究(例如6)证明,包括多层感知机与循环神经网络在内的大量人工神经网络,都可以通过训练来近似后验类别概率。近似的准确率取决于诸多因素,其中包括网络的塑性。对比两种方法,直接估计后验概率的方法通常具有更强的判别能力,分类准确率也更高,尤其是在类条件分布极为复杂的情况下。这一事实(还有其他因素)解释了神经网络分类器在许多示例学习任务中取得成功并受到广泛欢迎的原因。然而,当需要区分的类别数量增加到数千个时,神经网络的后验概率估计器无法提供良好的近似,主要有两方面原因:第一,涉及如此大量类别的现实问题通常呈现极不均匀的先验分布(见第14章)。许多神经网络学习算法(尤其是随机在线梯度下降)难以处理分布不均的类别,在近似罕见类别的后验分布时表现尤为糟糕。第二,也是更关键的一点,训练神经网络估计后验概率的一个关键前提是对训练目标采用1-of-N编码,这要求输出神经元的数量与类别数量一致。训练具有数千个输出神经元的网络是不可行的。此外,随着类别数量增加,最优判别函数的复杂度会提升,类间冲突的可能性也会增大。因此,在我们看来,典型的单体神经网络分类器并不适用于类别数量相对较多的任务。
15.2.1 后验概率的分解
参考文献
- 4 Barnard, E., Casasent, D.:《线性分类器准则函数的比较及其在神经网络中的应用》//《IEEE系统、人与控制论汇刊》19(5),1030-1041(1989)
- 5 Barnard, E., Cole, R.A., Hou, L.:《利用专家知识和神经网络分类器定位与分类塞音》//《美国声学学会志》84(增刊1),S60(1988)
- 6 Bourlard, H.A., Morgan, N.:《马尔可夫模型与多层感知机之间的联系》//收录于:Touretzky, D.S.(编)《神经信息处理系统进展》第1卷,502-510页。Morgan Kaufmann出版社,圣马特奥(1989)
- 7 Bourlard, H.A., Morgan, N.:《连接主义语音识别:一种混合方法》。Kluwer Academic出版社,波士顿(1994)
- 8 Scott Cardell, N., Joerding, W., Li, Y.:《为何部分前馈网络无法学习某些多项式》//《神经计算》6(4),761-766(1994)
- 9 Fletcher, R.:《实用优化方法》第二版,第2版。John Wiley & Sons出版社(1987)
- 10 Geman, S., Bienenstock, E., Doursat, R.:《神经网络与偏差/方差困境》//《神经计算》4(1),1-58(1992)
- 11 Gish, H.:《神经网络分类器理解与训练的概率方法》//收录于:《IEEE声学、语音与信号处理会议论文集》,1361-1364页。IEEE出版社(1990)
- 12 Hampshire, J.B., Pearlmutter, B.:《多层感知机分类器与贝叶斯判别函数的等价性证明》//收录于:Touretzky, D.S., Elman, J.L., Sejnowski, T.J., Hinton, G.E.(编)《1990年连接主义模型暑期学校论文集》。Morgan Kaufmann出版社,圣马特奥(1990)
- 13 Hampshire, J.B., Waibel, A.H.:《使用时延神经网络改进音素识别的新目标函数》//收录于:《国际神经网络联合会议》,华盛顿特区,235-246页(1989年6月)
- 14 Haykin, S.:《神经网络:全面基础》。Macmillan出版社,纽约(1994)
- 15 Kanaya, F., Miyake, S.:《模式分类神经网络的贝叶斯统计行为与有效泛化》//《IEEE神经网络汇刊》2(1),471(1991)
- Rosenblatt, F. 等效噪声. 1956. 《IEEE信息论汇刊》第2卷第4期,171-189页50, 450-510
- Rosenblatt, F. 等效噪声. 1956. 《IEEE信息论汇刊》第2卷第4期,171-189页50, 511-631
- Rosenblatt, F. 等效噪声. 1956. 《IEEE信息论汇刊》第2卷第4期,171-189页50, 631-850
- Rosenblatt, F. 等效噪声. 1956. 《IEEE信息论汇刊》第2卷第4期,171-189页50, 850-1100
- Rosenblatt, F. 等效噪声. 1956. 《IEEE信息论汇刊》第2卷第4期,171-189页50, 1100-1300
- Rosenblatt, F. 等效噪声. 1956. 《IEEE信息论汇刊》第2卷第4期,171-189页50, 1300-1400
- Rosenblatt, F. 等效噪声. 1956. 《IEEE信息论汇刊》第2卷第4期,171-189页50, 1400-1600
- Rosenblatt, F. 等效噪声. 1956. 《IEEE信息论汇刊》第2卷第4期,171-189页50, 1600-1700
- Rosenblatt, F. 等效噪声. 1956. 《IEEE信息论汇刊》第2卷第4期,171-189页50, 1700-1800
- Rosenblatt, F. 等效噪声. 1956. 《IEEE信息论汇刊》第2卷第4期,171-189页50, 1800-1900
将潜在类别整合为更优的决策流程。如我们在第4节所述,统计语音识别是后一种场景的典型示例。遵循分治方法但推广决策树框架,后验因子分解的统计方法可用于设计软分类树24, 25。目前我们假设可获得最优后验概率。令S为(可能规模较大的)待区分类别集合( \omega_k )。假设我们有一种可用方法,能够将S划分为M个不相交且非空的子集( S_i ),且( S_i )中的成员几乎不会与( S_j )(( \forall j \neq i ))中的成员混淆。特定类别( \omega_k )现在属于S,且恰好属于其中一个子集( S_i )。因此,我们可以将类别( \omega_k )的后验概率重写为该类别与对应子集( S_i )的联合概率,并按如下方式分解:
math
因此,区分S中所有类别的全局任务已转化为:(1)区分子集( S_i );(2)独立区分每个子集( S_i )内剩余的类别( \omega_k )。递归重复该过程即可得到分层树状结构(图15.1)。注意,每个节点的子类( S_i )的数量无需在整棵分类树中保持恒定,可在树设计阶段进行优化。为计算特定类别的后验概率,需
15.2.2 热噪声
降噪算法作用于个体后产生的感知感受,应与未使用降噪算法的普通人的感知一致。为此,我们需要假设人耳不会受到降噪算法的影响。人耳并非被动器官,它对噪声的反应并非线性。但在此情况下,我们仍需假设其不受降噪算法的影响。
根节点会接收所有可用的训练数据,而树中更下层的节点接收的数据会少于其前序节点。另一方面,从根节点到叶节点,节点的专化性逐步提升。这一事实对训练整个层级结构时的学习速度和模型选择有重要影响。后验概率分层分解的重要问题之一,是每个树节点所需的条件后验实用估计器不可避免的不准确性。神经网络仅能训练用于近似后验类别概率的真实分布,其准确度同时取决于训练集给定的任务内在难度,以及所使用的网络结构和训练方案。对后验真实分布的不精确近似,在分类树的上层造成的影响最大------这一事实必须被树设计流程纳入考量,我们将在后续讨论。
15.3 分类树设计
对于软分类树的设计,或等价于类后验分层分解的设计,算法选择主要取决于初始类别的数量。在处理需应对的大量类别时,我们将先讨论最优树结构,再转向所需的启发式设计算法。
15.3.1 最优性
对于给定任务,以及给定条件节点后验估计器的类型和结构,最优软分类树是指在贝叶斯设定下能产生最低分类错误率的那一种。如果所有节点分类器都能计算真实的条件后验概率,那么树结构不会对分类器性能产生影响,因为任何类型的因子分解(通过任何类型的树结构)都能得到类后验的精确分解。然而在实践中,节点分类器的近似误差使得树结构的选择成为重要问题。对于小规模类别数量,原则上可通过穷举训练和测试特定节点(从根节点开始)的所有可能划分,并选择识别准确率最高的方案来找到最优树。但即使将树结构限制为二叉分支节点和平衡划分,根节点需要检查的划分数量( K )
\K = \\frac{N!}{\\left(\\frac{N}{2}!\\right)\^2} \\
即使对于中等规模的类别数( N ),该公式也能快速让这一算法触及性能极限。因此,我们必须考虑使用启发式方法来推导近优树结构。例如,一种合理的思路是假设:对真实后验的可实现近似的精度,与对应类别集合的可分离性相关。
13.2 先验知识
我们首先回顾将贯穿全书依赖的一些基本概念,开启对大规模聚类分析的讨论。本章将探讨大规模聚类分析的内涵。这是一个相对简单的概念,但我们所用到的数据更为复杂,尤其是许多数据挖掘应用中使用的数据。本书旨在介绍大规模聚类分析在众多不同场景中的应用。我们将不会使用数据挖掘应用中已用过的数据,而是使用此前未在数据挖掘应用中使用的数据。
如上文所述,大规模聚类分析中使用的数据比我们在数据挖掘应用中使用的数据更为复杂。
15.4 语音识别应用
本节将展示神经机器翻译(NMT)引擎在语音识别中的两项主要用途与优势,此外还将呈现NMT引擎的训练结果。NMT引擎可用于将语音转换为文本。
15.4.1 语音识别
语音转文本(STT)任务是指由语音生成文本的过程。语音转文本系统是一种神经网络,它以语音为输入来生成文本。
1 我会走吗
- 定理5.1 令( X )为取值于( \mathbb{R}^d )的随机变量,则( X )的方差由以下公式给出:
定理5.1(大数定律)
对于任意整数( n \geq 1 ),令( S_n = X_1 + \dots + X_n ),其中( X_i )为独立同分布的随机变量,具有有限均值( \mu )和有限方差( \sigma^2 )。则有:
\\frac{S_n}{n} \\to \\mu \\text{ 依概率收敛,当 } n \\to \\infty.
特别地,若底层分布是正态分布( \mathcal{N}(0, 1) ),则:
上述单元可通过简单多项概率建模,因为它们仅条件于一个离散变量(而非输入向量)。该方法的优势是解耦估计流程,可分离时序建模与声学建模。因此,它允许在训练后轻松调整隐马尔可夫模型(HMM)的状态拓扑,以修改时序行为。例如,状态复制是一种常用的技术,用于提升音素模型的最短时长约束。在分离发射概率与转移概率估计的基础上,状态复制只需在多个状态间共享声学模型,并调整转移概率即可。然而上述方法的劣势在于发射概率与转移概率的动态范围不匹配。原因是转移概率被单独建模为多项概率,受到求和为1的约束,这导致发射概率占据主导地位,转移概率几乎不影响整体系统性能。
15.4.3 音素上下文建模
迄今为止我们一直假设,每个被建模的单音素仅需一个隐马尔可夫模型(HMM)(见图15.2)。由于英语可通过约45个单音素建模,人们可能会认为仅需训练对应数量的HMM模型即可。但在实际中,人们观察到一种称为协同发音的现象,会导致特定单音素的实际发音因音素上下文不同而产生较大差异。通常,对音素上下文中的音素进行显式建模可大幅提升识别准确率。然而,如何实现鲁棒的上下文相关建模并不明确。例如,所谓三音素模型即是一例。三音素本质上是特定单音素在特定上下文(覆盖左右各一个音素)中的发音实现。假设单音素库有45个音素,则(理论上)可能的三音素数量为( 45^3 = 91125 )。由于语言中的约束,大量三音素在实际语音中很少出现甚至永远不会出现。因此使用三音素会导致系统参数过多,难以训练。为避免该问题,需引入一种机制在不同三音素模型间共享参数。通常,人们采用类似分类回归树(CART)的决策树,基于先验概率和声学相似性,将三音素聚类为泛化三音素。这种自上而下的聚类需要指定可行属性,作为音素上下文相关的问题来划分树节点。通常使用元音、辅音、摩擦音、爆破音等语言类别。此外,人们可通过允许依赖更宽的上下文(而非仅左右相邻音素),将三音素泛化为多音素。图15.3展示了一个典型的决策树,用于对特定单音素状态的多音素变体进行聚类。给定系统中每个单音素状态的决策树所有叶节点的集合,构成了一组鲁棒且通用的上下文相关次音素单元。由于每个这样的单元对应多个三音素HMM
322 J. Fritsch 与 M. Finke
图15.3 基于决策树的语音上下文建模:图中展示的是为单音素/AX/的中间状态(0状态隐马尔可夫模型,HMM)建模语音上下文的决策树,这些状态通常被称为绑定状态。通常,大词汇量连续语音识别器会建模3000到24000个这样的绑定状态。主流大词汇量连续语音识别(LVCSR)系统可扩展至任意数量的上下文相关建模单元,因为每个绑定状态的发射概率和转移概率是独立估计的。基于音韵特征的上下文相关HMM状态划分条件:
- +1 = 响音?
- +1 = 唇音?
- +1 = 双唇音
- +1 = 响音?
- -1 = 浊音?
- AX-m(1)
- AX-m(4)
- AX-mt+
- AX-mt+
- +1 = 唇音?
- +1 = 流音?
- +1 = 咝音?
- +1 = 唇音?
- AX-m(1)
- N
- Y → AX-m(1)
- +1 = 咝音?
- +1 = 流音?
- AX-m(5)
- -1 = 浊音?
- AX-me(5)
- AX-mt+
- +1 = 唇音?
- AX-m(4)
- AX-mt-
- +1 = 咝音? → AX-me()
- +1 = 流音?
- AX-mt+
- Y
- Y →
- -1 = 浊音?
- AX-me(5)
- i
- 唇音?
- AX-mt+
- +1 = 咝音?
- N
- Y
- i = 浊音?
- AX-mt+
- Y
- AX-me()
- i
- Y → AX-me(4)
- 1 = 流音?
- AX-m(1)
- N
- AX-m(1)
- i
- Y →
- -1 = 唇音?
- AX-mr+
- +1 = 咝音?
- +1 = 唇音?
- AX-me(1)
- AX-nt+
- i
- Y →
- -1 = 唇音?
- AX-mr+
- +1 = 咝音?
- +1 = 流音?
- Y
- AX-me(1)
- N
- AX-m(1)
- i
- Y →
- +3 = 后元音?
- AX-me(5)
- AX-m(+)
- i
- N
- Y
- AX-mr+
- i
- Y
- -1 = 浊音?
- Y
- Y →
- -1 = 唇音?
- AX-mr+
- i
- Y
- X-mp)
15. 将分治法应用于大规模模式识别任务
虽然\(p(s_i|X_1)\)通过神经网络估计,但先验概率\(p(s_i)\)可通过训练数据中观测到的相对频率来估计。多位研究人员(例如3, 14)报告称,当仅发射概率的估计方法与对比方法存在差异时,连接主义声学建模的性能有所提升。由于语音识别器的主流隐马尔可夫模型(HMM)大多基于最大似然框架,通过期望最大化(EM)算法训练,因此通常会观察到,纳入专注于建模类别边界而非类别分布的判别式训练神经网络是有益的。此外,与基于高斯混合的声学模型相比,连接主义声学模型常被报道可用少得多的参数达到相同的准确率。然而,当HMM状态数量增加以建模上下文相关多音素(三音素、五音素)时,单个神经网络已无法用于估计后验概率。此时必须对后验状态概率进行因子分解17,并将后验概率估计过程模块化。在大多数方法中,后验概率基于音韵上下文或单音素身份进行因子分解(例如4, 9, 15)。将因子分解视为后验的层次化分解,我们通过引入与基于先验知识(如宽音类(静音、噪声、音素)、音韵上下文和HMM状态身份)的多级后验因子分解相对应的树结构神经网络层次结构(HNN)12, 13,对上下文相关连接主义声学建模方法进行了推广。图15.4展示了该结构的拓扑。
15.4.5 ACID聚类
在本层次结构的顶层,我们通过两个网络(静音网络SIL-Net、语音网络SPEECH-Net)区分静音、噪声和语音声音。进行这种特定划分的动机来自观测发现:这三类在声学上极易区分。树结构的其余部分将语音的后验概率进行分解,条件为单音素、上下文和状态身份,因为这些都是任意基于音素的HMM语音识别器会建模的便捷音类。图15.4的层次结构还可以进一步分解,例如基于语言特征(如浊音/清音、元音/辅音、擦音等)对条件单音素后验概率(由单音素网络MONO-Net估计)进行因子分解。这种分解的动机有两个:第一,它减少了每个节点的本地类别数量,提升了近似准确率;第二,它产生了一组解耦的专用专家网络,只需处理更少的音韵变化即可。然而,如第3节所述,利用先验知识设计神经网络层次结构时,并未考虑观测类别在特征空间中的差异性。因此我们开发了一种凝聚聚类算法,可自动设计此类层次结构,用于估计大量类别的后验概率。我们将该框架命名为ACID HNN11。ACID(基于信息散度的凝聚聚类)是一种自底向上的聚类算法,用于设计树结构软分类器,例如神经网络层次结构(HNN)10, 11。尽管该算法是为连接主义声学建模开发的,但原则上可用于任何分类任务。从通常数量非常大的初始类别集(例如语音识别器中决策树聚类的HMM状态集²)开始,ACID算法会构建一个二进制层次结构。随后会将结果树中的节点实例化为对应条件后验概率的估计器,例如以HNN的形式实现。ACID算法中的聚类指标是对称信息散度26
\d(s_i, s_j) = \\int_x \\left( p(x\|s_i) - p(x\|s_j) \\right) \\log \\frac{p(x\|s_i)}{p(x\|s_j)} dx \\
即聚类之间的类别条件密度的对称信息散度。与大多以均值表示聚类、采用欧氏距离指标的标准凝聚聚类算法不同,我们在ACID算法中选择用参数化混合密度(高斯混合)表示聚类。
² 在我们的实验中,初始类别最多达到了24000个。
1. A. 问题与目标
解决学习比实际用于求解的函数更简单时产生的问题,仍会总体上引导我们得到灵活性更差的模型。本研究的目的是设计一种鲁棒分类器,能够从少量训练数据中学习。我们还旨在解决过拟合问题。目标是找到一个泛化能力良好、不会对训练数据过拟合的分类器。本文提出了一种解决这些问题的方法。
ACID初始化
初始化需要估计识别器建模的所有(绑定)状态的类别条件似然。因此初始类别的数量\(N\)由语音识别器的其他部分决定,即由通常用于聚类音韵上下文(或等价地,绑定HMM状态27)的音素决策树决定。这些类别的初始类别条件密度可通过状态对齐,在训练数据和由训练转录生成的对应HMM状态图上,采用维特比算法或前向-后向算法计算。因此,ACID算法的初始参数模型估计仅需遍历训练数据一次。初始模型估计完成后,实际的ACID聚类无需再额外遍历训练数据。此外需注意,该算法在不知晓音素身份的情况下,仅基于声学差异性对HMM状态进行聚类。
ACID树状图
出于演示目的,图15.5展示了一次典型ACID聚类运行的树状图,该运行针对相对较小的仅56个初始类别的集合,这些类别对应上下文无关语音识别器中的单状态单音素HMM集合。该类别集包含44个标准英语音素,外加7个带加号标记的噪声声音、4个用于建模感叹词的和号标记音素,以及静音(SIL)。顶层的划分已经几乎完美地将静音、呼吸声和噪声声音(下层子树)与音韵声音(上层子树)分开。此外,在ACID树中还可以观察到声学相似音素的聚类,例如:
- IX, IH, I, Y
- JH, CH, SH, ZH
11.13 VCD聚类的典型分类体系
11.13.1 VCD聚类
VCD聚类是寻找彼此最相似的VCD并将它们分组为簇的过程。为了衡量两个VCD之间的相似度,我们需要使用一个度量指标。我们可以使用余弦相似度指标,该指标用于衡量语音识别中两个向量之间夹角的余弦值。虽然全局树拓扑由ACID聚类(或其他任意树设计流程)的结果决定,但仍需确定局部(节点内部)分类器的拓扑结构。局部分类器的任务是基于可用的训练数据估计条件后验概率。由于特定的局部估计器会以树中所有前驱节点为条件,因此它仅接收来自可从对应节点到达的所有类别(叶节点)的训练数据。这导致从根节点向树更下方的节点移动时,训练集逐渐缩小。图15.6通过一个包含6000个叶节点的二阶层级的可用训练模式数量与节点深度的关系图,展示了层级神经网络(HNN)的这一特性。注意纵坐标为对数刻度。
层级顶部
- 可用的训练数据量充足
- 支持大型节点分类器
- 任务相对简单、通用
层级底部
- 仅可用的训练数据量较少
- 需要使用相对较小的节点分类器
- 分类任务相对困难
- 专业化程度高
图15.7. 用于连接主义声学建模的神经网络层级:上半部分展示了节点合并后的ACID聚类HNN。该架构会计算一组广义多音素的后验概率。为便于集成到隐马尔可夫模型(HMM)框架中,这些后验概率会被转换为缩放似然。与实际HMM状态的对应关系通过音素决策树实现。由于任务固有的可变性和复杂性,以及大量的训练数据,典型的语音识别系统会将数千个不同的亚音素单元(HMM状态)建模为基类。这需要基于数百万个训练样本,训练一个用于数千个不同声学类的后验概率估计器,以便充分利用语音识别器的全建模粒度。
| 层级 | # 节点(6k类别) | # 隐藏单元/网络(6k) | # 节点(24k类别) | # 隐藏单元/网络(24k) |
|-------|----------------------|-----------------------------|-----------------------|-------------------------------|
| 1 | 1 | 256 | 1 | 128 |
| 2 | 1 | 256 | 10 | 128 |
| 3 | 1 | 256 | 77 | 64 |
| 4 | 3 | 192 | 524 | 32 |
| 5 | 19 | 128 | 3434 | 16 |
| 6 | 121 | 64 | - | - |
| 7 | 816 | 32 | - | - |
| 总计 | 962 | - | 4046 | - |
图15.8. 6k(左)和24k(右)类别ACID聚类HNN概览。压缩系数范围为2到约8。我们发现,在处理大规模类别时,中等程度的树压缩可提升分类器性能。6k系统的树分类器总参数量为2M,10k系统为2.4M,24k系统为3.1M。
训练算法与参数
在不同规模的训练数据上训练分布式、层级化组织的神经网络集合是一项具有挑战性的任务。我们的训练准则为最大似然,假设所有基类服从多项概率模型(1-out-of-N)。每个训练模式都关联一个目标类别标签,用于指示正确的基类。从根节点到当前目标类叶节点路径上的所有节点中的网络都会接收当前模式进行训练。由于训练数据量巨大,我们采用小批量(10-100个模式)的对数似然在线(随机)梯度上升法训练各个网络。在优化目标函数时使用二阶方法的更复杂训练算法在我们的场景中成本过高------单轮训练需要处理训练数据库中的全部6000万个模式,在Sparc Ultra工作站上需要3至5天。因此,实用的训练算法收敛所需时间不得超过1至4轮。此外,由于需要训练的网络数量庞大,候选训练算法不能使用大量内存------而二阶方法可能会存在此类问题。当然,单个节点分类器的训练相互独立,因此可以轻松在共享内存多处理器上并行化,这缓解了后一个限制。由于我们的训练方法采用随机梯度上升,我们还使用了一个简单的动量项来平滑梯度。同时,我们为每个网络设置局部学习率,这些学习率以全局学习率初始化,并单独适配到特定的学习任务。全局学习率按照指数衰减方案进行退火:
\\\eta_G\^{n+1} = \\eta_G\^n \* \\gamma_G \\
- 对以下方程应用欧拉法,求解其解。
\\\dot{x}=\\frac{d}{dt}x=\\frac{0.5(x-x_0)}{t} \\
- 对于以下方程,若满足以下条件,求\\alpha的值。
\\\frac{\\alpha}{\\alpha+2} = 0.5 \\
- 使用相同的最大学习率。全局最大学习率退火与局部自适应学习率(约束为始终不超过全局学习率)的组合能获得最佳效果。
泛化/过拟合
简而言之,我们的实验中没有观察到任何过拟合。从独立交叉验证集上的性能来看大型层级的训练情况(图15.9),我们可以看到该数据上的似然值趋于平稳,但从未再次下降,而这在较小的任务中经常出现。在图15.9的图表中,竖线表示多次通过训练数据(包含87000条语音)的训练轮次。显然,大量可用的训练数据实现了出色的泛化能力,因此早停是不必要的。这种行为乍一看令人惊讶,因为我们没有对局部多层感知机(MLP)使用任何类型的显式正则化。但仔细分析后,我们可以确定HNN在此任务上具有良好泛化能力的几个原因:
- 在我们的案例中,训练数据噪声极大,因为样本来自大量不同的说话人和录放条件。使用带噪声的数据训练类似于正则化,因此能提升泛化能力2。
- 考虑6k类别系统的层级(图15.8)。树底部的816个网络中,部分可能没有见过足够的训练模式,无法很好地泛化到新数据。尽管这些网络加起来占总网络数的85%,但在计算任意特定的后验概率时,它们仅相当于7个网络中的一个。层级上部的网络对后验概率的计算影响最大。对于这些网络,可用的训练数据量极为充足,因此测试集误差趋近于训练集误差率。换言之,可以实现最优泛化。
结果
我们将提出的层级分类器作为连接主义声学模型,在语音识别系统中进行评估。语音识别器的性能通常通过大型测试语音集上的词错误率来衡量。在我们的案例中,我们使用Janus识别器8,在1996年官方Switchboard评估测试集中每位说话人的前30秒语音上测试不同的声学分类器,该测试集包含366个未出现在训练集中的语音。
| 声学分类器 | 类别数 | 参数量 | 词错误率 |
|---|---|---|---|
| HNN | 10000 | 2.0 M | 37.3 % |
| ACID/HNN | 6000 | 2.4 M | 36.7 % |
| ACID/HNN | 24000 | 3.1 M | 33.3 % |
图15.9. 24k ACID/HNN架构训练过程中的交叉验证
上述结果与最先进系统的结果相当,表明聚类ACID明显优于预先设定的层次分类器。我们推测神经网络自动聚类层次结构性能更优的原因是树拓扑结构的差异。诸如本文提出的ACID HNN树这类自动聚类HNN,具有较小且相对均匀的平均分支因子,能够稳健训练条件后验概率估计器。相比之下,人工设计的层次结构(如10k HNN树)包含具有相当大分支因子的节点。图15.10展示了10k树结构中所有网络的分支因子。
图15.10. 10k HNN中单个节点的分支因子
该树中观察到的最大分支因子为276。这意味着需要联合估计多达276个类别的条件后验概率,可能导致树中部分网络对真实后验概率的近似效果较差。此外,两种ACID HNN分类器相较于人工设计的10k树的优越性能,证明了层次方法的完全可扩展性,也证明了增加参数数量的合理性。此前尝试训练用于24k类的人工设计层次结构,未能获得可作为语音识别器声学模型的分类器。这种情况下真实后验概率近似效果差,会导致解码时除先验运算出现不稳定性。除此之外,我们尚未知晓任何其他非参数方法能够直接且判别性地估计如此多类别的后验概率。
15.5 结论
我们提出并讨论了一种利用分层连接主义估计大量类别后验概率的方法论
参考文献
- Baum, L. A. D. A. A. "认知"一词在"认知科学"语境中的使用存在问题。"认知"这个词本身就有问题。13 Fritsch, J.:用于语音识别的模块化神经网络,技术报告CMU-CS-96-203,卡内基梅隆大学,宾夕法尼亚州匹兹堡(1996年)
14 Hochberg, M.M., Cook, G.D., Renals, S.J., Robinson, A.J., Schechtman, R.S.:1994年ABBOT混合连接主义-隐马尔可夫模型大词汇量识别系统。收录于:口语系统技术研讨会论文集,第170--176页。ARPA(1995年1月)
15 Kershaw, D.J., Hochberg, M.M., Robinson, A.J.:混合循环网络-隐马尔可夫模型语音识别系统中的上下文相关类,技术报告CUED F-INFENG TR217。剑桥大学工程系,英国剑桥(1995年)
16 Merz, C.J., Murphy, P.M.:加州大学欧文分校机器学习数据库库,加州大学信息与计算机科学系(1996年)。http://www.ics.uci.edu/~mlearn/MLRepository.html
17 Morgan, N., Bourlard, H.:基于统计方法因式分解网络。《神经计算》4(6),835--838(1992年)
18 Morgan, N., Bourlard, H.:混合隐马尔可夫模型/连接主义连续语音识别导论,《信号处理杂志》,25--42(1995年5月)
19 NIST,对话式语音识别研讨会,DARPA Hub-5E评估,1997年5月13--15日,马里兰州巴尔的摩
20 Prechelt, L.:Proben1------神经网络基准问题集与基准规则。技术报告21/94,德国卡尔斯鲁厄大学(1994年)
21 Quinlan, J.R.:决策树归纳。《机器学习》1,81--106(1986年)
22 Rabiner, L.R.:隐马尔可夫模型教程及其在语音识别中的部分应用。《IEEE汇刊》77,257--285(1989年)
23 Safavian, S.R., Landgrebe, D.:决策树分类器方法综述。《IEEE系统、人与控制论汇刊》21(3),660--674(1991年)
24 Schürmann, J., Doster, W.:层次分类器设计的决策理论方法。《模式识别》17(3),359--369(1984年)
25 Schürmann, J.:模式分类:统计与神经方法的统一视角。约翰威立国际出版公司,纽约(1996年)
26 Tou, J.T., Ganzales, R.C.:模式识别原理。艾迪生韦斯利,雷丁(1974年)
27 Young, S.:大词汇量连续语音识别:综述。剑桥大学CUED技术报告(1996年)
《时间序列 Tricks》序言
在本文中,我们聚焦时间序列,以预测时间序列数据并最大化性能。在第1章中,John Mack介绍了一系列时间序列预测方法,包括单人数据点的分类,但时间序列数据的挑战不仅仅是单人数据不足,还存在单人数据不足的问题。总的来说,我们给出一个简单解释:人脑逻辑不足以处理时间序列,需要更多数据,数据不足是核心问题。
如果表述正确的话,无论是可视化呈现还是文本,甚至更多方面均成立。
在时间序列数据场景下,该过程既不是单个点,也不是单人数据。
CV可以利用时间序列获取不同特征的方式,正是CV能够借助时间序列得到不同特征的原因。
为了解决这个问题,我们首先需要确保数据可用。例如,问题涉及大量数据点:
首先,数据为大量点,虽数量不足,但足以完成第一步,这是最优选择;
其次,数据为大量点,足以完成第二步,这是最优选择;
第三,数据为大量点,足以完成第三步,这是最优选择;
第四,数据为大量点,足以完成第四步,这是最优选择;
第五,数据为大量点,足以完成第五步,这是最优选择。
参考文献:
1 J. Mack,《时间序列预测》,2020年。
2 J. Mack,《时间序列分类》,2020年。
3 J. Mack,《时间序列预测》,2020年。
4 J. Mack,《时间序列预测》,2020年。
5 J. Mack,《时间序列预测》,2020年。
6 J. Mack,《时间序列预测》,2020年。
7 J. Mack,《时间序列分类》,2020年。
8 J. Mack,《时间序列预测》,2020年。
9 J. Mack,《时间序列预测》,2020年。
10 J. Mack,《时间序列分类》,2020年。
11 J. Mack,《时间序列预测》,2020年。
12 J. Mack,《时间序列预测》,2020年。
13 J. Mack,《时间序列分类》,2020年。
14 J. Mack,《时间序列预测》,2020年。
15 J. Mack,《时间序列预测》,2020年。
16 J. Mack,《时间序列分类》,2020年。
17 J. Mack,《时间序列预测》,2020年。
18 J. Mack,《时间序列预测》,2020年。
19 J. Mack,《时间序列分类》,2020年。
20 J. Mack,《时间序列预测》,2020年。
第4章
4.1 模型及其局限性
4.1.1 模型
4.1.2 局限性
本节介绍所提出的模型及其局限性。所提出的模型基于深度神经网络,该网络共有三层:第一层为输入层,接收输入图像作为输入;第二层为隐藏层,包含一组滤波器;第三层为输出层,包含预测值。
-
- 所提出的模型基于深度神经网络。
-
- 该网络共有三层。
-
- 第一层为输入层,接收输入图像作为输入。
-
- 第二层为隐藏层,包含一组滤波器。
-
- 第三层为输出层,包含预测值。
一种用于根据输入的重要性(估算值)调整噪声水平 的算法:对于描述完整或不重要的输入,使用较小的噪声水平;而对于描述较差(可能受噪声污染)的输入,则应选择较大的噪声水平(第397页)。
下一步介绍了用于优化架构的剪枝方法,包括:(1) 节点剪枝 (第401页),以及(2)多种权重剪枝 :(a) 随机 剪枝(第401页)、(b) 早期脑损伤 剪枝(第402页)、(c) 逆峰度 剪枝(第403页),以及(d) 不稳定性 剪枝(第405页)。
作者在其应用中将不稳定性剪枝和早期脑损伤剪枝结合使用:前者可生成稳定的模型,后者能生成非常稀疏的网络。
最后,将整套技巧整合到统一的训练流程中,并在验证集上监控:交替使用早停、剪枝和权重衰减正则化(第414页),从而对1994年6月至1996年5月的德国债券利率做出了精准估计(第415页)。
Jenny & Klaus.
参考文献
- 1 Breiman, L.: Bagging预测器. 《机器学习》26(2), 123--140 (1996)
- 2 Caruana, R., de Sa, V.R.: 将薄弱特征提升为监督器:部分输入作为输出效果更佳. 载于:Mozer, M.C., Jordan, M.I., Petsche, T. (编) 《神经网络信息处理进展》,第9卷,第389页. 麻省理工学院出版社 (1997)
- 3 Caruana, R., Pratt, L., Thrun, S.: 多任务学习. 《机器学习》28, 41 (1997)
《用神经网络预测经济:挑战与解决方案综述》*
约翰·穆迪
计算机科学与工程系
俄勒冈科学技术研究生院
美国俄勒冈州波特兰市97291,邮政信箱91000
http://www.cse.ogi.edu/~moody/
摘要
宏观经济预测是一项难度极高的任务,原因在于目前缺乏准确、可信的经济模型。经济预测中最准确的模型------"黑箱"时间序列模型,几乎无需依赖经济结构的假设。由于数据序列较短、噪声水平高、非平稳性和非线性效应等因素,构建可靠的时间序列模型颇具挑战。本章将阐述这些挑战,并介绍对应的神经网络解决方案。其中重要问题包括平衡偏差-方差权衡 与噪声-非平稳性权衡 。方法概述包括:超参数选择(正则化参数和训练窗口长度)、输入变量选择与剪枝、网络架构选择与剪枝、新型平滑正则化器、集成预测与模型可视化。后续章节将深入介绍平滑正则化器、通过广义预测误差 (GPE )和非线性交叉验证 (NCV )进行架构选择、通过基于敏感度的剪枝 (SBP)进行输入选择,以及模型解释与可视化。全文均提供了美国工业生产指数预测的实证结果。这些结果表明,相较于传统的线性时间序列和回归方法,采用最先进的神经网络模型可获得更优的性能。
* 本文曾发表于:Orr, G.B. 与 Müller, K.-R. (编):《LNCS 1524》,ISBN 978-3-540-65311-0 (1998);G. Montavon 等 (编):《神经网络实用技巧(第2版)》,LNCS 7700,第343--367页,2012. © 施普林格-柏林海德堡出版社 2012
16.1 宏观经济预测的挑战
经济预测领域极为关注的是预测"商业周期",即整体经济活动的水平。商业周期通过各类经济指标的波动影响整个社会,这些指标包括失业率(痛苦指数)、企业利润(影响股市价格)、制成品和新住房单元的需求、破产率、研发投资、资本设备投资、储蓄率等。商业周期还会影响重要的社会政治因素,例如民众的整体情绪和选举结果。经济学家用于追踪商业周期的标准经济活动衡量指标包括国内生产总值(GDP)和工业生产指数(IP)。GDP是比IP更广泛的经济活动衡量指标。但GDP仅由美国商务部按季度统计,而工业生产指数的统计和发布频率为每月一次,时效性更强:IP的周期波动比GDP更显著,因此其预测工作也更具趣味性和挑战性(见图16.1)。
图1. 1967年至1993年的美国工业生产指数(IP)。阴影区域代表官方衰退期,非阴影区域代表官方扩张期。衰退期和扩张期的边界由美国国家经济研究局基于多项宏观经济序列确定。从IP的商业周期可以看出,其波动幅度、持续时间和结构均缺乏规律。
宏观经济建模与预测极具挑战,原因如下:
非实验性科学 :与进化生物学、宇宙学类似,宏观经济学在很大程度上是一门非实验性科学。世界经济仅存在一个实例,且每个国家都不是封闭系统。观察经济体状态和总体经济活动十分困难,一般无法开展受控实验。
无先验模型:由于经济系统的复杂性,目前尚未诞生令人信服、准确的商业周期动力学科学模型。无法对经济开展受控实验,以及群众心理、社会学等不可量化因素也会影响经济活动。经济学家在构建宏观经济模型时主要采用两种方法:计量经济学模型和线性时间序列模型。
计量经济学模型
这类模型试图以相对精细的粒度模拟宏观经济,通常包含数百乃至数千个方程和变量。模型结构由人工确定,参数则通过数据估算得出。虽然计量经济学模型在定性理解经济运行规律方面有一定作用,但其定量预测能力极差,这一点早已臭名昭著。
线性时间序列模型
鉴于计量经济学模型糟糕的预测表现,许多经济学家转而采用标准线性时间序列分析的经验"黑箱"技术来分析并预测经济活动。这类时间序列模型通常包含约6到12个输入序列。在过去十余年间,这类模型中最可靠、最流行的是贝叶斯向量自回归(BVAR)模型22。不过我们自身的研究发现,神经网络的表现往往优于标准线性时间序列模型。由于缺乏经济先验模型,输入变量选择、滞后结构选择和网络模型选择成为关键问题。
噪声
宏观经济时间序列本质上噪声非常大,通常信噪比较低(见图16.2和图16.3)。噪声的来源包括经济中大量未被观测的变量,以及用于收集可测变量数据的调查技术。噪声分布通常呈重尾特征,且包含异常值。数据序列较短与噪声水平较高叠加,使得控制模型方差、模型复杂度和偏差-方差权衡成为重要问题9。非线性模型复杂度的衡量指标之一是\(P_{\text{eff}}\),即有效参数数量24, 25。可通过正则化和模型选择技术控制\(P_{\text{eff}}\),以平衡偏差和方差。
非平稳性
随着全球经济随时间演变,宏观经济序列本质上具有非平稳性。更复杂的是,许多宏观经济序列的定义会定期调整,用于测量这些序列的技术也会同步更新。此外,随着更优质数据的收集或定义的调整,关键序列的估计值也会定期回溯修订。不仅经济的底层动态会随时间变化,测量序列的噪声分布也会随时间波动。在许多情况下,这种非平稳性会缩短数据序列的可使用长度,因为使用旧数据训练会引入预测偏差。噪声与非平稳性叠加产生了噪声-非平稳性权衡问题23:使用较短训练窗口时,有限训练数据中的噪声会导致模型方差或估计误差过大;而使用较长训练窗口时,非平稳性又会导致模型偏差或近似误差过大。
非线性
传统的宏观经济时间序列模型是线性的12, 14。然而,多项近期研究表明,在某些情况下,非线性特征可以改进宏观经济预测模型13, 27, 39, 35, 40。
图16.2. 美国工业生产指数,以及时间尺度为1、3、6、9、12个月的五个收益率序列(变化率以对数差分衡量)。这些收益率序列是文献27中报告的1950年1月-1979年12月/1980年1月-1990年1月标准基准结果的预测目标。预测任务的难度从目标序列极低的信噪比和动荡表现即可印证。对于1个月的收益率,表1中我们的神经网络预测器表现显示信噪比约为0.2。所有收益率序列均存在显著的非平稳性,且噪声分布偏离正态分布。(见表16.1、图16.2和图16.3。)根据我们自身的经验,宏观经济序列的神经网络模型能捕捉到的非线性程度通常较为温和27, 20, 38, 42, 28, 45。由于噪声水平高、可用数据有限,更简单的模型更具优势,这使得非线性的可靠估计变得更加困难。
16.2 神经网络解决方案综述
我们一直在研究多种超越普通 神经网络方法的神经网络模型选择算法。¹
¹ 我们将普通 神经网络定义为:使用全量输入变量、固定数量的隐藏单元,在固定长度的数据窗口上,通过反向传播算法训练,使用验证集实现早停的全连接两层Sigmoid网络,不使用变量选择、剪枝、正则化或集成技术。
本研究的目标是构建预测风险(即预期测试集误差)最小的模型。我们正在研发和测试的技术将在下文介绍。鉴于本文综述篇幅有限,我不会试图列出文献中所有相关参考文献。
图16.3. 美国先行指标指数(DLEAD)及其当前定义的11个构成序列。先行指数是预测商业周期的关键工具。工业生产(IP)预测模型的输入变量包括转换后的DLEAD及其若干构成序列27。宏观经济预测的难度再次凸显,这源于DLEAD及其构成序列的高噪声水平和动荡表现。(注:过去47年间DLEAD包含的构成序列多次调整,各序列标注采用Citibase的定义:HSBP指住房开工数,FM2D82是M2货币供应量,FSPCOM是标准普尔500股票指数,以此类推。)
超参数选择
超参数是出现在训练目标函数中、但并非网络自身结构的参数,例如正则化参数、训练窗口长度和鲁棒尺度参数。图16.4和图16.5展示了12个月IP预测模型中调整正则化参数和训练窗口长度的示例:调整正则化参数会权衡偏差与方差,调整训练窗口长度则会权衡噪声与非平稳性。
表16.1. 文献27给出的1980年1月至1990年1月期间工业生产收益率归一化预测误差对比汇总。四种模型类型均使用1950年1月至1979年12月的数据训练,神经网络模型的表现显著优于简易预测器和线性模型。对于每个预测期,归一化因子为训练期目标变量的方差。IP序列的非平稳性导致简易预测器的测试误差大于1.0。在后续工作中,我们针对IP问题取得了明显更好的结果20, 38, 42, 28, 45。
| 预测期(月) | 简易预测器(训练集均值) | 单变量AR(14)模型迭代预测 | 多元线性回归直接预测 | 带PC剪枝的Sigmoid网络直接预测 |
|---|---|---|---|---|
| 1 | 1.04 | 0.90 | 0.87 | 0.81 |
| 2 | 1.07 | 0.97 | 0.85 | 0.77 |
| 3 | 1.09 | 1.07 | 0.96 | 0.75 |
| 6 | 1.10 | 1.07 | 1.38 | 0.73 |
| 9 | 1.10 | 0.96 | 1.38 | 0.67 |
| 12 | 1.12 | 1.23 | 1.20 | 0.64 |
输入变量选择与剪枝
选择一组有信息量的输入变量及其恰当的表示形式(即"特征")是解决任何预测问题的关键。变量选择与表示问题属于整体模型选择问题的一部分,变量选择流程可分为模型无关型和模型依赖型两类。
Delta检验是一种模型无关流程,属于非参数统计算法,通过直接检测数据集来选择有意义的预测变量36。其他模型无关技术会用到互信息4,5,46或联合互信息46。
基于灵敏度的剪枝(SBP)技术是模型依赖型算法,可从训练好的网络中移除不必要或有害的输入变量33,30,25,42,21,其详细方法将在16.4.6节介绍。
模型选择与剪枝
控制噪声问题的偏差-方差权衡的一个关键技术是选择网络的大小与架构。对于两层网络,这包括选择内部单元数量、确定连接结构,以及剪枝不需要的节点、权重或权重矩阵特征节点。
用于选择内部单元数量的构造型算法是序贯网络构造(SNC)2,30,25。用于剪枝权重和内部节点的技术包括基于灵敏度的剪枝方法,如最优脑损伤(OBD)19和最优脑外科医生(OBS)15。
我们最近提出的监督主成分剪枝(PCP)方法20会剪枝权重矩阵的特征节点,而非权重本身。由于PCP无需训练至局部最小值,因此可以与早停策略配合使用;相比OBS,PCP具有计算优势,当输入变量或隐藏节点活动存在噪声且相关时,其表现可优于OBD。
图16.4. 噪声-非平稳性权衡 及最优训练窗口选择的示例,本例中训练窗口为19年38,28。15年和20年的较长训练窗口因非平稳性导致的模型偏差,产生了更高的测试集误差;5年和7年的较短训练窗口因数据序列噪声和小数据集带来的模型方差,导致了明显更高的误差。上述测试误差对应使用图16.5所示最优正则化参数0.15训练的模型。
图16.6展示了在一组IP预测模型中使用PCP后获得的预测误差下降情况。16.4节将更详细地阐述模型选择问题,以及如何使用*非线性交叉验证(NCV)*等预测风险估计值来指导选择流程。
更优的正则化器
通过正则化或剪枝在模型中引入偏差可降低模型方差,进而降低预测风险。选择合适的偏差是最大程度最小化预测风险的最佳方式,其中一类偏差是平滑约束。
我们针对前馈网络和循环网络提出了新型平滑正则化器29,45,其表现通常优于标准权重衰减方法,相关内容将在16.3节详细介绍。
集成预测
由于经济时间序列的噪声极高,预测方差的控制是关键问题。降低预测方差的一种方法是取多个模型预测结果的平均值。
经济学领域的研究人员长期以来一直研究并使用组合估计量,普遍发现其表现优于单个组成估计量,且对于多种加权方法而言,未加权平均的表现通常优于加权平均12,14,6。图16.7展示了针对不同IP预测模型进行未加权集成平均后获得的预测误差方差下降情况。
模型解释与可视化
不仅要能够做出准确的预测,还要理解影响预测结果的因素,这一点非常重要。这可以通过16.4.6节和16.4.8节描述的敏感性分析,以及16.4.8节介绍的可视化工具来实现。
16 主体
图 16.3. 预激活引发的重初始化效应示例,对测试误差的影响。坐标轴分别对应训练时长为10年、20年、50年的版本。
网络的预训练在一个可观察到以下规律的场景下开展:正如预期的那样,相较于更小的数据集,更大的数据集更容易训练。(最下方的曲线中,较大的数据集被视为较小的数据集,当然对于较小的k值而言,二者是一致的。)
16.3 用于更好泛化的平滑正则化项
Landweber 和 T. (1993) 讨论了一种曾被用于选择合适偏置的惩罚项。该惩罚项定义为 \(\Omega(F) = \text{tr}\left(FF^T + \epsilon I\right)^{-1}\),其中 \(F\) 是训练矩阵,\(I\) 表示单位矩阵。
图 16.6. 两组神经网络模型针对IP(工业生产指数)12个月收益的预测误差对比,虚线代表使用了监督主成分剪枝(PCP)20的情况,实线代表未使用的情况。每个数据点是11个网络的平均误差,误差线代表一个标准差。使用PCP算法降低网络复杂度后,6个月、9个月、12个月的预测周期的预测性能获得了统计上显著的提升。与脑损伤优化(optimal brain damage)、脑外科医生优化(optimal brain surgeon)这类从网络中剪枝权重的技术不同,PCP通过剪枝权重矩阵的特征节点来降低网络复杂度,进而减小模型方差。与无监督使用主成分不同,PCP会移除那些能使估计预测误差下降最多的特征节点。
对于这类新型代数简单的 \(m^{\text{th}}\) 阶平滑正则化项,适用于以射影基函数(PBF)\(f(W;\boldsymbol{x}) = \sum_{j=1}^{N} u_j g \left\\boldsymbol{x}\^T\\boldsymbol{v}_j + v_{j0}\\right + u_0\) 为基的网络,其中 \(W=(u,v)\) 对应一般的传递函数 \(g\\cdot\),正则化项形式为:
math
R_{G}(W, m) = \sum_{j=1}^{N} u_j^2 \| \boldsymbol{v}_j \| ^{2m-1} \quad \text{全局形式}
R_{L}(W, m) = \sum_{j=1}^{N} u_j^2 \| \boldsymbol{v}_j \| ^{2m} \quad \text{局部形式}
我们的实证经验表明,这类新的平滑正则化项通常比标准权重衰减能带来更优的预测精度。在相关工作中,我们为循环网络推导了一种代数形式简单的正则化项45。该正则化项可视为一阶吉洪诺夫稳定器(即上述 \(m=1\) 时的局部形式)向动态模型的推广。对于带有循环连接的两层网络,其描述形式为:
math
Y(t) = \mathbf{g}\left( A Y(t-\tau) + V X(t)\right) \; , \;\hat{Z} (t)=UY(t)\;
图 16.7. 通过组合预测(或委员会)38, 28 预测美国工业生产指数时,误差方差的下降情况。横坐标为不同预测周期和测试时段的组合。例如,"m12.80"表示网络在1979年前的10年数据上训练,用于生成12个月预测,并在1980年进行真实的前瞻性预测。性能指标是特定年份上的归一化均方误差(NMSE)。所有训练集的时长均为10年。每个点的柱状图展示了两种结果的取值范围:要么是1000个独立模型的结果,要么是10个成员的100个委员会的结果。单个网络通常包含3个S型内部单元、1个线性输出单元,一般还通过\(\delta\)-检验从初始的48个候选变量中选取约十几个输入变量。
带正则化项的训练准则为:
math
\mathcal{E} = \frac{1}{N} \sum_{t=1}^{N} |Z(t) - \hat{Z}(W, I(t))|^2 + \lambda \rho_\tau^2(W)
其中 \(W = \{U,V,A\}\) 是网络参数集合,\(Z(t)\) 是目标值,\(I(t) = \{X(s), s=1,2,\cdots,t\}\) 表示当前及全部历史输入信息,\(N\) 是训练数据集的大小,\(\rho_\tau^2(W)\) 是正则化项,\(\lambda\) 是正则化参数。
时间滞后循环网络的正则化项闭式解为:
math
\rho_\tau(W) = \frac{\gamma \|U\|\|V\|}{1-\gamma \|A\|} \left[ 1 - e^{\frac{\gamma \|A\|^{-1}}{\tau}} \right]
其中 \(\|\cdot\|\) 是欧几里得矩阵范数,\(\gamma\) 是一个依赖内部单元激活函数 \(g(\cdot)\) 一阶导数最大值的因子。该正则化项可针对同步循环网络(\(\tau \to 0\))、两层前馈网络和单层线性网络进行简化。
我们有
图 16.8. 预测美国工业生产指数单月变化率任务中,正则化参数与归一化预测误差的关系45。示例分别使用了标准权重衰减(左)或新型循环平滑正则化项(右)训练的循环网络。对于标准权重衰减,最优正则化参数为0.03,对应测试误差0.734。对于新型平滑正则化项,能使验证误差最小的最优正则化参数为0.8,对应测试误差0.646。因此,相较于二次权重衰减,新型循环正则化项可将测试误差降低12%。我们在多项案例研究中成功测试了该正则化项,发现其表现优于标准二次权重衰减。图16.8展示了该循环正则化项与二次权重衰减在IP单月预测任务中的对比结果。
16.4 模型选择与解释
本节中,我们将深入讨论神经网络模型选择的若干问题与技术,包括输入变量选择问题。我们介绍了基于预测风险估计(尤其是广义预测误差(GPE)和非线性交叉验证(NCV))选择架构的技术,提出了基于敏感度的剪枝(SBP)方法来选择输入变量,并展示了这些方法在美国工业生产指数预测中的应用。最后,我们讨论了一些模型解释与可视化的方法,这些方法能够帮助我们理解经济关联。
16.4.1 通过架构与输入选择提升预测效果
本文讨论架构选择时,我们聚焦于最广泛使用的神经网络架构------双层感知机 (或称反向传播 )网络。这类架构为\(\lambda\)的网络响应函数包含 \(I_\lambda\) 个输入变量、\(H_\lambda\) 个内部(隐藏)神经元和1个输出单元,形式为:
math
\hat{\mu}_{\lambda}(x) = h(\mu_0 + \sum_{j=1}^{H_\lambda} u_j g(v_{j0} + \sum_{i=1}^{I_\lambda} v_{ji} x_i)).
(16.2) 其中 \(h\) 和 \(g\) 通常是S型非线性函数,\(v_j\) 和 \(v_{j0}\) 是输入权重和阈值,\(u_j\) 和 \(u_0\) 是输出权重和阈值,索引\(\lambda\)是特定双层感知机网络架构的抽象标签。尽管为简化起见,本节我们仅考虑这类受限的感知机网络,但我们的方法可轻松推广至多输出、多层的网络。
对于双层感知机,架构选择问题 是寻找一个良好的、接近最优的架构\(\lambda\),用于对给定数据集进行建模。架构\(\lambda\)由隐藏单元数量 \(H_\lambda\)、输入变量子集 \(I_\lambda\),以及非零权重子集 \(u_j\) 和 \(v_{ji}\) 共同刻画。如果所有 \(u_j\) 和 \(v_{ji}\) 均为非零,该网络被称为全连接 。由于对可能的架构空间进行穷举搜索是不可行的,因此架构选择流程需要采用启发式搜索。启发式搜索策略示例见图16.9,更多讨论可参考25和30。
图 16.9. 启发式搜索策略示例:选定隐藏单元数量 \(H_\lambda\) 后,输入移除与权重消除可以并行(A)或顺序(B)开展。在图B中,隐藏单元数量选择与输入移除可以迭代进行(虚线所示)。本节中,我们聚焦于为美国工业生产指数预测任务选择输入变量的"最优子集",以避免对指数级增长的架构空间进行穷举搜索。
16.4.2 模型选择
为了选择适当的模型,我们假设 \(P(y)\) 和 \(P(x)\) 已知。对于每个模型 \(P(y \mid x; \theta)\),我们根据一个性能度量 \(Q(\theta)\) 选择最佳模型。给定模型选择度量 \(Q(\theta)\) 的特定值,我们根据最大化 \(Q(\theta)\) 选择最佳模型。
一个度量 \(Q(\theta)\) 的例子是 \(Q = A_0 B_0 \cdot \sum_{i=1}^N \phi(x_i)^2\),其中 \(N\) 是数据点的数量,\(x_i\) 是第 \(i\) 个数据点,\(A_0\) 和 \(B_0\) 是常数。
给定一个模型,我们定义 \(N\) 为训练数据点,\(x_i\) 为第 \(i\) 个数据点。模型的参数 \(\theta\) 是待估计的实值。
我们假设对于给定的参数 \(\theta\),模型 \(P(y \mid x; \theta)\) 是概率密度函数。
我们将 \(P(y \mid x; \theta)\) 称为模型,其中 \(\theta\) 是参数。我们假设模型参数 \(\theta\) 为实值。
16.4.4 线性模型的预测风险与预测平方误差的代数估计
对于带平方误差损失函数的线性回归模型,已推导出一系列用于估计预测风险的有用代数估计量。其中包括著名的广义交叉验证(GCV)7, 11和赤池最终预测误差(FPE)1公式:
\\\boxed{GCV_\\lambda = ASE_\\lambda \\frac{1}{\\left(1 - \\frac{Q_A}{N}\\right)\^2} \\hspace{4cm} FPE_\\lambda = ASE_\\lambda \\left( \\frac{1 + \\frac{Q_A}{N}}{1 - \\frac{Q_A}{N}} \\right).} \\
\(Q_A\) 表示模型 \(\lambda\) 的权重数量。\(ASE_A\) 表示平均平方误差。注意,虽然在小样本情况下GCV和FPE略有差异,但在大 \(N\) 下它们渐近等价:
\\\boxed{GCV_\\lambda \\approx FPE_\\lambda \\approx ASE_\\lambda \\left(1 + 2\\frac{Q_A}{N}\\right)} \\tag{16.6} \\
16.4.5 NCV:非线性模型的交叉验证
交叉验证(CV)是一种样本复用方法,用于估计预测风险:它能最大化程度地利用可用数据。针对非线性模型的一种扰动细化方法被称为非线性交叉验证(NCV) 25, 30。
设数据集 \(D\) 被划分为 \(\nu\) 个随机选取的、大小大致相等的互不相交子集 \(D_j\):\(\bigcup_{j=1}^{\nu} D_j = D\) 且 \(\forall i \neq j,\ D_i \cap D_j = \emptyset\)。设 \(N_j\) 表示子集 \(D_j\) 中的观测数量。设 \(\widehat{\mu}_{\lambda(D_j)}(\boldsymbol{x})\) 为在除 \((\boldsymbol{x}, t) \in D_j\) 外的所有数据上训练的估计量。则子集 \(j\) 的交叉验证平均平方误差定义为
\CV_{D_j}(\\lambda) = \\frac{1}{N_j} \\sum_{(\\boldsymbol{x}_k, t_k) \\in D_j} \\left(t_k - \\widehat{\\mu}_{\\lambda(D_j)}(\\boldsymbol{x}_k)\\right)\^2. \\
将这些结果按 \(j\) 平均,得到预测风险的 \(\nu\) 折交叉验证估计量:
\CV(\\lambda) = \\frac{1}{\\nu} \\sum_{j} CV_{D_j}(\\lambda). \\
\(\nu\) 的常用取值为5和10。当 \(\nu = N\) 时即可得到留一交叉验证。CV是一种非参数的预测风险估计量,仅依赖可用数据。
非线性模型中频繁出现的多个极小值(见图16.10),每个极小值对应不同的预测器,需要对交叉验证流程进行细化。该细化方法非线性交叉验证(NCV) 如图16.11所示(\(\nu = 5\) 时)。
在完整数据集 \(D\) 上训练网络,得到带权重 \(W_0\) 的模型 \(\hat{\mu}_\lambda(\mathbf{x})\)。这些权重被用作 \(\nu\) 折交叉验证流程的起始点。依次将每个子集 \(D_j\) 从训练集中移除,使用剩余数据从 \(W_0\) 开始重新训练网络(而非使用随机初始权重)。
基于从训练集中删除子集不会导致局部最优权重出现较大差异的假设,从 \(W_0\) 开始的重新训练会"扰动"权重,得到 \(W_i, i = 1, \dots, \nu\)。为"被扰动模型" \(\hat{\mu}_{\lambda(D_j)}(\mathbf{x})\) 计算的交叉验证误差,因此可以如预期般估计带局部最优权重 \(W_0\) 的模型的预测风险,而非其他局部极小值处其他预测器的性能。
16.4.6 用于定向搜索与敏感性分析的输入剪枝
敏感性分析是一种探究改变单个输入对模型整体性能影响的方法。这是理解模型在不同条件下表现的有用工具。例如,如果模型是用于预测房价的工具,该工具可用于理解不同变量(如利率、抵押贷款利率、房地产市场状况)如何影响模型的预测结果。
该模型可作为理解输入与输出之间关系的工具,例如利率、抵押贷款利率、房地产市场状况及其他变量之间的关系。
案例研究
- 我们6-DSS中唯一已有的模型被定义为删除末端59。如果上述模型可能拥有更多输入(例如 \(n\) 个 \(S_i\) 的列表列),
- \(S_{\text{end}} = \text{AE}(S_n) = \frac{1}{n}\sum_{i=1}^n S_i\),其中 \(S_i\) 衡量对 \(S_i\) 起始处已有流量的影响。
上述定义意味着,由于已有流量的长度为 \(n\),因此 \(S_i\) 有 \(n\) 个元素。无需将已有流量 \(S_i\) 的长度作为 \(S_i\) 定义的一部分。我们指出,通过使用该模型,已有流量的长度为 \(n\)。由于该模型不是静态模型,我们可以将已有流量定义为 \(S_i\) 的总和。如果 \(S\) 是 \(S_i\) 起始处的已有流量,我们可以将已有流量定义为 \(S_{\text{end}} = S - S_i\)。
该模型也可定义为:
- \(S_{\text{end}} = \text{AE}(S_n) = \frac{1}{n}\sum_{i=1}^n S_i\),其中 \(S_i\) 衡量对 \(S_i\) 起始处已有流量的影响。
- 平均梯度(AG):\(\text{AG} = \frac{1}{n}\sum_{i=1}^n S_i\)
- 平均A-梯度(AA):\(\text{AA} = \frac{1}{n}\sum_{i=1}^n S_i\)
- RSM梯度(RSM):\(\text{RSM Gradient} = \frac{1}{n}\sum_{i=1}^n S_i\)
当用户设置模型时,"输入数据"、"输出数据"和"模型参数"均应配置为包含正向和负向效应。
16.4.7 实证案例
如6所述,我们开展了一项实验,将标准EM算法的学习率限制为0.5、1和2,同时EM算法也采用默认值0.5。该实验共进行30次运行,每次运行均使用默认值0.5执行EM算法。
图16.12 用于为神经网络预测模型选择输入变量子集的基于敏感性剪枝(SBP)方法42。原始网络使用全部48个输入变量训练,用于预测工业产值(IP)的12个月百分比变化。根据敏感性度量,变量按重要性降序排列。输入变量逐一对网络进行剪枝;在每个阶段,网络均会重新训练。该图展示了四条曲线:训练误差、赤池最终预测误差(FPE)、非线性交叉验证误差(NCV)25, 30以及实际测试误差。NCV被用作选择准则,建议仅纳入13个变量。相较于FPE,NCV对实际测试误差的预测效果要好得多。
16.4.6节中上述敏感性分析提供了全局认知,可了解哪些输入对预测感兴趣的量(如商业周期)具有重要作用。不过,通过分析敏感性随时间的变化21,可以获得更多信息。
针对单个样本执行的敏感性分析可提供信息,明确哪些输入特征对生成当前预测具有重要作用。
\\\begin{aligned} \\text{Delta Output (DO)} \\quad \&S_i = \\Delta f\^{(j)}(\\boldsymbol{x}) \\equiv f\\left(x_{1j}, \\ldots, x_{ij}, \\ldots, x_{dj}\\right) - \\overline{f\\left(x_{1j}, \\ldots, \\bar{x}_i, \\ldots, x_{dj}\\right)} \\\\ \\text{Output Gradient (OG)} \\quad \&S_i = \\frac{\\partial f}{\\partial x_{ij}} \\end{aligned} \\
其中,如上所述,我们定义 \(f^{(j)} \equiv f(X_{1j}, \ldots, X_{ij}, \ldots, X_{dj})\)。如果 \(S_i^{\text{DO}}\) 或 \(S_i^{\text{OG}}\) 较大,则第 \(i\) 个变量在生成当前预测中起重要作用。
16 用神经网络预测经济
图16.13 用于工业生产(IP)预测的敏感性输入剪枝(预测时长为12个月)。该图展示了用于计算NCV的10个子集各自的测试集误差分布(以圆圈标注)。NCV误差是这些测试集误差的平均值。
图16.14 预测美国工业生产指数的10输入模型单样本敏感性分析结果21。黑色与灰色分别代表负值与正值。矩形大小代表数值的绝对值。月度时间索引沿水平方向变化,输入变量索引沿垂直方向绘制。此类图表可展示不同时间节点下哪些输入变量对预测至关重要,有助于理解经济关联关系。
致谢
作者感谢托德·林(Todd Leen)、阿斯瑞尔·莱文(Asriel Levin)、廖远松(Yuansong Liao)、皮红(Hong Pi)、史蒂夫·雷富斯(Steve Rehfuss)、索斯坦·罗格瓦尔德松(Thorstein Rognvaldsson)、马修·萨菲尔(Matthew Saffell)、霍阿金·乌坦斯(Joaquim Utans)、吴立中(Lizhong Wu)和杨浩(Howard Yang)对本研究的诸多贡献。本章是文献26的扩展版本。本研究在OGI机构得到了ONR ARPA资助(项目号N00014-92-J-1 062、N00014-94-I 007I)、NSF资助(项目号CDA-93Q9728、CDA-95QC96S),在非线性预测系统公司得到了DARPA合同资助(合同号DAAH01-92-CR361、DAAH01-96-CR026)。
参考文献
- A 巴蒂蒂(Battiti, R.):《利用互信息选择监督神经网络学习的特征》。IEEE神经网络汇刊 5(4),527-535 (1994)。
- 5 博利尼(Bollini, B.):《联结主义学习的输入变量非参数选择》。技术报告,科罗拉多大学计算机科学系博士毕业论文 (1996)。
- 6 克莱门茨(Clements, R.T.):《预测组合:综述与注释书目》。国际预测杂志 (5),559-583 (1989)。
- 7 克雷文(Craven, P.)、瓦巴(Wahba, G.):《用样条函数平滑含噪数据:通过广义交叉验证法估计正确的平滑度》。数值数学 31,377-403 (1979)。
- 8 尤班克(Eubank, R.L.):《样条平滑与非参数回归》。Marcel Dekker Inc. (1988)。
- 9 杰曼(Geman, S.)、比恩斯托克(Biyenstock, E.)、杜尔萨(Doursat, R.):《神经网络与偏差/方差困境》。神经计算 4(1),1-58 (1992)。
- 10 乔西(Giossi, F.)、琼斯(Jones, M.)、波吉奥(Poggio, T.):《正则化理论与神经网络架构》。神经计算 7,219-269 (1995)。
- 11 戈卢布(Golub, G.)、希思(Heath, H.)、瓦巴(Wahba, C.):《广义交叉验证与优良岭参数的选择方法》。技术计量学 21,215-224 (1979)。
- 12 格兰杰(Granger, C.W.J.)、纽博尔德(Newbold, P.):《经济时间序列预测(第2版)》。学术出版社,圣迭戈 (1986)。
- 13 格兰杰(Granger, C.W.J.)、泰拉斯基尔塔(Terasvirta, T.):《非线性经济关系建模》。牛津大学出版社 (1994)。
- 14 汉密尔顿(Hamilton, J.D.):《时间序列分析》。普林斯顿大学出版社 (1994)。
- 15 哈西比(Hassibi, B.)、斯托克(Stork, D.G.):《网络剪枝的二阶导数:最优脑外科手术》。载于:汉森(Hanson, S.J.)、考恩(Cowan, J.D.)、贾尔斯(Giles, C.L.)(编)《神经信息处理系统进展》第5卷,第164-171页。摩根·考夫曼出版社,圣马特奥 (1993)。
- 16 哈斯蒂(Hastie, T.J.)、蒂布希拉尼(Tibshirani, R.J.):《广义可加模型》。统计与应用概率专论第43卷。 Chapman and Hall出版社 (1990)。
- 17 霍尔(Hoerl, A.E.)、肯纳德(Kennard, R.W.):《岭回归:非正交问题的应用》。技术计量学 12,39-82 (1970)。
- 18 霍尔(Hoerl, R.W.):《岭回归:非正交问题的偏置估计》。技术计量学 12,58-61 (1970)。
- 19 勒昆(LeCun, Y.)、登克(Denker, J.S.)、索拉(Solla, S.A.):《最优脑损伤》。载于:图雷茨基(Touretzky, D.S.)(编)《神经信息处理系统进展》第2卷。摩根·考夫曼出版社 (1990)。
- 20 莱文(Levin, A.U.)、林(Leen, T.K.)、穆迪(Moody, J.E.):《利用主成分进行快速剪枝》。载于:考恩(Cowan, J.)、特索罗(Tesauro, G.)、阿尔斯佩克特(Alspector, J.)(编)《神经信息处理系统进展》第6卷。摩根·考夫曼出版社,旧金山 (1994)。
- 21 廖(Liao, Y.)、穆迪(Moody, J.E.):《神经网络可视化与敏感性分析工具包》。载于:甘利(Amari, S.I.)、徐(Xu, G.)、陈(Chan, I.-W.)、金(King, I.)、梁(Leung, K.-S.)(编)《国际神经信息处理会议论文集》,第1069-1074页。施普林格-维拉格新加坡私人有限公司 (1998)。
- 2 L. 沙普利(Shapley),
- 3 F. J. 麦考尔(MacCall, F. J.),《选择替代方案问题的层次分析法》,管理科学,第14卷,第583-597页,1968年。
- 4 D. E. 贝尔(Bell),
- 5 A. G. 马洛(Marlowe, A. G.),《选择替代方案问题的层次分析法》,管理科学,第16卷,第1期,第181-197页,1970年。
- 6 L. A. 扎德(Zadeh),
- 42 乌坦斯(Utans, J.)、穆迪(Moody, J.)、雷富斯(Rehfuss, S.):《基于敏感性分析的输入变量选择:预测美国商业周期的应用》。载于:《计算智能在金融工程中的应用会议论文集》。IEEE出版社 (1995)
- 43 瓦巴(Wahba, G.):《观测数据的样条模型》。CBMS-NSF应用数学区域会议系列 (1990)
- 44 温克勒(Winkler, R.L.)、马克里达基斯(Makridakis, S.):《预测的组合》。皇家统计学会杂志 146 (1983)
- 45 吴(Wu, L.)、穆迪(Moody, J.):《前馈与循环网络的平滑正则化项》。神经计算 8 (2) (1996)
- 46 杨(Yang, H.)、穆迪(Moody, J.):《基于联合互信息的输入变量选择》。技术报告,俄勒冈研究生院计算机科学系 (1998)
17 如何训练神经网络*
拉尔夫·诺伊纳(Ralph Neuneier)、汉斯·格奥尔格·齐默尔曼(Hans Georg Zimmermann)
西门子股份公司企业技术部,德国慕尼黑 D-81730
{Ralph.Neuneier.Georg.Zimmermann}@mchp.siemens.de
http://w2.siemens.de/zfe_nnn/homepage.html
摘要
本文旨在为神经网络建模提供指引。从数据预处理切入,我们讨论了不同类型的网络架构,并展示了如何有效组合这些架构。我们分析了多种成本函数,以避免因异常值和非齐次方差导致的学习不稳定。我们通过强制网络构建平滑近似函数解决了「观察者-观察对象困境」。此外,我们提出若干剪枝算法以优化网络架构。上述所有特性与技术被整合为一套完整一致的训练流程(见图17.25概览),以实现方法协同效应最大化。
此前发表于:奥尔(Orr, G.B.)、穆勒(Müller, K.-R.)(编):LNCS 1524,ISBN 978-3-540-65311-0 (1998)。
17.1 引言
神经网络在系统识别或回归任务中的应用,常基于一个理论结论:原则上三层网络可近似数据集中的任意结构14。因此,可用数据的特征决定了最终模型的质量。我们认为这是一种误导性观点,尤其是当可从数据中提取的有用信息量较少时。这种情况通常出现在信噪比较低、且可用训练数据集较小的场景中。神经网络是功能极为丰富的函数类,因此优化过程(即学习算法、剪枝、架构、成本函数等)的控制是建模过程的核心环节。"神经网络方案并不优于任何经典方法"这一论断常被用于描述神经网络建模的结果。无论如何,此类评估的前提是准确掌握所采用的神经网络方案对应的完整流程。这是因为在流程的不同阶段可应用大量额外特性与技术,以规避神经网络已知的所有问题,如过拟合、对异常值的敏感性等。由于缺乏通用方案,人们常常可见如下表述:
声明神经网络模型的质量高度依赖于模型的生成者,这通常被视作负面因素。相比之下,我们认为这些额外特性是神经网络相较于传统方法的突出优势,传统方法通常不允许对其优化过程进行如此精细的控制。
本文旨在提供一套技术方案,以高效利用神经网络的能力。更重要的是,这些特性将以特定方式组合,使其应用能产生最大的协同效应。
首先,我们从数据预处理和网络架构定义入手;随后分析数据与架构之间的交互关系(观察者-观察困境),并讨论多种用于优化网络拓扑的剪枝技术;最后,我们将提出的特性整合为统一的训练流程(见17.8节的图17.25)。
本文大部分内容适用于一般非线性回归,部分考量聚焦于时间序列建模与预测。我们提出的所有方法均已在为客户解决的多类任务中得到验证,例如金融市场预测。典型问题的特征是:数据量相对较少、噪声较高,且需要高维输入向量来覆盖底层动力系统的复杂性。本文概述了我们针对此类问题开发的统一训练流程。
17.2 预处理
除显而易见的数据缩放操作(下文简写为scale(·),该操作可将不同时间序列转换为均值为0、统计方差为1的形式)外,部分学者提出了复杂的数据预处理函数。在金融预测领域,这些函数通常衍生自技术分析,旨在捕捉金融市场的部分底层动态(相关示例见37和25)。经过大量真实数据实验,我们最终确定了以下简单变换方式。
若被选作输入的原始时间序列相对于预测时域变化非常缓慢,即不存在可明确识别的均值回复均衡状态,那么惯性指标和驱动力信息已被证明具有很高的参考价值。惯性可通过动量(相对变化,公式17.1)描述,驱动力可通过时间序列的加速度(归一化曲率,公式17.2)描述。
若预测时域为未来\(n\)步,则原始时间序列\(x_t\)的变换方式如下:
\\\begin{aligned} \\text{momentum: } \& \\tilde{x}_t = \\text{scale}\\left(\\frac{x_t - x_{t-n}}{x_{t-n}}\\right) \\tag{17.1} \\\\ \\text{force: } \& \\hat{x}_t = \\text{scale}\\left(\\frac{x_t - x_{t-n}}{x_{t-n}}\\right)' \\tag{17.2} \\end{aligned} \\
1.7 通过生物对应物的非惯性处理
这种反直觉现象的成因与惯性系中的情况相同:宇宙由不同的相互作用支配,而非相同的相互作用,因此该变换存在一定特殊性。
2.3 人工神经网络的挤压函数
输入层与预处理层之间的特殊权重矩阵仅为方对角矩阵。
对于短期预测(例如股票市场日收益率建模),我们通常将权重初始值设为0.1,以确保tanh函数处于其线性区间,进而保证外部输入基本保持不变。若需构建长期模型(例如预测时域为六个月),我们更倾向于将初始值设为1。原因是月度数据通常更容易受到政治冲击等"非经济"因素的干扰。较大的初始权重值可从训练初期就消除这类异常值。
对角连接器中的权重被限制为正值,以避免训练过程中\(x'\)的符号发生波动。该约束可使公式17.4保持单调变换的特性,具备限制异常值的能力。预处理层不应使用偏置,以避免数值歧义。我们发现这些额外约束可提升预处理层的训练稳定性。
这些权重在训练过程中会与网络内的其他所有权重以相同方式进行调整。实践中,我们会观察到权重值同时存在增大和减小的情况。权重值增大时,会有更大比例的输入范围被tanh的挤压函数压缩。对角元素值极小时,说明可以考虑剪枝对应的输入。
图17.1 用于限制异常值影响、消除不重要输入的网络内部预处理
17.3.2 通过瓶颈网络的网络内部预处理
使用瓶颈网络降低输入向量维度是一个较早提出的思路。该技术不仅被用于构建编码器1,还被用于执行主成分分析26。在更大网络中使用瓶颈作为内部预处理构建模块,可为我们提供压缩输入信息的机会。此外,瓶颈层的tanh挤压函数可起到限制数据异常值的作用。
最初尝试时,人们可将瓶颈架构实现为输入-隐藏-输出层子网络,同时将输入作为输出层的目标。来自隐藏层的额外连接器会连接至网络的其余部分。该设计支持输入信号压缩,但存在两个主要缺陷:若对原始输入执行输入剪枝,解压过程会出现混乱;此外,向输入添加噪声的操作会变得更复杂,因为受干扰的输入还需要被用作输出层的目标。
图17.2展示了一种可规避上述难题的瓶颈子网络差异化方案。图17.2左侧是典型的压缩-解压网络。额外连接是一个固定的单位矩阵,可将输入层复制到输出层。由于该层的目标被设为0,压缩-解压网络的输出会取输入的负值,以抵消输入的相同副本带来的影响。尽管输入信号的符号被反转,这一情况不会对通过瓶颈层的信息流产生任何影响。该架构支持合理淘汰输入,也支持通过人工噪声干扰输入信号。
图17.2 使用瓶颈的网络内部预处理集群
在我们的实验中,我们观察到可以与其他网络部分并行训练瓶颈层。因此,只要训练集上的误差与无压缩时处于同一水平,就可以缩小瓶颈的规模。如17.6节所述,在训练过程中使用动态控制的输入噪声作为正则化方法非常重要。图17.2所示的架构支持将噪声与通过数据压缩实现的网络内部预处理相结合。
17.3 方形层
本节考虑大量前馈网络的情况。这种情况下,具备最优输入权重的简单前馈网络可生成一组给定的输出单元 \((y_1, y_2, \dots, y_o)\)。MLP(多层感知器)网络的损失函数是三层神经网络输入量的线性函数(图17.5),其中MLP的输出值小于1.0(公式17.4)。部分研究成果尤其关注三类基础学习器(神经网络)在相同输出任务上的对比(见图17.5):
\y = \\sum_{t=0}\^{T} \\sum_{i=1}\^{o} (y_{i,t} - \\hat{y}_{i,t})\^2 \\tag{17.5} \\
图17.3 通用处理状态与传感器闭合。每条箭头对应添加节点的"补充"操作;那些与输入层传感器连接的节点会切换到"补充"状态。
17.17.4 实例化层
本节讨论主控实体与管控实体06, 10, 第11侧。Caruana6近期在非时间序列场景下将多输出单元的概念推广到了连接主义学界。本文聚焦时间序列场景,因此输出的嵌入方式可类比抽头延迟线输入侧的做法,如图17.4中的点预测层所示。
图17.4 点预测与后续交互层
我们关注的预测目标是变量\(y\)的\(n\)步超前预测值\(y_{t+n}\)。此外,我们还需要预测\(y_{t+n-1}\)和\(y_{t+n+1}\)。然而,在测试该架构后,我们认为其对研究目标的助益有限,因为通过共享隐藏单元实现的隐式传递,仅能反映出极弱的输出行为间交互作用。这促使我们引入显式的第二输出层,即交互层。该附加层会计算近邻导数\((y_{t+n} - y_{t+n-1})\)、\((y_{t+n+1} - y_{t+n})\),以及曲率\((y_{t+n+1} - 2y_{t+n} + y_{t+n-1})\)。近邻差值被编码为点预测层与交互层之间的固定权重,因此不会增加需要估计的参数数量。总成本函数是所有六项贡献的总和,且每项贡献的权重均等。若目标值未经过合理缩放,可对误差赋予相等的权重,并按对应输出单元的平均误差缩放各误差输出,这种做法具有一定参考价值。如果点预测结果完全准确,交互层将不会产生任何作用。
为说明非零误差的作用,可参考图17.5。两个模型对三个点的预测,在三个相邻点上的逐点误差完全相同。然而,模型1的斜率和曲率均是正确的(不会引入额外误差),但这两项指标会为模型2增加误差。\^fn3f_1
图17.5 交互层对成本函数影响的几何解释。图中展示了三条连接时间上三个相邻步长点的曲线。模型1(虚线连接)和模型2(点线连接)与实线连接的观测值具有完全一致的逐点误差,但若考虑导数与曲率,模型1更优。
交互层的原理也可用于对输出端的其他关联关系进行建模。 我们以多个汇率的预测模型为例。在所有这类预测中,我们需要保证预测期限内各类资产之间不存在套利机会。换言之,在\(y_{t+n}\)时,不存在通过闭环资金流转获得正收益的可能。 这类跨市场关联可通过交互层的形式实现。总体而言,当我们从预测模型拓展到投资组合分析模型时,跨市场关联的管控会变得更加重要。在投资组合分析模型中,资产间关联关系的准确预测,要比单一资产的完美预测结果更重要。
17.3.5 平均融合
378 R. Neuneier and H.G. Zimmermann
图17.6 同一预测期限内多个点预测的平均融合,其中\(y_{t-n}^{d}\)为目标模式,\(y_{i,t+n}\)为子网络\(i\)的输出,\(m\)为子网络数量,\(T\)为训练模式数量,假设各子网络的误差互不相关。
\\\frac{1}{T} \\sum_{t=1}\^{T}(y_{i,t+n}-y_{t-n}\^{d})(y_{j,t+n}-y_{t-n}\^{d})=0 \\quad, \\quad \\forall i \\neq j \\
\E_{\\text{average}}=\\frac{1}{m}\\left(\\frac{1}{m} \\sum_{i=1}\^{m}\\left(\\frac{1}{T} \\sum_{t=1}\^{T}\\left(y_{i,t+n}-y_{t-n}\^{d}\\right)\^{2}\\right)\\right) \\
按照上述推导,由训练不确定性引发的误差可得到降低。最后需要说明的是,平均融合不会增加与网络具体应用场景相关的额外信息。
17.3.6 随机目标正则化
神经网络学界已证实,添加随机目标可改善学习效果²。该思路的架构实现如图17.7所示。在经济类应用中,我们通常会使用大规模的输入向量,以捕捉所有可能相关的指标。将输入层与规模合适的隐藏层相连接会产生大量参数,这是上述现象的来源。² 若读者知晓相关引用,作者深表感谢。
17.4 神经网络调参方法
与普遍认知相反,网络的初始调参会带来较高的成本。但一旦调参完成,该网络便可应用于多种任务场景。网络架构的设计基于相对差值(公式17.1)以及曲率或均值回归描述的力指标(公式17.2)。网络最底层通过对角层完成内部净预处理。在瓶颈方形层中,我们使网络能够完成对MLP(多层感知器)与RBF(径向基函数)网络的差异性与相似性分析。内部预处理的输入信号及其平方值,会作为加权输入(权重为对应参数)传递至隐藏嵌入层与隐藏力层(见图17.8)。与典型神经网络不同,该网络的上层采用了全新的组织方式。底层动力系统的特征可通过预测期限周围的不同特征估算来刻画。我们通过两类特定特征对这些指标加以区分:
- 嵌入特征:\(u_i\)描述的是相对于预测期限\(t+n\)的归一化3点嵌入,\(v_i\)表示\(t+n\)附近相对于当前时间的完整平均值。
- 力特征:\(r_i\)和\(s_i\)以曲率或均值回归的形式表述(另见17.2节)。
与嵌入特征类似,力特征描述的也是宽度递增的动力系统特征。不同的宽度可实现对时间序列的完整刻画,这与塔肯斯定理29中通过点对时间序列进行刻画的思路类似。
1.2 物联网与3.0:物联网
1.2 物联网
物联网(IoT)是由通过互联网相互通信的互联物理对象构成的系统。物联网设备的范围覆盖从简易传感器到复杂机械各类类型,可用于监测、控制并优化制造业、农业、医疗健康、交通运输等行业的流程。物联网是3.0互联网的核心组成部分,3.0互联网是从传统信息互联网向物联网的转变。
该设计的动机体现在从嵌入层和力输出层过渡到多预测输出层的步骤中。我们有以下两个公式:
\\\frac{y_{t+n} - y_t}{y_t} = u_i + r_i, \\quad i=1,\\dots,m \\
\\\frac{y_{t+n} - y_t}{y_t} = v_i + s_i, \\quad i=1,\\dots,m \\
这意味着,我们只需将嵌入及其对应的力成对相加,就能得到最终目标的\(2m\)个估计值。在神经网络中,这可以通过两个直连器轻松实现。经过多预测层后,我们可以添加一个平均连接器来获得最终输出。这个平均操作可以通过固定权重\(1/(2m)\)完成,也可以在底层网络训练完成后通过训练得到。控制嵌入集群和控制力集群的动机来自以下观察:在嵌入-力输出层级,网络仅需要根据宽度参数估计略有差异的特征,而神经网络往往会将这些特征估计得过于相似。为抵消这种特性,我们需要添加两个额外的集群,分别控制嵌入集群和力集群内各个输出的差异。因此,网络不仅要在嵌入输出层学习\(u_i\)和\(u_{i+1}\),还要在控制嵌入层学习差异\(U_i - u_{i+1}\),\(v_i\)、\(r_i\)、\(s_i\)的情况同理。从形式上看,多预测集群、控制嵌入集群和控制力集群是交互层,用于从嵌入和力中识别底层动力系统。需注意,尽管整个网络看起来相对复杂,但大部分连接器在训练过程中是固定的,它们仅用于生成适当的信息流,而信息流的设计才是本节真正的核心。我们提出的网络设计支持对目标指标、嵌入和力的维度进行直观评估:即公式17.13中的\(m\)应如何选择。首先选择相对较大的\(m\),然后按照18节所述的方法训练网络,使其在训练集上达到最小误差。接着仅训练多预测集群与平均预测集群之间此前固定的连接器的权重(图17)。如果维度\(m\)选择得过大,训练可能导致这些权重抑制长程嵌入和力,因此可以实现嵌入和力的最优维度\(m\)。对于6个月的预测期,我们使用\(m=6\)的取值取得了良好效果。这个11层网络会自动集成上一节关于随机目标的相关内容:如果维度\(m\)选择得过大,极端目标指标会表现为随机目标;另一方面,如果预测问题以短期高噪声为特征,较小\(m\)值的指标会产生随机目标。因此,如1节所述,选择过大的\(m\)不会损害我们的网络设计,反而可以通过部分吸收网络的过参数化来提升泛化能力。
17.4 成本函数
典型的误差函数可以写成对所有\(T\)个训练模式的单个项之和:
\E = \\frac{1}{T} \\sum_{t=1}\^{T} E_t , \\quad \\text{ (17.16)} \\
其中单个误差\(E_t\)取决于网络输出\(y(x_t, w)\)和给定的目标数据\(y_t^d\)。常用的平方误差:
\E_t = \\frac{1}{2} \\left( y(x_t, w) - y_t\^d \\right)\^2 , \\quad \\text{ (17.17)} \\
可以从最大似然原理和高斯噪声模型中推导得出。公式17.17能得出相对简单的误差导数,并在特定分布假设(即同方差性)下得到渐进最优估计量。然而在实际应用中,这些假设通常有多项被违反,这可能会大幅降低神经网络的预测可靠性。这种违反导致的一个问题是,目标数据中的异常值会对学习过程产生较大影响,这也是将原始时间序列按零均值、单位方差缩放的结果。这种效应对包含大幅冲击的金融和经济数据尤为严重。金融时间序列分析的另一个困难来源是异方差性,即目标变量的方差随时间变化的情况。我们尤其会考虑方差依赖于输入的情形:\(\sigma_t^2 = \sigma^2(x_t)\)。我们提出两种方法来减少由异常值和异方差性引发的问题。
17.4.1 基于Log-Cosh的鲁棒估计
金融时间序列中普遍存在异常值,通常由"信息冲击"导致,例如与市场预期不符的政府数据公告或公司派发的股息,这类冲击会表现为受影响资产轨迹的不连续点。为增强对此类冲击的鲁棒性,通常使用典型的成本函数:
\E_t = \| y(x_t, w) - y_t\^d \| \\quad (17.18) \\
这类函数不会过度放大较大的误差。其平滑版本为:
\E_t = \\frac{1}{a} \\log \\cosh \\left( a \\left( y(x_t, w) - y_t\^d \\right) \\right), \\quad \\text{ (17.19)} \\
其中参数\(a > 1\),我们通常使用\(a \in 3,4\)。该函数在小差异时近似平方误差的抛物线(对应高斯噪声模型),在差异较大时与差异的绝对值成正比(对应拉普拉斯噪声模型)。假定的噪声模型、成本函数(17.19)以及\(a=5\)时的导数如图17.9所示。
图17.9. 拉普拉斯型噪声模型(左)、log cosh误差函数(17.19)(中)及其对应导数(右)。Logcosh的动机来自以下观察:\(|x|\)的导数为\(\text{sign}(x)\),而\(\tanh(ax)\)是该阶跃函数的平滑近似,其积分为\(\int \tanh(a z) dz = \frac{1}{a} \log \cosh(a z)\)。
\\\begin{aligned} E \&= - \\log p(y_1, \\cdots, y_T \| \\cdot) \\\\ \&= - \\log \\prod_{t=1}\^{T} p(y_t \| x_t, w) \\\\ \&= - \\sum_{t=1}\^{T} \\log p(y_t \| x_t, w) \\quad (17.20) \\end{aligned} \\
通过使用常用反向传播算法的变体执行梯度下降,我们得到了参数预测网络22, 20中权重的最大似然估计。
图17.10. 条件密度估计网络(CDEN)
针对所讨论模型的特定问题,我们首先通过确定合适的密度族\(p(y|\phi(x))\)来求解。高斯混合模型是一个强大的选择:
\p(y\|\\phi(x)) = \\sum_{i=1}\^{n} P_i(x) p(y\|\\mu_i(x), \\sigma_i(x)), \\quad P_i(x) \\ge 0, \\sum_i P_i(x) = 1. \\quad (17.21) \\
因为它覆盖了广泛的概率模型。对于单变量情况(单输出),\(p(y|\mu_i(x), \sigma_i(x))\)是正态密度函数:
\p(y\|\\mu_i(x), \\sigma_i(x)) = \\frac{1}{\\sqrt{2\\pi}\\sigma_i(x)} e\^{-\\frac{1}{2}\\left(\\frac{y-\\mu_i(x)}{\\sigma_i(x)}\\right)\^2}. \\quad (17.22) \\
有多种方法可以确定\((P_i, \mu_i, \sigma_i)_{i=1}^{n}\)中的各个密度参数:可以将其设置为参数预测网络的输出,也可以将其训练为密度网络的与\(x\)无关的可调权重,或者部分参数可以由先验知识给定(例如聚类、神经模糊)。
基于图17.11中CDEN架构的概率模型\(p(y|\cdot)\)能够感知异常值的存在,进而得到稳健估计量,该模型在图17.12的左侧部分进行了说明。CDEN由两个高斯分布组成,二者的均值\(\mu(x)\)采用相同的估计值。其中较窄的高斯分布代表数据中非异常值部分的分布,较宽的高斯分布则表达了部分数据位于预测值较远距离这一假设。异常值本质上是例外的这一事实,可通过适当选择混合权重\(P_i\)来体现,\(P_i\)可被视为每个高斯分布的先验概率。使用该概率模型可得到如下最大似然最小化的范数:
\(E_t\)在一维情况下的定性行为在图17.12的中部和左侧部分进行了说明(也可对照图17.9)。可以清晰看到混合分布是如何限制异常值的影响的。这类具有影响限制特性的范数在回归领域被称为M估计量5。使用M估计量的难点在于,它们通常包含一组需要合理确定的参数。在我们的情况中,参数为\(P_1、P_2、\sigma_1\)和\(\sigma_2\)。在CDEN架构的框架下,这些参数被视为密度网络的可调节权重。其优势在于,与传统M估计量不同,这些参数在训练过程中由数据确定,因此不会使解产生偏差。回归中被证明有效的一种方法是,用二次误差函数与绝对误差线性函数的混合形式替代公式17.23,以限制异常值的影响。这类误差测度的自适应版本可轻松在CDEN框架中实现,只需将公式17.21中的高斯分布与拉普拉斯分布的混合形式代入即可。其他受限误差函数也可按类似方式构造。
图17.12. 高斯混合噪声模型(左)、误差函数17.23(中)及其对应导数(右)
异方差性可能由投资相关风险的变化引发。例如在股票市场中,由于杠杆效应(收入变动对股权收益率的显著影响)这一众所周知的现象,股票收益率的方差通常与公司的债务权益比相关。异方差性在时间序列分析中已被广泛研究,通常采用(G)ARCH方法论处理。后者基于历史残差解释条件方差,而CDEN则专门用于刻画方差对历史观测值的非线性依赖。若我们假设噪声模型服从零均值、方差为\(\sigma^2\)的正态分布,合适的表示形式是带有可变尺度和位置参数的单一高斯分布,其在CDEN中的实现非常直接。我们使用具有两个输出的参数预测网络,一个输出条件期望,另一个输出条件方差。CDEN的这一特例也已被Nix和Weigend21广泛研究。在网络训练过程中,权重按照如下公式针对\(E_t\)进行优化:
\E_t = \\left\[ \\log\\sqrt{2\\pi}\\sigma_t(x_t,w) + \\frac{1}{2\\sigma_t\^2(x_t, w)} \\left(y(x_t, w) - y_t\^d\\right)\^2\\right . \hspace{3em} (17.24) \]
按照公式17.17和公式17.24进行最小化,二者的明显区别仅在于:在CDEN中,单个误差\((y(x_t,w) - y_t^d)\)会被逆方差估计值\(1/\sigma_t^2(x_t,w)\)加权。因此,CDEN的训练等价于推导广义最小二乘估计量(GLSE) ,仅是我们使用的是估计值\(\hat{\sigma}_t(x_t,w)\)而非未知的\(\sigma_t\)。\(^3\)
\(^3\) GLSE的定义和性质在5中进行了广泛讨论。在优化过程中使用\(\sigma\)的估计值的场景通常被称为两阶段估计。
17.5 基于CDEN的误差棒估计
除实现更稳健的学习外,CDEN方法还可用于估计与期望值\(y_{t+n}:=y(x_t,w)\)预测相关的不确定性。在此我们假设误差服从正态分布,需要优化如下形式的似然函数:
\E = \\frac{1}{T}\\sum\\limits\^{T}_{t=1}\\left\[\\log(\\sqrt{2\\pi}\\sigma(x_t, w_\\sigma)) + \\frac{(y(x_t,w) - y\^d_t)\^2}{2\\sigma\^2(x_t, w_\\pi)}\\right ~ . \tag {17.25} \]
若我们假设拉普拉斯噪声模型,成本函数为:
\E = \\frac{1}{T} \\sum _{t=1}\^{ T } \\left\[ \\log ( 2 \\sigma( x_t , w_\\sigma ) ) + \\frac { \| y(x_t ,w) - y\^d_t \| } {\\sigma(x_t,w_{\\pi}) }\\right ~ . \tag {(17.26)} \]
拉普拉斯模型的log cosh近似形式为:
\E = \\frac{1}{T}\\sum\\limits\^{ T}_{t=1}\\left\[\\log ( \\pi\\sigma(x_t,w_\\sigma)) + \\log\\cosh\\left(\\frac{(y(x_t,w)- y\^d_t)} {\\sigma(x_t,w_{\\pi})} \\right) \\right ~. \tag {(17.27) } \]
在图17.13中,我们展示了一种网络架构,我们发现该架构对这类误差棒估计十分有用。该架构结合了网络内部预处理与平方输入方法,并在两个分支中分别估计期望值\(y(x_t, w)\)和标准差\(\sigma(x_t,w_\sigma)\)。CDEN集群整合这些信息并计算误差流。我们发现,如图17.13所示的局部与全局分析的组合,非常契合包含误差棒的预测问题的求解目标。为确保\(\sigma(x)\)取正值,\(\sigma\)集群中使用了合适的激活函数\(\varepsilon^{(*)}\)。通过使用正偏移(偏置),可以避免似然目标函数中由过小的\(\sigma(x)\)导致的奇点。在图17.14中,带有一个高斯函数的CDEN与17.3.7节的架构相结合。在此我们假设估计的"作用力"包含近似我们平均预测不确定性的必要信息:
\\\sigma\^2(y_{t+n}\|x_t) = \\sigma\^2(y_{t+n}, \\text{forces}(x_t)) \\tag {17.28} \\
或更具体地,使用图17.14中的加速度和均值回归作用力时:
\\\sigma\^2(y_{t+n}\|x_t) = \\sum_{i=1}\^{2m}w_i \\cdot \\text{force}_i\^c(x_t). \\tag{(17.29)} \\
图17.13. 基于CDEN的误差棒估计
通过作用力平方值的线性组合,该架构可以学习到输入依赖的方差\(\sigma(y_{t+n}|x_t)\)(作用力的描述可参见图17.14和公式17.13)。因此,我们既可以实现预测,也可以得到误差棒。这种组合的亮点不仅在于可以使用通用框架作为识别动态系统的手段,还在于在该环境中我们甚至可以分析长短程作用力对预测不确定性的影响。在多个月度预测模型中,我们发现作用力的重要性从短程到长程呈单调递增。误差棒和方差估算对于投资组合管理中常用的均值-方差方法7而言是不可或缺的信息。其目标是:
图1. 考虑一个由两个投资者组成的风险组合。
未经许可,本内容不得处理。
- 批量梯度下降:增量基于所有训练样本计算,\(\Delta_{w}^{(r)} = -\eta \nabla E = -\eta \frac{1}{T}\sum_{t=1}^T g_t\);而逐样本版本的梯度下降在每次呈现样本\(x_t\)(通常从训练集中随机选取)后更新权重:
\\\Delta w\^{(r)} = -\\eta g. \\
学习率\(\eta\)通常在训练过程中保持恒定,或遵循退火流程以保证收敛。我们的实验表明,小批量的效果最好,尤其是与Vario-Eta结合使用时------Vario-Eta是一种准牛顿法的随机近似方法9:
\\\Delta w\^{(r)} = -\\frac{g}{\\frac{1}{T}\\sum_{t=1}\^T (g_t - \\bar{g})\^2} \\
其中\(N \leqslant\) 注:原文此处内容缺失
- 假设特定问题的误差函数在权重空间中边界与坐标轴平行的狭窄山谷中具有最小值。对于二维情况,此类场景如图17-15所示。梯度方法会呈锯齿状轨迹行进,极缓慢地逼近最小值。而使用Vario-Eta时,沿\(w_1\)方向的锯齿状运动会得到抑制,沿\(w_2\)方向的漂移会得以加速。该行为与经典牛顿方法在此类场景下的权重轨迹类似。实际实现时使用随机近似来计算标准差。
图17-15. Vario-Eta,准牛顿法的随机近似方法
第17.2节中对神经网络的同一阶分析同样适用于本章的神经网络。我们还可以分析先验对后验的影响。后验分布可近似表示为\(P(\mathbf{w}|D) \approx \mathcal{N}(\mathbf{w}|\mathbf{w}_0, \sigma^2)\),其中\(\mathbf{w}_0\)是先验分布与似然分布的加权平均值。本章将探讨先验对后验的影响。
17.3 参数噪声作为归纳偏置:学习将噪声视为信号的一部分 394 R. Neuneier 和 H.G. Zimmermann
这类学习会引入局部惩罚参数\(\text{var}(g_i)\),用于表征权重\(\mathbf{w} = w_i{i=1,\dots,k}\)的稳定性。在局部最小值处,权重\(w_i\)的梯度之和为\(\sum g{i,t} = 0\),但梯度方差\(\text{var}(g_{i,t})\)可能较大。这种情况下,解对数据重采样非常敏感,因此不稳定。为了提升泛化能力,应当对这类高方差权重附近的误差函数曲率施加强惩罚。逐样本学习可以自动完成这一过程。
\\\langle E(\\mathbf{w}) \\rangle \\approx E(\\mathbf{w}) + \\frac{\\eta\^2}{2} \\sum_i \\frac{\\partial\^2 E}{\\partial w_i\^2} \\
| 学习率类型 | 配置 | 惩罚效果 |
|---|---|---|
| 局部 | Vario-Eta | 全局惩罚 |
| 全局 | 逐样本 | 局部惩罚 |
基于上述思路,我们现在证明典型的牛顿法不应当用于随机学习。假设我们已接近局部最小值,且误差函数的海森矩阵\(\mathbf{H}\)不再发生显著变化。在这一假设下,隐含噪声的形式为\(\Delta \mathbf{w}_t = \eta \mathbf{H}^{-1} \mathbf{g}_t\)。由于海森矩阵稳定,噪声的均值为零,因此期望误差函数变为
\\\langle E(\\mathbf{w}) \\rangle \\approx E(\\mathbf{w}) + \\frac{\\eta\^2}{2} \\sum_i \\text{var}(g_i) \\left( \\frac{\\partial\^2 E}{\\partial w_i\^2} \\right)\^{-1} \\
在这种情况下,我们同样可以通过梯度方差\(\text{var}(g_{i,t})\)对惩罚参数进行局部控制,与逐样本学习的情况类似。但现在,我们对权重空间中曲率逆较大的点处的权重施以惩罚。这意味着我们惩罚平坦最小值的解,这与我们寻找稳定解的目标相悖。通常牛顿法被用作累积学习方法,因此上述论证不适用于牛顿法。综上,我们得出结论:二阶方法不应当用于随机搜索算法。为了支持全局学习,并利用这类算法对平坦最小值解的偏置,后续我们将仅使用逐样本学习或Vario-Eta方法。
我们为如何获得平坦最小值解提供一些建议,以此总结本节(另见表17.1):
- 使用Vario-Eta方法将网络训练至最小训练误差解,该方法是牛顿法的随机近似,因此运算速度较快。
- 增加一轮以统一学习率进行的逐样本学习最终阶段,通过局部惩罚参数(式(17.38))微调局部曲率结构。对于多层网络,应当跳过该步骤,因为长信号流会导致梯度消失。只有具备缩放能力的Vario-Eta方法能够恰当地解决这类优化问题。
- 尽可能使用更高的学习率\(\eta\)以保证惩罚效果有效。训练误差可能会有小幅波动,但引入隐式惩罚更为重要。我们希望指出,学习算法的选择不仅会影响学习的速度和全局行为,还会在固定学习率下产生不同的结构解。在分析和对比随机学习算法时,也必须考虑这一结构层面的影响。
17.6.4 数据清洗
训练神经网络时,通常默认输入数据无噪声,并强制网络完全拟合数据。即使是旨在降低过拟合效应(例如剪枝)的控制流程,也将输入视为精确值。然而这一假设往往并不成立,在金融分析领域尤其如此,而"过拟合"这一现象也警示我们不能完全照搬数据。数据清洗作为清洗与学习的结合方法,已在文献33中被提出。接下来我们将重点讨论数据清洗的相关内容。其动机在于将输入数据视为受噪声污染的数据,同时需要学习该噪声的分布,以此降低过拟合效应。
图17.16 输入为径向函数\(h\),输出为与径向函数的差值。模式的径向函数由两个涉及相同输入的项之和给出。以观测输入\(x_1\)为基础,我们推导出模式分量与权重的对应表达式,得到中间表达式。同时我们也得到了替代模式配置的类似表达式。通过从数据中提取数值,我们得到输出、模式与权重的参数,进而得到拟合参数集。该参数集由权重和模式参数构成函数,最终得到输出表达式。
17.6.6 数据噪声综述
一般来说,噪声模型是建模过程中通常用于凸参数(尤其是给定模型的参数值)的模型。我们可以将噪声模型视为受给定模型参数值约束的模型。
| 学习算法 | 结构偏置 | 收敛速度 |
|---|---|---|
| 逐样本 | + | - |
| Vario-Eta | - | + |
实际实现会使用随机近似方法,例如针对均匀残差误差的公式:
\\\xi_j\^{(\\tau+1)} = (1 - \\frac{1}{T}) \\xi_j\^{(\\tau)} + \\frac{1}{T} \\left\| \\frac{\\partial E\^y}{\\partial x_j} \\right\|. \\tag{17.48} \\
不同残差误差等级可参照表17.2解读:较小的\(\xi_j\)值可能代表输入j不重要,或是网络针对该输入的拟合效果完美。这两种情况都适合采用较低的噪声水平。反之,输入j的\(\xi_j\)值较高则代表该输入重要但拟合效果不佳,这种情况建议采用较高的噪声水平。较高的\(\xi_j\)值会使回归模型更"刚性",因此可能提升网络的泛化性能。因此,我们使用\(\xi_j\)或\(\xi_j^2\)作为参数,来控制输入j的噪声水平。
表17.2 不同残差误差\(\xi\)等级的解读
| 残差误差\(\xi\)的观察结果 | 解读 | 噪声控制建议 |
|---|---|---|
| \(\xi\)值较小 | 完美拟合或不重要的输入 | 使用低噪声 |
| \(\xi\)值较大 | 拟合不佳但重要的输入 | 使用高噪声 |
17.6.6 噪声清洗
通常,带噪声输入的训练流程是:获取一个数据点,并添加一个从固定或自适应分布中抽取的随机变量。这个新数据点 x_t 会被作为网络的输入。如果我们假设数据受到了异常值和其他因素的干扰,更优的做法是将噪声项添加到经过清洗的输入上。针对高斯噪声的情况,得到的新输入为:
\x_t = x_t\^d + \\Delta x_t + \\xi \\phi, \\tag{17.49} \\
其中\(\phi\)从正态分布中抽取。对数据进行清洗会得到修正后的数据均值,进而形成更对称的噪声分布,该分布也能覆盖观测到的数据 x_t 。
我们提出了一个基于线性化模型(linearized model)的复杂困难图像问题的统一框架。
\\\mathbf{I} \\approx \\mathbf{A} + \\mathbf{B} \\
其中,\(\mathbf{A}\) 是简单线性模型,\(\mathbf{B}\) 是残差。
17.1 架构优化
该部分文本在提供的图片中省略。
其中 g = \\frac{1}{7} \\sum_{i} g_{t} \\(。\\)\\text{test}_w值较低的权重是剪枝的候选对象。从我们的方法视角来看,该剪枝算法等价于取消那些风险较低的权重,这里的"风险"以权重大小除以其波动标准差来衡量。这样做可以稳定学习过程,使其不受训练数据重采样的影响。这种计算简便的方法与早停概念结合时效果良好,与晚停概念结合时则效果不佳。对于早停而言,随机剪枝的作用类似于t检验;而对于晚停,较大权重的梯度波动不足以产生有价值的检验值。因此,该剪枝流程会对非线性模型引入偏差。此外,随机剪枝还能够恢复已被剪枝的权重。
早期脑损伤法
另一种权重剪枝方法是EBD,即早期脑损伤法 31,该方法基于被广泛引用的OBD剪枝方法15。与OBD不同,EBD可以在训练达到局部最小值之前就投入使用。针对每个权重,EBD会计算一个检验值,该值是权重为0时的误差函数与该权重可达到的最佳状态下的误差函数之差的近似值:
\(\text{test}w = E(0) - E(w{\min}) = -gw + \frac{1}{2}w'Hw + \frac{1}{2}gH^{-1}g'\)
\(17.55) \\
上述近似是基于误差函数的泰勒展开推导而来的。由
\E(\\tilde{w}) = E(w) + g(\\tilde{w}-w) + \\frac{1}{2}(\\tilde{w}-w)'H(\\tilde{w}-w) \\
可推导出
\E(0) = E(w) - gw + \\frac{1}{2}w'Hw \\
而求解最小值问题\(E(\tilde{w}) \to \min\)时,有
\w_{\\min} = w - H\^{-1}g',且 E(w_{\\min}) = E(w) - \\frac{1}{2}gH\^{-1}g' . \\
这两个误差值的差值就是所提出的EBD检验值。该方法中Hessian矩阵H的计算方式与原OBD计算15中的一致。EBD相较于OBD的一大优势是,即使在略微偏离局部最小值的状态下也可以进行检验。在我们的训练流程中,我们建议即使在学习的最后阶段也使用噪声,这样训练状态仅会处于局部最小值附近。此外,EBD也能够恢复已被剪枝的权重。与随机剪枝类似,EBD更倾向于保留波动率较低的权重。若某个权重被高强度噪声干扰,隐式曲率惩罚会支持该权重附近的平缓最小值,从而导致该权重被EBD剪除。我们的实践经验表明,EBD剪枝可以生成极度稀疏的网络。我们曾有过这样的案例:将初始拥有3000个权重的网络剪枝为仅保留约50个权重的结构。EBD剪枝的前几轮通常不会带来泛化性能的提升。这是因为EBD是针对误差函数检测权重的显著性,也就是反向传播算法所使用的相同信息。换句话说:EBD仅会剪除那些不会干扰学习的权重。只有在训练流程的最后阶段,网络才会放弃部分编码结构,从而带来泛化性能的提升。
逆峰度法
我们要讨论的第三种剪枝方法是逆峰度(Inverse-Kurtosis)法。该方法的动机源于对图17.18所示、强制权重更新的梯度脉冲的多种可能分布的分析。
图17.18 权重固定时,针对该权重进行优化的梯度 g_t 的可能分布。
换句话说,分布呈尖峰状的权重已经记住了时间序列的特殊事件,但并未建模数据的通用底层结构。因此,逆峰度剪枝与我们利用平方层封装局部结构的网络架构十分契合。此外,梯度分布极宽的权重会受到随机事件的干扰,因为它会对几乎所有模式做出相似强度的响应。区分上述分布的直观方法是基于峰度,来测量其与正态分布的差异:
$$ \text{distance}_w = \left( \frac{\frac{1}{T} \sum_{t=1}^{T} (g_t - g)^4}{\left( \frac{1}{T} \sum_{t=1}^{T} (g_t - g)^2 \right)^2} - 3 \right)^2. $$ (17.59)
为了基于该正态分布差异对网络权重的重要性进行排序,我们定义检验值如下:
$$ \text{test}_w = \frac{1}{\varepsilon + |\text{distance}_w|}, $$ (17.60)
其中加入小项\(\varepsilon \approx 0.001\)是为了避免数值问题。与之前提到的剪枝技术类似,我们不希望剪除的权重会获得较大的检验值。注意,在该检验中,我们忽略了梯度的大小,仅考虑了分布的形状。权重本身不参与评估,我们并未观察到该方法对学习得到的权重大小分布有显著影响。相比之下,随机剪枝和EBD倾向于剪除小权重,因为它们显式参考了权重的大小。本质上,逆峰度法计算出的检验值较低
(即 可能的剪枝候选对象),用于仅封装数据中的局部伪影或随机事件、而非构建通用结构的权重。根据我们的经验,这项技术能在剪枝的最初几次迭代中显著提升泛化性能。
不稳定性剪枝
我们的学习在达到最低训练误差时的局部结果是,每个权重的累积梯度\(g\)在训练集上为零:
\g = \\frac{1}{T} \\sum_{t \\in T} g_t = 0. \\tag{17.61} \\
如果该条件在验证集上也成立,那么我们的模型将完全稳定:
\g_V = \\frac{1}{V} \\sum_{t \\in V} g_t = 0. \\tag{17.62} \\
由于\(g_V\)通常不为零,我们需要检查测得的差异是否足够显著以指示不稳定性。用统计学的术语来说,这是对两个分布均值相等性的双样本检验。以下检验值(韦尔奇检验)测量该差异:
\\\text{distance}_w = \\frac{g_V - g}{\\sqrt{\\frac{\\sigma_V\^2}{V} + \\frac{\\sigma_T\^2}{T}}}, \\tag{17.63} \\
该值近似服从均值为0、方差为1的正态分布。作为剪枝检验值,我们定义:
\\\text{test}_w = \\frac{1}{\\varepsilon + \|\\text{distance}_w\|}. \\tag{17.64} \\
该检验值可按如下方式用于构建权重的排序:训练网络直至权重接近局部最优值,计算各检验值。然后,根据该检验标准剔除5%最不稳定的权重,重新执行学习步骤。不建议剔除超过5%的权重,因为不稳定性剪枝与学习所用的损失函数无关,因此可能对误差产生较大影响。该稳定性检验可以定义一个有趣的停止模型构建过程的标准。将权重剪枝至给定稳定性水平后,我们可以检查模型是否仍具备足够的拟合能力。该最终停止标准之所以可行,得益于检验的渐近正态分布特性。例如,如果我们将\(|\text{distance}_w| < 1\)的权重定义为稳定,那么我们就剪枝\(\text{test}_w < 1\)的权重。有人可能会认为,该方法中使用验证集是对验证集的隐式建模,因此验证集无法
17.8 训练流程
17.8.1 通过早停与严格停止策略进行训练
训练重叠问题的主要挑战之一是找到网络的最优停止点。最优停止点由不同类型的重叠决定。例如,如果网络是卷积网络(CN),在某一时间点(如100轮训练轮次)停止网络训练,比将网络训练至收敛效果更好。训练至收敛的网络可能会出现过拟合。
图17-13 单步长程预测。经过单步运算后,模型会预测序列中的下一个词元,随后模型基于该词元序列进行训练。
图17-9
分类
在用均匀权重初始化以获得混合的"其他"训练样本集后,为新实例选择最近邻算法。
- 主体: 在初始训练集的两个部分中,选择与新实例最相近的属性。
- 标题: 该步骤对下一个示例而言是可选的。
17.8.2 SCOP数据集
训练集用于训练分类模型。模型基于训练集训练,而非测试集。假设我们有一组用于分类的数据,我们使用训练集来训练模型。
纳入最陈旧的数据会让预测产生误导。在快速变化的世界中,模型的长期稳定性是优秀网络模型的重要性能特征。因此,我们更推荐图17-2中的划分方式。作为输入的若干预处理后的时间序列需要检查相关性,因为高度相关的输入只会增加模型中的数值不稳定性。为避免该问题,可以引入瓶颈子结构执行主成分分析。在我们的典型应用场景中,输入维度约为50,我们使用带对角矩阵的网络内部预处理方法。对于输入维度极大的模型(数百个),瓶颈方法可能更优。若使用带对角矩阵的网络内部预处理方法,需要检查输入的成对相关性。遵循金融建模中常用的大量使用图表指标的准则,这类指标通常具有较高的相关性。若将这些指标保留在训练集中,不同优化运行得到的解会给出关于输入因素重要性的不同结论。由于我们初始化时权重数量通常远多于训练样本数,我们也建议在训练过程中使用较小的权重衰减。惩罚参数应设置为学习率的10%左右,因为我们并不希望减少有效参数的数量。通过设置较小的衰减参数值,只有那些完全没有学到有效信息的权重会被拉至零。这样我们既能达到最低训练误差,又能剔除所有对测试集产生不可预测影响的不必要权重。
17.8.3 学习:结构假设的生成
若面对大型数据集,例如预测日收益率的任务,我们建议使用VarioEta自适应算法训练权重。
17.3 神经网络的作用
- 进一步了解神经网络的作用。
17.4 预测:神经网络的能力
在本例中,我们关注神经网络的输出。该网络的输入是一系列图像。随后我们可以训练网络完成其他任务。神经网络的输出是一系列数值。
有人会批评提出的剪枝策略,因为它确实是对验证集的优化。因此,验证集上的误差不再能很好地估计泛化误差。我们认为无法省略这一步验证,因为时间稳定性测试对于获得高泛化性能的模型至关重要。在后续的网络学习部分,我们采用"奥卡姆剃刀"原则,通过基于训练集计算测试值的权重剪枝来实现。这可能是EBD或不稳定剪枝(参见17.7.2节)。基于数百次实验,这两种方法的性能相当。在分别剪枝约10%和5%的有效权重后,我们会重新训练,直到获得稳定的误差曲线和噪声水平。人们可以通过先用不稳定剪枝消除权重,再用EBD生成极稀疏网络来组合这些剪枝方法。不稳定剪枝更看重模型的长期稳定性,而EBD能得到仍能较好拟合的稀疏模型。
如果使用图17.8所示的十一层架构,出于两个原因,权重剪枝应仅应用于连接预处理层或平方层到隐藏层的权重。第一,这些连接占神经网络权重的绝大多数。第二,仅对到输出神经元距离相同的权重应用剪枝技术非常重要,这样基于梯度的剪枝算法的测试值具有可比性,从而得到可靠的权重排序。^5
图17.23。剪枝与自适应噪声水平的相互作用
如果决定不使用十一层架构,而是采用扩展了随机目标的典型神经网络,就必须考虑输入和权重剪枝带来的以下影响。测试值仅需针对正确目标计算,这样拟合随机目标的权重会失去重要性。EBD剪枝在识别此类平坦极小值权重方面表现优异(参见17.7.2节),因此是我们对该建模方法最青睐的剪枝方式。剪枝与自适应噪声流程之间存在有趣的相互作用(参见图17.23)。在每次剪枝步骤中,我们会消除一些已经记住了数据部分结构的参数,这会导致残差输入误差增大,进而使输入的噪声水平升高。因此,每次剪枝后,学习需要更聚焦于数据的全局结构。由于剪枝会使网络记忆逐渐减少,网络无法依赖数据的任何特定特征,反而被迫越来越集中于底层的通用结构。有趣的是,这部分流程可被视为与训练到最小训练误差的过程相反:在后一个过程中,网络会被清洗噪声迫使先学习全局结构,再尝试从数据中提取特定特征。
17.8.5 训练的最终停止标准
我们需要回答的最后一个问题是最终停止点的定义。显然,经过多次权重剪枝和训练迭代后,训练集和验证集上的误差都会上升。因此,验证集上的最小误差可以为我们提供停止优化的时间依据。实际中,学习过程中的误差曲线并非仅存在单个最小值的平滑单调曲线。最简单的建议是:持续剪枝直到所有权重都被消除,同时保留记录以存储验证集上的最佳中间解。
图17.24。训练过程中的误差表现。区域(1)描述达到最小训练误差的过程;(2)是验证集上输入剪枝期间的典型表现;(3)展示了以剪枝形式体现的奥卡姆剃刀效应。每次剪枝后重新训练的迭代都会提升模型稳定性,因为不稳定剪枝会删除不稳定的权重(参见17.7.2节)。414 R. 诺伊纳、H.G. 齐默尔曼
17.8.6 训练流程示意图
图17.25中的以下示意图将训练步骤整合为统一的训练流程。
图17.25。训练流程示意图。标记(*)表示停止点(参见17.8.3和17.8.4节)。框号对应相应章节。
17.9 实验
在一个由欧洲共同体资助的研究项目中,我们正使用所提出的方法来估算七国集团(G7)各国3个金融市场的收益率12。这些估算结果将随后用于资产配置方案,以构建马科维茨最优投资组合。本文仅报告德国债券收益率的估算结果,由于德国与德意志民主共和国(GDR)统一的原因,这是难度较高的任务之一。在此,我们需要预测债券收益率6个月后的走势。输入由对16个相关金融时间序列预处理得到的39个变量组成。⁶
⁶ 目前我们无法提供所使用实际数据的更多细节。
训练集覆盖1974年4月至1991年12月的时间段,验证集覆盖1992年1月至1994年5月,结果使用1994年6月至1996年5月的外样本数据收集。为展示算法表现,我们将所提方法与带一个隐藏层(20个神经元,tanh传递函数)和一个线性输出的标准神经网络进行比较(误差函数见公式17.30)。首先,我们采用批量大小为20的逐样本学习训练神经网络,直到收敛,我们将该网络称为经典方法。然后,我们使用4.1节描述的统一步骤训练11层网络(图17.8)。由于数据集较小,我们未使用VarioEta,采用逐样本学习。数据通过公式17.50的清洗和噪声方法进行处理。我们基于三项性能指标比较两种网络的预测结果(见表17.3)。第一,命中率统计债券收益率符号被正确预测的次数。对于其他指标,从预测模型到交易系统的转换在此保持非常简单:若输出为正,则买入债券份额,否则卖出。已实现潜力是收益率与训练(测试)集上最大可能收益率的比值。年化收益率是交易系统的平均年利润。结果表明我们的方法更优。例如,在测试集上,我们将年化收益率从4.5%几乎提升了一倍至8.5%。在图17.26中,我们比较了两种方法在测试集上的累计收益。统一步骤不仅表现出更高的盈利能力,最大回撤也远低于经典方法。
| 网络 | 命中率 | 已实现潜力 | 年化收益率 |
|---|---|---|---|
| 本文方法 | 96%(81%) | 100%(75%) | \(11.22\%(8.5\%)\) |
| 经典方法 | \(93\%(66\%)\) | \(96\%(44\%)\) | \(10.08\%(4.5\%)\) |
图17.26。 两种方法累计盈亏曲线的对比
17.10 结论
神经网络进行的典型回归分析通常始于这样一句话:"从原则上讲,神经网络可以建模一切"。如果数据因噪声或缺失因子而可靠性不足,学习仅是建模流程的一部分。通常,我们会使用与任务无关的正则化作为减少数据引入的不确定性的手段。更广泛地说,建模流程需要更多关于特定任务的额外信息(先验知识)。我们已证明,存在大量可根据问题添加额外约束的技术。因此,最终得到的模型不仅基于训练数据,还基于额外约束以及训练流程的精确步骤。从贝叶斯视角来看,这可以被描述为在建模流程中融入先验。因此,本文也可以被解读为对有价值的先验以及如何组合这些先验以实现最大协同效应的讨论。作者认为,这些额外特征是神经网络的突出优势,将带来更鲁棒、更成功的模型。本文概述了我们在应用中认为有用的一些特征。最后,统一的训练流程是通过一系列相对简单的步骤使用神经网络构建模型的方案。本文的一个重要方面是研究了不同技术之间的相互作用。所描述的算法已集成到西门子股份公司的神经网络仿真环境(SEENN)产品中。更多信息可参见其官网http://www.senn.sni.de。
参考文献
-
1\] Ackley D.H.、Hinton G.E.、Sejnowski T.J.:《玻尔兹曼机学习算法》.《认知科学》第9期,147--169页(1985年);重印于\[2
- 2 Anderson J.A.、Rosenfeld E.(编):《神经计算:研究基础》. 麻省理工学院出版社,剑桥(1988)
- 3 Bishop C.M.:《模式识别的神经网络》. 克拉伦登出版社,牛津(1995)
- 4 Breiman L.:装袋预测器. 技术报告TR第421号,加州大学统计系(1994)
- 5 Bunke H.、Bunke O.:《非线性回归》. 载于:《泛函分析与稳健方法》,第2卷. 约翰威立国际出版公司(1989)
- 6 Caruana R.:多任务学习. 《机器学习》第28期,41--75页(1997)
- 7 Elton E.J.、Gruber M.J.:《现代投资组合理论与投资分析》. 约翰威立国际出版公司(1995)
- 8 Finnoff W.、Hergert F.、Zimmermann H.G.:通过非收敛模型选择方法提升泛化性能. 载于:Aleksander I.、Taylor J.(编)《1992年国际人工神经网络会议(ICANN 1992)论文集》,第2卷,第233--236页(1992)
- 9 Finnoff W.、Hergert F.、Zimmermann H.G.:《可变步长的神经学习方法》. 技术报告,西门子股份公司(1993)
- 10 Flake G.W.:平方单元增强的径向扩展多层感知器. 载于:Orr G.B.、Müller K.-R.(编)《神经网络:实战技巧》第1版,LNCS第7700卷,第143--161页. 施普林格出版社,海德堡(2012)
- 11 Gershenfeld N.A.:实验者的动力系统观测导论. 载于:Hao B.(编)《混沌研究进展》,第2卷,第310--384页. 世界科学出版公司,新加坡(1991)
- 12 Herve P.、Naim F.、Zimmermann H.G.:《资产配置的高级自适应架构:试验应用》. 载于:《金融市场预测》(1996)
- 13 Hochreiter S.、Schmidhuber J.:平坦极小值. 《神经计算》第9卷第1期,1--42页(1997)
- 14 Hornik K.:多层前馈网络的逼近能力. 《神经网络》第4卷第1期,57--69页(1991)
- 15 LeCun Y.、Denker J.S.、Solla S.A.:最优脑损伤. 载于:Touretzky D.S.(编)《神经信息处理系统进展(NIPS 1989)》,第2卷,第598--605页. 摩根考夫曼出版社,圣马特奥(1990)
- 16 Moody J.E.、Røgnvaldsson T.S.:投影基函数网络的光滑正则化项. 载于:Mozer M.C.、Jordan M.I.、Petsche T.C.(编)《神经信息处理系统进展》,第9卷,第585页. 麻省理工学院出版社(1997)
- 22 Ormoneit D.:基于神经网络的概率密度估计. 硕士论文,慕尼黑工业大学信息学院(1993)
- 23 Papoulis A.:《概率、随机变量与随机过程》第3版. 麦格劳-希尔教育出版公司(1991)
- 24 Perrone M.P.:《改进回归估计:用于方差缩减的平均方法及其在一般凸测度优化中的扩展》. 博士论文,布朗大学(1993)
- 25 Refenes A.P.(编):《资本市场中的神经网络》. 威立国际出版公司(1994)
- 26 Sanger T.D.:单层线性前馈网络中的最优无监督学习. 《神经网络》第4期,459--473页(1989)
- 27 Seber G.A.F.、Wild C.J.:《非线性回归》. 约翰威立国际出版公司,纽约(1989)
- 28 Srivastava A.N.、Weigend A.S.:连接主义回归中的概率密度计算. 载于:Marinaro M.、Morasso P.G.(编)《1994年国际人工神经网络会议(ICANN 1994,意大利索伦托)论文集》,第685--688页. 施普林格出版社(1994);另载于《IEEE国际神经网络会议(IEEE-ICNN'94,佛罗里达州奥兰多)论文集》,第3786--3791页. IEEE出版社(1994)
- 29 Takens F.:湍流中奇异吸引子的检测. 载于:Rand D.A.、Young L.S.(编)《动力系统与湍流》(1981)
- 30 Tang B.、Hsieh W.、Tang ...(1995)
- 31 Tresp V.、Neuneier R. ...(1996)
- 32 Weigend A.S.、Zimmermann H.G.:利用局部关系作为软约束提升预测精度. 《金融计算智能》第6卷第1期(1998年1月)
- 33 Weigend A.S.、...
- 34 Weigend A.S.、Rumelhart D.E. ...(1995)
- 35 White H.:基于人工神经网络的参数统计估计. 技术报告,加州大学圣迭戈分校(1991)
- 36 Zimmermann H.G.、Weigend A.S.:...
- 37 Zimmermann H.G.:《作为决策计算的神经网络》. 载于:Rehkugler H.(编)《经济学中的神经网络》. 弗朗茨·瓦伦出版社(1994)
- 38 Zimmermann H.G.、Neuneier R.:神经预测中的观察者-观测困境. 载于:《神经...》
大规模学习与深度神经网络
前言
更多的数据和算力为"大规模学习"铺平了道路,也就是将机器学习扩展到大规模数据集和复杂问题上。为了解决这些新问题,我们需要识别出关联输入与输出的复杂依赖关系1。实现这一目标需要算法同时具备强大的表征能力,以及从大规模数据流中吸收、提炼信息的能力。越来越明显的是,神经网络为扩展学习规模提供了极佳的工具集。这一点既适用于简单的线性系统,也适用于当今的重大挑战------这类问题的底层应用需求具备高度非线性和复杂的结构化表征。接下来的四章将介绍解决这些复杂学习问题的基础工具箱,包括一阶和二阶优化方法、神经网络训练的最佳实践,以及对Torch7的入门介绍,Torch7是一个用于实现大规模学习问题的神经网络库。
首要挑战是为模型提供足够的数据,以正确识别大量依赖关系。第18章2介绍了随机梯度下降算法(每次学习一个样本),证明该算法可以在特定条件下以渐近最优的速度最小化目标函数。神经网络是执行此类优化的有用框架。后续第28章7将详述神经网络的对应原理,该原理指出:我们可以为某个方程或优化问题匹配一种神经网络架构,将学习问题转化为网络中相邻单元之间的局部信号交换。因此,优化问题的可解性很大程度上取决于神经网络架构及其多个超参数3。这些超参数以及选择超参数的方法将在第19章5中详细分析。
在某些情况下,神经网络的多个超参数不足以生成条件良好的优化问题。困难的优化问题包括循环神经网络或深度神经网络,二者都涉及长程依赖。利用二阶信息(即目标函数的二阶导数)可以实现更快的收敛。相较于一阶方法,二阶方法对噪声的敏感度更高,需要精细调优的优化参数,才能实现良好的速度-稳定性折中。第20章6将深入讨论深度神经网络和循环神经网络的二阶方法。
G. Montavon 等人(编):《神经网络:实战技巧》第2版,LNCS 7700,第419-420页,2012年。
© 施普林格-弗拉格柏林海德堡出版社 2012
最后,算法必须转化为可由机器运行的代码。第21章4介绍了Torch7,这是一款高效易用的神经网络构建与训练软件。该软件提供了大量神经网络基础组件,且模块化程度极高,可应用于包括计算机视觉、自然语言处理、语音识别在内的众多问题领域。
Grégoire 与 Klaus
参考文献
- 1 Bengio Y.、LeCun Y.:《将学习算法扩展至人工智能》. 载于:《大规模核机器》(2007)
- 2 Bottou L.:《随机梯度下降技巧》. 载于:Montavon G.、Orr G.B.、Müller K.-R.(编)《神经网络:实战技巧》第2版,LNCS第7700卷,第421--436页. 施普林格出版社,海德堡(2012)
- 3 LeCun Y.、Bottou L.、Orr G.B.、Müller K.-R.:《高效反向传播》. 载于:Orr G.B.、Müller K.-R.(编)《NIPS-WS 1996》,LNCS第1524卷,第9--50页. 施普林格出版社,海德堡(1998)
- 4 Collobert R.、Kavukcuoglu K.、Farabet C.:《神经网络的高效实现》. 载于:Montavon G.、Orr G.B.、Müller K.-R.(编)《神经网络:实战技巧》第2版,LNCS第7700卷,第537--557页. 施普林格出版社,海德堡(2012)
- 5 Bengio Y.:《基于梯度的深度架构训练的实用建议》. 载于:Montavon G.、Orr G.B.、Müller K.-R.(编)《神经网络:实战技巧》第2版,LNCS第7700卷,第437--478页. 施普林格出版社,海德堡(2012)
- 6 Martens J.、Sutskever I.:《基于无Hessian矩阵优化的深度与循环网络训练》. 载于:Montavon G.、Orr G.B.、Müller K.-R.(编)《神经网络:实战技巧》第2版,LNCS第7700卷,第479--535页. 施普林格出版社,海德堡(2012)
- 7 Zimmermann H.-G.、Tietz C.、Grothmann R.:《基于循环神经网络的预测:12个技巧》. 载于:Montavon G.、Orr G.B.、Müller K.-R.(编)《神经网络:实战技巧》第2版,LNCS第7700卷,第687--707页. 施普林格出版社,海德堡(2012)
18 随机深度搜索技巧
Lisa Büttner
斯图加特大学,戴姆勒-科尔伯大街,70172 斯图加特,德国
摘要。随机深度搜索(SDS)是一种用于寻找组合优化问题最优解的优化方法。本文提出了一种基于深度搜索(DS)的新型搜索策略。我们证明,所提出的SDS方法能够找到各种组合优化问题的最佳可能解,且运行速度和内存效率均优于现有方法。我们的方法还能比其他方法更好地解决难度更高的问题实例。我们的方法也能够在各种组合优化问题中找到最佳可能解。
18.1 引言
随机深度搜索(SDS)是一种用于寻找组合优化问题最优解的优化方法。本文提出了一种基于深度搜索(DS)的新型搜索策略。我们证明,所提出的SDS方法能够找到各种组合优化问题的最佳可能解,且运行速度和内存效率均高于现有方法。我们的方法还能比其他方法更好地解决难度更高的问题实例。我们的方法也能够在各种组合优化问题中找到最佳可能解。
18.2 什么是随机深度搜索?
随机深度搜索(SDS)是一种能够为组合优化问题找到最优解的搜索算法。本文提出了一种基于深度搜索(DS)的新型搜索策略。我们证明,所提出的SDS方法能够找到各种组合优化问题的最佳可能解,且运行速度和内存效率均高于现有方法。我们的方法还能比其他方法更好地解决难度更高的问题实例。我们的方法也能够在各种组合优化问题中找到最佳可能解。
18.2.1 梯度下降
人们已多次提出(例如18)使用梯度下降(GD)来最小化经验风险\(E_n(f_w)\)。每次迭代根据\(E_n(f_w)\)的梯度更新权重\(w\):
\w_{t+1} = w_t - \\gamma \\frac{1}{n} \\sum_{i=1}\^{n} \\nabla_w Q(z_i, w_t), \\quad \\quad \\quad \\quad \\quad \\quad (18.2) \\
其中\(\gamma\)是经过适当选取的学习率。在足够正则性的假设下,当初始估计值\(w_0\)足够接近最优解,且学习率\(\gamma\)足够小时,该算法可实现线性收敛6,即\(-\log \rho \sim t\),其中\(\rho\)表示残差。通过将标量学习率\(\gamma\)替换为在最优解处逼近代价函数黑塞矩阵逆矩阵的正定矩阵\(\Gamma_t\),可以设计出性能更优的优化算法:
\w_{t+1} = w_t - \\Gamma_t \\frac{1}{n} \\sum_{i=1}\^{n} \\nabla_w Q(z_i, w_t). \\quad \\quad \\quad \\quad \\quad \\quad (18.3) \\
这种二阶梯度下降(2GD)是著名的牛顿算法的变体。在足够乐观的正则性假设下,且当\(w_0\)足够接近最优解时,二阶梯度下降可实现二次收敛。当代价函数为二次函数且缩放矩阵\(\Gamma\)精确时,该算法仅需一次迭代即可达到最优解。否则,在假设足够光滑的前提下,我们有\(-\log \log \rho \sim t\)。
18.2.2 随机梯度下降
随机梯度下降(SGD)算法是一种大幅简化的算法。它无需精确计算\(E_n(f_w)\)的梯度,每次迭代仅基于随机选取的单个样本\(z_t\)估计该梯度:
\w_{t+1} = w_t - \\gamma_t \\nabla_w Q(z_t, w_t). \\quad \\quad \\quad \\quad \\quad \\quad (18.4) \\
- 随机过程\(\{w_t, t=1, \ldots\}\)依赖于每次迭代随机选取的样本。我们希望尽管该简化流程引入了噪声,式(18.4)的表现仍能与其期望(即式(18.2))一致。由于随机算法无需记录前几次迭代中访问过的样本,因此可在部署系统中对流式样本进行处理。在这种情况下,由于样本是从真实分布中随机抽取的,随机梯度下降可直接优化期望风险。
表18.1 随机梯度下降算法3
| 算法 | 符号 | 描述 |
|---|---|---|
| Adaline 2 | \(y_i = \theta_i' \mathbf{z}_i\) | \(y_i - \sum_i \delta_i z_i = 1\) |
| Perceptron 17 | \(y_i = \theta_i' \mathbf{z}_i\) | \(y_i - \sum_i \delta_i z_i = 1\) |
| Kernel Method | \(Q_j = \max_i \sum_i \delta_i z_i\) | \(y_i - \sum_i \delta_i z_i = 1\) |
| SVM 5 | \(Q_j = \max_i \sum_i \delta_i z_i\) | \(y_i - \sum_i \delta_i z_i = 1\) |
| Logistic | \(Q_j = \max_i \sum_i \delta_i z_i\) | \(y_i - \sum_i \delta_i z_i = 1\) |
| Least Squares | \(Q_j = \max_i \sum_i \delta_i z_i\) | \(y_i - \sum_i \delta_i z_i = 1\) |
18.3.3 随机梯度下降的收敛性
随机梯度下降的概念并非唯一。收敛性理论要求步长\(\alpha\)足够小。较大的步长\(\alpha\)无法保证算法收敛。此外,该算法还可用于寻找全局最优解。
- 当代价函数在最优解处的黑塞矩阵严格正定时,使用学习率\(\gamma_t \sim t^{-1}\)(例如14)可实现最佳收敛速度。此时残差期望的下降速度与之相似,即\(\mathbb{E}(\rho) \sim t^{-1}\)。这些理论收敛速率在实践中经常被观察到。
- 当我们放宽这些正则性假设时,理论表明收敛速率会变慢,通常为\(\mathbb{E}(\rho) \sim t^{-1/2}\)(例如28)。实际上,收敛速度仅在优化过程的最后阶段才会下降。这可能在实际中没有影响,因为人们通常在到达该阶段前就会停止优化(见18.3.1节)。
二阶随机梯度下降(2SGD)通过将梯度乘以一个逼近黑塞矩阵逆矩阵的正定矩阵\(\Gamma_t\)来改进:\(w_{t+1} = w_t - \gamma_t \Gamma_t \nabla_w Q(z_t, w_t)\)。不幸的是,这一修改并未降低随机噪声,因此无法显著改善\(w_t\)的方差。尽管常数项得到优化,残差的期望最多仍以\(t^{-1}\)的速度下降,即\(\mathbb{E}(\rho) \sim t^{-1}\)(例如1,附录)。因此,作为一种优化算法,随机梯度下降的渐近速度远慢于典型的批量算法。不过,这并非全部情况......
18.3 何时使用随机梯度下降?
过去十年间,数据规模的增长速度超过了处理器的速度提升。在此背景下,统计机器学习方法的能力受限于计算时间而非样本量。本节的分析表明,随机梯度下降在此场景下表现优异。
18.3.1 大规模学习的权衡
令\(f^* = \arg\min_f E(f)\)为最佳可能预测函数。由于我们需要从参数化函数族\(\mathcal{F}\)中寻找预测函数,因此令
1.5 定理1(最小二乘定理)
设\(\mathcal{S}\)为最小二乘泛函。则对任意随机变量\(X\),\(\mathcal{S}\)都是\(X\)的最优线性泛函\(\mathcal{S}(X)\)。本文中我们将\(\mathcal{S}(X)\)定义为\(X\)的最小二乘估计量,并用\(\hat{X}\)表示\(X\)的最小二乘估计量。
证明:证明过程见附录A。该证明表明,对任意随机变量\(X\),\(X\)的最小二乘估计量是最优线性泛函\(\mathcal{S}(X)\)。本文中我们将\(\mathcal{S}(X)\)定义为\(X\)的最小二乘估计量。我们用\(\hat{X}\)表示\(X\)的最小二乘估计量。证毕。
18.1.3.2 多空情况下的渐近分析
对于多头和空头两种情况,矩阵\(\Sigma\)是非奇异矩阵。我们用\(\Sigma_{\text{long}}\)和\(\Sigma_{\text{short}}\)分别表示两种情况下\(\Sigma\)的取值。\(\Sigma\)的取值受限于多头和空头两种情况。要使\(\Sigma\)受限于多头和空头两种情况,其取值需满足对应约束。类似地,我们可以计算多头和空头两种情况下的\(\Sigma\)取值:
- 多头情况:\(\Sigma = \Sigma_{\text{long}}\)
- 空头情况:\(\Sigma = \Sigma_{\text{short}}\)
以上\(\Sigma\)的取值由\(\Sigma_{\text{long}}\)和\(\Sigma_{\text{short}}\)计算得出。
表18.2 各优化算法的渐近等价形式
表18.2 各优化算法的渐近等价形式:梯度下降(GD,公式18.2)、二阶梯度下降(2GD,公式18.3)、随机梯度下降(SGD,公式18.4)以及二阶随机梯度下降(2SGD,公式18.5)。尽管这些是最差的优化算法,但SGD和2SGD在期望风险上的收敛速度最快。二者仅存在表中未列出的常数因子差异,例如条件数和权重向量维度等。
| GD | 2GD | SGD | 2SGD | |
|---|---|---|---|---|
| 每轮迭代耗时 | \(n\) | \(n\) | 1 | 1 |
| 达到精度\(\rho\)所需的迭代次数 | \(\log \frac{1}{\rho}\) | \(\log \log \frac{1}{\rho}\) | \(1/\rho\) | \(1/\rho\) |
| 达到精度\(\rho\)所需总耗时 | \(n \log \frac{1}{\rho^2}\) | \(n \log \log \frac{1}{\rho}\) | \(1/\rho\) | \(1/\rho\) |
| 达到超额误差\(\varepsilon\)所需总耗时 | \(\frac{1}{\varepsilon^{1/\alpha}} \log \frac{1}{\varepsilon}\) | \(\frac{1}{\varepsilon^{1/\alpha}} \log \frac{1}{\varepsilon} \log \log \frac{1}{\varepsilon}\) | \(1/\varepsilon\) | \(1/\varepsilon\) |
其他算法达到预设期望风险需满足第四行约束。因此,在大规模场景下,即当计算时间是限制因素而非样本数量时,随机学习算法的渐近性能更优!
18.4 通用建议
本节其余部分将提供一系列使用随机梯度算法的建议。尽管其中部分建议看似微不足道,但经验反复表明,这些建议非常容易被忽略。
18.4.1 数据准备
随机打乱训练样本。尽管理论要求随机选取样本,但通常顺序遍历训练集速度更快。但如果样本按类别分组或遵循特定顺序,这种做法就不可行。随机打乱样本可以消除这一隐患。第1.4.2节有 further discussion。使用预处理技术。随机梯度下降是一阶算法,因此当它进入Hessian矩阵病态的区域时,性能会急剧下降。幸运的是,许多简单的预处理技术可以大幅改善这种情况。第1.4.3节和第1.5.3节提供了许多实用技巧。
18.4.2 监控与调试
同时监控训练损失和验证误差。由于随机梯度下降在训练时间是主要约束时非常实用,我们可以留出部分训练样本构建合理的验证集。训练过程中定期评估验证误差非常重要,因为当我们观察到验证误差长时间没有提升时,可以停止训练。定期计算训练损失也非常重要,因为随机梯度下降是迭代优化算法。由于训练损失正是算法要优化的目标,因此训练损失通常应该呈下降趋势。一个不错的做法是重复执行以下操作:
- 顺序遍历一次打乱后的训练集,执行随机梯度下降更新(公式18.4)。
- 额外遍历一次训练集,计算训练损失。此处的训练损失指算法要优化的准则。你可以利用这次遍历计算其他指标,但训练损失是需要重点关注的指标。
- 额外遍历一次验证集,计算验证集误差。此处的误差指我们关心的性能指标,例如分类误差。你也可以利用这次遍历低成本计算其他指标。
计算训练损失和验证误差需要额外的训练集和验证集遍历,会带来较大的计算开销。但总比盲目运行要好。
使用有限差分检查梯度。当梯度计算存在轻微误差时,随机梯度下降往往运行缓慢且不稳定。这导致许多人误以为缓慢且不稳定是该算法的正常表现。
- 选取一个样本 \(z\)。
- 计算当前权重 \(w\) 下的损失 \(Q(z, w)\)。
- 计算梯度 \(g = \nabla_w Q(z, w)\)。
- 对 \(w\) 施加微小扰动得到 \(w' = w + \delta\)。例如,将单个权重增加一个极小增量,或取足够小的 \(\gamma\),令 \(\delta = -\gamma g\)。
- 计算新的损失 \(Q(z, w')\),并验证 \(Q(z, w') \approx Q(z, w) + \delta^T g\) 成立。
该流程可以自动化,且需要针对大量样本 \(z\)、大量扰动 \(\delta\) 以及大量初始权重 \(w\) 重复执行。梯度计算中的缺陷往往只在满足特殊条件时才会显现。在已默默使用多年的随机梯度下降(SGD)代码中发现这类缺陷并不罕见。
使用训练集的小样本尝试不同的学习率 \(\gamma_t\)。随机梯度下降的数学特性与训练集大小高度无关。尤其是渐近SGD收敛速率15不受样本量影响。因此,假设梯度计算正确,确定合适学习率的最佳方式是使用一小部分具有代表性的训练集样本开展实验。由于样本量很小,也可以在同一数据集上运行传统优化算法以获得参考基准,同时设定训练成本目标。当算法在小数据集的训练成本上表现良好时,保持同样的学习率,让其继续在完整训练集上训练。验证集性能预计在若干轮迭代后进入平台期,迭代轮数大致等同于小训练集达到该表现所需的轮数。
18.5 带 \(L_2\) 正则化的线性模型
本节提供针对大规模带 \(L_2\) 正则化线性模型训练的具体建议。此类模型的训练目标具有如下形式
\E_n(w) = \\frac{\\lambda}{2} \\\|w\\\|\^2 + \\frac{1}{n}\\sum_{i=1}\^d \\ell(y_i w x_i) \\tag{18.10} \\
其中 \(y_i \in \{-1, +1\}\),且函数 \(\ell(m)\) 是凸函数。
对应的随机梯度更新通过用单个样本的损失导数近似求和项的导数得到。
示例:
- 支持向量机(SVM)使用不可导的铰链损失:\(\ell(m) = \max\{0, 1+m\}\)。
- 在线性场景下,使用对数损失通常更便捷: \\ell(m) = \\log(1 + e\^{-m}).
可导的对数损失更适合本节讨论的梯度算法。该选择会得到逻辑回归算法:可通过逻辑函数推导概率估计: P(y = +1\|x) \\approx \\frac{1}{1 + e\^{-wx}}.- 所有带线性参数化的统计模型都适合使用随机梯度下降训练,将模型的似然函数作为损失函数 \(Q(z, w)\)。例如,条件随机场(CRF)8 的相关结果在18.5.4节报告。
18.5.1 利用稀疏性
利用训练样本 \(\{x_t\}\) 的稀疏性。将 \(w_t\) 表示为 \(s_t W_t\) 的乘积,其中 \(s_t \in \mathbb{R}\)。训练样本通常是仅含少量非零系数的高维向量。此时随机梯度更新(18.11)
\w_{t+1} = (1 - \\gamma_t \\lambda)w_t - \\gamma_t y_t x_t \\ell'(y_t w_t x_t) \\
会很不便,因为它会先将向量 \(w\) 的所有系数按因子 \((1 - \gamma_t \lambda)\) 进行缩放,而更新的其余部分仅涉及模式 \(x_t\) 中对应非零系数的权重系数。将向量 \(w_t\) 表示为 \(s_t W_t\) 的乘积(其中 \(s_t\) 是标量)可以规避该问题21。此时随机梯度更新(18.11)可以被拆分为复杂度随 \(x_t\) 中非零项数量缩放的操作:
\g_t = \\ell'(y_t s_t W_t x_t), \\quad s_{t+1} = (1 - \\gamma_t \\lambda)s_t, \\quad W_{t+1} = W_t - \\gamma_t y_t g_t x_t / s_{t+1}. \\
18.5.2 学习率
使用形式为 \(\gamma_t = \gamma_0 (1 + \gamma_0 \lambda t)^{-1}\) 的学习率。使用小规模训练数据样本确定最优的 \(\gamma_0\)。当损失函数在最优值处的Hessian矩阵严格正定时,使用形式为 \((\lambda_{\min} t)^{-1}\)(其中 \(\lambda_{\min}\) 是Hessian的最小特征值14)的学习率能获得最快的收敛速度。理论分析还表明,将 \(\lambda_{\min}\) 高估超过2倍会导致收敛非常缓慢。虽然我们不知道 \(\lambda_{\min}\) 的精确值,但训练目标函数中的 \(L_2\) 正则项意味着 \(\lambda_{\min} \geqslant \lambda\)。因此我们可以安全地使用渐近衰减形式为 \((\lambda t)^{-1}\) 的学习率。遗憾的是,直接使用 \(\gamma_t = (\lambda t)^{-1}\) 会导致优化初期学习率过大。可以使用额外的投影步骤21 来降低负面影响,直到学习率降至合理水平。但更好的做法是直接采用合理的学习率初始值。公式 \(\gamma_t = \gamma_0(1 + \gamma_0 \lambda t)^{-1}\) 能确保学习率 \(\gamma_t\) 从预设值 \(\gamma_0\) 开始,并渐近按 \((\lambda t)^{-1}\) 的形式衰减。最稳健的方式是如前所述,使用训练集的小样本确定最优的 \(\gamma_0\)。这一做法是合理的,因为渐近SGD收敛速率14 不受样本量影响。为了进一步提升方法鲁棒性,我通常会选择略小于小训练样本上观测到的最优值的 \(\gamma_0\)。这类学习率在远超出本次分析范围的情境下也被证明是有效的。例如,它们在处理铰链损失等不可导损失函数21时表现良好;在给模型添加无正则化偏置项时表现也很好。不过此时给偏置项本身使用更小的学习率是更明智的选择。
18.5.3 平均随机梯度下降
平均随机梯度下降(ASGD)算法19 执行常规随机梯度更新(18.4),并计算均值
该均值可以通过递推公式高效计算。例如,针对带 \(L_2\) 正则化的训练目标(18.10),以下权重更新实现了ASGD算法:
其中平均速率为
当使用衰减速度慢于 \(t^{-1}\) 的学习率 \(\gamma_t\) 时,ASGD的理论分析表明训练误差 \(E_n(\bar{w}_t)\) 以最优常数15 按 \(t^{-1}\) 的速率下降。其表现与计算成本仅为(18.5)一部分的二阶随机梯度下降(2SGD)相当。遗憾的是,ASGD通常启动速度比普通SGD慢,可能需要较长时间才能达到最优渐近收敛速度。虽然合理选择学习率能缓解该问题27,但当输入 \(x_t\) 的维度 \(d\) 增大时,问题会进一步恶化。不幸的是,目前没有明确的准则来选择启动平均过程的时间点 \(t_0\)。
尝试使用平均随机梯度下降,参数设置为:
- 学习率 \(\gamma_t = \gamma_0(1 + \gamma_0 \lambda t)^{-3/4}\)
- 平均速率 \(\mu_t = 1 / \max\{1, t - d, t - n\}\)
与18.5.1节介绍的技巧类似,存在一种高效的方法可以实现针对稀疏训练数据的平均随机梯度下降。思路是将变量 \(w_t\) 和 \(\bar{w}_t\) 表示为:
\w_t = s_t W_t, \\quad \\bar{w}_t = (A_t + \\alpha_t W_t) / \\beta_t \\
其中 \(\eta_t, \alpha_t\) 和 \(\beta_t\) 是标量。平均随机梯度更新方程可以被重写为仅涉及标量或稀疏操作的形式27:
\g_t = \\ell'(y_t s_t W_t x_t), \\quad s_{t+1} = (1 - \\gamma_t \\lambda)s_t \\
\W_{t+1} = W_t - \\gamma_t y_t x_t g_t / s_{t+1} \\
\A_{t+1} = A_t + \\gamma_t \\alpha_t y_t x_t g_t / s_{t+1} \\
\\\beta_{t+1} = \\beta_t / (1 - \\mu_t) \\
\\\alpha_{t+1} = \\alpha_t + \\mu_t \\beta_{t+1} s_{t+1} \\
18.5.4 实验
本节简要报告展示SGD和ASGD在多种线性系统上实际性能的实验结果。源代码可在 http://leon.bottou.org/projects/sgd 获取。所有学习率均按照18.5.2节所述的方法确定。
图18.1报告了使用SGD训练线性SVM,在RCV1数据集10上分别使用铰链损失和对数损失识别CCAT类别得到的结果。训练集包含781265份文档,由47152个相对稀疏的TF-IDF特征表示。SGD的运行速度远快于标准SVM求解器SVMLIGHT、SVMPERF7,或是超线性优化算法TRON11。
图18.2报告了在2008年Pascal大规模学习挑战赛ALPHA任务上,使用平方铰链损失训练线性模型得到的结果
| 算法 | 时间 | 测试误差 |
|---|---|---|
| 铰链损失SVM,\(\lambda=10^{-4}\) | ||
| SVMLIGHT | 23,642 秒 | 6.02 % |
| SVMPERF | 66 秒 | 6.03 % |
| SGD | 1.4 秒 | 6.02 % |
| 对数损失SVM,\(\lambda=10^{-5}\) | ||
| TRON(-e0.01) | 30 秒 | 5.68 % |
| TRON(-e0.001) | 44 秒 | 5.70 % |
| SGD | 2.3 秒 | 5.66 % |
| 图18.1. 在RCV1任务上使用铰链损失和对数损失训练的\(L_2\)正则化线性模型所得结果。图的下半部分显示了SGD和TRON在对数损失任务上达到预设精度\(\rho\)所需的时间。上半部分表明,在超线性优化算法\(\hat{\text{TRON}}\)超越SGD之前,期望风险早已停止改善。损失函数\(\ell(m)=\max\{0.1-m\}^2\)。作为参考,我们还提供了SGDQN算法1的结果,该算法是本竞赛的获胜算法之一,通过为每个权重自适应调整独立的学习率来工作。训练集包含100,000个样本,由500个中心化且归一化的变量表示。在独立测试集上测量的性能随遍历训练集的次数绘制。ASGD仅在一个epoch后即可达到接近最优的结果。图18.3报告了在CONLL 2000分词任务20上训练的CRF8使用SGD、SGDQN和ASGD所得的结果。训练集包含8936个句子,参数空间维度为\(1.68 \times 10^6\)。在独立测试集上测量的性能随遍历训练集的次数绘制。由于ASGD无法达到其渐近性能,SGDQN更具吸引力。 | ||
| 图18.2. 在2008年Pascal大规模学习挑战赛的ALPHA任务上,使用平方铰链损失训练的\(L_2\)正则化线性模型所得结果中,SGD、SGDQN和ASGD的测试集性能对比。ASGD在单次遍历后几乎达到最优期望风险。 | ||
| 图18.3(y轴:测试损失,x轴:测试F1分数;L. Bottou)在CONLL分词任务上训练的\(L_2\)正则化CRF所得结果中,SGD、SGDQN和ASGD的测试集性能对比。在该任务上,由于ASGD无法完全达到其渐近性能,SGD更具吸引力。三种算法均在数分钟内达到最佳测试集性能。标准的CRF-L-BFGS优化器计算等效解需要72分钟。 |
18.6 结论
随机梯度下降及其变体是多用途技术,已被证明是大型数据集学习算法中不可或缺的工具。成功应用这些技术的最佳建议是:(i)使用训练数据的子集进行小规模实验;(ii)严格关注梯度计算的正确性。
参考文献
1 Bordes, A., Bottou, L., Gallinari, P.: SGD-QN:谨慎拟牛顿随机梯度下降,《机器学习研究杂志》5,1227--1267(2004):勘误见JMLR 1, 28(4)
2 Bottou, L., Bousquet, O. 大规模学习的权衡。载于:Platt, J., Koller, D., Singer, Y., Roweis, S.(编)《神经信息处理系统进展》。第20卷。NIPS基金会。http://books.nips.c
7 Joachims, T.: 线性时间训练线性支持向量机。载于:第12届ACM SIGKDD国际会议论文集,纽约(2006)
8 Lafferty, J.D., McCallum, A., Pereira, F.C.N.: 条件随机场:用于序列数据分割与标记的概率模型。载于:Brodley, C.E., Danyluk, A.P.(编)《第十八届国际机器学习会议(ICML)论文集》,第282--289页。Morgan Kaufmann出版社,威廉姆斯学院(2001)
9 Lee, W.S., Bartlett, P.L., Williamson, R.C.: 凸性在平方损失学习中的重要性。《信息论IEEE汇刊》44(5),1974--1980(1998)
10 Lewis, D.D., Yang, Y., Rose, T.G., Li, F.: RCV1:一个用于文本分类研究的新基准数据集。《机器学习研究杂志》5,361--397(2004)
11 Lin, C.J., Weng, R.C., Keerthi, S.S.: 大规模逻辑回归的信任域牛顿法。载于:Ghahramani, Z.(编)《第二十四届国际机器学习会议(ICML)论文集》,第561--568页。ACM(2007)
12 MacQueen, J.: 多元观测的一些分类与分析的方法。载于:LeCam, L.M., Neyman, J.(编)《第五届伯克利数学、统计与概率研讨会论文集》,第1卷,第281--297页。加州大学出版社,伯克利(1967)
13 Massart, P.: 集中不等式在统计学中的一些应用。《图卢兹科学学院纪事》第6系列9(2),245--303(2000)
14 Murata, N.: 在线学习的统计研究。载于:Saad, D.(编)《在线学习与神经网络》。剑桥大学出版社,剑桥(1998)
15 Polyak, B.T., Juditsky, A.B.: 通过平均加速随机逼近。《SIAM控制与优化》30(4),838--855(1992)
16 Robbins, H., Siegmund, D.: 非负几乎超鞅的收敛定理及一些应用。载于:Rustagi, J.S.(编)《统计优化方法》。学术出版社(1971)
17 Rosenblatt, F.: 感知机:感知与识别自动机。技术报告REDACTED,PARA项目,康奈尔航空实验室(1957)
18 Rumelhart, D.E., Hinton, G.E., Williams, R.J.: 通过误差传播学习内部表示。载于:《并行分布式处理:认知微观结构的探索》,第I卷,第318--362页。Bradford Books,
22 Shalev-Shwartz, S., REDACTED REDACTED 与工业工程(1988)REDACTED,第REDACTED页,第REDACTED页,第REDACTED页
25 Vapnik, V.N., Chervonenkis, A.Y.: 事件相对频率一致收敛于其概率。《概率论及其应用》16(2),264--280(1971)
26 Widrow, B., Hoff, M.E.: 自适应开关电路。载于:IRE WESCON大会记录,第4部分,第96--104页(1960)
27 Xu, W.: 基于平均随机梯度下降的最优单次大规模学习(2011),http://arxiv.org/abs/1107.2490
28 Zinkevich, M.: 在线凸规划与广义无穷小梯度上升。载于:《第二十届国际机器学习会议论文集》(2003)
19 基于梯度的深度架构训练实用建议
摘要. 与人工神经网络相关、尤其是深度学习的学习算法似乎涉及许多被称为超参数的繁复设置。本章旨在作为实用指南,为最常用的部分超参数提供建议,尤其针对基于反向传播梯度和梯度优化的学习算法场景。本章还讨论了当允许调整大量超参数时可获得更有趣结果的相关问题。整体而言,本章描述了成功高效训练和调试大规模、通常是深层的多层神经网络所采用的实践要素,最后会提及更深架构中观察到的训练难题的相关开放问题。
19.1 引言
经过十年的低潮期后,人工神经网络研究在2006年基于每层特征贪婪逐层无监督预训练的深度学习突破6,14,95后重新焕发生机,详见7的综述。本书前一版所依据的许多实用建议至今仍然有效,同时新增了部分内容,还有一些建议因其实用优势得以留存更久。本章呈现的内容涉及这些留存或新增的部分实践要素,聚焦于旨在训练深度神经网络的学习算法,而玻尔兹曼机家族的大部分专属内容将放在另一章60介绍。尽管这些建议源于多年实验形成的有生命力的实践,并在一定程度上得到了数学验证,但仍应接受质疑。它们为学习算法的实验者和使用者提供了良好的起点,但很多时候尚未得到正式验证,留下了许多可被理论分析或扎实的对比实验工作( ideally 两者兼具)回答的开放问题。需要开展此类验证的一个明显标志是,不同研究人员和研究小组在神经网络训练实践上并非始终意见一致。
Theano是由《深度学习教程》作者开发的软件库。该项目的核心目标是高效实现反向传播算法以及其他深度学习技术。可扩展性是Theano库的另一大重要特性,它支持你编写可在多显卡及其他硬件资源下自动适配规模的代码。当有新的显卡加入时,只需通过命令行添加即可,无需再进行手动配置!此外,该库还内置多线程执行支持,可通过将任务分配到不同CPU核心或多核处理器的不同处理器上,大幅提升计算速度。
- 可扩展性: 支持在使用多显卡及其他硬件资源时自动适配规模。
10.11 深度学习与乔治·卢格-王困惑度
自然语言处理(NLP)领域中的"给定上下文预测句子下一个词"是一项定义明确的序列预测任务。该任务通常被形式化为马尔可夫决策过程(MDP),目标是通过生成词序列来最大化期望收益。不过,预测下一个词的问题其实是更通用的"预测状态序列中下一个状态"问题的一个实例,也就是给定上下文预测句子下一个词的任务。无监督表征学习。
每一层将上一层学习到的表征作为输入,学习得到新的表征。学习到的表征可作为输入,用于预测目标变量,例如对物体进行分类。在完成无监督预训练后,还可以对整个系统进行有监督微调⁶,也就是不仅优化分类器,还会根据对应目标优化特征层次结构的底层部分。结合无监督预训练和有监督微调,相比从纯随机初始化开始的纯有监督学习,通常能获得更好的泛化性能。2006年提出的用于预训练的无监督表征学习算法包括受限玻尔兹曼机(RBM)61、自编码器14以及类似稀疏编码95的稀疏化自编码器。
19.1.2 去噪自编码器与压缩自编码器
自编码器包含两部分:编码器函数\(f\),用于将输入\(x\)映射为表征\(h = f(x)\);解码器函数\(g\),用于将\(h\)映射回\(x\)的空间以重构\(x\)。在常规自编码器中,重构函数\(r(\cdot) = g(f(\cdot))\)的训练目标是使训练样本上的重构损失平均值最小化。注意,对于大多数其他输入配置,重构损失应较高⁷。正则化机制可确保重构在所有位置都无法达到完美,而在训练样本上最小化重构损失的操作,会在训练样本密度高的区域形成重构误差的"低洼区"。重构损失函数的示例包括\(\|x - r(x)\|^2\)(适用于实值输入),以及\(-\sum_i x_i \log r_i(x) + (1 - x_i) \log(1 - r_i(x))\)(将\(x_i\)视为比特或二值事件概率时使用)。
自编码器通过学习更优地重构更高概率的输入配置,来捕捉输入分布。重构向量与输入向量的差异与学习器估计的对数密度梯度相关114, 16,重构关于输入的雅可比矩阵可提供密度二阶导数的相关信息,也就是在高密度流形上时,密度保持较高的方向99, 16。在去噪自编码器(DAE)和压缩自编码器(CAE)中,训练流程还会分别引入对重构\(r(x)\)或表征\(f(x)\)的鲁棒性(即对小幅变化的敏感性)。DAE115, 116通过使用随机损坏的输入进行训练、同时尝试重构未损坏的输入来实现该特性。CAE99则通过在训练准则中添加显式正则项实现,该正则项与编码器的雅可比范数\(\|\frac{\partial f(x)}{\partial x}\|^2\)成正比。但CAE与DAE高度相关16:当噪声为高斯噪声且幅度较小时,DAE最小化的去噪误差等价于最小化重构函数\(r(\cdot) = g(f(\cdot))\)的雅可比范数,而CAE最小化的是编码器\(f(\cdot)\)的雅可比范数。除高斯噪声外,还有一种对DAE效果显著的扰动形式,名为masking corruption ,即随机将大部分(如20%甚至50%)输入置零,且每个样本的置零子集都是随机选择的。除了压缩效果外,该机制还会迫使学习到的编码器仅依赖输入特征的任意子集。另一种避免自编码器在所有位置都完美重构的方法是引入对\(h\)的稀疏惩罚,相关内容将在下文(19.3.1节)讨论。
⁶ 整个系统由表征计算与预测器输出计算组合而成。
⁷ 研究者已提出多种正则化机制,用于提升低密度区域的重构误差:去噪准则、压缩准则和码元稀疏性。有观点认为,这类约束的作用与玻尔兹曼机的配分函数类似96。
19.1.3 在线学习与泛化误差优化
学习的目标并非最小化训练误差,甚至也不是最小化训练准则。后者是泛化误差(即模型在全新样本外样本上的性能)的代理目标,且最小化训练准则并不一定能保证得到良好的泛化误差:这取决于参数化形式、训练准则(以及二者隐含的对应先验)是否适配当前任务。许多有研究价值的任务都需要海量数据(其中大部分为无标注数据),且随着样本数量增加,只要模型容量受限(参数数量远少于样本数量),训练误差与泛化误差就会逐渐趋近。在这种大规模数据场景下,我们可以认为学习器会接触到源源不断的样本流(例如从网络采集文本和图像并输入机器学习算法的流程)。在此背景下,最高效的做法是每接收一个或少量样本后就更新模型参数,这是理想的在线学习场景;在简化设定下,我们甚至可以将每个新样本\(z\)视为从未知生成分布中独立同分布(i.i.d.)采样的样本,其概率密度为\(p(z)\)。更符合现实的情况是,在线学习中的样本并非独立同分布地到来,而是来自存在序列相关性及其他时间依赖性的未知随机过程。许多学习算法都依赖基于训练准则的梯度数值优化。令\(L(z, \theta)\)表示参数向量取值为\(\theta\)时,样本\(z\)对应的损失。单个样本对应的损失梯度向量为\(\frac{\partial L(z, \theta)}{\partial \theta}\)。若考虑独立同分布数据的简化场景,我们可以得到一个有趣的结论:在线学习器实际上在对自身的泛化误差执行随机梯度下降。事实上,参数为\(\theta\)、损失函数为\(L\)的学习器的泛化误差\(C\)可表示为\(C = EL(z, \\theta) = \int p(z)L(z, \theta)dz\)
梯度: 标量值函数\(\mathbf{f}(\cdot)\)在点\(x\)处的梯度记为\(\vec \nabla f(x)\),它表示当从多维空间中当前位置沿单位向量方向移动时,该函数增减的快慢程度。
- 海森矩阵: 海森矩阵是多变量空间变量上的平方对称二阶导数,定义为标量值函数\(\mathbf{f}(x)\)在点\(x\)处的平方对称二阶导数。函数\(A_\epsilon(x) = \sum_{i=1}^{n}(x_i - x^*i)^2\)是平方和距离函数。注意该形式也出现在公式(2)的第二项中,代表两个分布之间的KL散度 \(D{\text{KL}}(f \| g)\)。第一项是均匀分布\(U(f)\)与正态分布\(N(g)\)之间的KL散度。由于两者的均值相同\((\mu_f = \mu_g)\),因此有:
当\(B=1\)时,就回到了普通的在线梯度下降;当\(B\)等于训练集大小时,就是标准的(也称作"批量")梯度下降。当\(B\)取中间值时,通常存在一个最优取值点。
当\(B\)增大时,我们可以通过利用并行计算或高效的矩阵-矩阵乘法(而非单独的矩阵-向量乘法),每秒获得更多乘加运算,实际中通常能让整体训练时间缩短一半。另一方面,随着\(B\)增大,每次计算完成的更新次数会减少,这会拖慢收敛速度(就误差与执行乘加运算次数的关系而言),因为在相同的计算时间内能完成的更新次数更少。这两种相反效应共同作用会形成典型的U型曲线,在\(B\)的中间值处存在最优取值点。
需要记住,即使是最优梯度方向(在整个训练集上取平均)也只是局部最速下降方向,当步长较大时,它可能并不指向正确的方向。尤其因为训练准则在参数上不是二次的,所以在参数空间中移动时,最优下降方向会不断变化。由于梯度方向并不是完全正确的下降方向,因此花费大量计算资源精确估计梯度对梯度下降来说并无益处。相反,更频繁地执行更多更新有助于更快、更广泛地探索参数空间,尤其是在学习率较大的情况下。此外,较小的\(B\)值还能让参数空间得到更多探索,同时梯度估计器中注入的"噪声"会带来一种正则化效果,这或许能解释为何有时较小的\(B\)值会得到更好的测试结果。
当训练集有限时,训练会通过对训练集的多次遍历完成,一次完整的遍历被称为轮次 ,完整的训练通常需要多轮(即多次遍历训练集)。需注意,随机梯度(每次仅用一个样本或使用小批量样本)与普通的梯度下降 不同,后者有时被称为"批量梯度下降",对应\(B\)等于训练集大小的场景,即每轮仅进行一次参数更新。随机梯度下降以及其他在线或小批量更新方法的最大优势在于,它们的收敛性不依赖于训练集的大小,只取决于更新次数和训练分布的丰富程度。当训练集极大或是无限时,批量方法(需要看过所有样本后才能更新)将完全失效。事实上,即使是普通规模的数万甚至数十万(甚至更多!)样本的数据集,随机梯度下降的收敛速度也远快于普通(批量)梯度下降;当数据集规模超过某一阈值后,速度提升几乎呈线性关系(即数据集规模翻倍,收益也几乎翻倍)\(^{10}\)。
对于任何随机梯度下降方法(包括小批量情况),要使估计器效率足够高,每个样本或小批量样本的采样都需要近似独立。由于内存(更糟糕的是磁盘)的随机访问成本很高,一种被称为增量梯度21的优良近似方案是:按照样本在内存或磁盘中的存储顺序固定遍历样本(或小批量样本)(如果不是每个样本仅遍历一次的纯在线场景,那么在第二轮遍历时会按相同顺序重复访问样本)。这种情况下,最好先将样本或小批量样本打乱顺序(为确保采样独立,预先打乱样本顺序是很有必要的)。如果每轮遍历小批量的顺序都发生变化,收敛速度会更快,当训练集可以完全载入计算机内存时,这种操作的效率是比较高的。
19.2.2 梯度计算与自动微分
梯度既可以手动计算,也可以通过自动微分计算。无论采用哪种方式,将计算过程结构化为流图都有助于避免数学错误,同时确保实现的算力效率。
损失\(L(z, \theta)\)作为\(\theta\)的函数的计算过程被呈现为一个图,图中的节点对应基本运算操作,如加法、乘法,以及非线性运算(如神经网络激活函数,例如sigmoid函数或双曲正切函数),运算对象可能是向量、矩阵或张量。该流图是有向无环图,包含三种节点:输入节点、内部节点和输出节点。每个节点都关联一个数值输出,即对应计算操作的结果(输入节点无输入,因此无输出),其输入来自有向无环图中前序节点的输出。例如,\(z\)和参数向量\(\theta\)(或其元素)是图的输入节点(即它们本身没有输入),\(L(z, \theta)\)是图的标量输出。注意,在监督学习场景中,\(z\)可以包含输入部分\(x\)(如图像)和目标部分\(y\)(如图像中物体对应的类别);在无监督场景中\(z=x\);在半监督场景中,数据集同时包含标注样本和未标注样本,\(z\)在标注样本中包含\(y\),在未标注样本中不包含\(y\)。
除了为流图中的每个节点\(a\)关联数值输出\(o_a\)外,我们还可以为每个节点关联梯度\(g_a = \frac{\partial L(z, \theta)}{\partial o_a}\)。梯度将在图中按节点输出计算的相反方向递归定义和计算,即\(o_a\)使用\(a\)的前序节点\(p\)的输出\(o_p\)计算得到,而\(g_a\)将使用\(a\)的后序节点\(s\)的梯度\(g_s\)计算得到。更准确地说,链式法则给出\(g_a = \sum_s g_s \frac{\partial o_s}{\partial o_a}\),其中求和遍历\(a\)的所有直接后序节点。只有输出节点没有后序节点,特别是计算\(L\)的输出节点,其梯度被设为1,因为\(\frac{\partial L}{\partial L} = 1\),以此初始化递归过程。
因此,手动或自动微分仅需要定义图中任意节点执行的每种操作对应的偏导数。使用手动微分实现梯度下降算法时,最终代码往往冗长、脆弱且缺乏模块化------这些都是软件工程层面的致命缺陷。更好的方法是将流图表示为一系列对象,这些对象将"从输入计算输出"和"计算梯度下降所需的偏导数"的逻辑模块化。可以预先定义这些对象的运算逻辑(放在"前向传播"或fprop 方法中)及其偏导数(放在"反向传播"或bprop 方法中),并将这些计算封装到一个对象中,该对象能根据输入计算输出,也能根据输出的梯度计算输入的梯度。Theano\(^{11}\)库\(^{12}\)的Op 对象18、Torch\(^{12}\)37库和Lush\(^{13}\)库都采用了这一策略。与Torch 和Lush 相比,Theano 增加了一个使其成为全功能自动微分工具的有趣特性:符号计算。流图本身(不携带关联的数值)可被视为数值计算的符号化表示(以数据结构的形式存在)。在Theano 中,梯度计算首先以符号化形式完成,即每个Op 对象都知道如何创建其他对应其关联偏导数计算的Op 。因此,在大多数情况下,流图输出相对于任意或全部输入节点的符号微分 可以轻松完成,得到另一个流图,该流图指定了在给定原始图输入的情况下如何计算这些梯度。
由于梯度图通常将原始图(将参数映射到损失)作为子图,因此为了提高计算效率,有必要(如Theano 中所做的)自动完成一系列简化 操作,这些操作是图转换,在保留输出语义(给定输入的前提下)的同时,生成更小(或数值更稳定、计算效率更高)的图(例如移除冗余计算)。为了利用"计算损失梯度首先要计算损失本身"这一特性,最好将代码结构化,使得损失及其梯度可以一次性计算,通过一个具有多个输出的单一图实现。
符号化计算梯度的优势有很多。首先,可以轻松计算梯度的梯度,即二阶导数,这对某些学习算法很有用。其次,可以定义涉及梯度本身的相关算法或训练准则,例如收缩自编码器(Contractive Auto-Encoder)的训练准则中就用到了雅可比矩阵的范数,即确实需要二阶导数,而在符号计算体系下计算二阶导数的成本很低。第三,符号计算让实现其他有用的图转换变得容易,例如图简化、数值优化以及能让数值结果更稳健高效的转换(例如直接操作概率的对数域而非直接操作概率域)。
这类符号操作的其他潜在有益应用包括并行化以及额外的微分算子(例如最近在Theano中实现的R算子,该算子非常有用,可用于
\(^{10}\) 另一方面,批量方法很容易并行化,这在当前可用的算力条件下成为了一个重要优势。
\(^{11}\) http://deeplearning.net/software/theano/
\(^{12}\) http://www.torch.ch
\(^{13}\) http://lush.sourceforge.net
计算雅各比矩阵\(\frac{\partial f(x)}{\partial x}\)或黑塞矩阵\(\frac{\partial^2 L(x,\theta)}{\partial \theta^2}\)与向量的乘积,而无需实际计算和存储矩阵本身90。
19.3 超参数
纯学习算法可以看作一个以训练数据为输入、输出函数(例如预测器)或模型(即一组函数)的函数。不过实际上,许多学习算法都涉及超参数,也就是需要调整的烦人旋钮。在深度学习算法等许多算法中,超参数的数量(多达十几个!)会让调整所有超参数的想法变得令人望而却步。此外,已有研究表明,使用计算机集群进行超参数选择会对结果产生重要影响91。
选择超参数值在形式上等价于模型选择问题,即给定一族或一组学习算法时,如何从中选出最合适的一个?我们将学习算法A的超参数定义为:在将A实际应用到数据之前需要设置的变量,它不是由学习算法本身直接选择的,本质上是一个外部控制旋钮。它可以是离散的(如模型选择中的情况),也可以是连续的(例如上文提到的学习率)。
当然,我们可以在A外面包裹另一个学习算法B,由B来选择A的超参数(例如最小化验证集误差),从而隐藏这些超参数。此时我们可以将B称为元学习者,如果B本身没有超参数,那么B与A的组合就可以成为没有超参数的"纯"学习算法。最终,要将学习器应用于训练数据,必须拥有一个纯学习算法。超参数可以手动固定,也可以由算法调优,但它们的值必须被选定。
部分超参数的值可以基于A在训练数据上的性能来选择,但大多数超参数不行。对于任何会影响学习器有效容量的超参数,基于样本外数据(即训练集之外的数据)选择其值更为合理,例如验证集性能、在线误差或交叉验证误差。需要注意的是,部分学习算法(尤其是无监督学习算法,例如通过近似最大似然训练受限玻尔兹曼机的算法)在这方面存在问题,因为我们无法直接测量需要优化的量(例如似然),因为该量难以计算。另一方面,期望去噪重建误差很容易估计(只需在验证集上对去噪误差取平均即可)。
一旦部分样本外数据被用于选择超参数值,就再也不能用它来获得无偏的泛化性能估计器,因此通常会使用测试集(或双重交叉验证:一般来说,双重交叉验证会递归应用交叉验证的思想,使用外层循环交叉验证评估泛化误差,然后在每个外层划分的训练子集内应用内层循环交叉验证(即再次将其划分为训练折和验证折),以便为该划分选择超参数)。
神经网络超参数
深度神经网络的超参数是深度神经网络中用于控制网络行为的、独立的一组参数,这些超参数用于优化网络的性能。
初始学习率用于迭代优化算法,是优化过程的学习率起始值,在使用梯度平均或动量技术时尤其如此(见下文)。自动设置上述学习率调度中的\(\tau\)的一种自适应启发式方法是:保持\(\epsilon_t\)不变,直到训练准则的轮次间下降幅度不再显著(即低于某个相对改进阈值)。该阈值是比\(\tau\)本身更不敏感的超参数。
上述公式中带有少量(全局)自由超参数的固定调度的一种替代方案是使用自适应 学习率启发式方法,例如文献26中提出的简单流程:在训练过程中每隔固定间隔,使用训练集的一个固定小子集(重要的是所用样本的数量,而非其占整个训练集的比例),使用\(N\)种不同的学习率选择继续训练(所有选择并行进行),保留效果最好的取值,直到下一次重新估计最优学习率。其他自适应学习率策略的示例将在下文讨论(见19.6.2节)。
- 小批量大小 (公式(19.1)中的\(B\))通常选择在1到几百之间,例如\(B=32\)是不错的默认值,取值大于10时可利用矩阵-矩阵乘积相对于矩阵-向量乘积的速度优势。\(B\)的影响主要是计算层面的:更大的\(B\)能带来更快的计算速度(在实现得当的情况下),但由于每个轮次的更新次数更少,因此需要访问更多样本才能达到相同的误差。从理论上讲,该超参数主要影响训练时长 ,对测试性能 的影响不大,因此可以在选定其他超参数(学习率除外)后,通过对比训练曲线(训练误差、验证误差与训练时长的关系)单独优化该超参数。\(B\)和\(\epsilon_0\)可能与其他超参数存在轻微交互,因此最终应重新优化这两个参数。一旦选定\(B\),通常可以固定其值,同时进一步优化其他超参数(如果使用了动量超参数,则动量超参数除外)。
- 训练迭代次数 \(T\)(以最小批量更新次数计)。该超参数的特别之处在于,可以通过早停 原则几乎零成本地优化它:跟踪训练过程中(每\(N\)次更新)的样本外误差(例如在验证集上估计的误差),即可决定在给定其他所有超参数设置的情况下训练多长时间。早停是一种低成本避免严重过拟合的方法:即便其他超参数会导致过拟合,早停也能大幅降低否则会产生的过拟合损害。这也意味着它会隐藏其他超参数的过拟合效应,可能会掩盖人们在分析单个超参数作用时想要做的分析:也就是说,它会通过用更短的训练时长抵消过大的容量,拉平许多原本会导致过拟合的超参数配置的性能。出于这个原因,在分析单个超参数的作用时,关闭早停功能或许是有用的。
现在让我们转向实现细节。实际应用中,需要在选定的训练迭代次数\(\tilde{T}\)之外继续训练(\(\tilde{T}\)应为训练过程中验证误差最低的点),以便确认
验证误差不太可能低于选定点的数值。《深度学习教程》[5]中引入的启发式方法基于"耐心"的概念(在多层感知器教程中初始值设为10000个样本),即在选定候选点\(\hat{T}\)后、决定停止训练(也就是接受该候选点为最终答案)前需要看到的最少训练样本数。随着训练推进,当观察到新的候选选定点\(\hat{T}\)(验证误差的新最小值)时,耐心参数会基于上一个找到的\(\hat{T}\)按乘法或加法方式增加。因此,如果在时刻t发现了新的最小值[6],我们会保存当前最优模型,将\(\hat{T} \leftarrow t\),同时将耐心值增加到\(t + \text{常数}\)或\(t \times \text{常数}\)。注意,验证误差不应在每次训练更新后估算(这会非常浪费资源),而应在每N个样本后估算,其中N至少要和验证集一样大(理想情况是验证集的数倍,这样早停的开销能保持在较低水平)[7]
动量系数\(eta\)
长期以来,学界一直提倡56, 59对随机梯度下降过程中获得的随机梯度样本进行时间平滑处理。例如,可以通过公式\(\bar{g} \leftarrow (1 - \beta)\bar{g} + \beta g\)计算过去梯度的移动平均值,其中\(g\)是瞬时梯度\(\frac{\partial L(z_t, \theta)}{\partial \theta}\)或小批量平均值,\(\beta\)是一个小的正系数,用于控制旧样本在移动平均中的权重衰减速度。最简单的动量技巧是让参数更新步长与这个平滑后的梯度估计量\(\bar{g}\)成正比,而非与瞬时梯度\(g\)成正比。该方法的思路是消除梯度下降存在的一些噪声和振荡,尤其是在损失函数高曲率的方向上[8]。\(\beta=1\)(无动量)的默认值在许多情况下表现良好,但在部分场景中,动量似乎能带来显著的正向收益。Polyak平均93是一种相关的参数平均形式[9],具备理论优势,已被验证能在部分无监督学习流程(如受限玻尔兹曼机RBM110)中带来性能提升。近期,学界提出了多种基于数学原理的算法88, 75,这些算法融入了某种形式的动量机制,且相比随机梯度下降能实现更快的收敛速度(线性收敛而非次线性收敛)。
15 http://deeplearning.net/tutorial/
16 理想情况下,我们应使用统计显著性检验:只有在改进在统计上显著时,才接受新的最小值(基于更长时间的训练周期),判断依据是可以针对验证集计算出的规模和方差估计值。
17 当同一台机器上有额外的处理器可用时,可以方便地由不同于执行训练更新的处理器重新计算验证误差,从而实现更频繁的验证误差计算。
18 可以想象一个滚下山谷的球:由于它不是从谷底出发的,因此在向谷底更深处滚落的过程中会在山谷两侧振荡,这就要求学习率要足够小,以避免过大的振荡把球甩出山谷。沿途对局部梯度进行平均,就能抵消来自山谷两侧的相反作用力。
19 Polyak平均在进行预测时,会使用随机梯度下降轨迹上获得的参数的移动平均值。
1. 引言
在本节中,我们将引入线性回归语境下的参数估计问题。我们提出了一种新颖的算法,该算法利用问题本身的内在结构,相比标准方法能实现更快的收敛速度。本文的结构安排如下:第2节给出该问题的数学表述以及所提出的算法;第3节呈现数值实验及与其他方法的对比结果;最后第4节总结我们的研究发现,并指出未来的研究方向。
10.2.1 模型超参数与估计准则
此处我们采用"局部"相关性检验来确定一组相关特征。该方法能够处理非常复杂的交互关系,且不会施加过多限制。我们还可以看到,该方法无需针对单一数据集进行分析。
- 我们可看到该方法无需针对单一数据集进行分析。
- 我们可看到该方法无需针对单一数据集进行分析。
- 我们可看到该方法无需针对单一数据集进行分析。
6.4.2 深度特征学习:训练数据与算法
我们通常不会完全从经验中学习到一切,在 59 中,如果只接受过几次训练,我们就会学会像其他动物一样。对于任何目标,我们都不是从零开始,我们实际上是在观察某些目标时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
在 59 中,如果只接受过几次训练,我们就会学会像其他动物一样。对于任何目标,我们都不是从零开始,我们实际上是在观察某些目标时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
6.4.3 算法
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
我们通常不会从经验中学习一切,而是从经验中学习到某些东西。例如,如果我们只从经验中学习,我们不会像其他动物一样。在 67 中,我们实际上是在观察某些东西时,已经看到了它们。然而,如果我们只从经验中学习,我们不会像其他动物一样。
1965年,H. R. H.、H. R. H. H. 和 H. R. H. H.(1965)率先开展了地球轨道稳定性的研究。他们发现地球轨道在长期来看是稳定的,但在短期会出现不稳定;同时他们也发现轨道在长期来看不稳定,却在短期是稳定的。1966年,H. R. H.、H. R. H. H. 和 H. R. H. H.(1966)同样率先开展了地球轨道稳定性的研究,得出了和此前一致的结论:轨道长期稳定、短期不稳定,同时也存在长期不稳定、短期稳定的情况。1967年,H. R. H.、H. R. H. H. 和 H. R. H. H.(1967)再次率先开展相关研究,依然发现了上述规律:地球轨道长期稳定、短期不稳定,同时也存在长期不稳定、短期稳定的特征。
19. 深度架构训练建议
激活稀疏正则化系数α
深度学习文献95, 97, 81, 82, 3, 49, 33, 52中的常见做法是向训练准则中添加惩罚项,以鼓励隐藏单元呈现稀疏性,即其取值处于0或接近0。虽然L1惩罚(前文在讨论权重时已提及)也可以应用于隐藏单元的激活值,但这从数学上与针对参数的L1正则化项有本质区别:后者对应于参数的先验分布,而前者并不是,因为其涉及训练分布(毕竟我们分析的是依赖数据的隐藏单元输出)。尽管我们在此不会深入讨论,但深度学习中稀疏表示的灵感来自早期稀疏编码的研究89。正如Goodfellow等人51所述,稀疏表示可能具备优势,因为它能鼓励表示解耦底层的表示因子。稀疏诱导惩罚也是一种正则化方式(从降低学习器死记硬背样本数量的角度定义)97,这意味着稀疏系数很可能与其他众多影响模型容量的超参数产生交互。一般来说,稀疏度提升可以通过增加隐藏单元数量来补偿。
目前已经提出了多种诱导稀疏表示(或让更多隐藏单元的激活值接近0)的方法。其中一种方法97, 72, 120是直接对表示的L1范数或隐藏单元激活的其他函数(如学生t分布对数先验)施加惩罚。这种方法通常适用于在0附近饱和的非线性函数(如sigmoid),但不适用于双曲正切非线性函数(其饱和区间在-1和1的边界附近,而非原点附近)。另一种选择是对隐藏单元的偏置施加惩罚,使其更偏向负值95, 81, 51, 69。需要注意的是,对偏置施加惩罚存在风险:权重可能会抵消偏置的作用23,这可能会损害参数的数值优化效果。
当直接对隐藏单元输出施加惩罚时,文献中存在多种变体,但目前尚未有清晰的对比分析来评估哪种变体效果更优。尽管L1惩罚(即sigmoid非线性情况下,简单地将输出元素\(h_j\)之和乘以系数α)看起来最自然(因为其在稀疏编码中已被使用),但在涉及稀疏自编码器的论文中很少被采用。L1惩罚的一个近亲是学生t惩罚\(\log(1 + h_j^2)\),最初是为稀疏编码提出的89。部分研究者会对平均输出\(\bar{h}_j\)(例如在小批量上的平均值)施加惩罚,且他们并非将其推向0,而是鼓励其趋近于固定的目标值ρ。这可以通过均方误差惩罚实现,即\(\sum_j(\rho - \bar{h}_j)^2\),或者更合理的方式(因为\(h_j\)的行为类似概率)是采用相对于参数为ρ的二项分布的库尔贝克-莱布勒(KL)散度:\(-\rho \log \bar{h}_j - (1 - \rho) \log(1 - \bar{h}_j) + \text{常数}\),例如如59中采用的ρ=0.05。除正则化惩罚本身外,激活函数的选择也会产生影响23,因为该层的输入通常具有非零均值,该均值与权重相乘后会起到类似偏置的作用。
会对最终获得的稀疏性产生很大影响。具体而言,修正非线性函数(例如max(0, $x$),而非sigmoid函数)在多个场景中都取得了显著成效64, 86, 49, 84, 50。修正函数也与硬双曲正切函数(hard tanh)35相关,后者的导数值同样为0或1。
在稀疏编码和稀疏预测编码65中,激活值会被直接优化,真实的零值是优化的预期结果。这种情况下,普通随机梯度法并不一定能找到这些零点(会在零点附近震荡),而近端梯度法这类方法更为合适21。
- 神经元非线性函数。典型的神经元输出为\(s(a) = s(w^{T}x + b)\),其中\(x\)是输入神经元的向量,\(w\)是权重向量,\(b\)是偏移或偏置参数,\(s\)是标量非线性函数。学界已提出多种非线性函数,部分非线性函数的选择已被证明效果更优64, 48, 49。作者在隐藏单元中最常用的是sigmoid函数\(1/(1+e^{-a})\)、双曲正切函数\(\tanh a\)、修正函数
max(0, $a$)以及硬双曲正切函数35。
需要注意的是,sigmoid函数若用于无监督预训练的深度监督网络的最上层隐藏层时,会出现严重的优化问题48,但在自编码器变体²⁴上表现良好。
对于输出(或重构)单元,像修正函数这类硬神经元非线性函数并不适用:当单元饱和(例如修正函数中\(a < 0\)的情况)且与损失函数绑定时,网络内部不会传播梯度,也就是说没有机会修正误差²⁵。而对于隐藏层,即使部分单元饱和,梯度仍能通过一部分隐藏单元传递。
针对输出单元,一个有效的技巧是结合对应的负对数似然,选择合适的(条件)输出概率模型(通常属于指数族),从而得到输出非线性函数和损失函数。例如,通常可以用平方误差和线性输出对应高斯输出模型,用交叉熵和sigmoid函数对应二项式输出模型,用softmax输出配合\(-\log(\text{output}\\text{target class})\)对应多项输出变量。目前尚不明确具体原因,但在训练收缩自编码器时,在输出(重构)单元上使用sigmoid非线性函数(同时将目标输入归一化到(0,1)区间)似乎能起到积极作用。
19. 深度架构训练建议
权重初始化
缩放系数
偏置通常可以初始化为0,但权重需要谨慎初始化,以打破同一层隐藏单元之间的对称性²⁶。由于不同输出单元接收到的梯度信号不同,因此对称性打破问题不涉及输出权重(指向输出单元的权重),这类权重也可以初始化为0。
尽管学界已提出多种隐藏层权重初始化技巧79, 48(即在多个技巧间离散选择就是一个超参数)。Bergstra和Bengio 17还将初始化范围的缩放系数作为额外超参数引入。这些技巧基于的理念是:输入更多(即单元的扇入,fan-in)的单元应设置更小的权重。LeCun等人79和Glorot与Bengio 48都建议按扇入的平方根的倒数进行缩放;但Glorot和Bengio 48以及《深度学习教程》采用扇入与扇出的组合方式,例如双曲正切单元的均匀分布采样范围为\(U(-r, r)\),其中\(r = \sqrt{6}/(\text{fan-in} + \text{fan-out})\),sigmoid单元的\(r = 4\sqrt{6}/(\text{fan-in} + \text{fan-out})\)。我们发现,使用这些公式可以避免任何与初始化相关的超参数(且Glorot和Bengio 48中的推导过程也可用于推导其他场景下的公式)。
不过需要注意的是,对于受限玻尔兹曼机(RBM),使用均值为0、标准差约为0.1或0.01的高斯分布初始化权重效果很好59;而可见层偏置通常设置为权重为0时的最优值,即当可见单元为二项分布、对应二进制输入特征在训练集上的经验均值为\(x\)时,偏置值为\(\log(x/(1-x))\)。
-
随机种子。神经网络和深度学习模型的训练过程中存在多个随机性来源(例如随机初始化、采样样本、在RBM等随机模型中采样隐藏单元,或在降噪自编码器中采样加噪噪声)。因此,不同的随机种子可能得到不同的结果,部分种子的表现会优于其他种子。由于神经网络的训练准则中存在局部极小值(线性情况或下层固定的情况除外),因此参数初始化非常重要。Erhan等人44的研究展示了数百个不同随机种子对应的测试误差直方图示例。通常,随机种子的选择对结果的影响较小,大部分时候或是在多数超参数搜索过程中可以忽略这一因素。如果计算资源充足,可以为少量最优超参数组合分别运行5到10组不同随机种子的实验,从而进一步提升一点性能。另一种利用计算资源提升性能的方式是模型平均,例如装袋法29和贝叶斯方法。在完成训练后,可以对不同网络(或广义上不同学习算法)的输出取平均。例如,被集成到委员会中的神经网络的差异可能来自参数初始化时使用的不同随机种子,或是使用了不同的输入变量子集、不同的训练样本子集(后者即装袋法)。
-
预处理 。学界已提出多种预处理步骤,可将原始数据转换为适合神经网络输入的格式,模型选择过程中也需要从中筛选合适的预处理方法。除了逐元素标准化(减去均值、除以标准差)之外,主成分分析(PCA)也常被推荐使用79, 17,它还可以实现降维,但需要额外设置一个超参数(即保留的主成分数量,或需解释的方差比例)。一种便捷的非线性预处理方法是对每个特征进行均匀化 处理84(即估计特征的累积分布\(F\),再通过其分位函数\(F^{-1}(x)\)对每个特征\(x\)进行变换,相当于返回\(x\)的近似归一化秩或分位数值)。另一种更易计算的变换是对数或平方根这类非线性函数,可帮助缩减输入特征的尾部,使其更接近高斯分布。
除上述较为通用的选择外,不同架构和算法还有更多可选方案。例如,降噪自编码器有一个用于调整输入加噪程度的超参数,而收缩自编码器有一个用于调整编码器雅可比矩阵范数的超参数,即控制收缩惩罚项的权重。后者是一个敏感度较高的超参数,需要谨慎调优。收缩自编码器的效果似乎还受许多自编码器架构中采用的权重共享约束的影响:解码器的权重矩阵等于编码器权重矩阵的转置。收缩自编码器采用的特定架构(共享权重、隐藏和重构单元采用sigmoid非线性函数,配合平方损失或交叉熵损失)表现良好,但其他相关变体的训练效果并不总是稳定,具体原因尚未明确。对于卷积架构(例如用于建模图像、时间序列或声音)78, 80, 71,还有诸多相关的架构选择,这类架构的隐藏单元具有局部感受野。
19.3.3 手动搜索与网格搜索
上述许多超参数或模型选择可以通过采用本文或其他论文中提到的标准技巧来规避。但仍有大量选择需要决策,这容易让人产生神经网络训练是门艺术的印象。不过借助基于大型计算机集群的现代算力,可以使用网格搜索、更优的随机搜索,或是下文将讨论的超参数优化等技术,让超参数优化过程更具可复现性、更自动化。
²⁴ 作者推测这种差异的原因是:形式为\(r(x) = W^{T} \text{sigmoid}(Wx)\)的自编码器的权重矩阵\(W\)会趋向正交化,因为这会让自编码器更接近恒等函数------当\(W\)正交且\(x\)属于\(W\)的行空间时,\(W^{T}Wx ≈ x\)。
²⁵ 输出单元的非线性函数采用硬非线性,与损失函数中的硬非线性(例如铰链损失)完全不同:后者的导数仅在无误差时为0。
²⁶ 从对称性角度来说,如果同一层的隐藏单元共享相同的输入和输出权重,它们会计算得到相同的输出、接收相同的梯度,进而执行相同的更新、保持完全一致,造成容量浪费。
10 研究人员为预测癫痫参数:《癫痫发生预测通用指南》
我们六人将介绍癫痫发生预测场景的通用指南。我们的目标不是回答「具体何时发生」或「何时不会发生」,而仅回答「何时会发生」。我认为我们的回答需要能为临床治疗提供指导。
- 计算方面的考量。
选择超参数时,验证误差其实并不是唯一的衡量标准。通常情况下,人们还需要考虑训练或预测环节的计算成本。训练与预测的计算资源都是有限的,这通常会限制我们可选数值的区间范围:例如,增加隐藏单元数量或训练迭代次数也会提升计算量。 - 一个有趣的思路是:使用计算成本较低的验证误差估计器来筛选部分超参数。
- 例如,Saxe等人105的研究表明,可以使用网络低层的随机权重(即卷积核)来选择卷积网络的架构超参数。虽然这种方法得到的验证误差估计器带有噪声且存在偏差(结果偏悲观),若用完整训练流程得到的结果会更准确,但这种低成本估计器 与高成本的验证误差呈现出显著相关性。因此,这种低成本估计器足以用于筛选部分超参数(或是仅将筛选出的少数最优选项保留下来,供后续更高成本的评估参考)。即使没有低成本的泛化误差估计器,我们也可以利用高通量计算(例如在计算集群、单GPU或GPU集群上运行),不只是执行数百个、而是数千个训练任务。这在几年前还难以想象------对于大规模数据集而言,单个训练任务需要数小时甚至数天才能完成。
- 借助低成本替代估计器,部分研究人员已经完成了近万次试验,而随着并行计算能力未来的发展,这一数字还会进一步增长。
- 坐标下降法与多分辨率搜索
当仅能手动开展搜索且只有单台计算机可用时,合理的策略是坐标下降法:每次仅调整一个超参数,且调整方向始终基于截至当前找到的最优超参数配置。 - 与标准坐标下降法 (标准方法会系统性地遍历所有待优化变量)不同,我们可以有意识地定期对最敏感的变量(例如学习率)进行微调。
- 另一个重要思路是:在找到1个或多个表现尚可的配置 之前,没有必要探索细微调整带来的影响。多分辨率搜索的思路是:搜索初期仅考虑数值型超参数的少数取值(覆盖大范围区间),或是每次尝试新取值时都进行大幅调整。之后我们可以从最优的1个或少数几个配置出发,在这些取值周边进行更小步长的局部探索。
- 自动化与半自动化网格搜索
为每个超参数选定取值区间或集合(即定义好搜索空间)后,一种可利用并行计算的简单策略就是网格搜索。 - 首先需要 将数值区间转换为取值列表(例如,超参数对数域内的K个等距取值)。网格搜索会遍历所有这些取值的全部组合,是一种简单的穷举搜索方式。
- 这些列表的笛卡尔积 包含的元素数量,遗憾的是会随超参数数量呈指数级增长(例如,若有5个超参数,每个超参数允许取6个不同的值,最终会得到\(6^5=7776\)种配置)。在本节下方的19.3.4部分,我们会介绍一种效率高于网格搜索的方法,尤其适合超参数数量超过2~3个的场景。
- 相较于坐标下降法等其他优化策略,网格搜索的优势在于它可以完全并行化处理。如果拥有大型计算集群,选用能利用并行化的模型选择策略会很有吸引力。
- 网格搜索的一个实际缺点是:尤其相较于在集群上并行运行任务的随机搜索(见19.3.4节),只要有1个任务失败,就需要重新提交一批任务来完成整个网格搜索;若这批任务里仍有失败项,还需再次提交,如此反复会大幅拉长总计算时间。
通常单次网格搜索并不足够,从业者往往会开展多轮网格搜索,每轮都会基于上一轮的结果调整取值区间。这一过程既可以手动完成,也可以借助多分辨率搜索的思路实现自动化,用于引导外层循环:在上一轮找到的最优解附近,开展多轮更小范围的局部网格搜索。此外,坐标下降法的思路也能起到帮助:它可以让每轮网格搜索仅聚焦于少数几个超参数。例如,常规操作是优先探索初始学习率的取值,同时将学习率衰减调度保持固定,且初始阶段为常数项。一旦确定了衰减调度的形状,就可以在已找到的最优取值周边的小区间内,进一步微调学习率。
人类在超参数搜索中往往能取得很好的效果,且人工介入的优势在于可以帮助发现学习算法中的bug,或是算法表现出的不希望出现/异常的行为。但为了保证结果可复现,机器学习研究人员应力求使用不依赖人工决策的流程:建模者仅在实验开始时,设定论文中声明的超参数取值范围即可。
超参数逐层优化
在采用无监督预训练的深度学习场景中,我们可以将坐标下降法,与针对部分超参数选型的低成本验证集相对性能评估结合起来。这一思路由Mesnil等人84和Bengio8提出:在训练高层网络之前,先对靠近输入端的低层对应的超参数做出贪心选择。首先用不同的超参数值(无监督)训练第一层,再估算一个指标:如果最终网络仅将这一层作为内部表征,那么不同配置对应的相对验证误差是多少。在最终任务为有监督任务的常见场景中,这意味着在学习到的表征之上训练一个简单的有监督预测器(例如线性分类器)。如果预测器是线性的(例如回归或逻辑回归),这一过程甚至可以在表征的无监督训练进行时同步完成(也就是说也可以用于早停),如文献70所述。
一旦找到了一组(根据上述贪心评估结果)表现良好的超参数取值(也可以仅选用找到的最优取值),就可以将这些优质取值作为起点,用同样的方式训练(并进行超参数优化)第二层,以此类推。完全贪心的做法是仅保留截至当前的最优配置(针对低层网络),但若保留全局最优的K个配置,仅会使第2层及以后各层的超参数选择计算成本变为原来的K倍:因为我们探索第3层及更高层超参数时,仍然只会从第1、2层所有超参数配置中选出最优的K个作为起点,以此类推。这一流程在下方算法19.1中被正式定义。
由于贪心逐层预训练在训练高层网络时不会修改低层网络的参数,因此其计算效率也非常高。这一流程可以完成无监督预训练阶段相关超参数的设置,如果需要进行有监督微调,还需要为微调阶段选择对应的超参数。我们强烈建议开展最终的有监督微调阶段,尤其在标注样本数量较多的情况下67。
19.3.4 超参数的随机采样
网格搜索法用于寻找优质超参数配置存在一个严重问题:其计算规模会随超参数数量的增加呈指数级恶化。上文我们讨论了大量超参数,若要同时探索所有这些超参数,仅靠网格搜索是难以完成的。有人可能会认为这属于维度灾难的典型场景,因此没有其他更好的选择。但正如我们在深度学习研究7中发现的那样,如果我们试图发现的目标函数存在某种内在结构,那么我们就有机会在不承担指数级成本的前提下找到优质解。事实证明,在我们遇到的许多实际场景中,都存在一种随机采样可以利用的结构17。
随机采样法的思路是用随机(通常为均匀)采样替代规则网格。每个待测试的超参数配置,都是通过从先验分布中独立采样每个超参数得到的(通常为对数域内感兴趣区间上的均匀分布)。针对离散型超参数,可以根据我们对优质取值的先验认知定义多项式分布。最差的情况也就是没有任何先验偏好时,这会是所有允许取值上的均匀分布。事实上,我们可以借助先验知识让这个先验分布足够精细。例如,我们可以轻松纳入这类先验知识:部分超参数的某些取值,只有在其他特定超参数取特定值时才有意义。例如,当网络层数本身是超参数,且我们需要考虑层专属超参数时,这就是一个非常实际的考量因素。
算法 19.1 贪心逐层超参数优化
输入 K:每层保留的最佳配置数量。
输入 NLEVELS:深度架构的层数。
输入 LEVELSETTINGS:单层无监督预训练需考虑的超参数设置列表。
输入 SFTSETTINGS:监督微调需考虑的超参数设置列表。
初始化最佳配置集合 \(S = \emptyset\)
for \(L = 1\) to \(NLEVELS\) do
for \(C\) in \(LEVELSETTINGS\) do
for \(H\) in (\(S\) or \(\{\emptyset\}\)) do
-
使用第 \(L\) 层的超参数设置 \(C\),以及下层通过设置 \(H\) 得到的参数,预训练第 \(L\) 层。
-
使用该深度为 \(L\) 的预训练架构评估目标任务性能 \(\mathcal{L}\)(例如:在这些层之上训练线性分类器,并估算验证误差)。
-
若该组合 (\(C \cup H, \mathcal{L}\)) 属于 \(S\) 中表现最佳的 \(K\) 个,则将其加入 \(S\)。
end for
end for
end for
for \(C\) in \(SFTSETTINGS\) do
for \(H\) in \(S\) do
-
使用监督微调超参数设置 \(C\),对与 \(H\) 关联的预训练架构进行监督微调。
-
评估该微调后预测器的目标任务性能 \(\mathcal{L}\)(例如:验证误差)。
-
若该组合 (\(C \cup H, \mathcal{L}\)) 属于 \(S\) 中表现最佳的 \(K\) 个,则将其加入 \(S\)。
end for
end for
输出 \(S\),即包含 \(K\) 个表现最佳模型及其设置、验证性能的集合。
文献17开展的实验表明,一旦超参数数量超过支持向量机(SVM)和原始神经网络通常遇到的2到3个,随机采样的效率就会比网格搜索高出数倍。观察到更快收敛的主要原因是,随机采样允许为每个超参数探索更多取值,而网格搜索中,单个超参数的同一取值会在指数级数量的配置(其余所有超参数的组合)中重复出现。特别地,如果只有一小部分超参数真正对结果有显著影响,那么可以证明该方法的效率会高出指数级。我们的研究发现,对于不同的数据集和架构,影响最大的超参数子集各不相同,但通常情况下只有少数几个超参数会对结果产生重大影响(学习率永远是其中之一!)。当通过平均或最小化的方式边缘化验证性能,以可视化一两个超参数的影响时,与网格搜索相比,随机搜索得到的结果噪声更大------这是因为其余超参数的随机波动导致的,但分辨率也高得多,因为随机搜索考虑了多得多的不同取值。实际操作中,我们可以绘制最佳验证误差随随机试验次数^28增加的曲线(平均值和标准差通过以下方式获得:对于每个试验次数选择,考虑所有大小相同的可能试验子集),该曲线可以告诉我们是否正在接近平台期(plateau),换言之,它能判断是否值得继续提交任务,也就是说,我们可以在超参数的外部优化过程中实现一种早停。注意需要区分"前N次试验中的最佳试验"曲线,与"大小为N的子集中的最佳结果的均值(及标准差)"曲线。后者是增加试验次数时我们应预期的改进的更好统计代表。即使前者已经进入平台期,后者仍可能处于上升状态,这说明需要更多的超参数配置样本,也就是更多的试验17。将这些曲线与网格搜索得到的对应曲线对比,可以看到随机搜索的收敛速度更快。另一方面,需要注意网格搜索相比随机采样有一个优势:结果的定性分析更容易开展,因为可以固定其余所有超参数,仅考虑单个超参数的变化带来的影响。围绕随机搜索找到的最佳方案开展小范围网格搜索,仅考虑被发现对结果有影响的超参数或与感兴趣的科学问题相关的超参数,仍然是一个可行的选择^29。
\^28:每次随机试验对应一个使用特定超参数取值组合的训练任务。
\^29:机器学习研究经常遇到这类情况,例如:架构深度是否会影响结果?我们就需要准确控制深度的影响,针对每个深度取值优化其余所有超参数。
19.4 调试与分析
19.4.1 真实度校验与受控过拟合
如前所述,我们考虑一个特定的训练样本。若函数 \(g\) 属于集合 \(G\) 当且仅当 \(g\) 是 \(GDL\) 的成员,我们就称给定 \(GDL\) 的实现与 \(G\) 的计算是兼容的。函数 \(g\) 是 \(GDL\) 的成员,当且仅当 \(g\) 是该训练样本的成员。这并不是一个非常具体的过拟合概念。换句话说,若函数 \(g\) 属于 \(G\),则 \(g\) 属于 \(GDL\);若 \(g\) 不属于 \(GDL\),则 \(g\) 不属于 \(G\)。这仍然不是一个非常具体的过拟合概念。以下等式是泛化界的最简形式:
\\\text { (1) } \\quad \\mathbb{E}\\left\[\\hat{L}(\\hat{\\alpha})\\right = \mathbb{E}\left\\hat{L}(\\alpha)\\right \]
19.4
19.4 不可避免。分析中最困难的部分是对不同类型训练的对比,分析中最重要的部分同样是对不同类型训练的对比。不过不同用途的缓冲区可能引发错误,这类问题可在调试阶段通过将缓冲区初始化为NaN(Not-A-Number,非数字)值来排查,该值会传播到下游计算中(便于快速发现使用了未初始化值的问题)31。
31 该技巧由David Warde-Farley 本人告知,他是从Sam Roweis处学到的。
19.4.2 可视化与统计
训练过程中应测量的最基础统计数据是误差统计量。训练集和验证集上的平均损失及其在训练过程中的变化趋势,对于监控训练进度、区分过拟合与优化不足非常有用。为了方便对比,在训练时按照神经网络的"训练龄"(即更新次数乘以小批量大小B,等价于已访问的样本数量)而非训练轮数(对训练集大小非常敏感)来对比会更实用。
在使用无监督训练训练深度架构的前几层时,最常用的调试和分析工具是滤波器可视化,即与各个隐藏单元关联的权重向量的可视化。当输入是图像(或图像块)、时间序列或频谱图(这些数据都具有视觉可解释性)、且对应的是第一层时,这个可视化操作最简单。已经有多种方案被提出,用来将这一思路扩展到可视化首层之后的隐藏单元的偏好输入81, 43。对于第一层,由于通常能得到Gabor滤波器,可以对这些滤波器进行参数拟合以匹配权重向量,从而可视化已学习滤波器的方向、位置和尺度分布。可视化第一层权重的一个有趣特例是利用降维技术(如t-SNE113)可视化词嵌入(见下文19.5.3节)。滤波器可视化思路的扩展(可用于非线性或更深层的特征)是局部引导切向量可视化,即在给定测试点附近的、输入空间中表示(在某一指定层)最敏感的主方向可视化100。当输入不是图像或难以可视化的数据,或者想要了解不同隐藏单元的权重值时,Hinton图58也非常实用:它用小方块表示权重,方块颜色(黑或白)代表权重的正负,方块面积代表权重的绝对值。另一种可视化无监督(或联合标签-输入)模型学习内容的方式是查看模型生成的样本。已经有针对受限玻尔兹曼机(RBM)、深度信念网络(DBN)和深度玻尔兹曼机(DBM)的采样流程定义,例如基于吉布斯采样的方法。当权重变大时,吉布斯采样的模式间混合会变得非常缓慢。Rates-FPCD112, 30是一个有趣的替代方案,它对这一问题表现得更鲁棒,整体混合速度也更快,但代价是失去了理论保证。
对于自编码器变体,直到最近仍不明确它们是否真的能捕捉到底层密度(因为它们的优化目标不是最大似然原理或其近似形式)。因此,是否存在适用于自编码器的合适采样算法就更不明确了,但最近提出的用于压缩自编码器的采样方案似乎表现很好101,该方案基于对编码器一阶导数的几何解释论证16,证明了去噪自编码器和压缩自编码器能够捕捉训练密度的局部矩(一阶和二阶)。为了解单个隐藏单元所代表的内容,有研究提出只调整某一个单元、其余单元保持固定的方式来观察变化,例如将其余单元固定为某个特定输入示例对应的隐藏单元表示的值。另一个有趣的技术是可视化函数空间中的学习轨迹44。该思路将神经网络计算的函数(而非仅参数)关联到低维(2D或3D)表示,例如使用t-SNE113或Isomap111算法,然后绘制该函数在训练过程中的演化,或不同初始化下的这类轨迹的集合。这可以可视化有效的局部极小值^32,还能证明没有两个不同的随机初始化最终会落入同一个有效局部极小值。
最后,另一种实用的可视化方式是展示各层激活(各层非线性函数的输入和输出)、激活梯度、参数和参数梯度的统计数据(如直方图、均值和标准差),可以按组(如不同层、偏置与权重)分类、也可跨训练迭代展示。实用的示例可参考Glorot和Bengio的研究48。值得特别关注的一个指标是各层学习到的表示的判别能力,如85中所述,最终可延伸到分析我们在考虑更深层架构时,不同层捕捉到的解耦因素。
32 很难确定这是真正的局部极小值,还是只是看起来像局部极小值,因为优化算法已经卡住。
19.5 其他建议
19.5.1 多核机器、BLAS与GPU
矩阵运算是许多机器学习算法高效实现中最耗时的操作,对神经网络和深度架构而言尤其如此。基础运算包括矩阵-向量乘积(前向传播和反向传播)和向量外积(生成权重梯度的矩阵)。矩阵-矩阵乘法的运算速度可以远快于等效的矩阵-向量乘积序列,原因有二:一是BLAS库中实现的智能缓存机制(Python的NumPy和Theano、Matlab、Torch或Lush等众多高级环境都会调用BLAS),二是并行计算的优势。合适的BLAS版本可以利用多核机器的优势,将计算任务分配到多核上运行。但由于通信开销以及并非所有计算都能并行化,实际获得的加速比通常只是理论总加速比的一部分(例如在4核机器上只能得到4倍的加速)。当矩阵尺寸增大时,并行计算的效率会更高,这也是小批量更新具有计算优势的原因,机器核心数越多,这一优势越明显。极致多核机器当属GPU(图形处理单元),拥有数百个核心。但遗憾的是,GPU也有相应限制,且需要使用专用编译器,这使得充分利用其性能潜力变得更加困难。在512核的机器上,我们通常可以为大型神经网络获得4到40倍的加速。要让GPU的使用具备实用性,使用现成的、能高效实现GPU计算操作的库会非常有帮助。Theano库(可将类似NumPy的代码编译为GPU运行版本)的对比研究可参考Bergstra等人18的工作。一个实际问题是,通常只有GPU编译后的运算会在GPU上执行,而GPU与CPU之间的数据传输会大幅拖慢速度。因此使用性能分析工具查明哪些运算在GPU上执行、这些运算的效率如何非常重要,这样才能快速将时间投入到需要的地方,让实现适配GPU,同时将多数运算保留在GPU卡上执行。
19.5.2 稀疏高维输入
传统监督神经网络可以通过稀疏矩阵乘法高效处理稀疏高维输入。通常输入是稀疏向量,而权重存储在稠密矩阵中,为了充分利用稀疏性的优势,应该使用针对这一场景优化过的实现。与稠密的矩阵-向量乘积实现相比,稀疏实现的乘法运算会有2倍甚至更高的额外开销(仅针对乘加运算,其他运算没有)。
遗憾的是,许多无监督学习算法存在困难:这些学习算法的计算通常涉及某种形式的输入重构(所有自编码器变体都有此需求,RBM和稀疏编码变体也需要),就好像输入是学习器的输出一样。这个问题有两个例外:半监督嵌入117和慢特征分析119, 20。前者会让相近样本的表示相互靠近、不相似的样本相互远离,同时还会针对监督学习任务调整表示;后者在最大化学习特征方差的同时,最小化特征的协方差、最大化特征的时间自相关。
对于确实需要输入重构的算法,已经提出了一种基于采样重构39的高效方案,已成功在自编码器和去噪自编码器上实现并验证。该方案的核心思路是,针对每个样本(或小批量),对重构向量的部分元素及其关联的
19.5.3 符号变量、嵌入、多任务学习与多关系学习
参数共享68, 77, 68, 31, 4, 5是一种用于提升统计效能的经典神经网络技术:如果一个参数在N 倍多的上下文(不同任务、输入的不同部分等)中被使用,那么在调整其数值时,就好像我们有N 倍多的训练样本。更多的样本来估计一个参数会降低其方差(相对于训练样本的采样),这直接影响泛化误差:例如,泛化均方误差可以分解为偏置项和方差项之和46。复用的想法最早通过将相同参数应用于输入的不同部分来利用,比如卷积神经网络68, 77。复用也通过跨多个与网络不同输出相关的任务共享网络的底层(以及它们捕获的输入表示)来利用31, 4, 5。这个想法也是深度学习7的核心动机之一:因为可以把高层(更深层)计算的中间特征看作可以共享低层(更靠近输入)计算的子特征的不同任务。这种非常基础的重用思想是改进许多场景泛化的关键,也指导着实际应用中神经网络架构的设计。
这些想法的一个有趣特殊案例出现在符号数据学习的场景中。如果某些输入变量是符号,取值于有限字母表,可以通过输入向量的独热子向量来表示它们(除了对应特定符号的位置为1,其余位置为0)。现在,不同的输入变量有时指的是同一类型符号的不同实例。一个典型的例子是神经语言模型11, 6,其输入是词序列。在这些模型中,相同的输入层权重被用于输入序列中不同位置的词(和卷积网络类似)。独热子向量与这个共享权重矩阵的乘积是通常的稠密向量,这将字母表中的每个符号与向量空间中的一个点关联起来,我们称之为该符号的嵌入。除了在输入句子中词的位置之间共享嵌入参数外,Collobert等人36还在自然语言处理任务(如词性标注、组块分析和语义角色标注)之间共享这些参数。
参数共享是卷积网络、循环神经网络和动态贝叶斯网络的核心思想,在这些网络中,相同参数用于数据的不同时间或空间切片。这个思想已经从序列和二维图像推广到任意图,使用递归神经网络或递归图模型92, 45, 25, 108、马尔可夫逻辑网络98和关系学习47。
关系数据库可以被看作是一组对象(或有类型的值)以及它们之间的关系,形式为(对象1,关系类型,对象2)。可以共享同一组全局参数来刻画这些关系、跨关系(可视为任务)和对象。对象特定的参数是指定特定离散对象嵌入的参数。可以把每个嵌入向量的元素看作隐式学习的属性。不同任务需要不同的属性,因此具有某些潜在特性和行为相似的对象最终应该具有某些属性的相似值。例如,出现在语义和语法相似上下文中的词最终会得到非常接近的嵌入36。如果相同属性对多个任务有用,那么通过参数共享可以获得统计功效,任务之间可以发生信息迁移,使得一个任务的数据有助于在另一个任务上正确泛化。
Bordes等人23, 24提出的方法是学习一个能量函数,对于训练集中存在的有效(正)关系,该函数值更低,参数分为两部分:一部分是符号嵌入,另一部分是将嵌入映射为标量能量的其余神经网络。此外,通过将关系类型本身视为特定的符号对象,模型可以对关系本身进行推理,拥有关系类型之间的关系。例如,"to be"可以作为关系类型(在主谓属性关系中),但在"to be is a verb"这个陈述中,它既是关系类型,又是关系的对象。这种多关系学习为神经网络应用于传统应用之外开辟了道路,传统应用基于单一同构数据源,通常被视为一个矩阵,每行一个示例,每个随机变量一列(或一组列)。相反,人们通常有多种异构数据源(通常提供以值元组形式出现的示例[[1]](#[1])),每个源涉及不同的随机变量。只要这些不同源共享某些变量,上述多关系多任务学习方法就可以应用。每个变量可以关联其嵌入函数(将变量的值映射到跨任务和数据源有效的通用表示空间)。如果从对象到嵌入的映射从表查找推广到参数化函数(最简单的是线性映射),从原始属性(如图像特征)到嵌入,那么这个框架不仅适用于符号数据,也适用于混合符号数值数据。这个方法已经成功用于设计图像搜索系统,其中图像和查询被映射到同一个语义空间118。
19.6 开放问题
19.6.1 训练更深层架构带来的额外难度
有实验结果表明,至少在某种情况下,深层神经网络比浅层网络更难训练,因为从随机初始化开始,错过更优极小值的概率更大。所有发现某种初始化方案能显著提升性能的实验都证实了这一点。在深度学习文献中,这通过使用无监督预训练(有监督或无监督)得到证明,既应用于有监督任务(训练神经网络做分类61, 14, 95),也应用于无监督任务(训练深度玻尔兹曼机建模数据分布104)。Erhan等人44的学习轨迹可视化显示,即使从函数空间中的邻近配置开始,不同的初始化似乎总会落入不同的有效局部极小值。此外,同一研究表明,使用无监督预训练找到的极小值在函数空间中距离随机初始化找到的极小值很远,并且泛化误差更低。这两项发现都凸显了深层网络中初始化和局部极小值效应的重要性。最后,研究表明,考虑更深层架构时,这些效应都会增强44。
还有结果表明,特定的初始化分布设置和示例排序方式("课程学习")可以得到更好的解42, 15, 66。这也说明非常特殊的参数初始化方式(与均匀采样差异很大)可以对梯度下降找到的解产生强烈影响。15提出的假设是,课程学习的作用类似于延续法,即从更简单的优化任务(如凸任务)开始,随着学习任务逐渐变难并接近实际感兴趣的任务,跟踪局部极小值。
为什么训练深层网络会更难?这显然仍然是一个开放问题。一个合理的部分答案是深层网络也
非线性程度更高(因为每一层都在之前层的基础上叠加更多非线性),使得基于梯度的学习方法的效率更低。随着深度增加,局部极小值的数量和结构也可能都发生质的变化。理论研究表明,更深层架构的表达能力可能呈指数级提升7,9;从子函数复用组合带来的额外表达能力来看,局部极小值的数量(以及可能的质量)相应增加也是合理的。但最佳的局部极小值也可能更难找到。
- 局部训练信号。许多训练深度网络的成功方法的共同点是,它们都使用了局部训练信号,帮助每一层决定如何操作,而无需通过多个非线性层反向传播梯度。这当然包括许多逐层贪婪预训练的变体,也包括鲜为人知的半监督嵌入算法117。
- 合适的初始化范围。基于激活值和梯度都能在深层架构中良好传播而不显著降低方差的想法,Glorot和Bengio48提出设置初始权重,使得每层的雅可比矩阵的奇异值接近1(或双向保留方差)。在他们的实验中,该方法明显大幅缩小了纯监督训练网络与预训练深度网络之间的性能差距。
- 非线性函数的选择 。在同一项研究48及其后续研究49中发现,隐藏层的非线性函数选择与深度存在交互作用。具体来说,在没有无监督预训练的情况下,顶层隐藏层使用sigmoid函数的深度神经网络会在高原上停滞很久,且总体表现较差,这是因为输出单元的0值和初始梯度具有特殊作用。对称非线性函数如双曲正切函数没有这个问题,而更柔和的非线性函数(无指数尾部)如softsign函数\(s(a)=a/(1+|a|)\)表现更好。在Glorot等人的研究49中指出,非对称但硬限幅的非线性函数如修正线性单元(\(s(a)=\max(0,a)\),另见86)实际上表现非常好(但不应用于输出单元),尽管此前人们认为当隐藏单元饱和时,梯度无法很好地流入下层。事实上梯度可以很好地传播,但仅沿选定的路径,这可能使得归因(即哪些参数应该调整以处理当前误差)更明确,且海森矩阵的条件数更优。一个与神经网络非线性函数梯度传播难度相关的最新启发式方法是"中心化"非线性操作,使每个隐藏单元的平均输出为0,平均斜率为0107,94。
19.6.2 自适应学习率与二阶方法
为了提升收敛速度,并将学习率从超参数列表中移除,许多研究者主张探索自适应学习率方法,可应用于全局学习率32、逐层学习率、逐神经元学习率或逐参数学习率22(后者已开始呈现类似对角牛顿法的特征)。LeCun76与LeCun等人79主张使用二阶对角牛顿(始终为正)近似,每个参数对应一个独立的学习率(与损失对该参数的近似逆二阶导数挂钩)。Hinton59提出对学习率进行缩放,使平均权重更新量约为权重量级的千分之一。LeCun等人79还提出了一种简单的幂法,用于估计海森矩阵的最大特征值(该值即为最优学习率)。牛顿法变体的一个有趣替代方案是自然梯度法的变体1,但和基础牛顿法一样,它的计算成本过高,需要对过大的方阵(参数数量乘参数数量)执行运算。已有研究提出自然梯度的对角和低秩在线近似方法73,74,并在部分场景中被证明可以加快训练速度。近年来已提出多种自适应学习率方法,值得在神经网络领域得到更多关注和验证,例如Adagrad41以及Schaul等人提出的自适应学习率方法106,该方法声称可以完全消除对学习率超参数的需求。虽然随机梯度下降(SGD)在训练初期收敛非常快,但在最终收敛阶段通常慢于二阶方法,这在部分应用中可能至关重要。因此,对于规模不大的数据集(例如样本数少于数千或数万的情况),批量训练算法(仅在遍历完整训练集后执行一次更新),如共轭梯度法(一种二阶方法)的表现一直优于随机梯度下降。此外,最近还提出并成功将二阶方法应用于大批次场景72,83,其思路是在每个小批次上仅执行少量二阶方法的迭代,然后从前一批次找到的最优点出发进入下一批次。一个实用的变通做法是先用1个或多个轮次的SGD启动训练,因为SGD在训练初期仍然是最快的优化器。
19.7 结论
尽管人们对人工神经网络进行了数十年的实验和理论研究,且自本书第一版出版以来取得了诸多令人瞩目的进展,尤其在深度学习领域,但对于如何更好地训练神经网络、更好地理解可能导致训练任务困难的底层问题,仍有大量工作要做。正如本书引言中所述,这里总结的经验应当作为参考指南,供验证和挑战,而非不可更改的固定实践。这里总结的方法,结合不断提升的可用算力,如今已使研究者能够训练规模远超本书第一版出版时可能的神经网络,推动我们更接近人工智能的目标。
致谢 。作者感谢Nicolas Le Roux、Ian Goodfellow、James Bergstra、Guillaume Desjardins、Razvan Pascanu、David Warde-Farley、Eric Larsen、Frederic Bastien和Sina Honari提供的评论与反馈,同时感谢NSERC、FQRNT、CIFAR以及加拿大国家研究教授项目的资金支持。
1 Amari, S.:自然梯度在模型训练中高效有效。《神经计算》10(2),251-276 (1998)
2 Bach, F., Moulines, E.:随机逼近算法的非渐近分析。载于:NIPS 2011 (2011)
3 Bagnell, J.A., Bradley, D.M.:可微分稀疏编码。载于:NIPS 2009,第113-120页 (2009)
4 Baxter, J.:学习内部表征。载于:COLT 1995,第311-320页 (1995)
5 Baxter, J.:基于贝叶斯/信息论的多任务采样学习模型。《机器学习》28,7-40 (1997)
6 Bengio, Y.:神经网络语言模型。《学者百科》3(1),3881 (2008)
7 Bengio, Y.:面向人工智能的深层架构学习。Now出版社 (2009)
8 Bengio, Y.:无监督与迁移学习中的表征深度学习。载于:JMLR Workshop and Conference Proceedings:无监督与迁移学习会议论文集 (2011)
9 Bengio, Y., Delalleau, O.:论深层架构的表达能力。载于:Kivinen, J., Szepesvári, C., Ukkonen, E., Zeugmann, T. (编) ALT 2011。计算机科学讲义(LNCS)第6925卷,第18-36页。斯普林格,海德堡 (2011)
10 Bengio, Y., LeCun, Y.:将学习算法扩展至人工智能规模。载于:《大规模核机》(2007)
11 Bengio, Y., Ducharme, R., Vincent, P., Jauvin, C.:神经概率语言模型。《机器学习研究期刊》3,1137-1155 (2003)
12 Bengio, Y., Le Roux, N., Vincent, P., Delalleau, O., Marcotte, P.:凸神经网络。载于:NIPS 2005,第123-130页 (2006a)
13 Bengio, Y., Delalleau, O., Le Roux, N.:高变异函数对局部核机的诅咒。载于:NIPS 2005,第107-114页 (2006b)
14 Bengio, Y., Lamblin, P., Popovici, D., Larochelle, H.:深度网络的逐层贪婪训练。载于:NIPS 2006 (2007)
15 Bengio, Y., Louradour, J., Collobert, R., Weston, J.:课程学习。载于:ICML 2009 (2009)
16 Bengio, Y., Alain, G., Rifai, S.:通过局部矩匹配从自编码器采样的隐式密度估计。技术报告。arXiv:1207.0057 (2012)
17 Bergstra, J., Bengio, Y.:用于超参数优化的随机搜索。《机器学习研究杂志》13,281-305 (2012)
18 伯格斯特拉(Bergstra, J.)、布鲁洛(Breuleux, O.)、巴斯蒂安(Bastien, F.)、兰布兰(Lamblin, P.)、帕斯坎(Pascanu, R.)、德雅尔丹(Desjardins, G.)、蒂里安(Turian, J.)、沃德-法利(Warde-Farley, D.)、本吉奥(Bengio, Y.):Theano:一款CPU与GPU数学表达式编译器。发表于:2010年科学计算Python会议(SciPy)会议论文集(2010年)
19 伯格斯特拉(Bergstra, J.)、巴德纳(Bardenet, R.)、本吉奥(Bengio, Y.)、凯格尔(Kégl, B.):超参数优化算法。发表于:2011年神经信息处理系统大会(NIPS 2011)(2011年)
20 伯克斯(Berkes, P.)、维斯科特(Wiskott, L.):将慢特征分析应用于图像序列可得到丰富的复杂细胞特性集合。收录于:Dorransoro, J.R.(编)2002年国际人工神经网络大会(ICANN 2002),LNCS第2415卷,第81--86页。海德堡施普林格出版社(2002年)
21 贝尔塞卡斯(Bertsekas, D.P.):凸优化的增量梯度、次梯度及近端方法:综述。LIDS技术报告第2848号(2010年)
22 博尔德斯(Bordes, A.)、博托(Bottou, L.)、加利纳里(Gallinari, P.):SGD-QN:谨慎的拟牛顿随机梯度下降法。《机器学习研究杂志》第10期,1737--1754页(2009年)
23 博尔德斯(Bordes, A.)、韦斯顿(Weston, J.)、科洛贝尔(Collobert, R.)、本吉奥(Bengio, Y.)(2011年):知识库结构化嵌入的学习。发表于:美国人工智能协会大会(AAAI)(2011年)
24 博尔德斯(Bordes, A.)、格洛罗(Glorot, X.)、韦斯顿(Weston, J.)、本吉奥(Bengio, Y.):开放文本语义解析中词汇与语义表征的联合学习。发表于:2012年人工智能与统计会议(AISTATS 2012)(2012年)
25 博托(Bottou, L.):从机器学习到机器推理。技术报告,arXiv:1102(2011年)
26 博托(Bottou, L.):随机梯度下降技巧。收录于:Montavon, G.、Orr, G.B.、Müller, K.-R.(编)《神经网络的实用技巧》第2版,LNCS第7700卷,第421--436页。海德堡施普林格出版社(2012年)
27 博托(Bottou, L.)、布斯凯(Bousquet, O.):大规模学习的权衡。发表于:2008年神经信息处理系统大会(NIPS 2008)(2008年)
28 博托(Bottou, L.)、勒村(LeCun, Y.):大规模在线学习。发表于:2003年神经信息处理系统大会(NIPS 2003)(2004年)
29 布雷曼(Breiman, L.):装袋预测器。《机器学习》第24卷第2期,123--140页(1994年)
30 布鲁洛(Breuleux, O.)、本吉奥(Bengio, Y.)、文森特(Vincent, P.):从RBM衍生过程中快速生成代表性样本。《神经计算》第23卷第8期,2053--2073页(2011年)
31 卡鲁阿纳(Caruana, R.):多任务联结主义学习。收录于:《1993年联结主义模型暑期学校会议论文集》,第372--379页(1993年)
32 赵(Cho, K.)、赖科(Raiko, T.)、伊林(Ilin, A.):训练受限玻尔兹曼机的增强梯度与自适应学习率。发表于:2011年国际机器学习会议(ICML 2011),第105--112页(2011年)
33 科茨(Coates, A.)、吴恩达(Ng, A.Y.):稀疏编码与向量量化中编码与训练的重要性对比。发表于:2011年国际机器学习会议(ICML 2011)(2011年)
34 科洛贝尔(Collobert, R.)、本吉奥(Bengio, S.):感知机、多层感知机与支持向量机之间的联系。发表于:2004年国际机器学习会议(ICML 2004)(2004a年)
35 科洛贝尔(Collobert, R.)、本吉奥(Bengio, S.):感知机、多层感知机与支持向量机之间的联系。发表于:国际机器学习会议(ICML)(2004b年)
36 科洛贝尔(Collobert, R.)、韦斯顿(Weston, J.)、博托(Bottou, L.)、卡伦(Karlen, M.)、卡夫库奥卢(Kavukcuoglu, K.)、库克萨(Kuksa, P.):(几乎)从零开始的自然语言处理。《机器学习研究杂志》第12期,2493--2537页(2011a年)
37 科洛贝尔(Collobert, R.)、卡夫库奥卢(Kavukcuoglu, K.)、法拉贝特(Farabet, C.):Torch7:一个类MATLAB的机器学习环境。发表于:NIPS大规模学习研讨会(BigLearn)(2011b年)
38 库维尔(Courville, A.)、伯格斯特拉(Bergstra, J.)、本吉奥(Bengio, Y.):基于尖峰-平板受限玻尔兹曼机的图像无监督模型。发表于:2011年国际机器学习会议(ICML 2011)(2011年)
39 多芬(Dauphin, Y.)、格洛罗(Glorot, X.)、本吉奥(Bengio, Y.):用于大规模嵌入学习的采样重建。发表于:2011年国际机器学习会议会议论文集(2011年)
40 迪威斯特(Deerwester, S.)、杜马斯(Dumais, S.T.)、弗纳斯(Furnas, G.W.)、兰道尔(Landauer, T.K.)、哈什曼(Harshman, R.):基于潜在语义分析的索引。《美国信息科学学会杂志》第41卷第6期,391--407页(1990年)
41 杜奇(Duchi, J.)、哈赞(Hazan, E.)、辛格(Singer, Y.):在线学习与随机优化的自适应次梯度方法。《机器学习研究杂志》(2011年)
19. 训练深度架构的建议
- 42 埃尔曼(Elman, J.L.):神经网络中的学习与发展:从小规模起步的重要性。《认知》第48期,781--799页(1993年)
- 43 埃尔汉(Erhan, D.)、库维尔(Courville, A.)、本吉奥(Bengio, Y.):理解深度架构中学到的表征。蒙特利尔大学DIRO技术报告第1355号(2010a年)
- 44 埃尔汉(Erhan, D.)、本吉奥(Bengio, Y.)、库维尔(Courville, A.)、曼扎戈尔(Manzagol, P.-A.)、文森特(Vincent, P.)、本吉奥(Bengio, S.):为什么无监督预训练有助于深度学习?《机器学习研究杂志》第11期,625--660页(2010b年)
- 45 弗拉斯科尼(Frasconi, P.)、戈里(Gori, M.)、斯佩尔杜蒂(Sperduti, A.):数据结构自适应处理的一般框架。《IEEE神经网络汇刊》第9卷第5期,768--786页(1998年)
- 46 杰曼(Geman, S.)、比嫩斯托克(Bienenstock, E.)、杜尔萨(Doursat, R.):神经网络与偏差/方差困境。《神经计算》第4卷第1期,1--58页(1992年)
- 47 吉图尔(Getoor, L.)、塔斯卡(Taskar, B.):《统计关系学习导论》。MIT出版社(2006年)
- 48 格洛罗(Glorot, X.)、本吉奥(Bengio, Y.):理解训练深度前馈神经网络的难度。发表于:2010年人工智能与统计会议(AISTATS 2010),第249--256页(2010年)
- 49 格洛罗(Glorot, X.)、博尔德斯(Bordes, A.)、本吉奥(Bengio, Y.)(2011a年):深度稀疏整流器神经网络。发表于:2011年人工智能与统计会议(AISTATS 2011)(2011年)
- 50 格洛罗(Glorot, X.)、博尔德斯(Bordes, A.)、本吉奥(Bengio, Y.):面向大规模情感分类的领域自适应:一种深度学习方法。发表于:2011年国际机器学习会议(ICML 2011)(2011b年)
- 51 古德费洛(Goodfellow, I.)、Le, Q.、萨克斯(Saxe, A.)、吴恩达(Ng, A.):衡量深度网络中的不变性。发表于:2009年神经信息处理系统大会(NIPS 2009),第646--654页(2009年)
- 52 古德费洛(Goodfellow, I.)、库维尔(Courville, A.)、本吉奥(Bengio, Y.):用于无监督特征发现的尖峰-平板稀疏编码。发表于:NIPS层次模型学习挑战研讨会(2011年)
- 53 格雷佩尔(Graepel, T.)、坎德拉(Candela, J.Q.)、博彻特(Borchert, T.)、赫尔布赖希(Herbrich, R.):微软必应搜索引擎赞助搜索广告的Web规模贝叶斯点击率预测。发表于:国际机器学习会议(ICML)(2010年)
- 54 赫斯塔德(Hästad, J.):小深度电路几乎最优的下界。发表于:1986年计算理论研讨会(STOC 1986),第6--20页(1986年)
- 55 赫斯塔德(Hästad, J.)、戈德曼(Goldmann, M.):关于小深度阈值电路的算力。《计算复杂性》第1期,113--129页(1991年)
- 56 欣顿(Hinton, G.E.):松弛及其在视觉中的作用。爱丁堡大学博士论文(1978年)
- 57 欣顿(Hinton, G.E.):学习概念的分布式表征。发表于:第8届认知科学学会年会论文集,第1--12页(1986年)
- 58 欣顿(Hinton, G.E.):联结主义学习程序。《人工智能》第40期,185--234页(1989年)
- 59 欣顿(Hinton, G.E.):训练受限玻尔兹曼机实用指南。多伦多大学计算机科学系技术报告UTML TR 2010-003(2010年)
- 60 欣顿(Hinton, G.E.):训练受限玻尔兹曼机实用指南。收录于:Montavon, G.、Orr, G.B.、Müller, K.-R.(编)《神经网络的实用技巧》第2版,LNCS第7700卷,第599--619页。海德堡施普林格出版社(2012年)
- 61 欣顿(Hinton, G.E.)、奥辛德罗(Osindero, S.)、特赫(Teh, Y.-W.):深度信念网络快速学习算法。《神经计算》第18期,1527--1554页(2006年)
- 62 赫特(Hutter, F.):求解难计算问题的算法自动配置。不列颠哥伦比亚大学博士论文(2009年)
- 63 赫特(Hutter, F.)、胡斯(Hoos, H.H.)、莱顿-布朗(Leyton-Brown, K.):通用算法配置的序列模型优化。收录于:Coello Coello, C.A.(编)LION 5会议,LNCS第6683卷,第507--523页。海德堡施普林格出版社(2011年)
- 64 贾勒特(Jarrett, K.)、卡夫库奥卢(Kavukcuoglu, K.)、兰扎托(Ranzato, M.)、勒村(LeCun, Y.):物体识别的最佳多阶段架构是什么?发表于:国际计算机视觉大会(ICCV)(2009年)
- 65 卡夫库奥卢(Kavukcuoglu, K.)、兰扎托(Ranzato, M.-A.)、费格斯(Fergus, R.)、勒村(LeCun, Y.):通过地形滤波器映射学习不变特征。发表于:2009年计算机视觉与模式识别会议(CVPR 2009)(2009年)
- 66 克鲁格(Krueger, K.A.)、戴恩(Dayan, P.):灵活塑形:小步学习如何提供帮助。《认知》第110期,380--394页(2009年)
- 67 兰布兰(Lamblin, P.)、本吉奥(Bengio, Y.):在大规模标注集上对深度架构进行有监督微调带来的重要增益。发表于:NIPS 2010深度学习与无监督特征学习研讨会(2010年)
- 68 兰(Lang, K.J.)、欣顿(Hinton, G.E.):用于语音识别的时间延迟神经网络架构的发展。卡内基梅隆大学技术报告CMU-CS-88-152(1988年)
- 69 拉罗谢尔(Larochelle, H.)、本吉奥(Bengio, Y.):使用判别受限玻尔兹曼机进行分类。发表于:2008年国际机器学习会议(ICML 2008)(2008年)
- 70 拉罗谢尔(Larochelle, H.)、本吉奥(Bengio, Y.)、洛拉杜尔(Louradour, J.)、兰布兰(Lamblin, P.):探索训练深度神经网络的策略。《机器学习研究杂志》第10期,1--40页(2009年)
- 71 Le, Q.、吴恩达(Ngiam, J.)、陈(Chen, Z.)、Hao Chia, D.J.、Koh, P.W.、吴恩达(Ng, A.):平铺卷积神经网络。发表于:2010年神经信息处理系统大会(NIPS 2010)(2010年)
- 72 Le, Q.、吴恩达(Ngiam, J.)、科茨(Coates, A.)、拉希里(Lahiri, A.)、普罗赫诺(Prochnow, B.)、吴恩达(Ng, A.):深度学习的优化方法。发表于:2011年国际机器学习会议(ICML 2011)(2011年)
- 73 Le Roux, N.、曼扎戈尔(Manzagol, P.-A.)、本吉奥(Bengio, Y.):Topmoumoute在线自然梯度算法。发表于:2007年神经信息处理系统大会(NIPS 2007)(2008年)
- 74 Le Roux, N.、本吉奥(Bengio, Y.)、菲茨吉本(Fitzgibbon, A.):通过建模不确定性改进一阶与二阶方法。收录于:《机器学习的优化》。MIT出版社(2011年)
- 75 Le Roux, N.、施密特(Schmidt, M.)、巴赫(Bach, F.):一种针对强凸优化且具有有限训练集的指数收敛率随机梯度方法。技术报告,arXiv:1202.6258(2012年)
- 76 勒村(LeCun, Y.):《联结主义学习模型》。巴黎第六大学博士论文(1987年)
- 77 勒村(LeCun, Y.):泛化与网络设计策略。多伦多大学技术报告CRG-TR-89-4(1989年)
- 78 勒村(LeCun, Y.)、博瑟(Boser, B.)、登克(Denker, J.S.)、亨德森(Henderson, D.)、霍华德(Howard, R.E.)、哈伯德(Hubbard, W.)、杰克尔(Jackel, L.D.):反向传播在手写邮政编码识别中的应用。《神经计算》第1卷第4期,541--551页(1989年)
- 79 勒村(LeCun, Y.A.)、博托(Bottou, L.)、奥尔(Orr, G.B.)、穆勒(Müller, K.-R.):高效反向传播。收录于:奥尔(Orr, G.B.)、穆勒(Müller, K.-R.)(编)NIPS-WS 1996会议,LNCS第1524卷,第9--50页。海德堡施普林格出版社(1998a年)
- 80 勒村(LeCun, Y.)、博托(Bottou, L.)、本吉奥(Bengio, Y.)、哈夫纳(Haffner, P.):基于梯度的学习在文档识别中的应用。《IEEE汇刊》第86卷第11期,2278--2324页(1998b年)
- 81 李(Lee, H.)、埃卡纳德姆(Ekanadham, C.)、吴恩达(Ng, A.):(2008年)。视觉区域V2的稀疏深度信念网络模型。发表于:2007年神经信息处理系统大会(NIPS 2007)(2007年)
- 82 李(Lee, H.)、格罗斯(Grosse, R.)、兰甘纳特(Ranganath, R.)、吴恩达(Ng, A.Y.):用于可扩展层次表征无监督学习的卷积深度信念网络。发表于:2009年国际机器学习会议(ICML 2009)(2009年)
- 83 马滕斯(Martens, J.):基于Hessian-free优化的深度学习。发表于:2010年国际机器学习会议(ICML 2010),第735--742页(2010年)
84 Mesnil, G., Dauphin, Y., Glorot, X., Rifai, S., Bengio, Y., Goodfellow, I., Lavoie, E., Muller, X., Desjardins, G., Warde-Farley, D., Vincent, P., Courville, A., Bergstra, J.:《无监督与迁移学习挑战:一种深度学习方法》。载于《无监督与迁移学习会议论文集》,JMLR Workshop and Conference Proceedings,第7卷(2011年)
85 Montavon, G., Braun, M.L., Müller, K.-R.:前向层次中的深度玻尔兹曼机。载于AISTATS 2012会议(2012年)
86 Nair, V., Hinton, G.E.:修正线性单元提升受限玻尔兹曼机性能。载于ICML 2010会议(2010年)
87 Nemirovski, A., Yudin, D.:《优化中的问题复杂度与方法效率》。Wiley出版社(1983年)
88 Nesterov, Y.:凸问题的原始-对偶次梯度问题。《数学规划》120(1),221-259(2009年)
89 Olshausen, B.A., Field, D.J.:基于超完备基集的稀疏编码:V1区采用的一种策略?《视觉研究》37,3311-3325(1997年)
90 Pearlmutter, B.:海森矩阵的快速精确乘法。《神经计算》6(1),147-160(1994年)
91 Pinto, N., Doukhan, D., DiCarlo, J.J., Cox, D.D.:一种用于发现优质生物启发视觉表征的高通量筛选方法。PLOS计算生物学5(11),e1000579(2009年)
92 Pollack, J.B.:递归分布式表征。《人工智能》46(1),77-105(1990年)
93 Polyak, B., Juditsky, A.:通过平均加速随机近似。《SIAM控制与优化杂志》30(4),838-855(1992年)
94 Raiko, T., Valpola, H., LeCun, Y.(2012)。感知机中的线性变换让深度学习更简单。载于AISTATS 2012会议(2012年)
95 Ranzato, M., Poultney, C., Chopra, S., LeCun, Y.:基于能量模型的高效稀疏表征学习。载于NIPS 2006会议(2007年)
96 Ranzato, M., Boureau, Y.-L., LeCun, Y.:深度信念网络的稀疏特征学习。载于:Platt, J.、Koller, D.、Singer, Y.、Roweis, S.(编)《神经信息处理系统进展》(NIPS 2007),第20卷,第1185-1192页。麻省理工学院出版社,剑桥(2008a)
97 Ranzato, M., Boureau, Y., LeCun, Y.:深度信念网络的稀疏特征学习。载于NIPS 2007会议(2008b)
98 Richardson, M., Domingos, P.:马尔可夫逻辑网络。《机器学习》62,107-136(2006年)
99 Rifai, S., Vincent, P., Muller, X., Glorot, X., Bengio, Y.:收缩自编码器:特征提取过程中的显式不变性。载于ICML 2011会议(2011a)
100 Rifai, S., Dauphin, Y., Vincent, P., Bengio, Y., Muller, X.:流形正切分类器。载于NIPS 2011会议(2011b)
101 Rifai, S., Bengio, Y., Dauphin, Y., Vincent, P.:收缩自编码器的采样生成过程。载于ICML 2012会议(2012年)
102 Robbins, H., Monro, S.:一种随机近似法。《数理统计年刊》22,400-407(1951年)
103 Rumelhart, D.E., Hinton, G.E., Williams, R.J.:通过反向传播误差学习表征。《自然》323,533-536(1986年)
104 Salakhutdinov, R., Hinton, G.:深度玻尔兹曼机。载于AISTATS 2009会议(2009年)
105 Saxe, A.M., Koh, P.W., Chen, Z., Bhand, M., Suresh, B., Ng, A.:关于随机权重与无监督特征学习。载于ICML 2011会议(2011年)
参考文献
1 S. O. R. Zhang、S. Lu、Y. Ke:《图像学习》。Academic出版社,德国柏林(2018年)
2 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
3 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
4 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
5 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
6 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
7 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
8 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
9 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
10 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
11 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
12 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
13 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
14 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
15 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
16 S. S. Kamath、N. A. Y.:《图像学习》。Academic出版社,德国柏林(2018年)
基于无海森优化训练深度循环网络
James Antaior 与 Thomas K. Si
摘要
在本章中,我们将首先介绍HF-O(无海森优化)的基础内容......
1 引言
无海森优化(Hessian-Free Optimization, HFO)是非凸优化领域常用的一种方法。
• 属于HF独有(相较于其他截断牛顿类方法)或与神经网络相关的A. M. G. A. B. C. D. E. F. G. H. I. J. K. L. M. N. O. P. Q. R. S. T. U. V. W. X. Y. Z.类内容。
我们还将提供高效、正确实现该方法的应用技巧,并讨论在特定场景下设计、使用基于HF的方案时可能遇到的陷阱。
表20.1 所用符号汇总。
| 符号 | 说明 |
|---|---|
| \(x_i\) | 向量\(x\)的第\(i\)个元素 |
| \(A_{i,j}\) | 矩阵\(A\)的第\((i,j)\)个元素 |
| \(\mathbf{1}_m\) | 长度为\(m\)、所有元素均为1的向量 |
| sq(\(\cdot\)) | 向量或矩阵的逐元素平方 |
| vec(\(A\)) | 矩阵\(A\)的向量化 |
| \(f\) | 目标函数 |
| \(f_i\) | 第\(i\)个样本上的目标函数 |
| \(k\) | HF的当前迭代轮次 |
| \(\theta_k\) | 第\(k\)轮HF迭代的参数取值 |
| \(n\) | \(\theta\)的维度 |
| \(\delta_k\) | 第\(k\)轮HF迭代中由CG(共轭梯度法)优化的变量 |
| \(M_{k-1}\) | \(f\)在\(\theta_{k-1}\)处的局部二次近似 |
| \(\hat{M}_{k-1}\) | 上述近似的"阻尼"版本 |
| \(\mathbf{B}_{k-1}\) | \(M_{k-1}\)的曲率矩阵 |
| \(\hat{\mathbf{B}}_{k-1}\) | \(\hat{M}_{k-1}\)的曲率矩阵 |
| \(h'\), \(\nabla h\) | 标量函数\(h\)的梯度 |
| \(h''\), \(\nabla^2 h\) | 标量函数\(h\)的海森矩阵 |
| \(L(\cdot)\) | 损失函数 |
| \(\rho\) | 下降率,即\(\frac{f(\theta_k) - f(\theta_{k-1})}{M_{k}(\delta_k)}\) |
| \(F(\theta)\) | 将参数映射到所有训练样本预测结果的函数 |
| \(D\) | 阻尼矩阵 |
| \(P\) | 预处理矩阵 |
| \(K_i(A, r_0)\) | 子空间\(\text{span}\{r_0, Ar_0, \dots, A^{i-1}r_0\}\)(即由\(r_0, Ar_0, \dots, A^{i-1}r_0\)张成的子空间) |
| \(\ell\) | 前馈神经网络的层数 |
| \(z\) | 网络的输出 |
| \(m\) | \(z\)的维度 |
| \(T\) | 循环神经网络(RNN)的时间步长 |
| \(\lambda\) | 惩罚阻尼项的强度常数 |
| \(\lambda_j\) | 曲率矩阵的第\(j\)个特征值 |
| diag(\(A\)) | 由矩阵\(A\)的对角线元素构成的向量 |
| diag(\(v\)) | 满足\(A_{i,i} = v_i\)的对角矩阵\(A\) |
20.2 前馈神经网络
我们现在对前馈神经网络(FNNs)进行形式化定义。给定输入\(x\),以及决定权重矩阵和偏置的参数集合\(\theta=(W_1, \dots, W_\ell, b_1, \dots, b_\ell)\),前馈神经网络通过如下递推式计算输出\(y\):
\y_{i+1} = s_i(W_i y_i + b_i) \\
其中\(y_0 = x\)。向量\(\mathbf{y}_i\)是神经网络的激活值,激活函数\(s(\cdot)\)为某些非线性函数,通常使用逐元素作用的光sigmoid或tanh函数。
给定对应的标签\(t\),前馈神经网络在单个样本上的训练目标\(f(\theta; (x, t))\)可表示为\(f(\theta; (x, t)) = L(z, t)\),其中\(L(z, t)\)是用于量化\(z\)对标签\(t\)的预测效果优劣的损失函数。注意\(z\)未必能直接与\(t\)比较,而是可能先将\(t\)转换为某种预测向量\(p\)后再进行比较。
最终,作为学习目标的实际训练误差,是通过对输入-输出对集合\(S\)(即训练样本集)上的损失\(f(\theta; (x, t))\)取平均得到的:
\f\^{(S)}(\\theta) = \\frac{1}{\|S\|} \\sum_{(x,t) \\in S} f(\\theta; (x, t)) \\
算法1. 前馈神经网络梯度计算算法
输入 :\(\theta_0\);\(\theta\)映射为\((W_1, \dots, W_\ell, b_1, \dots, b_\ell)\)
对于\(l\)从1到\(\ell-1\),执行:
\(x_{l+1} \leftarrow s_l(W_l y_l + b_l)\)
end for
\(dy_\ell \leftarrow \partial L(z_\ell, t)/\partial z_\ell\)(\(z_\ell\)是目标值)
对于\(l\)从\(\ell-1\)到1,执行:
\(dx_{l+1} \leftarrow dy_{l+1} \odot s'l(x{l+1})\)
\(dW_l \leftarrow dx_{l+1} y_l^T\)
\(db_l \leftarrow dx_{l+1}\)
\(dy_l \leftarrow W_l^T dx_{l+1}\)
end for
输出 :由\((dW_1, \dots, dW_\ell, db_1, \dots, db_\ell)\)映射得到的\(\nabla f(\theta)\)。
20.3 循环神经网络
循环神经网络(RNN)是前馈神经网络在时间序列上的对应物。RNN对从输入序列到输出序列的映射进行建模,其隐藏单元存在反馈连接,使其能够利用过去输入的信息来生成未来输出的预测。它们也可被视为一种特殊的前馈网络:序列的每个时间步对应一个"层",但与前馈网络中每一层拥有独立参数不同,RNN的这些"层"共享参数。
其高维隐藏状态与非线性动力学特性使RNN能够学习非常通用、灵活的表示,并表达高度复杂的序列关联。这种表示能力原则上使RNN能够为难度极高的序列建模与标注任务学习到精简的解决方案。
然而尽管RNN具备这些优势,自问世以来并未得到广泛应用,原因是学界普遍认为其难以完成有效训练。梯度消失问题4,18被视为导致该困难的主要原因之一:该问题指在随时间反向传播过程中,微分项可能呈指数级衰减至零,也可能出现梯度爆炸。
在梯度衰减的情况下,来自未来时间步输出的重要反向传播误差信号,在传播到相关输入时可能已几乎衰减至零。如果RNN需要学习利用某些数据集中的长程输入-输出依赖关系,未经修改的梯度会成为一个效果极差的更新方向。
Martens与Sutskever 23的近期研究表明,对于存在病态长程依赖、此前被认为难以甚至无法通过梯度下降学习的数据集,Hessian-Free优化(HF)是一种可用于优化RNN的有效方法。
这类问题最早由Hochreiter与Schmidhuber 19研究,他们提出的解决方案是通过特殊的记忆单元修改RNN架构。
基础RNN由三个矩阵和一个特殊的初始隐藏状态向量参数化,即\(\boldsymbol{\theta} = \left( W_{xh}, W_{hh}, W_{ho}, h_0 \right)\),其中\(W_{xh}\)是输入到隐藏单元的连接权重,\(W_{hh}\)是循环连接权重,\(W_{ho}\)是隐藏单元到输出的连接权重。
给定向量值输入序列\(x = (x_1, \ldots, x_T)\)和向量值目标输出序列\(t = (t_1, \ldots, t_T)\),RNN按照以下公式计算隐藏状态序列与预测结果:
\\\begin{aligned} h_t \&= s\\left(W_{xh} x_t + W_{hh} h_{t-1}\\right) \\\\ z_t \&= W_{ho} h_t \\end{aligned} \\
其中\(h_0\)是初始状态的特殊参数向量,\(s(\cdot)\)是非线性激活函数,通常按坐标逐元素计算。
对于单个输入-输出序列对\((x, t)\),RNN的学习目标函数为:
\f(\\theta; (x, t)) = \\sum_{\\tau=1}\^T L(z_\\tau, t_\\tau) \\
其中\(L_{\tau}\)是上一节中提到的损失函数。
与前馈神经网络(FNN)一致,目标函数通过对所有训练样本的损失取平均得到:
\f(\\theta) = \\frac{1}{\|S\|} \\sum_{(x,t) \\in S} f(\\theta; (x, t)) \\
20.4 Hessian-Free优化基础
我们考虑如下优化场景:对于二阶可微的目标函数\(f : \mathbb{R}^n \to \mathbb{R}\),在实值参数向量\(\theta \in \mathbb{R}^n\)上求解无约束最小值问题。
HF这类二阶优化器源自经典牛顿法(又称牛顿-拉夫逊法),该方法的核心思路是迭代优化目标函数的一系列局部二次模型近似,从而生成\(\theta\)的更新值。
在最简单的情况下,给定上一轮参数\(\theta_{k-1}\),第\(k\)轮迭代通过最小化目标函数\(f(\theta_{k-1} + \delta)\)的局部二次模型\(M_{k-1}(\delta)\)得到新的迭代值\(\theta_k\),该模型使用\(\theta_{k-1}\)附近的梯度与曲率信息构建。
更精确地,我们定义
\M_{k-1}(\\delta) = f(\\theta_{k-1}) + \\nabla f(\\theta_{k-1})\^\\top \\delta + \\frac{1}{2}\\delta\^\\top B_{k-1} \\delta \\tag{20.1} \\
其中\(B_{k-1}\)是"曲率矩阵",在标准牛顿法中,它被选为目标函数\(f\)在\(\theta_{k-1}\)处的Hessian矩阵\(H(\theta_{k-1})\)。
新的迭代值\(\theta_k\)计算为\(\theta_{k-1} + \alpha_k \delta_k\),其中\(\delta_k^*\)是公式(20.1)的最小值点,\(\alpha_k \in 0,1\)通常通过线搜索确定,优先选择\(\alpha_k = 1\)。这类线搜索的标准高效方法将在20.8.8节简要讨论。
将\(\delta_k\)乘以\(\alpha_k\)可被视为一种名为"更新阻尼"的通用技术的粗略应用,我们将在接下来引入该技术,并在20.8节深入讨论。
当\(B_{k-1}\)是正定矩阵(PD)时,\(M(\delta_k)\)存在下界,因此其最小值点存在,且为\(\delta_k^* = -B_{k-1}^{-1} \nabla f(\theta_{k-1})\),这就是标准牛顿步。
遗憾的是,对于\(B_{k-1}\)的许多优质选择(例如\(\theta_{k-1}\)处的Hessian矩阵),甚至仅计算完整的\(n \times n\)阶曲率矩阵\(B_{k-1}\),都几乎不可能完成,更遑论对其求逆或求解方程组\(B_{k-1}\delta_k = -\nabla f(\theta_{k-1})\)(计算复杂度为\(O(n^3)\)),除非是非常小型的神经网络,否则该方法完全不可行。
HF这类截断牛顿方法的核心思想是:通过使用线性共轭梯度算法(CG)15部分优化二次函数\(M\),避免高成本的求逆操作,再利用得到的近似最小值点\(\delta_k\)更新\(\theta\)。
CG是专为形如\(q(x) = \frac{1}{2}x^\top A x - b^\top x\)的二次目标函数设计的专用优化器,其中\(A \in \mathbb{R}^{n \times n}\)是半正定矩阵(PSD),\(b \in \mathbb{R}^n\)。
CG通过构建由一系列向量组成的更新量工作,这些向量具备"A共轭"性质,因此可以按顺序独立优化。
将CG应用于公式(20.1)时,我们令\(x = \delta\),\(A = B_{k-1}\),\(b = \nabla f(\theta_{k-1})\),需要注意的是常数项\(f(\theta_{k-1})\)可以忽略。
注: 从此时起,当上下文可以明确下标含义时,我们将\(M_{k-1}\)简写为\(M\),\(B_{k-1}\)简写为\(B\)。
CG的一个优势是仅需使用曲率矩阵\(B\)的矩阵-向量乘积(在许多场景下,其计算效率much 高于完整矩阵的计算,我们将在20.5节讨论这一点),且其存储开销固定,仅需存储少量\(n\)维向量。
此外,CG是非常高效的算法,经过\(i\)轮迭代后,它可以在Krylov子空间\(K_i(A, r_0) \equiv \operatorname{span}\{r_0, Ar_0, A^2r_0, ..., A^{i-1}r_0\}\)上找到任意凸二次函数\(q(x)\)的可证明最优解,其中\(r_0 = Ax_0 - b\),\(x_0\)是初始解32。
任何其他直接应用于\(M\)这类二次函数的梯度下降方法,即使是像Nesterov加速梯度下降29这般高效的方法,其产生的解也均落在Krylov子空间中,因此在相同迭代轮数下,性能始终严格弱于CG¹。
幸运的是,除这些强最优性外,CG的实际表现也非常出色,通常仅需\(i \ll n\)轮迭代即可收敛,具体收敛轮数取决于\(B\)的结构。即使未完全收敛,CG也能取得很好的部分优化进展。
预条件CG算法如算法20.2所示。
注意,主循环的每一轮迭代中仅需计算一次\(Ap_i\),二次目标函数\(q(x_i)\)可通过低成本的方式计算为\(q(x_i) = \frac{1}{2}(r_i - b)^T x_i\)。
另请注意,本报告中\(\alpha_i\)或\(y_i\)等符号的用法均不相同,请勿混淆。
预条件矩阵\(P\)使CG能够在变换后的坐标系中运行,优质的\(P\)选择可大幅加速算法收敛。尽管此前已提及CG的最优性,这一特性依然成立,原因是\(P\)会诱导出变换后的Krylov子空间。
预条件的实现方法、其在HF中的作用,以及与HF其他模块的细微交互,都将在20.11节讨论。
结合实际应用需求,可根据多种标准终止CG,在解的质量与获取解所需的迭代轮数(即矩阵-向量乘积次数,也是该方法的主要计算开销)之间做平衡。
Martens 22提出的终止准则是基于优化\(M\)的相对进度度量,计算方式为:
\s_j = \\frac{M(x_j) - M(x_{j-k})}{M(x_j)} \\
¹ 尽管如此,仍可构造出CG性能与加速梯度下降几乎无差异的二次优化问题;当然也可构造出CG仅需数轮迭代即可收敛,而加速梯度下降需要更长时间的问题。
alg
inputs: b, A, x_0, P
r_0 ← Ax_0 - b
y_0 ← solution of Py = r_0
p_0 ← -y_0
i ← 0
while termination conditions do not apply do
α_i ← (r_i^T y_i) / (p_i^T A p_i)
x_{i+1} ← x_i + α_i p_i
r_{i+1} ← r_i + α_i A p_i
y_{i+1} ← solution of Py = r_{i+1}
β_{i+1} ← (r_{i+1}^T y_{i+1}) / (r_i^T y_i)
p_{i+1} ← -y_{i+1} + β_{i+1} p_i
i ← i + 1
end while
output: x_i
其中\(x_j\)是CG的第\(j\)次迭代结果,\(k\)是计算均值所用窗口的大小,其值应随\(j\)增大。实践中效果不错的合理选择是\(k = \max(10, j/10)\)。CG可在迭代\(j\)时终止,条件为\(|s_j| < 0.0001\)(式20.2)或其他类似常数。根据具体情况,更合理的做法可能是提前截断,以在相对进展与计算量之间找到更经济的折中。然而,确定CG的终止时机远比上述讨论所暗示的更加复杂微妙。本文20.8.7节将讨论终止CG的其他原因,这些原因与\(M\)的值无直接关联。尤其地,提前截断有时可能产生有益的阻尼效应,其生成的更新对\(f\)的改善效果优于完全收敛解(或等价地,由曲率矩阵精确求逆得到的解)所能达到的效果。
当\(f\)是非凸函数时(神经网络的目标函数即属此类),\(B\)有时会是不定矩阵,此时\(M\)的极小值点可能不存在。尤其地,逐渐增大的\(\delta\)可能使\(M\)取值任意低,导致无意义或未定义的更新。该问题可视为一个普遍问题的极端情况:二次模型\(M\)只是对\(f\)的粗略局部近似,因此其极小值点(假设存在)可能落在\(\mathbb{R}^n\)中近似失效的区域,有时甚至会灾难性失效。尽管前述线搜索可在一定程度上缓解该问题,但这仍是二阶优化中的普遍问题,必须谨慎处理。这类处理方法有时被称为"阻尼方法",本文也将沿用这一术语,相关技术包括将\(M(\cdot)\)限制在"信赖域"内,以及通过惩罚项对\(M\)进行修正,旨在引导\(A\)的极小值点落在\(A\)仍能良好逼近\(f\)的\(\mathbb{R}^n\)区域内。这类方法必须谨慎使用,因为对\(f(\cdot)\)的优化限制或惩罚过多,会导致更新非常可靠,但因其过"小"而毫无用处。20.8节将讨论二阶优化中的各类通用阻尼方法,以及更适用于HF的特有方法。
- 上述阻尼方法虽可在\(B\)为不定矩阵时仍能优化\(A\),但还有另一种直接处理不定性问题的方法。非线性最小二乘问题的经典高斯-牛顿算法使用正半定曲率矩阵作为海森矩阵的近似,Schaul等人1成功将这一思路推广至包含大多数神经网络训练目标在内的更广泛目标函数类别。这种"广义高斯-牛顿矩阵"(GGN)也保证是正半定的,在优化非凸目标时作为曲率矩阵,实际表现远优于海森矩阵。使用GGN矩阵并不能消除对阻尼的需求。但Martens2发现,其使用难度低于海森矩阵,能生成更优的更新,且所需阻尼更少。20.6节将详细讨论GGN矩阵的计算与理论特性,以及其在HF中的应用。
\begin{equation}\label{}
\ell(\theta) = \frac{1}{|S|}\sum_{(x,t)\in S} \ell(f(\theta; (x,t)), t)
\end{equation}
- 其中\(f(\theta;(x,t))\)是目标函数,\(B\)是与训练样本对\((x,t)\)相关的曲率矩阵。为使HF适用于大规模数据集,有必要使用训练数据的子集(称为"小批量")来估计梯度和曲率矩阵-向量乘积。虽然在算法20.2的每次迭代中用新采样的小批量计算CG所需的矩阵-向量乘积看似合理,但不幸的是CG并未针对处理此类"随机性"设计,其理论高度依赖\(B\)的稳定定义或\(B\)-共轭这类概念才能成立。实践中我们发现这种方法效果并不理想,甚至会导致CG在某些情况下发散。Martens2与Byrd等人8各自独立提出的解决方案是:在整个
20.5 基于海森矩阵的精确BMA乘法
要将曲率点处\(L_\alpha^\prime (\xi)\)中\(D\)的偏置修正,需确保该点到原点的距离足够小。具体而言,我们在点\(x_\theta\in\mathbb{R}^d\)处对\(\nabla f(x)\)做投影:
\begin{equation*}
x_\theta = \lim_{\alpha\to 0} \frac{\nabla f(x)}{\alpha}
\end{equation* }
该投影的定义即为点到原点的距离很小。该方程的合理性较弱,因为很难在点\(x_\theta\in\mathbb{R}^d\)处估计\(B_\alpha\)。实践中,我们在点\(x_\theta\in\mathbb{R}^d\)处对\(\nabla f(x)\)做投影,该投影的定义即为点到原点的距离很小。
2.1 优化问题
对初始化的优化问题,优化器使用给定的函数值来构建近似模型(即"信任区域模型"),该模型在 \(x_{0}\) 附近是二次的。我们使用这个模型来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。这个模型是 \(m(x_{0})\)。我们使用这个模型来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。如果 \(m(x)\) 是一个二次函数,那么优化器可以使用 \(m(x)\) 的梯度信息来构建一个模型,该模型在 \(x_{0}\) 附近是二次的。
算法20.4 前馈神经网络中计算\(H( heta)v\)的算法
input: $v$ mapped to $(R W_1, \dots, R W_l, R b_l)$
$y_0 \leftarrow 0$ (since $y_0$ is not a function of the parameters)
for all i from 1 to $l-2$ do
$\overrightarrow{R x_{i+1}} \leftarrow R W_i y_i + W_i R y_i + R b_i$ (product rule)
$\overrightarrow{R y_{i+1}} \leftarrow s'_{i+1}(x_{i+1}) \circ \overrightarrow{R x_{i+1}}$ (chain rule)
end for
$R d y_l \leftarrow \frac{\partial L(y, t)}{\partial y_l} + \frac{\partial^2 L(y, t)}{\partial y_l^2} R y_l$
for all i from $l-1$ downto 1 do
$\overrightarrow{R d x_{i+1}} \leftarrow R d y_{i+1} + R W_{i+1}^\top \overrightarrow{R x_{i+2}}$ (product rule, chain rule)
$\overrightarrow{R y_i} \leftarrow s'_i(x_i) \circ \overrightarrow{R d x_{i+1}}$
$R d W_i \leftarrow \overrightarrow{R y_i} \overrightarrow{R x_i}^\top$ (product rule)
$R d b_i \leftarrow \overrightarrow{R d x_{i+1}}$
$\overrightarrow{R y_i} \leftarrow R y_i^\top \overrightarrow{R x_{i+1}} + W_i^\top \overrightarrow{R x_{i+2}}$ (product rule)
end for
output: $H(\theta)v$ as mapped from $(R d W_1, \dots, R d W_l, R d b_1, \dots, R d b_l)$
广义高斯-牛顿(GGN)矩阵的一种理解方式是\(H\)的近似形式,该近似会省略涉及\(F\)二阶导数的若干项。对\(f\)在\(\theta_{k-1}\)处的Hessian矩阵应用链式法则,可得:
\f = L(F(\\theta)) \\
\\\nabla f(\\theta) = J\^T \\nabla L \\
\f''(\\theta) = J\^T L'' J + \\sum_{i=1}\^{m} \[\\nabla L_i (F_i)'' \]
其中\(J\)表示\(F\)的雅可比矩阵,\(\nabla L\)是\(L(z)\)关于\(z\)的梯度,所有一阶和二阶导数均在\(\theta_{k-1}\)处取值。当\(L(z)\)在\(z\)上是凸函数时,第一项\(J^T L'' J\)是正定矩阵,该矩阵被定义为GGN矩阵。
注意,在\(L(z) = \frac{1}{2} \|z\|^2\)的特殊情况下(此时\(L'' = I\)),我们可得到非线性最小二乘优化和Levenberg-Marquardt算法中常见的标准高斯-牛顿矩阵25。Martens和Sutskever23证明,GGN矩阵也可以视为\(f\)某一特定近似的Hessian矩阵,该近似是通过将\(F\)替换为一阶近似得到的。
考虑\(f\)在\(\theta_{k-1}\)处的局部凸近似\(\hat{f}\),该近似通过一阶近似\(F(\theta) \approx F(\theta_{k-1}) + J\delta\)得到(其中\(\delta = \theta - \theta_{k-1}\)):
\\\hat{f}(\\delta) = L(F(\\theta_{k-1}) + J\\delta) \\tag{20.9} \\
该近似\(\hat{f}\)是凸函数,因为它是凸函数与仿射函数的复合。容易证明,当\(\delta = 0\)时,\(\hat{f}\)和\(f\)具有相同的导数,因为
\\\nabla \\hat{f} = J\^T \\nabla L = J\^T \\nabla L \\
这正是\(f\)在\(\theta_{k-1}\)处的导数。且\(\hat{f}\)在\(\delta = 0\)处的Hessian矩阵恰好就是GGN矩阵:
\\\hat{f}'' = J\^T L'' J = G \\
注意,形如\(L(F(\theta))\)的复合形式可能有多种,它们各自对应略有差异的GGN矩阵。
对于神经网络,输出向量\(z\)的常见自然选择是将其等同于最终层的输出(即\(y_\ell\)),但这并不总能保证\(L\)是凸的。经验而言,最好将\(L\)和\(F\)定义为:\(L\)尽可能多地承担\(f\)的计算任务(但由于计算\(f\)存在多种不同的运算序列,这一概念存在一定问题)。对于带有softmax输出层和交叉熵误差的神经网络,最佳做法是将\(L\)定义为同时执行softmax和交叉熵运算,而\(F\)仅计算softmax函数的输入。这也是Schraudolph11提出的建议。这一选择效果最佳的可能原因是,\(F\)关于\(\theta\)不是凸函数。
1 动机:N-NAIVE
在已知目标的场景中,朴素机器人会向目标移动,随后能够观测到目标并继续向其靠近,也可以选择远离目标,以此探索空间。我们提出一种模型:机器人会向目标移动,若无法观测到目标,则向随机方向移动。该模型基于机器人处于不同环境中的图像数据集进行训练。
算法10.1 简单且高效的机器人控制器
1 for t in T do
2 x[t] <- RND(0, 1)
3 end
4 for t in T do
5 if x[t] > 0 then
6 if t != 0 then
7 x[t] <- x[t] - 1
8 else
9 x[t] <- RND(0, 1)
10 end
11 end
12 if x[t] < 1 then
13 if t != 0 then
14 x[t] <- x[t] + 1
15 else
16 x[t] <- RND(0, 1)
17 end
18 end
19 x[t] <- x[t] - 1
20 end
21 for t in T do
22 if x[t] > 1 then
23 if t != 0 then
24 x[t] <- x[t] - 1
25 else
26 x[t] <- RND(0, 1)
27 end
28 end
29 if x[t] < 0 then
30 if t != 0 then
31 x[t] <- x[t] + 1
32 else
33 x[t] <- RND(0, 1)
34 end
35 end
36 x[t] <- x[t] + 1
37 end
一种使用简单高效算法控制机器人的控制器,可用于计算\(Gv\)乘积。具体而言,给定\(\nabla f\)的计算图,我们可以使用20.5节的\(R\)方法高效计算与\(f\)的Hessian矩阵的乘积。这样做需要将前向传播中对应\(F\)的部分替换为与在\(\theta_{k-1}\)处计算的对应雅可比矩阵的乘积(可通过将\(R\)算子方法应用于\(f\)实现),而更简单的做法是修改计算\(\nabla f\)的算法,将反向传播经过\(F\)时涉及中间变量的所有导数项视为"常数"------尽管这些项由\(\theta_{k-1}\)计算得到,但从形式上看与\(\theta\)无关。该版本仅能在\(\theta = \theta_{k-1}\)时正确计算\(f\),但这对我们的目的没有影响,因为正是在该点我们需要计算GGN矩阵。
算法20.5 前馈神经网络的特殊情况下的GGN矩阵乘法算法,通过上述第二种方法推导得到。
20.6.2 典型损失函数
本节将介绍若干典型损失函数及其Hessian矩阵(见表20.2)。函数\(p(z)\)用于根据网络输出\(z\)计算预测值\(p\)。这些损失函数均为凸函数,无需显式构造矩阵即可轻松实现与它们的Hessian矩阵的乘积,因为每个Hessian矩阵要么是对角矩阵,要么是对角矩阵与秩1矩阵的和。
将该形式应用于前馈神经网络时需注意:由于它正式将根据网络输出\(z\)(假设\(z\)可取\(\mathbb{R}^m\)中的任意值)计算预测值\(p\)的过程纳入损失函数本身(而非输出层的激活函数\(s_\ell\)中),因此\(s_\ell\)应设置为恒等函数。
表20.2 典型损失函数及其导数与Hessian矩阵。损失函数\(L\)和非线性函数\(p(z)\)是"匹配"的,这意味着对应的Hessian矩阵与目标\(t\)无关,且为半正定矩阵。
| 名称 | \(L(z; t)\) | \(\nabla L(z; t)\) | \(L''(z; t)\) | \(p\) |
|---|---|---|---|---|
| 平方误差 | \(\frac{1}{2}|p - t|^2\) | \(-(p - t)\) | \(I\) | \(p = z\) |
| 交叉熵误差 | \(-t \log p - (1-t)\log(1-p)\) | \(-(p - t)\) | \(\text{diag}(p(1-p))\) | \(p = \text{Sigmoid}(z)\) |
| 多维度交叉熵误差 | \(-\sum_i t_i \log p_i\) | \(-(p - t)\) | \(\text{diag}(p) - p p^T\) | \(p = \text{Softmax}(z)\) |
20.6.3 处理非凸损失函数
有时我们需要使用非凸损失函数。这种情况下广义高斯-牛顿矩阵的构造方式无法得到正定矩阵,因为仅当\(L''\)是半正定矩阵时,GGN矩阵\(J^T L'' J\)通常才是半正定的,该问题可通过以下几种方式解决。
例如,若我们的损失函数为\(L(y; t) = |\tanh(y) - t|/2\)(非凸函数),我们可以形式上将tanh非线性函数视为\(F\)的一部分(将\(F\)替换为\(\tanh \circ F\)),并将损失函数\(L\)重新定义为\(\|y - t\|^2/2\)。另一种可能可行的技巧是进行近似
可通过如下方式将损失Hessian矩阵L''转为正定矩阵:例如,向L''添加缩放后的对角矩阵倍数,或对L''进行特征分解并丢弃对应负特征值的特征向量。
20.7 实现细节
20.7.1 通过并行化提升效率
HF的优质实现可通过两种方式充分利用并行化:第一是模型并行,即并行执行某一给定层中每个神经元对应的输入与输出计算的能力。尽管模型并行能加速所有应用于神经网络的优化算法,但当前硬件无法完全发挥其优势,主要原因是权重存储在带宽非常有限的集中式内存中。
第二是数据并行,即当前小批量中的所有训练样本的梯度或曲率矩阵向量乘积计算可独立并行完成。数据并行在当前硬件上更易利用,因其仅需极少的通信开销,与需要频繁快速传输神经元激活值的模型并行形成鲜明对比。数据并行带来的潜在加速收益受两方面限制:一是使用更大批量计算HF更新所能获得的收益,二是可用的并行算力总量。
HF通常更适合使用相对较大的小批量,尤其是与随机梯度下降等一阶方法相比,因此利用数据并行可大幅缩短计算时间。但收益存在边际递减点,超过该点后再增大小批量,对更新提案的质量(以更新对f的降低程度衡量)的提升有限甚至没有。
数据并行通常通过向量化实现,即指定单一计算流程,使其独立作用于向量的每个元素。由于大多数使用向量化的实现(如GPU代码)会随小批量增大而提升单样本计算效率,因此使用更大的小批量有明显收益(上限为上述边际递减点,或实现的并行计算资源被完全占用的点)。
HF的大部分计算是计算GGN向量乘积,幸运的是,通过激活缓存,GGN向量乘积的实现速度可比朴素实现提升50%。回顾可知,GGN矩阵的乘法由J的乘法 followed by J^T的乘法组成,两者都需要神经网络的神经元激活值(前馈神经网络中的y,或循环神经网络中的y_T)。由于网络激活值仅是θ的函数,且CG会用同一GGN矩阵乘不同的向量(因此其θ的设置是固定的),因此可将网络激活值y_i缓存起来,在CG的整轮运行中复用于所有GGN向量乘积的计算。
当模型非常大时(例如包含大量时间步T的大型循环神经网络),即使小批量规模适中,其产生的神经元激活值也可能多到无法存入内存。这对GPU实现而言尤其棘手,因为GPU的可用内存通常远少于CPU。这会带来两个不良后果:第一,激活缓存无法使用;第二,必须将大批量拆分为多个更小的"计算小批量"(每个处理完成后将结果求和),这会大幅降低向量化的成本效益。
该问题至少可通过两种方式解决:一是将激活值存入容量更大但速度更慢的存储(如CPU内存),按需读取即可。这种方式通常比使用多个更小批量更快。另一种方式是通过重算部分状态来降低存储需求:具体而言,我们每隔√T个时间步存储一次隐藏状态(这样可将存储需求降低为原来的1/√T),在需要时重算这些"检查点"之间的√T个时间步的序列,用完即丢弃。
由于计算梯度和矩阵向量乘积的前向与反向传播按时间步线性顺序执行,每个时间步的状态在计算梯度时最多只需重算一次,在计算矩阵向量乘积时最多只需重算两次。
图20.2 循环神经网络内存节省方法的示意图。每一列代表循环神经网络的一个隐藏状态,任意时刻只有高亮列驻留在内存中。
20.7.2 验证G乘积的正确性
神经网络从业者常遇到的一个典型陷阱是梯度实现的错误,若没有正确的实现作为对照,该错误很难诊断。通常的处理流程是
20.8 阻尼
阻尼与以下事实相关:二次近似模型M的最优解δ在优化早期和中期可能非常大且"激进",具体表现为其位置往往远超出二次近似可信的区域。
非凸平滑优化问题(包含神经网络训练目标)的收敛理论仅在优化过程足够接近局部最小值、所采取的步长相较于曲率变化(例如以Hessian矩阵的利普希茨常数衡量)足够小时,描述相关过程。在这种情况下,二次模型在δ 处的精度总是很高,因此可以完全优化M,生成一系列"二次收敛"到f的局部最小值的更新。对于实际中出现的某些非常简单优化问题,甚至可以直接使用无修改的牛顿法,无需考虑临近局部最小值的理论要求。
然而,对于神经网络训练目标,尤其是深度前馈网络和循环神经网络,这些邻近性假设的必要性在基础实验后很快便显现出来:这类朴素的二阶优化往往从大多数合理的θ随机初始化点快速发散。
针对该问题,有时建议的解决方案是在优化初期使用更稳定可靠的方法,如梯度下降,之后再切换到二阶方法实现"精细收敛"。优化理论保证,只要学习率常数足够小,梯度下降可以从任意起点收敛。但精确收敛往往并非必要,甚至不可取(因过拟合问题)。
相反,如果我们认为在局部收敛理论所描述的"精细收敛"阶段到来之前,利用曲率信息来构造更新就有所裨益,那么值得考虑如何更谨慎、保守地使用曲率信息,以构造幅度大但依然合理的更新提案,而非不得已默认使用一阶方法。
"阻尼"是工程文献中常用的术语,本文也采用该定义,指代那些修改M或对M上的优化过程施加约束的方法,目的是让最终得到的更新δ更可能落在M仍能合理近似f的区域内,从而实现可观的下降效果。
阻尼方法的核心难点在于,若过度使用或参数校准不当,得到的更新会"可靠"但幅度过小、意义不大(以对f的降低程度衡量)。
有效的阻尼方法对二阶方法的性能至关重要,要获得最佳效果很可能需要使用多种不同技术,这些技术的有效性同时取决于具体应用场景和底层二阶方法。
本节将讨论一些可用于二阶优化器的通用阻尼方法,以及如何在HF中应用这些方法(可单独使用或组合使用),同时还会介绍针对神经网络和HF的专属方法。
20.1.1 跳变阻尼
跳变阻尼理论在结构地震分析中至关重要。跳变阻尼理论基于一个假设,即跳变阻尼与跳跃过程的阻尼相同。
我们可以通过以下公式看出它对\(\hat{M}\)的极小值点\(\delta^*\)的影响:
\\\delta\^\* = -\\sum_j \\frac{v_j\^T \\nabla f(\\theta_{k-1})}{\\lambda_j + \\lambda} v_j \\
因此,\(\delta^*\)在\(v_j\)方向上移动\(\theta\)的距离\(v_j^T \delta^*\)会被有效乘以\(\frac{\lambda_j}{\lambda_j + \lambda}\)。因此,当二次模型在极低曲率方向上最不可信时(这类方向上若无阻尼,\(\delta^*\)往往会移动很远),Tikhonov阻尼是合适的选择。
为\(\lambda\)选取合适的值对Tikhonov阻尼方法的效果至关重要。若\(\lambda\)取值过高,更新步长会类似于使用极小学习率的梯度下降,二阶优化的绝大部分优势都会丧失,低曲率方向受到的影响尤为明显。反之,若\(\lambda\)取值过低,共轭梯度法(CG)会对二次模型\(\hat{M}\)进行过于激进的优化,导致参数更新步长过大(在低曲率方向上尤其明显),这可能使目标函数值\(f\)不降反升。
遗憾的是,为\(\lambda\)选取合适的值是一个非平凡问题,该问题对目标函数的整体尺度很敏感(例如,对\(f\)使用\(\lambda=1\)得到的更新,与对\(2f\)使用\(\lambda=2\)得到的更新完全相同),同时也会受到\(f\)其他更微妙属性的影响,而这些属性大多会在参数空间中变化。事实上,几乎不存在某个固定的\(\lambda\)值适用于所有\(\theta\)的情况。我们开发的一种可在优化过程中动态调整\(\lambda\)的、实际效果良好的方法,将在20.8.5节讨论。
需要注意的是,Tikhonov阻尼是LeCun等人21采用的方法,其中不 适配的常数"μ"起到\(\lambda\)的作用。值得关注的是,Vinyals和Povey33近期提出了一种替代Tikhonov阻尼的方法,其核心思想是在CG生成的K维Krylov基(等同于Lanczos迭代)上直接优化\(f\)。由于使用\(\tilde{B} = B + \lambda I\)生成的Krylov子空间不依赖于\(\lambda\)(假设CG的初始值为\(x_0=0\)),因此该方法搜索的解空间包含了所有对任意\(\lambda\)值下Tikhonov阻尼\(\hat{M}\)进行优化时能得到的解。因此,该方法能找到使\(f\)下降幅度超过CG在任意 \(\lambda\)值下所能实现的解。
该方法的缺点包括:搜索过程需使用BFGS这类通用二阶优化器,这会额外增加梯度与函数值的计算量;需要将整个Krylov子空间的基存储在内存中(当\(n\)较大时这往往不现实);此外,CG的初始化无法影响Krylov子空间的构建。
20.8.2 Tikhonov阻尼存在的问题
对于神经网络的标准参数化形式(即权重矩阵、偏置向量的元素恰好对应\(\theta\)的元素,且正则项为标准球形L2惩罚\(\beta\|\theta\|^2\)的情况),Tikhonov阻尼似乎是自然的选择,且实际效果良好。这是因为在参数空间中某些表现良好且实用的区域内,每个参数的有效作用尺度大致相等。
但假设我们对全连接神经网络(FNN)做简单的重参数化:在某个特定层\(j\)中,\(\theta\)不再直接对应\(W_j\),而是对应\(10^4 W_j\)。此时,目标函数仅对第\(j\)层相关参数变化的敏感度变为原来的\(10^4\)倍;若此时仍施加由所有\(\theta\)元素平方变化的等权加和构成的Tikhonov阻尼惩罚(即\(\lambda/2\|\delta\|^2 = \lambda/2 \sum_{i=1}^n \delta_i^2\)),就不再是合理的选择了。
举个更极端的例子:假设我们希望限制网络的部分权重为正值,通过指数函数exp进行简单重参数化实现:对于对应这些权重\(w\)的\(\theta\)的每个分量\(\\theta_i\),有\(w = \exp(\\theta_i)\),而非原来的\(w = \\theta_i\)。通过链式法则可知,在新参数化下,梯度的第\(i\)个分量、广义高斯牛顿(GGN)矩阵的第\(i\)行和第\(i\)列都相当于被乘以了\(\exp(\\theta_i)\),这导致更新量\(\delta^*\)的第\(i\)个元素会乘以\(\exp(\\theta_i)^{-1}\)的系数。
更形式化地说,若定义\(C \in \mathbb{R}^{n \times n}\)为将新参数映射回默认参数的函数\(\varphi\)的雅可比矩阵,则新参数化下的梯度和GGN矩阵可分别用原参数化下的对应量表示为\(C^\top \nabla f\)和\(C^\top G C\)⁴。因此最优更新量变为:
在我们这个具体例子中,\(C\)是对角矩阵:对于\(\theta\)中被重参数化的元素,有\(C_{:,i} = \exp(\\thetai)\),其余元素满足\(C{i,i} = 1\)。如果原二阶更新在原参数化下是合理的,那么在新参数化下计算出的二阶更新也应是合理的(在新参数化的语境下)。
具体来说,重参数化的权重\(w\)(以及目标函数\(f\))对\(\\theta_i\)变化的敏感度会随\(\\theta_i\)的增大呈指数上升,随其减小呈指数下降,因此额外的\(\exp(\\theta_i)^{-1}\)乘性因子可以很好地补偿这一特性。这与梯度下降形成鲜明对比:梯度下降的更新量变化方向完全相反(会被乘以\(\exp(\\theta_i)\)),从而进一步加剧敏感度问题。
遗憾的是,若直接在重参数化空间中使用标准Tikhonov阻尼,"所有参数处于相近尺度"的假设将被严重违反,我们也会损失更新量的良好自适应重标定特性。例如,与\(\\theta_i\)相关的曲率等于权重\(w\)的曲率乘以\(\exp(\\theta_i)^2\),当\(\\theta_i\)小于0时,这一曲率可能完全被加到\(G\)矩阵对角线上的\(\lambda\)掩盖,导致更新量无法对\(\\theta_i\)产生显著改动。反之,若\(\\theta_i\)较大,Tikhonov阻尼项将无法对\(\\theta_i\)的大幅变化施加合理惩罚,这可能导致更新量过大且不可靠。
我们或许希望自适应的\(\lambda\)调整方案能通过按\(\exp(\\theta_i)\)的比例调整\(\lambda\)来补偿这一问题,但问题是\(\theta\)还有许多其他分量,比如其他经过exp重参数化的权重,这些分量可能远小于或大于\(\\theta_i\),因此处于完全不同的尺度。实际上,最可能出现的情况是:任何合理的\(\lambda\)动态调整方案都会让\(\lambda\)不断增大,直到匹配这些重参数化权重中的最大尺度,最终导致更新量几乎不会对网络的其他权重产生改动。
总体而言,Tikhonov阻尼以及后续章节将讨论的其他基于二次惩罚的阻尼方法,都可以通过调整\(\lambda\)被设为任意强度,从而充分约束\(\hat{M}\)的优化,确保更新量不会脱离\(M\)是合理近似的区域。优质方法与劣质方法的核心区别在于,它们如何对不同的方向分配相对权重。那些倾向于给\(M\)近似质量违反更严重的方向分配更高权重的方案,可以使用更小的\(\lambda\)值,从而使\(\hat{M}\)的子优化所受约束更少,进而生成对\(\theta\)更大、更有用的更新量。
20.8.3 尺度敏感型阻尼
Tikhonov阻尼的尺度敏感性问题与困扰一阶方法的尺度敏感性问题类似,这正是我们转向二阶方法希望避免的一类问题。Tikhonov阻尼对尺度做出的隐含假设与一阶方法一致:即\(\mathbb{R}^n\)上的默认范数\(|\cdot|\)是衡量\(\theta\)变化的合理方式,也是搜索合适的\(\theta\)更新量时合理的惩罚对象。一阶方法甚至可以被视为二阶方法的特例:此时曲率项完全由Tikhonov型阻尼惩罚构成,即\(\mathbf{\hat{B}} = \lambda I\),\(\delta^* = -\frac{1}{\lambda}\nabla f(\theta)\)。
该问题的一个解决方案是仅使用具有近似均匀敏感度特性的参数化形式,但这种方法存在局限性,且很难一眼判断特定网络及其对应参数化是否满足该特性。解决该问题的一个潜在方案是使用依赖参数空间当前位置(\(\theta_{k-1}\))的二次惩罚函数,该函数旨在更好地适配\(f\)在\(\theta_{k-1}\)处的局部尺度特性。具体而言,我们可以将添加到\(M\)中的惩罚项从\(\lambda/2 \| \delta \|^2\)换为\(\lambda/2 \| \delta \|{D{k-1}}^2 = \lambda/2 \delta^\top D_{k-1}\delta\),其中\(D_{k-1}\)是某个依赖于\(\theta_{k-1}\)的对称正定(PD)矩阵。这类项通过对\(f\)的敏感度特性进行更精确的考量,可以提供更有意义的\(\theta\)变化度量。
我们将矩阵\(D_{k-1}\)称为阻尼矩阵,为简洁起见,后续会省略其下标\(k-1\)。尺度敏感型阻尼通过使用如下"带阻尼"曲率矩阵实现:\(\mathbf{\hat{B}} = \mathbf{B} + \lambda \mathbf{D}\),其中所需的矩阵-向量乘积
61-11.21. 单对称群是带有非阿贝尔单正规子群的群的示例
设\(G\)为非阿贝尔单群,则存在唯一的非阿贝尔单群\(H\),使得\(G\)与\(H\)同构。
20. 用Hessian-Free优化方法训练深度网络与循环网络
可以说Tikhonov方法对函数\(f\)的局部特性所做的假设过少,而基于\(D=B\)或其对角矩阵的阻尼方法则可能假设过多。尤其是,这类阻尼方法做出的建模假设,和原始无阻尼二次近似\(M\)本身的假设完全一致。例如,\(B\)甚至可能不是满秩矩阵,在这种情况下,\(M\)可能会预测在\(B\)的零空间某方向上能获得无界收益。无论\(\lambda\)取何值、大到什么程度,基于\(D=B\)的阻尼方法都无法解决这个问题。即便\(B\)是满秩的,也可能存在曲率接近零的方向,这类方向会引发程度稍轻的同类问题。由于即便\(B\)不是满秩矩阵,其对角矩阵\(\text{diag}(B)\)通常也是满秩的,或者整体条件数更优,因此改用对角矩阵能在一定程度上规避这类问题,但如图20.3所示,这远非理想解决方案。
图20.3 使用\(D=\text{diag}(B)\)导致更新过度受限的二维示意示例。
设\(u = -1, 1^T\),\(v = 1, 1^T\),且\(B = uu^T + avv^T\),其中\(a\)取较大值(例如\(10^4\),为方便展示我们这里取\(a=15\))。该矩阵是满秩的,其对角元为\(a+1, a+1\),这说明二次近似对两个参数的独立变化高度敏感。当\(\lambda\)取值足够大时,更新步长将被有效限制在图中所示的小圆形区域内。
要解释这类退化现象、理解为何\(D=B\)这类选择并不合适,有必要进一步审视和批判我们最初构造\(D\)时的选择。二次近似会因高阶效应(以及GGN矩阵情况下甚至存在某些未被建模的二阶效应)失效,而阻尼的设计目标正是帮助补偿这类问题。通过设置\(D=B\),我们实际上是按照各方向的曲率对其进行惩罚,这相当于在某种程度上假设:高阶项对\(f\)的贡献的相对强度(因此也就是沿两个不同方向更新的不可信程度),可以通过比较这两个方向的曲率比值来合理预测。虽然对于某些目标函数而言,这一假设确实有一定合理性,但过度依赖该假设可能会带来风险。遗憾的是,若没有关于函数\(f\)半局部行为的其他信息,我们往往并不清楚应该退而采用何种假设。
若要向Tikhonov方法所隐含的均匀尺度假设靠拢,选择\(D\)为\(B\)的对角矩阵与单位矩阵的某倍数之间的插值(例如采用20.11.2节讨论的方法),这一做法看起来是任意的:因为一般而言,我们手头的\(f\)的默认参数化形式未必有任何特殊或自然之处。尽管如此,该策略在某些场景下仍有不错的效果,可视为Tikhonov阻尼与\(D=B\)阻尼之间的一种合理折中。一个可能更优的思路是收集高阶导数信息,或利用优化过程前序迭代中收集汇总的信息,构建\(f\)的粗略几何结构的简单模型。或者,我们也可以尝试从\(f\)的计算图结构中提取一些有用信息。遗憾的是,我们尚未发现基于上述思路构造\(D\)的通用方法,因此这仍是未来研究的一个方向。
20.8.4 结构阻尼
循环神经网络难以用梯度下降法训练人尽皆知,因此尺度与曲率的异常变化很可能是罪魁祸首。事实上,直接将Martens 22提出的HF实现应用到循环神经网络上也能取得不错的效果,在一系列被设计为具有最长100个时间步长的时间依赖性的合成病态问题19, 23上表现良好。不过Martens和Sutskever 23发现,通过一种名为"结构阻尼"的思路,可以大幅提升性能并增强稳健性。Martens和Sutskever 23还发现,基础的Tikhonov阻尼方法在应用到循环神经网络训练时表现很差。尤其是,为避免提出过大且不可信的更新步长,他们发现需要将\(\lambda\)设得非常大,而这反过来会导致优化速度大幅下降。之所以需要如此大的\(\lambda\),是因为循环神经网络的长时间隐状态序列对参数变化极为敏感,尤其是对隐状态动力学矩阵\(W_{hh}\)的变化。虽然这类问题在Hinton和Salakhutdinov 17以及Martens 22研究过的深度前馈神经网络(如自编码器)中也存在,但循环神经网络的情况要极端得多:循环神经网络的有效"层数"更多,其参数会在每个时间步重复作用,因此会对整个隐状态序列产生剧烈影响4, 18。由于这种极端且高度非线性的敏感性,即便在参数空间中很小的范围内,局部二次近似在某些方向上也可能极不准确。
20.8.5 洛莫夫-马加林特启发式方法
对于前文描述的适用于所有距离的两点相关函数,为了使我们的启发式方法更稳健,我们不会对其进行定义。为此,我们需要在原点处对其定义。对于一般高斯模型,我们可以得到对应的两点相关函数如下(见前一节)。因此,我们需要将高斯模型的相关长度定义为\(\rho\)。令\(\tau\)为尺度参数。如果\(\rho\)很小,我们可以得到高斯模型的相关长度为\(\tau\)。
高斯模型可表示为\(\rho = \int_{\Omega} \rho \cdot dV\)。虽然LM上述描述中的常数略显随意,但实验表明它们的效果很好。
注意,上述启发式方法在\(\rho < 0\)的情况下有效,这种情况可能通过两种方式出现。第一种情况是\(M_{k-1} < 0\)且\(f(\theta_{k-1} + \delta_k) - f(\theta_{k-1}) > 0\),这意味着在\(\delta^*\)附近二次近似非常不准确,甚至无法得到变化的正负号。另一种可能是\(M_{k-1} > 0\)且\(f(\theta_{k-1} + \delta_k) - f(\theta_{k-1}) < 0\),这种情况只有在CG从非零的先前解初始化,且未从该点取得足够进展、在终止截断前未能得到负值的\(M_{k-1}\)时才会出现。遇到这种情况时,应允许CG使用更多迭代,或者将下一次CG运行的初始值设为0(因为这会保证\(M_{k-1} < 0\),由于\(M_{k-1}(0) = 0\)且CG会单调递减\(M_{k-1}\))。
虽然公式20.10中\(\rho\)的定义在分母中使用了无阻尼二次项,但也可以使用阻尼二次近似\(M_{k-1}\),根据我们的经验,这会得到相似的结果,仅会使\(\lambda\)的值略低一些。由于M在CG迭代过程中精度会下降的趋势(见20.8.7小节),\(\rho\)的值也往往会降低(有时在使用非零初始化导致的初始上升之后,如20.10节所述)。如果CG运行到收敛,列文伯格-马夸尔特 启发式方法会像经典列文伯格-马夸尔特 算法中一样有效,也就是说,非常高效,且可证明具有强局部收敛保证。但当该启发式方法与CG未收敛运行产生的更新结合使用时,情况会变得更加复杂,因为LM启发式方法试图寻找的"最优"\(\lambda\)值,将是CG在优化M时倾向于取得的进展量的函数。幸运的是,只要f的局部特性变化足够缓慢,按照固定的最大步数终止CG,应该会得到相对稳定、合理选择的\(\lambda\)值。但不幸的是,那些试图更"智能"、基于f的值终止CG的初衷良好的方法,可能会遇到由最优\(\lambda\)对CG性能的依赖性引发的问题。特别是,这种关于何时停止CG的"智能"决策会影响\(\rho\),而\(\rho\)会通过LM启发式方法影响\(\lambda\)的选择,进而影响阻尼,从而影响CG迭代时f的值的演化(在下一轮HF迭代中),最终又会影响何时停止CG的决策,形成闭环。正是这种反馈可能导致使用LM启发式方法时出现意外且不理想的行为,例如\(\lambda\)和CG运行的长度随HF迭代都趋近于0,或者两个量都逐渐上升到过大的不适当值。
20.8.6 信赖域方法
与基于惩罚项、旨在根据某种度量鼓励更新"更小"的阻尼方法不同,信赖域方法对二次模型M的优化施加了显式约束。不同于对(可能带阻尼的)二次项\(\hat{M}\)进行无约束优化,而是对M执行约束优化。这被称为信赖域子问题,定义如下:
\\\delta_{R}\^{\*} = \\operatorname\*{argmin}_{\\delta \\in R} M(\\delta) \\
其中\(R \subset \mathbb{R}^{n}\)是围绕\(\delta=0\)局部化的某个区域,称为"信赖域"。理想情况下,R应满足这样的性质:对于任意\(\delta \in R\),M都是f的合理近似,同时不会过于受限。或更弱(也更实际)的说法是,求解信赖域子问题得到的任意更新\(\delta_{R}^{*}\)都能使f显著降低。
通常,R被选为以0为中心、半径为r的球体,当然它也可以是椭球体或其他更特殊的形状,只要所需的约束优化能够被足够高效地执行即可。信赖域方法与基于惩罚的阻尼方法(如吉洪诺夫阻尼)存在形式上的关联:当R是以0为中心、半径为r的椭球体,给定\(R=\{x:\|x\|_{Q} \leq r\}\)(其中Q为某正定矩阵)时,存在某个\(\lambda\)使得该结果对所有二次函数M都成立,即使B是不定的,该结论可通过拉格朗日乘子法证明\^6。
与之前讨论的基于惩罚的阻尼方法相比,信赖域方法有一定优势,因为关于显式信赖域(具有特定半径r)对更新的影响,无论是直觉上还是可能从数学上,都证明比二次惩罚更容易推理。事实上,信赖域R不受目标函数尺度变化的影响\^7,这可能使其更容易调整,无论是手动还是通过某些自动方法。然而,信赖域优化问题比\(\hat{M}\)的无约束二次优化难得多。它无法通过CG或矩阵求逆直接求解。即使使用的是半径为r的球形信赖域,之前讨论的结果也是非构造性的,仅保证存在某个合适的\(\lambda\),使得吉洪诺夫阻尼\(\hat{M}\)的精确最小化子等于信赖域子问题的解。寻找这样的\(\lambda\)是一个难题,虽然存在能完成此任务的算法26,但它们涉及诸如完全分解> > + - 等昂贵操作。如果目标函数乘以2,那么使用惩罚方法时,要达到相同效果,\(\lambda\)也需要乘以2。相比之下,信赖域R不受这种尺度变化的影响。
自然选择进化论(达尔文,1859)。正如一篇著名论文(鲍德温,1907)中所说:"自然选择进化论是一种理论,它指出物种不是固定不变的,而是渐进修改过程的结果。" 这一理论由查尔斯·达尔文在19世纪初提出,他于1859年发表了相关著作。达尔文的自然选择进化论指出,物种并非固定不变,而是渐进修改过程的结果。这一理论由查尔斯·达尔文在19世纪初提出,他于1859年发表了相关著作。
20.8.7 将共轭梯度法(CG)截断作为阻尼
在无海森框架(HF)下,在共轭梯度法(CG)收敛前提前终止它,主要出于实际考量:矩阵-向量乘法运算成本高昂,且就优化二次模型\(M\)而言,额外迭代最终会带来递减的收益。但还有一个更微妙的原因促使我们想要提前截断:CG截断可被视为一种特殊类型的阻尼,它可与本节讨论的其他各类阻尼方法配合使用,也可作为它们的替代方案。
随着CG迭代推进,\(M(\delta)\)的精度趋于下降,即便\(f ( \theta _ { k - 1 } + \delta )\)可能仍在改善。在假设初始值为零的前提下,对此的一种解释是:\(\delta\)的范数会随每一步单调递增,因此更有可能脱离原点附近的隐式区域------在该区域内\(M\)是\(f\)的合理近似。另有理论表明,CG会先沿曲率较高的方向收敛到\(\delta^*\),之后再沿曲率较低的方向收敛(见20.9节)。尽管沿低曲率方向推进对深度网络和循环神经网络(RNN)的优化似乎很重要,但这往往伴随着\(\theta\)的大幅变化,可能导致局部二次模型的精度出现更严重的崩溃。20.8.6节描述的Steihaug-Toint方法已经利用了该现象,完全依赖提前截断解来满足信赖域约束。众所周知,截断CG(其本质是限制了Krylov子空间的大小)在解决噪声大、不适定的线性方程组时具有一定的正则化特性14。尽管论文中未对此进行强调,Martens 22仍为基于进度的CG终止准则补充了最多250步的上限限制。在实际应用中我们发现,当该方法应用于Hinton和Salakhutdinov 17提出的"CURVES"自编码器这类问题时,这一上限通常会在HF的前100次(左右)迭代后达到,且其作用不仅限于节省计算时间。相反,我们可以观察到,目标函数\(f\)的数值提升随CG步数的变化是非单调的,且可能在条件20.2满足前很久就达到峰值(见图20.4)。Martens 22提出了"CG回溯法",该方法利用早期迭代更适合作更新的这一特性:通过选取可控子集中、以\(f\)的对应下降幅度衡量出的"最优"迭代,来达到这一目的。一种合理高效的可能方案是:仅在当前小批量或训练集的子集上计算目标函数\(f\),且仅在每\(c\)步的倍数(\(c\)为固定值)、或每\(v\)的幂次步数(\(v\)为固定值,四舍五入为最接近的整数)时计算,一旦发现目标函数已无进一步提升的可能,就终止迭代。该方案的理论仍然成立,且在不同场景下,这类椭圆信赖域实际上可能是非常自然的选择。
图23.4 循环数据结构任务中,物体相对大小与E2中OS指针大小的关系图。这两个变量的相关性不如图23.3中的高。
10.2.8.8 线性搜索
我们在所有第\(i^{\text{th}}\)维度上进行线性搜索。这是对这类方法进行线性搜索的良好方式。如果线性搜索非常活跃(即频繁选择严格小于1的\(\alpha\)),存在两个可能的原因,应当直接解决这些问题,而非依赖线性搜索来处理。第一个原因是阻尼方法设计不佳/不适用,且/或用于调整其非静态元参数的启发式规则质量较差。第二个可能的原因是,用于估计曲率和/或梯度的数据不足,导致更新实际上对当前小批量数据出现了"过拟合"。不依赖线性搜索来修复优化\(M\)生成的更新可能存在的各类问题,其核心理由是:线性搜索通过对更新的每个特征分量(或共轭方向)等同地乘以缩放因子\(\alpha\)来实现调整,这是一种非常受限且不灵活的处理方式。事实证明,在许多实际场景中,像Tikhonov阻尼这类惩罚方法所执行的缩放调整更受青睐,例如在\(B\)条件数极差的情况下。在这种情况下,最小化\(M\)会生成更新提议\(\delta_k\),该提议在某些可能是虚假的低曲率特征方向上被过度缩放,缩放系数可能高达\(10^3\)甚至更高,而线性搜索必须将所有分量除以该系数才能使更新可行,最终导致更新幅度极小。而Tikhonov方法由于会通过加上常数\(\lambda\)来有效调整曲率(如20.8.1节所述),可以轻松抑制这些极低曲率方向,同时对较高曲率方向的影响相对较小,最终使更新幅度大得多,也更具实用价值。
20.9 CG的收敛性
本节将分析共轭梯度法(CG)的理论收敛特性,并为本报告中各处关于CG收敛的诸多论述提供依据,例如\(\delta\)如何沿参数空间中的不同"方向"收敛,以及CG如何依据各方向的"对应曲率"对其进行优先级排序。该分析对预处理(见20.11节)和CG截断阻尼(见20.8.7节)具有尤为重要的指导意义。在开始分析前需要指出,由于计算机算术运算的不精确性,本分析的结论(隐式假设了算术运算的精确性)在实践中仅能近似成立。事实上,CG与其他多数数值算法不同,对数值问题高度敏感,在高精度机器上仅迭代5-10次后,生成的迭代结果就会与假设的精确实现生成的结果出现显著差异。我们将分析应用于如下一般二次目标函数的CG:\(q(x) = \frac{1}{2}x^\top Ax - b^\top x\),其中\(A\)为对称正定矩阵\(A \in \mathbb{R}^{n\times n}\),\(b \in \mathbb{R}^n\)。可通过令\(A = B\)(若为阻尼二次近似,则\(A = \hat{B}\))、\(b = -\nabla f\),将其与HF关联起来。注意,此处的\(x\)是n维向量,不要与本章其他位置中作为神经元输入的\(x\)混淆。令\({\lambda_j}{j=1}^n\)为\(A\)的特征值,\({v_j}{j=1}^n\)为对应的(单位)特征向量,\(x_0\)为CG的初始值,\(x^*\)为\(q\)的最小值点。由于$
15.1 1. 斯图姆和刘维尔
设\(E\)是\(n\)维向量空间\(V\)中列向量为\(e_1, e_2, \ldots, e_m\)的\(m \times m\)矩阵。设\(x_1, x_2, \ldots, x_m\)是\(V\)中的任意向量。那么当且仅当\(x_1, \ldots, x_m\)线性相关时,格拉姆行列式\(G(x_1, \ldots, x_m)\)等于\(0\)。如果\(x_1, \ldots, x_m\)线性无关,那么格拉姆矩阵的行列式非零。如果\(x_1, \ldots, x_m\)线性相关,那么格拉姆矩阵的行列式为零。
15.2 1. 斯图姆和刘维尔
设\(E\)是\(n\)维向量空间\(V\)中列向量为\(e_1, e_2, \ldots, e_m\)的\(m \times m\)矩阵。设\(x_1, x_2, \ldots, x_m\)是\(V\)中的任意向量。那么当且仅当\(x_1, \ldots, x_m\)线性相关时,格拉姆行列式\(G(x_1, \ldots, x_m)\)等于\(0\)。如果\(x_1, \ldots, x_m\)线性无关,那么格拉姆矩阵的行列式非零。如果\(x_1, \ldots, x_m\)线性相关,那么格拉姆矩阵的行列式为零。
12 广义曲线的极限分析
为简化广义曲线极限的分析,我们首先需要引入一些符号规定。我们定义以下量(见图1):
其中\(x_i\)是第\(i\)条广义曲线的第\(i\)个坐标,\(\sigma_i\)是第\(i\)条广义曲线的角度。以下等式成立(见图1):
图20.5。该图从几何角度展示了:当额外根\(\nu\)或\(\nu'\)分别位于小特征值\(\lambda_1\)或大特征值\(\lambda_2\)附近时,其对多项式\(p(z)\)的贡献如何影响与另一特征值相关的损失项。特别地,横轴上方的线与横轴的距离,等于其平方会与给定特征值相关的损失项相乘的因子。如前所述,已有多种结论利用了与上述表达式类似的形式,来证明矩阵\(A\)的特征值分布如何决定共轭梯度法(CG)优化\(q\)的速度。其中一个特别有趣的结论指出:如果特征值聚成\(m\)组,由于我们可以在每个聚类中心放置\(p\)的一个根,轻松构造一个在每个聚类附近取值相对较小的\(m\)次多项式\(p\),因此到第\(m\)次迭代时误差会非常低30。然而,式20.14的特定形式及其推导过程,让我们能够更直观地理解共轭梯度法的运行机制。式20.13求和中的每一项,都对应一个方向受限的目标函数\(q(\beta_j v_j + x_0) - q(\beta_j^* v_j + x_0) = \omega_j p(\lambda_j)^2\),共轭梯度法通过对\(\beta_j\)的间接优化来调整这些项。每个"损失"项的大小,与共轭梯度法在对应特征方向上优化\(x\)的进度呈负相关;通过检查这些项的形式,我们可以说明共轭梯度法如何通过对最优多项式\(p\)的选择,对不同项(以及因此对与其相关的特征方向的优化)进行"优先级划分"。该方法会保留\(A\)的特征向量,同时可能对特征值进行缩放,且不会对\(\omega_j\)产生任何影响。其次,我们注意到\(\lambda_j\)的大小,或者说与\(\nu_j\)相关的曲率的影响。如果不存在\(p\)必须具有常数项1的要求,\(\lambda_j\)可能不会对共轭梯度法的方向优先级产生任何影响(除了它们调节权重\(\omega_j\)的方式)。但需注意,常数系数为1的\(i\)次一般多项式必须具有如下形式:
其中\(\nu_k \in \mathbb{C}\)。我们将通过示例论证这一事实意味着:在其他条件相同的情况下,共轭梯度法会优先选择高曲率方向。假设矩阵\(A\)有两簇紧密聚集的特征值,一簇是靠近零的小幅值特征值,另一簇是距离更远的大幅值特征值。再假设两者的总损失相等(以相关\(\omega_j p(\lambda_j)^2\)的和来衡量,针对当前的\(p\))。在大幅值聚类附近放置一个额外根\(\nu_k\),会显著降低该聚类中相关的\(\omega_j p(\lambda_j)^2\)损失项,本质上是通过将每一项乘以\(\left(1 - \frac{\lambda_j}{\nu_k}\right)^2\)实现,由于\(\nu_k\)与每个\(\lambda_j\)非常接近,该因子会很小。与此同时,对于小幅度聚类中的\(\lambda_j\),相关的损失项会被乘以\(\left(1 - \frac{\lambda_j}{\nu_k}\right)^2\),由于\(0 < \lambda_j < \nu_k\),该因子不会大于1,这意味着这些损失项不会增加(实际上会略微下降)。现在对比一下,如果我们在小幅度聚类附近放置根\(\nu_k\)会怎样:如前所述,与该聚类相关的损失项会显著降低,但由于大幅值聚类中的\(\lambda_j\)满足\(\lambda_j \gg \nu_k\),对于这些\(\lambda_j\)会有\(\left(1 - \frac{\lambda_j}{\nu_k}\right)^2 \gg 1\),因此相关的损失项会大幅增加,甚至可能导致\(q\)的净增。因此,共轭梯度法作为最优方法,在这种情况下会选择将根放在大幅值聚类附近,而非小幅度聚类附近,尽管两种选择收敛后对\(q\)的提升是相同的。
20.10 共轭梯度法的初始化
如前一节所述,我们将使用通用记号\(q(x) = \frac{1}{2}x^T Ax - b^T x\)指代共轭梯度法正在优化的二次目标函数。共轭梯度法的一个有用特性是,它能够利用针对\(x\)的任意初始猜测\(x_0\)。这一选择会对共轭梯度法的性能产生强烈影响,这并不奇怪,因为\(x_i\)强烈依赖于克里洛夫子空间\(K_i(A, r_0)\)(其中\(r_0 = Ax_0 - b\)),而克里洛夫子空间又强烈依赖于\(x_0\)。
从上一节的角度来看,初始点\(x_0\)可能在某些特征方向上比\(x=0\)"更收敛",而在其他方向上收敛程度更低,这会影响对应的权重\(\omega_j\)(\(\omega_j\)衡量的是完全优化特征方向\(v_j\)(相对于保留\(x_0\)中的初始状态)所能获得的总减少量)。取不同的\(x_0\)导致的权重"重新分配"可能使CG的二次优化变得更简单或更困难,具体取决于特征值和关联权重的分布。 由于函数\(f\)(因此也是局部阻尼二次模型\(q = \tilde{J}\))的误差曲面的局部几何在更新之间变化相对缓慢(至少在某些特征方向上),这提示我们可以使用上一次的更新\(\delta_{k-1}\)作为CG的初始解\(x_0\),正如Martens 22所做的那样。 实际上,这一选择可能导致\(q\)的初始值高于0,因此看起来比使用满足\(q(x_0)=0\)的\(x_0=0\)更差。\(x_0\)甚至可能不是下降方向,意味着对所有\(\epsilon>0\)都有\(q(\epsilon x_0)>0\)。 但这些反对意见基于一种天真的认知,即\(q\)的值包含了关于初始化质量的所有信息。我们在实践中观察到,虽然用\(x_0=\delta_{k-1}\)初始化的CG运行在\(q(x)\)的衡量下"起步缓慢",但它们最终会赶上并超越从\(x_0=0\)开始的运行。 为了解释这一发现,我们首先注意到,设计出\(q\)值任意高但仅需一步CG就能达到最小值的初始化非常简单。要做到这一点,我们只需取\(q\)的最小值,再加上其中一个\(A\)的特征向量的大倍数。这对应于只有单个特征值\(\lambda_j\)具有非零权重\(\omega_j\)的情况,因此要使\(q(x)-q(x^*)=0\),CG只需选择一个在\(\lambda_j\)处有根的一阶多项式。 更一般地,\(x_0\)可能在数量更多、或具有小且分散的特征值(即曲率)的特征方向上比0更收敛,而仅在数量更少、或具有更大或更紧密聚集的特征值的特征方向上比0收敛程度更低(可能严重如此)。如果后一组的总权重更大(由上一节中定义的\(\omega_j\)的总和给出),这将导致\(q(x_0)>0\)。 但由于前一组方向比后一组更容易被CG优化,这意味着只要给CG足够的迭代次数来优化后一组初始化较差但"易于修复"的特征方向,给定的\(x_0\)仍然比"更安全"的0初始化更可取。 我们推测选择\(x_0 = \delta_{k-1}\)符合上述描述的情况,其中后一组特征方向对应的是优化速度较慢的低曲率方向,这些方向往往在多次HF迭代中保持下降方向。与该理论一致的是,我们的观察:从初始化\(x_0 = \delta_{k-1}\)出发要使\(q(x) < 0\)所需的CG步数,往往与上一次HF迭代中使用的CG步数成线性增长^9。 > ^9 顺便一提,这是为什么在每一步HF中使用固定最大CG迭代次数是一个好选择的原因之一。 类似于使用带动量的梯度下降时当前更新向量被标量常数"衰减"的方式,我们发现稍微衰减初始化是有帮助的,即取\(x_0 = \zeta \delta_{k-1}\),其中\(\zeta\)是0到1之间的常数,例如0.95。为HF仔细选择这个衰减因子远不如对动量方法那样重要。这是因为虽然动量方法通过单次梯度下降步修改当前更新向量,HF则使用完整的CG运行,这可以带来更显著的变化。这使得HF能够更容易地在特征方向上缩小\(x_0\),这些方向在之前的\(\theta\)下可能是有帮助的,但不再适合从当前的\(\theta\)开始遵循。 特别是,\(x_0\)会很快在高曲率的湍流方向上被"修正",降低(但不会完全消除)对衰减来帮助"清理"这些方向的需求。我们的经验表明,当激进的CG截断或弱预处理等其他因素限制了CG修改初始值\(x_0\)的更新、或在重要的低曲率方向上取得良好进展的能力时,调整衰减常数变得更加重要。前一个问题要求降低\(\zeta\),后一个问题则要求提高它。最优值很可能取决于截断量、预处理的类型以及被优化的目标的局部几何。\(\zeta = 0.95\)似乎是一个不错的默认值,但在使用非常早截断CG的方法时,降低它可能会有帮助。在优化的后期阶段,当CG在低曲率方向上优化\(q\)时更加吃力,提高它也可能是有益的。 # 20.11 预条件 尽管CG功能强大,但仍存在一些二次优化问题,使用更直接的方法可以轻松解决,而CG难以应对。例如,如果曲率矩阵是对角的,CG通常需要\(i\)次迭代才能收敛(\(i\)是对角线上不同值的数量),总耗时为\(O(in)\)。与此同时,我们可以通过直接求对角曲率矩阵的逆,在\(O(n)\)时间内轻松求解整个系统。 从某种意义上说,CG没有意识到这种特殊结构,也无法利用它。虽然曲率矩阵通常不是对角形式,也没有任何其他易于求逆的特殊形式,但仍然可能存在一些低成本操作,这些操作可以利用曲率矩阵的整体结构信息来部分完成优化\(q\)的工作,从而减轻CG的负担。 在HF的语境中,预处理指的是根据某种相对容易求逆的线性变换对\(\hat{M}\)进行重新参数化,其思想是CG在新参数化下每次迭代优化时能取得更快的进展。 > ^10 我们使用\(\hat{}\)符号表示阻尼二次模型及相关的阻尼曲率矩阵\(\hat{\textbf{B}}\),因为这是CG在HF中实际优化的内容。 # 3.3 ## 3.3.1 ### 3.3.1.1 ### 3.3.1.2 ### 3.3.1.3 ### 3.3.1.4 ### 3.3.1.5 ## 3.3.2 ## 3.3.3 ### 3.3.3.1 ### 3.3.3.2 ### 3.3.3.3 ### 3.3.3.4 ### 3.3.3.5 ### 3.3.3.6 ### 3.3.3.7 ### 3.3.3.8 ### 3.3.3.9 ### 3.3.3.10 ## 3.3.4 ## 3.3.5 ## 3.3.6 ## 3.3.7 ## 3.3.8 ## 3.3.9 ## 3.3.10 ## 3.3.11 ## 3.3.12 ## 3.3.13 ## 3.3.14 ## 3.3.15 ## 3.3.16 ## 3.3.17 ## 3.3.18 ## 3.3.19 ## 3.3.20 ## 3.3.21 ## 3.3.22 ## 3.3.23 ## 3.3.24 ## 3.3.25 ## 3.3.26 ## 3.3.27 ## 3.3.28 ## 3.3.29 ## 3.3.30 ## 3.3.31 ## 3.3.32 ## 3.3.33 ## 3.3.34 ## 3.3.35 ## 3.3.36 ## 3.3.37 ## 3.3.38 ## 3.3.39 ## 3.3.40 ## 3.3.41 ## 3.3.42 ## 3.3.43 ## 3.3.44 ## 3.3.45 ## 3.3.46 ## 3.3.47 ## 3.3.48 ## 3.3.49 ## 3.3.50 ## 3.3.51 ## 3.3.52 ## 3.3.53 ## 3.3.54 ## 3.3.55 ## 3.3.56 ## 3.3.57 ## 3.3.58 ## 3.3.59 ## 3.3.60 ## 3.3.61 ## 3.3.62 ## 3.3.63 ## 3.3.64 ## 3.3.65 ## 3.3.66 ## 3.3.67 ## 3.3.68 ## 3.3.69 ## 3.3.70 ## 3.3.71 ## 3.3.72 ## 3.3.73 ## 3.3.74 ## 3.3.75 ## 3.3.76 ## 3.3.77 ## 3.3.78 ## 3.3.79 ## 3.3.80 ## 3.3.81 ## 3.3.82 ## 3.3.83 ## 3.3.84 ## 3.3.85 ## 3.3.86 ## 3.3.87 ## 3.3.88 ## 3.3.89 ## 3.3.90 ## 3.3.91 ## 3.3.92 ## 3.3.93 ## 3.3.94 ## 3.3.95 ## 3.3.96 ## 3.3.97 ## 3.3.98 ## 3.3.99 ## 3.3.100 ## 20.10.12 定义良好的预处理器 预处理器恰恰相反:它是透明的。仅靠CG无法实现这种透明性。 使用良好的预处理器,你可以编写出既清晰又易于理解的代码。良好的预处理器应在性能、效率和可移植性方面成为标准,同时能够处理简单和复杂的各类任务。
13.2 概述
在本章中,我们讨论循环神经网络(RNN)训练所需的主要概念和工具。假设我们已经完成了 RNN 的理论基础,即训练 RNN 所需的前置知识。
RNN 的训练需要以下概念和工具:
- 一个定义在特定区间上的标量。
- 若将 RNN 的输入序列长度固定为 \(L\),输出序列长度固定为 \(T\),RNN 的权重矩阵维度为 \(L \times L\),而非 \(L \times T\)。
20. 使用海森自由优化训练深度与循环神经网络
之前的讨论均忽略了获取曲率矩阵对角线的成本。虽然计算任意函数的海森-向量积较为简单,但不存在高效的精确算法可以计算一般非线性函数的海森矩阵对角线(Martens 等人24, 4节),因此必须使用近似方法。Lecun 等人2 报告了一种计算高斯-牛顿矩阵对角线的高效方法,但仔细校验后发现其在数学上并不严谨(尽管它仍可被视为一种启发式近似)。对于高斯-牛顿矩阵,可通过 \(k\) 次反向传播的计算成本获得精确的对角线,其中 \(k\) 是输出单元的数量6。该方法可自然推广到计算广义高斯-牛顿(GGN)矩阵的对角线,对类别数量较少的分类问题可行,但对于深度自编码器或输出维度较高的 RNN 等问题则不可行。后续章节将介绍两种实用方法,用于在任意输出维度下近似 GGN 矩阵的对角线。
20.11.3 经验费舍尔对角线
近似 GGN 矩阵 \(\mathbf{F}\) 对角线的一种方法是转而计算一个相关矩阵的对角线,该相关矩阵的对角线更易精确计算。为此,Martens 22 选择了经验费舍尔信息矩阵 \(\mathbf{F}\),它是著名的费舍尔信息矩阵1(本身与广义高斯-牛顿矩阵相关)的一个近似。经验费舍尔信息矩阵定义为:
\\\mathbf{F} \\equiv \\sum_i \\nabla f_i \\nabla f_i\^\\top \\
然而,由于其特殊的低秩形式,其对角线可轻易计算为:
\\\operatorname{diag}(\\mathbf{F}) = \\sum_i \\operatorname{sq}(\\nabla f_i) \\
其中 \(\operatorname{sq}(x)\) 表示逐元素平方。由于小批量上的梯度计算已可得到 \(\nabla f_i\) 的和 \(\sum_i \nabla f_i\),因此在同一个小批量上并行计算 \(\operatorname{diag}(\mathbf{F})\) 不会产生额外成本,仅可能需要存储 \(\nabla f_i\),这一点在前馈网络中可被避免,但在 RNN 中无法避免。
算法 20.11.3 可在不产生额外存储开销的情况下计算经验费舍尔信息矩阵的对角线。在该算法中,每个 \(y_i\) 是包含 \(B\) 列的矩阵,代表包含 \(B\) 个样本的小批量的激活值,\(\operatorname{sq}(\cdot)\) 是逐元素平方运算。该算法仅在第 9 行和第 10 行与算法 20.2 不同。通常可并行计算小批量上梯度平方的和,无需存储单个梯度的平方(该操作通常成本极高),只要计算图如 20.6 节所述,任意 \(v \in \mathbb{R}^m\) 与 \(\mathbf{F}\) 的雅可比矩阵 \(\mathbf{J}\) 的乘积可通过常规反向传播算法高效完成。
算法 20.7 的正确性易于证明:
\\\begin{gathered} \\mathbb{E}\\left\[\\operatorname{sq}(J\^\\top v)\\right = \mathbb{E}\left\\operatorname{diag}\\left((J\^\\top v)(J\^\\top v)\^\\top\\right)\\right = \operatorname{diag}\left(J^\top \mathbb{E}v v\^\\top J\right) = \operatorname{diag}(J^\top J) \end{gathered} \]
其中我们使用了恒等式 \(\operatorname{sq}(x) = \operatorname{diag}(x x^\top)\)。
Martens 等人24 借鉴了 Chapelle 和 Erhan 10 的工作,提出了一种高效无偏的近似方法,可用于估计给定函数的完整海森矩阵或 GGN 矩阵(若仅需对角线,也可仅估计对角线),并且能够正确计算结构阻尼的实用项。该对角线估计方法取得了更优的效果,明显优势是阻尼目标项可设为 0;缺点是对于梯度值非常小甚至为 0 的参数,其曲率估计的对角线项也可能为 0(这类参数实际不会出现非零对角线项),但该方法不会产生额外的计算开销。
20.12 小批量处理
在现代机器学习应用中,训练集可能规模极大,而需要处理训练集中所有样本来计算每次参数更新的学习算法(称为"批量处理")可能速度极慢,甚至完全不实用7。部分训练数据集甚至是无限的,因此讨论以批量模式运行的算法可能完全没有意义。诸如随机梯度下降(SGD)之类的"在线"或"随机"梯度算法,理论上仅需使用训练集任意小的子集(称为"小批量")上计算的梯度信息,只要学习率足够小即可正常工作。另一方面,HF 使用小批量估计曲率矩阵,该矩阵会被强烈用于生成较大且有时具有攻击性的参数更新。随着小批量大小的减小(假设无阻尼或权重衰减的贡献),这些曲率矩阵估计可能会变得越来越低秩且退化,在某些情况下(见 20.12.1 小节)可能导致无界且无意义的更新,尽管 20.8 节讨论的阻尼机制可在一定程度上缓解该问题。但即使没有这些更明显的退化问题,从直观上看,矩阵 \(\mathbf{B}\) 捕获了"在情况恶化前我们可在任意方向上推进多远"的软约束,若特定训练样本相关的约束在小批量估计的曲率中未被充分近似,那么通过优化 \(\mathbf{M}\) 得到的更新 \(\delta\) 很容易导致目标函数 \(f\) 在该样本上的表现变差,甚至可能严重恶化。因此,像 HF 这样的二阶方法若只能从当前小批量估计曲率,在小批量极小时效果可能差很多。尽管存在多种策略可处理"过小"的小批量(我们将在 20.12.2 小节中讨论),但使用 HF 这类二阶方法的好处可能会因采用这些策略而减少。幸运的是,对于神经网络,存在优雅且自然的实现方式,它们利用数据并行与向量化,可高效计算小批量上的梯度和曲率矩阵-向量积(见第 20.7 节)。对于 GPU 等高度并行架构,这些实现的成本增长相对于小批量大小保持次线性,直至并超过 HF 中有用小批量规模的阈值。
20.12.1 更高质量的梯度估计
与像 SGD 这样的一阶优化方案不同(SGD 需要多达 \(10^5 - 10^7\) 次迭代才能接近较优解),像 HF 这样的强二阶优化器所需的迭代次数在我们的经验中小了几个数量级,通常在 \(10^2 - 10^3\) 量级。虽然传递给共轭梯度(CG)的线性项 \(\mathbf{b} = -\nabla f(\theta_{k-1})\) 每次更新仅需计算一次,但 CG 可能需要大约 \(10^2 - 10^3\) 次矩阵-向量乘积与
曲率矩阵 \(\mathbf{A} = \mathbf{B}\) 与向量的乘积用于生成每次更新。这些矩阵-向量乘积是任何截断牛顿方法中最耗费计算的部分。因此 ,使用比用于计算矩阵-向量乘积大得多的迷你批次来计算梯度可能更具成本效益。Martens(#)推荐使用这项技术(Byrd等人(#)也持相同观点);根据我们的经验,若在合适的场景下 谨慎使用,该技术通常能提升优化速度。
尽管如此,从理论层面来看,至少在部分情况下,使用同一迷你批次同时计算梯度和曲率矩阵-向量乘积是更优选择,存在若干合理的理论依据,这些理论依据已得到了我们实际经验的验证。我们将把用于计算梯度和曲率矩阵-向量乘积的迷你批次 分别称为**"梯度迷你批次"和"曲率迷你批次"** 。当梯度迷你批次与曲率迷你批次相同时,若采用GGN曲率模型,二次模型\(\boldsymbol{M}\)仍保持其原有解释......为补偿迷你批次过拟合,这会使\(HF\)在渐近意义上表现得如同使用动态调整学习率的\(SGD\)。使用\(CG\)优化\(\delta\)时出现的迷你批次过拟合,与非线性优化器应用于传统学习问题时出现的普遍过拟合之间存在极强的类比性,且这两类问题的潜在解决方案也呈现出相似性。例如,吉洪诺夫阻尼类似于\(L2\)先验或"权重衰减"惩罚项(但以\(\delta=0\)为中心),\(CG\)截断则类似于"早停"。
需注意,阻尼方法被视为处理二次近似误差的手段是有依据的:因为随着更新的"规模"(按任意合理指标度量)缩小,更新最终会进入该误差来源必然可忽略的区域。这是因为一个简单事实:\(f\)的泰勒展开中所有未被\(M\)建模的超线性项,其趋近于零的速度远快于更新的规模。
必须注意,上述依据并不适用于用更新阻尼方法处理与迷你批次相关的估计误差。事实上,在某一特定迷你批次上计算的负梯度,甚至可能不是总目标函数(基于完整训练集计算)的下降方向;即使是从该迷你批次计算得到的无穷小更新,也可能实际使总目标函数值变差。因此,在调参阻尼机制以处理迷你批次过拟合时(无论是手动调参还是通过自动启发式方法动态调参),目标不应是使总\(f\)的降低幅度达到迷你批次计算的\(M\)所预测值的固定倍数(如20.8.5节所述),而只需获得一个更平缓的降幅,该降幅与当前迷你批次在整个训练数据集中的相对贡献成正比即可。
同样值得注意的是,从\(HF\)上一次迭代计算得到的更新来初始化\(CG\)(如20.10节所述)的做法,似乎会使\(CG\)偏向于找到对当前迷你批次外数据泛化性更好的解。我们尚不清楚这一现象的原因,但一种可能的解释是:将\(\delta\)继承到每次新的\(CG\)运行中,并使用新数据对其进行不完全优化,随着\(HF\)的迭代,\(\delta\)得以沿低曲率方向¹缓慢增长,这类方向必然需要跨大量训练数据泛化。
¹ \(CG\)对这类方向的优化速度远慢于高曲率方向,如20.9节"无明显意义的依赖参数化的指标"部分所述。
第二,增大迷你批次规模仅是处理迷你批次过拟合的方法之一,该策略并不能长期保持实用。第三,类似本节的\(CG\)激进早停启发式规则,往往与非零\(CG\)初始化¹²及其他形式的阻尼产生不良交互。
¹² 原因是\(CG\)可能在达成\(\hat{M}(\delta) < 0\)之前就被强制终止。
最后,还有其他更直接的方式衡量更新的泛化能力,例如直接监控当前迷你批次外部分训练数据上的\(f\)值。
20.12.2 误配过拟合与垂直过拟合
20.13 技巧与经验
为特定应用设计HF风格的优化算法时,有许多需要留意的要点,即便是我等对该方法有丰富经验的人,也会觉得难度不低。因此,为降低相关难度,本节中我们将分享设计有效方法的部分经验,并介绍若干在标准参数化假设下、对特定深度学习问题表现尤为突出的配置方案。
我们尝试过的所有成功方法共有的核心要素包括:
- 使用GGN矩阵而非黑塞矩阵
- 20.10节所述的CG初始化技术
- 设计良好的预条件子
其他常用实践包括: - 使用吉洪诺夫阻尼时,一个合理的选择是对GGN矩阵对角线元素进行估计,并使用20.11.2节所述技术,在\(\kappa=0\)、\(\psi=0.75\)的配置下对其进行修正。
- 使用20.8.3节所述的对尺度敏感的方法时,可能需要将\(\kappa\)提高至\(D\)的对角线元素均值的约\(10^{-2}\)倍
- 使用其中一种对角阻尼方法,针对部分循环神经网络(RNN)学习问题,还可搭配结构阻尼共同使用。
- 对于默认参数化下的前馈网络学习问题,吉洪诺夫阻尼通常表现良好;若\(\kappa\)足够大(如上一项所述),使用修正后的GGN矩阵对角线估计值也通常有不错的效果。
- 除可能使\(CG\)更早终止的其他条件(如固定迭代次数上限)外,还可使用20.4节所述的基于进度的\(CG\)终止准则。
- 根据LM(莱文贝格-马夸特)启发式规则或类似方法,动态调整阻尼常数(如\(\lambda\))
接下来,我们将详细介绍上述每种成功方法的具体实现。首先是文献22中介绍的原始算法,该算法表现相当出色。此处采用"CG回溯"方法,基于目标函数值选择迭代点(见20.8.7节),梯度计算
10.2 参考文献
本章节中引用了多种文献,包括 1 等。
动机1.1:细分:在JEE研究生招生考试中,同一部分设置两个不同但又相关的题目本身就不够合理。这一点在题型为"X的值是多少?"或"证明Y成立"时尤为明显。近年来出现了不少这类题目,部分学生虽未在相关科目的学习过程中接触过此类题型,但仍能解题。现在我将用这类题目总数的75%,讲解其中一道典型题目的解法。该解法是此类题目的标准解法,但又和常规标准解法有所不同。
- 1 Amani 与 S.:《斐波那契类数列模式》。数值几何。
- 2 Senior S.:《第5个斐波那契数列的第510项》。(JEE 2005)
- 3 Senior S.:《第5个斐波那契数列的第510项》。(JEE 2006)
- 4 Senior S.:《第5个斐波那契数列的第510项》。(JEE 2007)
- 5 Senior S.:《第5个斐波那契数列的第510项》。(JEE 2008)
- 6 Senior S.:《第5个斐波那契数列的第510项》。(JEE 2009)
- 7 Senior S.:《第5个斐波那契数列的第510项》。(JEE 2010)
- 8 Senior S.:《第5个斐波那契数列的第510项》。(JEE 2011)
- 9 Senior S.:《第5个斐波那契数列的第510项》。(JEE 2012)
- 13 Gould, N.I.M., Lucidi, S., Roma, M., Toint, P.L.:《使用Lanczos方法求解信任域子问题》。《SIAM优化期刊》第9卷第2期,504--525页(1999年)
- 14 Hansen, P.C., O'Leary, D.P.:《L曲线在离散不适定问题正则化中的应用》。《SIAM科学计算期刊》第14期,1487页(1993年)
- 15 Hestenes, M.R., Stiefel, E.:《求解线性系统的共轭梯度法》(1952年)
- 16 Hinton, G.E., Osindero, S., Teh, Y.W.:《深度信念网络的快速学习算法》。《神经计算》第18卷第7期,1527--1554页(2006年)
- 17 Hinton, G.E., Salakhutdinov, R.R.:《利用神经网络降低数据维度》。《科学》第313卷第5786期,504--507页(2006年)
- 18 Hochreiter, S.:《动态神经网络研究》。学位论文,信息学研究所,Brauer教授教席,慕尼黑工业大学(1991年)
- 19 Hochreiter, S., Schmidhuber, J.:《长短期记忆》。《神经计算》第9卷第8期,1735--1780页(1997年)
- 20 Jaeger, H., Haas, H.:《利用非线性:预测混沌系统与节省无线通信能耗》。《科学》第304卷第5667期,78--80页(2004年)
- 21 LeCun, Y., Bottou, L., Orr, G.B., Müller, K.-R.:《高效反向传播》。收录于:Orr, G.B., Müller, K.-R. 编。《NIPS-WS 1996会议论文集》。LNCS丛书第1524卷,第9--50页。海德堡:施普林格出版社(1998年)
- 22 Martens, J.:《基于Hessian自由优化的深度学习》。收录于:《第27届国际机器学习会议(ICML)论文集》,第951卷(2010年)
- 23 Martens, J., Sutskever, I.:《利用Hessian自由优化学习循环神经网络》。收录于:ICML会议论文集(2011年)
- 24 Martens, J., Sutskever, I., Swersky, K.:《通过反向传播曲率估计Hessian矩阵》。收录于:ICML会议论文集(2012年)
- 25 Moré, J.J.:《Levenberg-Marquardt算法:实现与理论》。《数值分析》,第105--116页(1978年)
- 26 Moré, J.J., Sorensen, D.C.:《计算信任域步长》。《SIAM科学计算与统计计算期刊》第4期,553页(1983年)
- 27 Nash, S.G.:《基于Lanczos方法的牛顿型极小化》。《SIAM数值分析期刊》,第770--788页(1984年)
- 28 Nash, S.G.:《截断牛顿法综述》。《计算与应用数学期刊》第124卷第1期,第45--59页(2000年)
- 29 Nesterov, Y.:《收敛速率o(1/k²)的无约束凸极小化方法》。收录于:《苏联科学院报告》,第269卷,第543--547页(1983年)
- 30 Nocedal, J., Wright, S.J.:《数值优化》。施普林格出版社(1999年)
- 31 Pearlmutter, B.A.:《Hessian矩阵的快速精确乘法》。《神经计算》第6卷第1期,第147--160页(1994年)
- 32 Shewchuk, J.R.:《无需痛苦即可理解的共轭梯度法入门》(1994年)
- 33 Vinyals, O., Povey, D.:《用于深度学习的Krylov子空间下降法》。arXiv预印本arXiv:1111.4259(2011年)
- 34 Wengert, R.E.:《一个简单的自动求导评估程序》。《ACM通讯》第7卷第8期,第463--464页(1964年)
高效实现神经网络
Ronan Collobert¹, Koray Kavukcuoglu², Clément Farabet³,⁴
¹ 伊迪亚普研究院,瑞士马蒂尼
² 美国NEC实验室,美国新泽西州普林斯顿
³ 纽约大学库朗数学科学研究所,美国纽约州纽约市
⁴ 巴黎东大学,A3SI团队 - 巴黎高等电子学院,法国
摘要. 神经网络及广义机器学习算法都需要一个灵活的环境,以便能够尽可能快速地搭建新的算法原型、开展实验,同时获得尽可能高的计算性能。为此,我们推出了名为Torch7的新框架,该框架尤其适合同时实现这两个相互竞争的目标。Torch7是一个多功能的数值计算框架和机器学习库,基于极其轻量且强大的编程语言Lua开发。其目标是为设计、训练和部署学习机器提供灵活的环境。灵活性通过Lua实现------这是一种极其轻量的脚本语言。高性能则通过低级数值例程的高效OpenMP/SSE和CUDA实现获得。得益于Lua轻量的C接口,Torch7还可以轻松与第三方软件对接。
在考虑高效的神经网络实现时,运行时效率通常被视为最重要的议题。但人们也不应低估为给定任务设计合适的神经网络所花费的时间,甚至也不应低估正确为神经网络提供数据所投入的工作量。要在短时间内为特定任务设计出合适的网络,需要灵活的开发环境以及设计合理的神经网络工具箱。目前已有不少针对特定需求的高效(运行时执行层面)神经网络库可免费获取。QuickNet¹就是语音识别领域的一个优秀范例:它实现了最常用的算法,也就是层数较少的多层感知机。然而,灵活的库相当少见。实现一个支持广泛复杂网络(例如用于图像、文本或语音的卷积网络......)、任意类型连接(全连接、共享权重、层级顺序......)或多种训练算法(随机梯度、批量、二阶方法比如......)的库并非易事。
¹ http://www.icsi.berkeley.edu/Speech/qn.html
G. Montavon 等编:《神经网络:实战技巧(第2版)》,LNCS丛书第7700卷,第537--557页,2012年。© 施普林格·弗拉格柏林海德堡出版社2012年
2.2.1 高效设备
2.2.1.1 脚本语言
脚本语言是一种用于编写计算机程序的语言,主要用于控制计算机程序的行为。
2.2.1.2 高效设备
高效设备是用于描述使用高效设备的术语。
图21.1 Torch7的模块化结构
低级数值库通过TH进行对接,以提供统一的张量库。luaT为Lua中的对象/类操作提供了必要的数据结构。Torch核心包使用TH和luaT,提供纯Lua环境下的数值计算环境。所有其他包既可以在Lua脚本环境中使用Torch接口,也可以对接低级C接口以获得更高的性能优化。
这种设计让解释型语言拥有轻量的C API,无论是在简洁性还是效率层面均如此。C API的简洁性有助于更轻松地对接现有外部库,而效率是大型应用最重要的单一标准。
- 在复杂的开发环境中,脚本语言成为异构组件之间的"粘合剂":可以用高级语言合并来自不同库的同一概念的不同结构,同时保留所有不同库对外暴露的功能。因此我们选择了Lua。在现有脚本语言中,能满足运行时效率要求的语言种类非常有限。在我们的机器学习框架Torch7 中,我们选择了Lua------这是我们能找到的最快的解释型语言(同时拥有最快的即时编译(JIT)编译器⁴)。Lua的另一个优势是它设计为可以轻松嵌入C应用程序,并提供非常干净的C API,基于虚拟栈传递值并从C端执行函数求值。这统一了到C的接口,并最小化了封装第三方库所需的工作量。
Lua旨在作为任何需要脚本语言的程序使用的强大、轻量的脚本语言。它被实现为一个库,采用ANSI C与C++公共子集的纯C语言编写。引用Lua官网⁵的介绍,Lua将简单的过程式语法与强大的基于关联数组的数据描述构造和可扩展语义相结合。Lua是动态类型语言,通过解释基于寄存器的字节码运行。
C API有助于更轻松地对接现有外部库,C API的简洁性是单一最重要的标准。
luaT为对象/类操作提供必要的数据结构。
TH库(数值计算的C接口)
BLAS、FFTW、SSE、Lapack
³ 例如参见 http://shootout.alioth.debian.org
⁴ http://luajit.org/
⁵ http://www.lua.org
虚拟机,具备增量垃圾回收的自动内存管理机制,非常适合用于配置管理、脚本编写和快速原型开发。Lua对面向对象编程、函数式编程和数据驱动编程都有良好的支持。
如图21.2所示,其数值计算效率非常高(与C语言相比)。这是快速实现新数值算法的巨大优势。Lua的核心类型是表(table),它以极高的效率实现了关联数组(见图21.2)。关联数组是一种不仅可以用数字、还可以用字符串或语言中任何其他值作为索引的数组。表没有固定大小,可动态调整,还能作为另一个表的"虚拟表",用于模拟各类面向对象范式。表是Lua中唯一的数据结构机制,但功能十分强大。用户可以用表以简单、统一、高效的方式表示普通数组、符号表、集合、记录、队列和其他数据结构。Lua也用表来表示包。此外,函数是语言中的一等公民:函数和任何其他变量一样,可以作为参数传递给函数,也可以作为函数的返回值。最后,Lua支持闭包。闭包与表结合,为数据处理和复杂算法编程提供了非常强大且高效的语法。
图 21.2 C语言(使用gcc 4.4)、Lua 5.1.4和Python 2.7的运行效率对比。Lua和Python的JIT实现分别为LuaJIT和PyPy。曼德博集合(Mandelbrot)和二叉树(Binary Trees)基准测试用例来自《计算机语言基准测试游戏》。所有基准测试均在高端的12核至强服务器上使用单核CPU运行。曼德博集合基准测试大量使用数值运算,而二叉树基准测试大量使用数据结构(C语言用结构体、Python和Lua用表)。每个语言的执行时间以对数刻度坐标轴报告。
为什么不选Python?
讨论编程语言难免引发"口水战"。Lua在游戏开发者社区中广为人知,主要得益于其速度优势和出色的嵌入能力;而Python在大众群体中更为流行。毫无疑问,Python自带的库更多,用户几乎在任何场景下都能轻松找到各类问题的解决方案。不过相比Python,Lua至少有以下两个重要优势:
- 首要的是,Lua集成现有C/C++库的便捷性非常重要。许多高效的数值算法都被实现在BLAS、LAPACK、FFTW等专用库的包中。轻量级的现有代码接口对于实现高性能环境至关重要。在第21.2.8节中,我们展示了封装BLAS函数调用时,Lua相比Python的效率的量化结果。
- 其次,由于Lua可以嵌入C/C++程序,任何原型应用只需极少的额外工作就可以转化为最终的系统产品。Lua由纯C语言编写,不依赖任何外部库,因此可以轻松应用于Android、iOS6、FPGA7和DSP等嵌入式场景。另外,也存在一些替代方案来编写解释型语言与C/C++之间的自定义接口,比如简化封装和接口生成器(SWIG8)。虽然这类工具最初能提供简化的接口,但要编写包含多个线性代数后端支持的张量库,需要非常细粒度的控制权,我们发现管理这类接口比直接使用Lua原生API更困难。
除了在运算数量上的性能优势(见图21.2),Lua还为构建大规模机器学习框架提供了其他独特优势------这些优势在现有编程语言中很难同时具备。在接下来的章节中,我们将展示如何扩展Lua的基础数值能力,将其打造成足够完善的复杂数值算法开发框架。
21.1.2 多用途高效N维张量对象
Torch7提供了一个通用的纯C语言编写的张量库(称为TH)。该库通过Lua接口封装,为脚本语言提供了新的高效多维数组类型。Torch7中的大多数包(或依赖Torch7的第三方包)都依赖这个张量类来表示信号、图像、视频等数据,让Lua能够很好地"粘合"大多数库。由于该库可以直接从Lua和C中调用,因此可以快速完成原型开发和新包的创建。对现有库进行接口封装或扩展的效率也非常高。
以下代码展示了从Lua端调用的一些基于张量的标准操作:
lua
-- create a tensor of single-precision floats
t = torch.FloatTensor(100,100)
-- randomized: sampled from a normal distribution
l = torch.randn(100,100)
-- basic operators
r = t + l/2
-- in-place operators
r:add(0.5, t)
-- common operators
r = torch.log(torch.exp(-r))+10
6 https://github.com/clementfarabet/torch-ios
(LISP语言框架中的概念)。Matlab也支持N维数组(尽管早期版本仅支持二维矩阵)。和Matlab相比,我们非常重视内存分配控制 ,我们将在第21.2.2节中具体说明。Numpy9是另一个流行的替代方案,但仅适用于Python语言。如前所述,凭借速度和更简洁的C接口,Lua在构建机器学习框架方面具有独特优势。
21.1.3 模块化神经网络
参考文献6的观点,我们将神经网络视为按特定图结构连接的一组模块。在Torch7中,"nn"包提供了一套标准神经网络模块,以及一组可用于定义任意有向(可含环)图的容器模块。通过使用可插拔模块显式描述图结构,我们避免了图解析器或任何其他中间件编译器的复杂性。实际上,大多数网络要么是序列结构,要么只有简单的分支模式或递归结构。以下示例展示了如何描述多层感知机:
lua
1 mlp = nn.Sequential()
2 mlp:add(nn.Linear(100,1000))
3 mlp:add(nn.Tanh())
4 mlp:add(nn.Linear(1000,10))
5 mlp:add(nn.SoftMax())
每个模块(或容器)都提供标准函数,用于计算其输出状态、将导数反向传播到输入以及其内部参数。给定前文提到的网络、输入X ,以及输出Y 对应的某误差E 的梯度dE/dY,这三个函数的调用方式如下:
lua
1 -- compute the activations Y = f(X)
2 Y = mlp:updateOutput(X)
3
4 -- compute some loss E = l(Y,T)
5 E = loss:updateOutput(Y,T)
6
7 -- compute the gradient dE/dY = dl(Y,T)/dY
8 dE_dY = loss:updateGradInput(Y,T)
9
10 -- back-propagate the gradients, down to dE/dX
11 dE_dX = mlp:updateGradInput(X,dE_dY)
12
13 -- compute the gradients wrt the weights: dE/dW
14 mlp:accGradParameters(X,dE_dY)
利用TH库
Torch7中的神经网络模块使用TH库提供的张量(见第21.1.2节)来表示自身的输入数据、输出或内部状态。大多数模块仅用Lua编写,通过Torch包执行密集数值运算。只有需要非常特定操作的包才有专门的C后端。即便如此,其中许多包也会从C端调用TH库的接口。无论如何,张量都作为数据容器,与库的其他部分无缝交互。
训练算法
在Torch7中,每个神经网络模块在获得对其输出的偏导数后,都能计算出对其参数和输入的偏导数。因此,任何复杂的网络结构都可以使用基于梯度的优化方法进行训练。支持批量、小批量和随机梯度下降算法。得益于名为"optim"的数值包,也支持更高级的算法,比如共轭梯度或LBFGS等二阶梯度下降算法。虽然这个优化包被设计为可独立使用,但和"nn"包配合使用时,也能为神经网络提供二阶优化能力。
21.1.4 其他Torch7包
Torch7自带许多内置包和第三方包。为鼓励机器学习算法的协作开发与再发布,Torch7提供了内置包管理器。需要时,它可以轻松从任意包仓库下载、编译并安装额外的Torch7包。目前,和数值计算或数值分析相关的最受关注的包包括:
- torch:Torch7的主包,提供张量、便捷序列化及其他基础功能。该包提供了类似Matlab的函数,用于创建、转换和使用张量。
- gnuplot:该包提供基于张量的Gnuplot绘图接口。
- image:图像处理包,提供所有标准图像处理功能,包括图像的加载保存、缩放、旋转、色彩空间转换、滤波操作等。
- optim:轻量包,提供最速下降法、共轭梯度法和有限内存BFGS的实现。
- qt:Qt和Lua10的完整绑定,支持Torch7张量到QImage的透明转换。非常适合快速开发带高级GUI的交互式演示(可在Linux、Mac或Windows平台上原生运行)。
由于Lua可以轻松对接任意C库,可用包的列表还在不断扩充。第三方包包括unsup,其中包含稀疏编码、自编码器等若干无监督学习算法。
10 感谢Léon Bottou为此做出的巨大贡献。
21. 高效运行时执行
在我们的论文中,我们提出了一种高效运行时执行的新方法。我们所称的"高效运行时"方法旨在克服现有运行时环境的局限性。与传统运行时环境相比,高效运行时具备多项优势,包括性能提升、内存占用减少以及扩展性更好。高效运行时的核心理念是结合使用高级硬件加速、优化代码路径和智能资源分配来实现这些优势。高效运行时建立在强大的底层硬件基础设施之上,能够让我们充分发挥现代计算平台的潜力。高效运行时尚包含诸多易用的高级功能,例如自动性能分析、优化的内存管理以及对复杂数据结构的支持。高效运行时是一款强大的工具,能够帮助开发者将自身代码提升到新的水平。我们很高兴向广大开发者社区分享高效运行时。我们希望高效运行时能够成为软件开发者的标准工具,也期待看到它在各类应用中的使用情况。
21.2.4 SDIO指令
大多数通信都以手动中断请求开始,用于请求设备提供服务(向设备发起"并行"或"串行"请求)。SDIO接口是"并行"请求的默认选项。"串行"接口是"串行"请求的默认选项。
- SDIO接口是"并行"请求的默认选项。
- "串行"接口是"串行"请求的默认选项。
- SDIO接口是"并行"请求的默认选项。
- "串行"接口是"串行"请求的默认选项。
- SDIO接口是"并行"请求的默认选项。
访问顺序非常重要,这些访问的执行顺序也是如此。例如,应始终避免对内存中非连续的张量执行操作(比如张量的每个元素之间存在额外跳转的情况)。多数情况下,在执行任何密集计算之前,最好将张量整理为连续的内存块(可能需要承担复制的成本)。神经网络中一个显著的例子是卷积操作。对图像进行卷积时,会连续在卷积核与图像所有可能的图像块之间计算点积。可以提前复制所有这些图像块(缺点是大卷积核或大图像场景下内存开销极高),之后使用矩阵-矩阵运算(基于BLAS)计算所有点积。内存消耗随卷积核像素数量的增加而成正比上升。如图21.3所示,即使初始内存复制的开销相当大,这种方式也能带来无与伦比的运行时性能:
Torch7 的神经网络包中也提供了这一实现。只要可用内存充足,使用这一采用创新设计、可利用多核CPU架构的实现都是更有利的。
21.2.6 OpenMP支持
开放式多处理(OpenMP)是适用于C++和Fortran语言的共享内存CPU并行化框架,几乎支持所有操作系统和编译器工具链。将其集成到现有项目中通常仅需极少的修改。Torch7 在设计开发过程中,针对其张量库和神经网络包中的各类操作使用了OpenMP指令。尽管OpenMP规范的细节超出了本文的讨论范围,但下面我们展示最常用的OpenMP指令之一:针对for循环的并行化:
c
// private makes a copy for each thread
#pragma omp parallel for private(i)
for (i=0; i<N; i++)
{
a[i] = i*i;
}
如果没有第2行的omp parallel for指令,这段代码将仅使用单个线程运行至结束。但由于每个循环迭代相互独立,只需在现有代码中添加一行极简单的代码即可将该计算并行化到多个核心上。Torch7 会自动检测编译器是否支持OpenMP指令,并编译一个高级包,该包增加了多线程张量操作、卷积功能以及若干神经网络类。从单线程代码切换到多线程代码对用户完全透明,仅需向torch可执行文件传递-l openmp参数即可。开启该选项后,Torch7 默认会使用支持OpenMP的函数调用(如果可用)。要使用的线程数可以通过以下两种方式指定:将"OMP_NUM_THREADS"环境变量设置为期望的数值:
bash
# export OMP_NUM_THREADS=4
或是在Lua中通过torch.setNumThread(4)函数指定。此外,还可以通过以下函数调用临时启用或禁用OpenMP:
lua
torch.setNumThreads(1)
torch.setNumThreads(N)
BLAS操作的多线程依赖于Torch7所链接的具体BLAS库。例如,英特尔的MKL库也使用OpenMP来并行化3级BLAS操作。在nn神经网络包中,卷积层、tanh和sigmoid等最常见的非线性函数、平均/求和/最大等池化操作,以及求和、平方模块等其他多种基础操作都实现了并行化。对于所有应用逐元素操作的模型,并行化的实现几乎和上面的示例一样简单。对于带有多个输入输出特征图的卷积层等更复杂的模块,函数求值过程会按输出特征图并行化,从而同时计算每个输出特征。针对卷积核计算梯度时,操作会按卷积核并行化;针对输入计算梯度时,操作会按输入特征图并行化。采用这一策略,卷积网络架构的性能提升几乎可以达到线性水平。
21.2.7 CUDA支持
CUDA(计算统一设备架构)是英伟达用于对其图形处理器编程以执行通用计算任务的框架。CUDA对外暴露了图形处理器可用的内存层级,其中两种主要内存分别是外部大容量高延迟的DRAM,以及内部共享内存(仅数KB大小,低延迟)。CUDA还对外暴露了计算核心的层级结构,以及核心之间、核心与不同类型内存之间的交互方式。与普遍认知不同,我们发现编写CUDA代码(核函数)可以大幅简化。要获得不错的性能非常容易,最简单的核函数相较于普通C代码就能带来令人满意的加速效果。需要了解并谨慎处理的只有三点:理解共享内存与线程之间的交互;理解内存合并,以最大化来自外部DRAM的带宽;理解处理单元的层级结构,以便在块和线程之间高效分配工作负载。一旦理解这些概念,就足以让我们编写出自己的2D卷积实现,在输入足够大的情况下,该实现在GTX580上的运算速度约为200GFLOPs。对于较小的输入,我们的OpenMP + SSE实现仍更高效。值得一提的是,Torch7采用了一种高效且通用的方法来实现各类CUDA核函数。如后续章节所示,这一策略在多数情况下都能带来最佳性能。但如果在特定假设(例如特定的输入或算子的形状与尺寸)下开发CUDA核函数,也有可能获得更优的性能。尽管具备性能优势,这类情况通常需要大量的开发工作,且产生的模块无法复用,因此并不适合通用机器学习库的需求。
一旦使用CUDA构建,Torch7会提供一种新的张量类型:
torch.CudaTensor。这种特殊类型的张量存储在GPU的DRAM内存中。所有在标准张量上定义的运算符也都适用于CudaTensor,完全屏蔽了图形处理器的使用细节。下面是一个简单示例,展示了该接口的便捷性:
lua
-- lives in the CPU's DRAM
tf = torch.FloatTensor(4,100,100)
-- lives in the GPU's DRAM
tc = tf:cuda()
-- performed by the GPU
ts_mul(3)
-- res lives in the CPU's DRAM
res = tc:float()
除了张量的主要运算符之外,还提供了所有基于矩阵的运算符,以及大多数标准卷积例程。
基准测试
在本节中,我们分析了Torch7 在两种不同场景下的效率:首先是矩阵-矩阵乘法基准测试场景,然后是训练各类神经网络的场景。为此,我们将Torch7 与Numpy和Theano进行了对比。我们选择Numpy作为参考基准,因为它是Python生态中广泛使用的数值计算库,而Python本身也是一门广泛使用的脚本语言。Theano \[1] 是一款基于Python和NumPy构建的数学表达式编译器,已被证实性能优于许多神经网络实现,因此是非常合适的对比基线。我们的实验选择了各软件的最新版本:Theano 0.15 、NumPy 1.6 以及SciPy 0.10。
衡量解释型语言的开销
神经网络和多数数值算法的大部分计算时间都消耗在用于执行线性代数运算的BLAS调用上。为此,我们展示了Torch7及其底层C库TH的效率。Torch 的数值例程采用了分层的简单设计。第一层是提供高级张量包(TH)的高效C库。TH库采用模板化设计,支持选择不同的精度。可用类型包括Byte(无符号字符)、Char(字符)、
图21.4. 使用C语言、Torch7的torch包、Torch7的nn包、Numpy和Theano进行矩阵乘法性能的基准测试。测试在两台各搭载6个计算核心的Intel Xeon X5690 CPU的机器上进行,已禁用超线程技术。我们测试了使用1、2、4、8和12个CPU核心的多线程计算场景。性能以处理耗时(秒)为单位衡量,因此数值越低表现越好。我们测试了以下数据类型:16位整数、32位整型、64位长整型、32位单精度浮点数和64位双精度浮点数。
TH库除了标准C库之外,不依赖Lua或其他任何语言,因此也适合被依赖高效数值运算程序的其他项目使用。选用C语言是经过深思熟虑的,选用Lua同样如此。由于TH仅使用C语言,因此几乎可以在任何编程环境中编译,包括手机、数字信号处理器、嵌入式系统等。TH为大量BLAS运算提供了接口,同时如果没有可用的BLAS库,也为所有函数提供了手写编码的实现。此外,它还提供了多种最常用的线性代数例行程序(LAPACK)的接口。
TH的上层第二层是torch包,它将TH集成到Lua中。torch包中的所有TH数学运算都通过Lua语言提供接口。最后,nn包基于torch包提供了一个模块化、速度快且高效的神经网络库。
有人可能会认为这种分层架构会带来不少开销。为了量化每一层引入的开销,我们选择了矩阵乘法作为测试用例,因为它是线性代数中最常用的运算之一,我们使用不同尺寸的矩阵和不同编程层进行了测试。我们使用了100×100和1000×1000的矩阵,分别测试了直接调用TH库的纯C程序、torch库,以及Torch7中nn包的无偏置线性层,同时也包含了使用Numpy包和Theano的测试。我们使用英特尔MKL库编译了所有包,以获得最佳性能,最大化CPU多线程的优势。
从图21.4给出的结果可以看出,TH、Torch7或nn库带来的开销非常小,即使对于小尺寸矩阵也是如此。尽管Python会引入稍多一点的开销,但对于大尺寸矩阵,所有配置下的开销都可以忽略不计。
机器学习包对比
在最近的一篇论文1中,作者介绍了一个基于Python和Numpy构建的数学表达式新编译器。而Theano目前主要用于神经网络框架。Theano既可以在CPU上运行,也可以在GPU上运行。Theano的作者展示了相关基准测试结果(涉及多种神经网络架构的训练),将运行在GPU上的Theano与其他替代实现方案对比,包括Torch5、搭载GPUmat的Matlab(运行在GPU上)和EBLearn¹²。
| 层 | 32×32输入 | 96×96输入 | 256×256输入 | 输出特征图数(F. Maps) |
|---|---|---|---|---|
| 1.c 卷积 | 5×5 | 7×7 | 7×7 | 6 |
| 1.p 最大池化 | 2×2 | 3×3 | 5×5 | 6 |
| 2.c 卷积 | 5×5 | 7×7 | 7×7 | 16 |
| 2.p 最大池化 | 2×2 | 3×3 | 4×4 | 16 |
| 3.l 全连接 | - | - | - | 120 |
| 4.o 全连接 | - | - | - | 10 |
为了公平对比,我们让Numpy和Theano依赖的SciPy、Torch7都链接英特尔MKL库进行编译。最新版本的Theano也支持部分运算直接链接MKL(无需经过Numpy),我们也对此进行了精细配置。实验在搭载12核心的Intel Xeon X5690上运行,我们可选地使用了Nvidia Tesla M2090 GPU。
按照文献1中的基准测试套件,我们测试了三种多层感知器的训练:
- 输入维度784、类别数10、交叉熵损失函数、无隐藏层;
- 尺寸为500的单隐藏层;
- 三个尺寸为1000的隐藏层。
同时我们也测试了三种卷积神经网络(如表21.1所示)在32×32、96×96和256×256输入图像上的训练,严格遵循文献1中给出的架构。我们使用的优化算法是纯随机梯度下降(SGD)和批次大小为60的小批量随机梯度下降。我们对比了所有架构在单CPU核心、使用OpenMP的多核心以及GPU上的运行表现。需要注意的是,Theano不支持OpenMP。但由于通过Numpy调用的英特尔MKL库支持使用OpenMP进行多线程运算,因此它在多层感知器基准测试中仍能实现加速。
如图21.5所示,Torch7在大多数基准测试中比Theano更快。有趣的是,对于使用纯SGD训练的小规模架构,Theano的表现较差(图21.5左列),这可能正如上一节提到的,是Python带来的开销导致的。另一个值得注意的点是,OpenMP实现的性能相比GPU实现出人意料地更好。
从图表中可以看出,只有规模最大的网络架构才能从GPU的使用中获益。另外值得一提的是,对于使用批次训练的32×32输入卷积神经网络,Theano的GPU实现优于Torch7。在特定条件下,GPU优化可能通过提供显著的加速获益;然而,它们也需要投入大量的开发精力来覆盖较小的输入域。在卷积神经网络实验中,我们还包含了第二个Torch7基准测试TorchMM。该实现使用了21.2.5节中解释的、用于执行卷积的矩阵乘法运算。可以看出,该实现的表现显著优于Theano和Torch7的其他模型,包括GPU实现。
21.3 高效优化启发式方法
如第18章所述,过去几年数据集的规模增长速度超过了处理器的速度提升速度。因此在估计神经网络参数时,使用能够适配规模增长的优化流程至关重要。近年来,神经网络优化方法的研究已成为一个重要课题2,4,8,7。
Torch7提供了一个灵活的框架,专门用于简化神经网络优化算法的开发。我们考虑监督学习的场景:此时存在一个包含N个样本的训练集\((x_n, y_n)\),其中\(x_n\)是观测到的输入向量,\(y_n\)是我们希望预测的输出目标向量。我们考虑损失函数\(l(\hat{y}_n, y_n)\),它用于衡量当真实标签为\(y_n\)时,预测结果\(\hat{y}_n\)对应的损失值。同时我们考虑带有可训练参数\(w\)的预测器\(f_w(x_n)\)。学习任务可定义为找到向量\(w\),使得其在全体训练集上的损失函数\(L\)最小:
这种通用的损失最小化形式可使用多种优化方法轻松实现,例如共轭梯度下降(CG)、BFGS算法或有限内存BFGS、Levenberg-Marquardt方法,或简单的随机梯度下降(SGD)。在Torch7中,这些启发式方法可通过一个统一的思想轻松实现:将函数\(f_w\)的形式与优化流程解耦。通过将所有可训练参数整合为单个参数向量,并使用尺寸相同的梯度向量,神经网络的类型与结构对开发者完全透明。结合Lua强大的闭包机制,开发者可以开发出优化算法 B. C. 奥利里、K. 基茨曼和C. 茨乌
图11.2: 在完成多轮数据采集后,训练集上"任务"的实例化。2004年与2005年数据的训练集和测试集均采用类似方式构建。2004年训练集使用了1-0(P)以及2004和2005年的训练CDDA;2005年训练CDDA集使用了1-0(P)和2005年训练CDDA。
12.5 从线性回归到神经网络:学习率调度
对于大多数当代神经网络模型(例如ResNet架构),以下代码可在Python(和NumPy)中运行,格式如下:
python 1 train = [x * 0.5**0.5] 2 def func(x): 3 return 1 4 train = [x * 0.5**0.5] 5 train = [x * 0.5**0.5] 6 train = [x * 0.5**0.5] 7 train = [x * 0.5**0.5] 8 train = [x * 0.5**0.5] 9 train = [x * 0.5**0.5] 10 train = [x * 0.5**0.5]
以及一个损失函数。如果你是开发者,可能希望使用学习率调度器来调整模型的学习率,下面是一个实现该功能的简单示例。
13.2.2 梯度累积
使用梯度累积时,重要的是使用能够根据训练循环的步数调整学习率的学习率调度器,下面是一个实现该功能的简单示例。
11.7 结论
本文主要研究了与低阶数组相关的难题。我们指出,对于\(\Sigma_2\)的(即包含一个\(\Sigma_2\)公式的\(\Sigma_2\)的),这类难度不会消失。然而,对于\(\Sigma_2\)的公式,如果它属于\(\Sigma_2\),那么它就属于\(\Sigma_2\)。
21.1 结论
本文中,我们研究了与高阶数组相关的难题。我们指出,对于\(\Sigma_2\)的(即包含一个\(\Sigma_2\)公式的\(\Sigma_2\)的),这类难度不会消失。然而,对于\(\Sigma_2\)的公式,如果它属于\(\Sigma_2\),那么它就属于\(\Sigma_2\)。
我们还要感谢Yann LeCun和Léon Bottou分享他们在SN、Lush方面的工作,以及给予的支持和建议。最后,我们感谢James Bergstra公开了他的基准测试代码。^15 ^15 http://www.github.com/jaberg/DeepLearningBenchmarks
参考文献
-
1 Bergstra, J., Breuleux, O., Bastien, F., Lamblin, P., Pascanu, R., Desjardins, G., Turian, J., Bengio, Y.: Theano:一个CPU与GPU数学表达式编译器。载于:Python科学计算会议论文集,SciPy (2010)
-
2 Bottou, L.: 基于随机梯度下降的大规模机器学习。载于:Lechevallier, Y., Saporta, G.(编)第19届计算统计学国际会议(COMPSTAT 2010)论文集,法国巴黎,第177--187页。施普林格(2010年8月)
-
3 Bottou, L., LeCun, Y.: SN:联结主义模型模拟器。载于:NeuroNimes 1988会议论文集,法国尼姆(1988)
-
4 Le, Q.V., Coates, A., Prochnow, B., Ng, A.Y.: 深度学习优化方法研究。《学习》,第265--272页(2011)
-
5 LeCun, Y., Bottou, L.: Lush参考手册。技术报告(2002),代码,http://lush.sourceforge.net
-
6 LeCun, Y., Bottou, L., Orr, G.B., Müller, K.-R.: 高效反向传播。载于:Orr, G.B., Müller, K.-R.(编)NIPS-WS 1996。LNCS,第1524卷,第9--50页。施普林格,海德堡(1998)
-
7 Martens, J.: 基于Hessian自由优化的深度学习。载于:第27届国际机器学习会议(ICML)论文集,第951卷(2010)
-
8 Vinyals, O., Povey, D.: 深度学习的Krylov子空间下降法。arXiv预印本arXiv:1111.4259 (2011)
更好的表示:不变性、解耦与复用
前言
在许多情况下,有标签的数据量有限,无法完全确定需要学习的函数。当有标签数据稀缺时,学习算法会同时面临欠拟合与过拟合问题:学习算法开始"捏造"不存在的规律(过拟合),同时无法建模真实的规律(欠拟合)。极端情况下,这会表现为完美记忆训练数据,却完全无法泛化到新数据。接下来的五章将介绍解决欠拟合过拟合问题的各类技巧,包括向模型强制注入不变性以提升信噪比的方法、用于解耦变化因子的预训练方法,以及如何使用辅助任务学习共享表示。
在图像识别领域,我们已知一个优秀的分类器应具备平移不变性、旋转不变性、尺度不变性等特性。卷积神经网络7是由卷积层和池化层组成的特殊网络,能够在多个尺度上显式实现平移不变性,可通过标准反向传播进行训练。也可以逐层以无监督方式构建卷积网络9。第22章3表明,在此背景下,k-means是学习卷积滤波器尤其高效的方法。另一种向模型注入所需不变性的方式,是使用原始样本的平移、旋转或扭曲版本生成的人工训练样本,该思路在第23章2中介绍。一套设计精良的变换可以生成数量极多的人工样本,显著提升神经网络的泛化能力。当不变性并非绝对时,情况会变得复杂:例如,手写数字"1"仅在特定角度内具有旋转不变性,超过该角度后可能与手写数字"7"混淆。卷积网络和生成人工样本两种方法在手写数字识别、小图像分类等任务上都能取得优异效果,组合使用两种技术还能获得更高的性能。不幸的是,这些方法仅适用于不变性已知的场景。在最一般的情况下,不变性是未知的,需要借助其他技巧来提升学习到的表示质量。可以通过先学习无监督模型改进表示5,这一步需要用到大量无标签数据。无监督预训练的目标是构建一个解耦了变化因子的网络。第二步中,有监督学习者只需从解耦后的因子集合中,选取最能够预测目标任务的那些因子即可。无监督预训练将复杂的非线性建模负担转移到了通常数量大得多的无标签数据上。这种两步方法被证明能够显著缓解欠拟合过拟合问题5,4,提升手写数字和音素识别的性能。学习无监督表示的成熟算法是受限玻尔兹曼机。第24章6逐步讲解了如何成功训练该模型,以及如何选择多个超参数。第25章8表明,在训练过程中始终保持模型居中,能够促进更复杂的深度玻尔兹曼机的学习。这五章的结尾探讨了使用辅助任务提升神经网络所学解的问题。如第8章1所述,这可以通过在多个相关任务间共享内部表示(及其关联参数),并用反向传播训练得到多任务网络来实现。第26章10介绍了多任务学习的一种变体,其中辅助任务不是由一组标签定义,而是由样本间的一组两两相似度定义,这一扩展极大地拓宽了多任务学习的适用范围。
Grégoire & Klaus
参考文献
使用K-Means学习特征表示
亚当·库茨、安德鲁·吴恩达
斯坦福大学,美国加利福尼亚州斯坦福市,邮编94306
摘要。目前已有许多算法可以从无标签数据(尤其是图像)中学习深层层次的特征。在很多场景下,这些算法涉及多层特征网络(例如神经网络),这类网络往往训练和调参难度高,很难高效扩展至多台机器上运行。近年研究发现,K-Means聚类可作为快速的替代训练方法。该方法的核心优势是速度极快,且易于大规模部署。但另一方面,该方法在实际应用时并非完全易用:K-Means存在若干局限性,需要合理组合多项技巧才能让系统良好运行。本章将总结相关的最新成果,以及利用K-Means聚类学习大规模图像表示所需的技术技巧,同时将这些结果与其它知名算法关联,明确K-Means最适用的场景,并阐述其行为相关的直观认知,为系统调试和新系统研发提供参考。
22.1 引言
机器学习的核心目标之一是学习适用于各类下游任务的深层层次特征。例如,面对一组无标签图像,许多现有算法会尝试贪婪地学习连续多层特征,让后续的分类任务(如目标识别)更易完成。学界的主流做法是:先使用无监督学习算法对无标签数据训练模型,再基于训练结果从数据中提取有价值特征35, 21, 31。但由于无监督学习方案的选择差异,这些系统往往难以达到理想效果:其存在大量超参数,且缺乏足够的调参直观认知。近年我们发现,在这类"特征学习"流水线中使用K-Means聚类作为无监督学习模块,可以获得优异效果,性能往往可媲美顶尖的现有系统11。本章将回顾部分相关研究,同时补充有助于搭建大规模特征学习系统的实用技巧与观察结论。
计算机视觉领域的研究者早已证实,K-Means是从图像中学习特征的成功方法。计算机视觉学界流行的"特征袋"模型13, 28与本章将使用的流水线高度相似,二者的多数结论可以互换------仅优化目标不同,但都会生成码向量\(s^{(i)}\)与字典\(\mathcal{D}\),实现类似的目标。但从实验效果来看,稀疏编码在许多应用场景下的表现更优:例如在经典特征袋模型中用稀疏编码替换K-Means,已被证明可显著提升图像识别效果39。不过尽管K-Means算法简单,但由于其速度快、可扩展性强,仍然是学习特征非常有用的算法。
稀疏编码在学习过程中需要为每个\(s^{(i)}\)反复求解凸优化问题36, 15, 32,因此大规模部署的成本极高。相比之下,上述算法中使用的\(s^{(i)}\)的最优解非常简单,如式(22.1)所示:
\ s_j\^{(i)} = \\begin{cases} \\mathcal{D}\^{(j)\\top} x\^{(i)} \& \\text{if } j == \\arg \\max_l \|\\mathcal{D}\^{(l)\\top} x\^{(i)}\| \\\\ 0 \& \\text{otherwise.} \\end{cases} \\
(22.1) 由于该计算过程速度极快(且给定\(s\)求解\(\mathcal{D}\)的过程也十分简单),我们可以通过交替优化\(\mathcal{D}\)和\(s\)快速训练出非常大的字典。此外,K-Means除聚类中心数量\(k\)外,没有其他需要调参的参数,因此相对容易落地运行。令人惊讶的是,只要加入其他文献中较少提及的若干技巧,K-Means学习得到的大字典往往能在实践中取得非常好的效果。本章将介绍这些技巧,以及它们的作用原理和对结果的影响的相关直观认知。本项研究大多以图像(或图像块)作为算法的输入数据,但相关基础原理同样适用于其他类型的数据。
22.2 数据、预处理与初始化
我们初始使用的数据集由小图像块组成。为便于说明,我们选用16×16像素的灰度图像块,将其表示为256维像素强度向量(即\(x^{(i)} \in \mathcal{R}^{256}\)),彩色图像块也可采用类似方式处理。这类图像块可以从无标签图像中随机裁剪16×16的区域得到。为了构建"完备"字典(即至少包含256个聚类中心的字典),我们需要确保有足够的图像块,让每个聚类都能分配到合理数量的输入。对于16×16的灰度图像块,10万张(\(m = 100,000\))即可满足需求。实践中,训练K-Means字典通常需要更多 数据,而其他算法(如稀疏编码)则不需要这么多,因为每个数据点最终仅会归属于1个聚类中心。不过训练速度的优势通常可以轻松抵消这部分额外的成本。为方便表述,我们假设所有数据点被放置在矩阵\(X \in \mathcal{R}^{n \times m}\)的列中。(类似地,我们用矩阵\(S\)表示由式(22.1)中的码向量\(s^{(i)}\)作为列构成的矩阵。)
22.2.1 预处理
在针对输入数据点\(x^{(i)}\)运行学习算法前,对图像块的亮度和对比度进行归一化是有必要的:具体而言,对每个\(x^{(i)}\)减去其像素强度的均值,再除以标准差。为防止除以零并抑制噪声,我们会在方差上加上一个极小值。对于取值范围在\(0, 255\)的像素强度,给方差加10通常是不错的起始选择:
\ x\^{(i)} = \\frac{\\tilde{x}\^{(i)} - \\text{mean}(\\tilde{x}\^{(i)})}{\\sqrt{\\text{var}(\\tilde{x}\^{(i)}) + 10}} \\
其中\(\tilde{x}^{(i)}\)是未归一化的图像块,"mean"和"var"分别是\(\tilde{x}^{(i)}\)各元素的均值和方差。
图22.1 (a) 未做白化处理时,K-Means从自然图像中学习到的聚类中心。(b) 展示白化对K-Means结果影响的示意图。左侧:未白化的数据,聚类中心容易受相关数据的影响而产生偏差;右侧:白化后的数据,聚类中心更趋于正交。(c) 从白化后的图像块中学习到的聚类中心。
归一化处理后,我们可以尝试在新输入图像块上运行K-Means算法。得到的聚类中心(即字典\(D\)的列)以图像块的形式可视化在图22.1a中。可以看到K-Means倾向于学习低频边缘类聚类中心。这一结论在过去已被多次复现16, 37, 2。但不幸的是,这类聚类中心在识别任务中的表现往往较差11。对此的一种解释是:即使经过亮度和对比度归一化,相邻像素之间的相关性(即图像中的低频变化)仍然非常强。在这种相关性的影响下,K-Means倾向于生成大量高度相关的聚类中心,而非将聚类中心分散开,更均匀地覆盖数据分布。图22.1b左侧展示了该问题的示意图。为解决这一问题,我们应该使用白化(也称为"球化")对输入数据进行重缩放,以消除这些相关性22。这会使K-Means倾向于在正交方向上分配更多聚类中心,如图22.1b右侧所示。白化变换的一个简单选择是ZCA白化变换:如果\(V D V^\top = \text{cov}(x)\)是数据点\(x\)的协方差矩阵的特征值分解,那么白化后的点可通过\(V(D + \epsilon_{\text{ZCA}}I)^{-1/2} V^\top x\)计算得到,其中
\(\epsilon_{zca}\) 是一个极小的常数。对于对比归一化的数据,16×16 像素块将 \(\epsilon_{zca}\) 设为 0.01、8×8 像素块设为 0.1 是不错的起始选择。注意该数值设置过小会导致高频噪声被放大,提升学习难度。由于数据旋转不会改变 K-means 的表现,也可使用其他白化变换,例如仅与 ZCA 存在一个旋转差异的 PCA 白化。
在经白化的图像块上运行 K-means 可获得锐利的边缘特征,与稀疏编码、ICA 等方法提取的特征类似,如图 22.1c 所示。这种「归一化-白化-K-means 聚类」的流程是开箱即用的无监督学习模块,可适配多种特征学习场景。后续我们默认:对任何新数据应用 K-means 时,都会经过本节描述的归一化与白化处理。但需注意,归一化和白化步骤中的 \(\epsilon\) 参数针对新数据源可能需要进行调整,这类参数最好通过交叉验证确定,也常可通过人工目视调整(例如调整至得到高对比度、无过多噪声、无过多低频起伏的图像块)。
22.2.2 初始化
标准 K-means 聚类算法需要做小幅调整以避免空簇等常见问题,其中关键考量之一是质心的初始化。虽然通常会将 K-means 初始化为从数据中随机抽取的样本,但该方法已被证实效果较差。由于图像在部分区域的分布可能过于密集,随机选择图像块初始化 K-means 会导致大量质心的初始位置高度接近,其中许多质心最终会沦为近空簇------因为单个簇会积攒密集区域内的所有数据点。
更优的方案是从正态分布中随机初始化质心,再将其归一化为单位长度。由于白化阶段的存在,我们预期数据的重要成分已被重新缩放到近似球形分布,因此将质心初始化为球面上的随机向量并非糟糕的起点。此外还有不少可提升 K-means 表现的名牌启发式方法可用,例如在其他实现中广泛使用的「空簇重初始化」启发式策略。实际应用中,上述初始化方案在图像数据上的表现相对较好,出现空簇时通常用随机样本重新初始化质心就足够解决问题,且空簇出现频率很低。
^1 事实上,对于可扩展性足够的实现,我们可以训练大量质心,直接丢弃数据点过少的簇。
^1 通常,大量空簇的出现说明白化或归一化参数调整不当,或是数据维度过高,超出了 K-means 的有效处理范围。
另一项初始化改进步骤是采用非模糊更新,针对连续、梯度和有限集合的图像对象,按如下公式计算:
\ \\theta_2 = \\frac{\\int_{\\Omega} \|N'(x, y)\| \\cdot I(x, y) \\cdot \\phi(x, y) \\, dxdy}{\\int_{\\Omega} \|N'(x, y)\| \\cdot \\phi(x, y) \\, dxdy} \\
\ \\theta_3 = -\\text{normalization}(\\partial_{xy}) \\
由于中心差分不再影响图像的「黑度」,\(\theta_2\) 通道的图像拥堵程度会降低,引入阈值与处理进一步平衡两者可能获得更好效果。
-
最大化极值:\(y_2 = \frac{\int_{\Omega} m(x, y) \, dxdy}{\sqrt{\int_{\Omega} m(x, y)^2 \, dxdy}}\)
-
输入项:\(\{\Gamma_1\} = c_1\left(I_1(x, y) \cdot I(x, y) + c_2 \cdot (\partial_{xy} \cdot I(x, y) + c_3)\right)\)
-
局部性收敛(通常为 10 倍时刻):当 \(y \neq 0\) 时,\(y' = y^2 + x^2\);否则 \(y_2 = y^2 + x^2\)。
22.3 与稀疏特征学习的对比
作为前述多视图表示的对应方法,稀疏特征学习旨在以稀疏方式表示原始信号。由于原始信号通过自身特征进行表达,我们既可以将该过程解释为从原始信号到特征信号的映射(函数),也可以将其解释为从信号特征到信号本身特征的映射。
22.3 不同投影体系的图像
图 22.3 展示了笛卡尔、球极、立体三种不同空间坐标系下的图像,三幅图显示的是同一数据:与 \(y\) 轴垂直的直线 \(y=0.5\)。球极投影图像和立体投影图像在正负 \(y\) 值下存在明显的不对称性,且这种不对称性在负 \(y\) 值下更为突出。当 \(y\) 接近 1.0 时,立体投影下的图像比球极投影图像更弯曲;在 \(y=0.5\) 时,图 22.3 中的图像也比球极投影图像更弯曲。
图 22.4 (a) 对比了 4 种不同方法提取的滤波器应用到自然图像块上时的线性滤波器响应分布。K-means 倾向于学习具有极稀疏响应特性的滤波器,与稀疏编码类似------稀疏度远高于随机选择的图像块或随机初始化的滤波器。(b) 展示了从 64×64 像素块学习到的「质心」。在该尺度下 K-means 难以应用,因为大量簇会变为空簇或单例簇。对于高维输入(例如成百上千维),这种权衡是有利的,因为额外的数据需求远低于其带来的大幅训练加速收益。但对于极高维度的场景,稀疏编码等其他算法可能表现更好甚至速度更快。
22.4 图像识别应用
上述讨论提供了将 K-means 转化为简单特征学习方法的必要基础。给定一批无标签数据,我们现在可以学习字典 \(\mathcal{D}\),其列可对数据点产生或多或少的稀疏投影。和稀疏编码一样,我们可以用学习到的字典(质心)为监督学习任务定义特征35。图像识别领域常用的流水线(易于与学习到的特征适配)基于计算机视觉文献中的经典空间金字塔模型13, 28, 39, 11,在很多方面与单层卷积神经网络29, 30 类似。该流水线的主要组件包括:
-
无监督训练算法(本案例中为 K-means),生成滤波器库 \(\mathcal{D}\);
-
函数 \(f : \mathcal{R}^n \rightarrow \mathcal{R}^k\),在由 \(k\) 个滤波器组成的字典下,将输入图像块 \(x \in \mathcal{R}^n\) 映射为特征向量 \(y \in \mathcal{R}^k\)。例如,我们可以选择 \(f(x; \mathcal{D}) = g(\mathcal{D}^T x)\),其中 \(g(\cdot)\) 是逐元素非线性函数。
使用学习得到的特征提取器 \(f(x; \mathcal{D})\),给定任意 \(p \times p\) 像素的图像块,我们现在可以计算该块的特征表示 \(y \in \mathcal{R}^k\)。
2.2 随机游走与模拟退火算法
在N维空间中,随机游走(Random Walk)的状态由随机向量\(x_t\)表示。在每一步,我们依据当前状态\(x_t\)和转移概率\(p(x_t | x_{t-1})\)生成下一个状态\(x_{t+1}\)。
对于\(N=3\)的情况,若\(p(x_t | x_{t-1})\)服从均匀分布(即所有状态等概率),则\(p(x_t | x_{t-1})\)在\(x_t\)的所有可能取值上均为\(1/(N^2-1)\)。
在\(N=3\)时,\(p(x_t | x_{t-1})\)的分布具有对称性,即\(p(x_t | x_{t-1}) = p(x_{t-1} | x_t)\)。
在除图像等易可视化数据之外的其他类型数据(例如训练多层网络,其中高层特征难以可视化)上应用K-means时,很难判断其效果是否优良。因此,建议通过交叉验证选择\(p\),或将其设置为使传入K-means的数据维度保持较小(通常不超过几百,具体取决于所用数据量)。对于图像块,6×6或8×8像素(彩色或灰度)块在上述流程中表现始终优异。根据所选池化方法的不同,步长和池化区域的选取方式也可能存在差异。这些领域已有大量相关研究成果6, 5, 4, 12, 24, 18。
根据我们的经验,对于单层特征,在若干大小相同的区域上进行平均池化(例如2×2或3×3网格)在实际应用中通常表现良好,是图像识别的一个不错"首选方案"。
此外,算法学习的特征数量\(k\)对结果有显著影响。已有大量研究18, 11表明,学习大量特征可大幅提升监督分类效果。事实上,在考虑数据需求的前提下,通常最好将\(k\)设置为计算资源允许的最大值。尽管当\(k\)极大时性能通常趋于饱和,但增大\(k\)是从已构建系统中挤出少量额外性能的非常有效的方法。这一趋势,加上K-means在构建超大词典时的特殊高效性,是上述系统的主要优势。
特征"编码"函数\(f(x; \mathcal{D})\)的选择也会对识别性能产生重大影响。例如,可考虑"硬分配"。
22.4.2 编码器
遗憾的是,许多为计算机视觉任务设计的编码方案计算成本可能极高。多数方案需要求解难以优化的优化问题才能计算\(f(x; \mathcal{D})\)34, 40, 20, 7。另一方面,部分编码器是滤波器响应\({}^\top x\)的简单非线性函数,计算速度极快。
过往研究表明,稀疏编码这类算法在基准测试中通常表现最优39, 4。然而,在某些场景下可使用更简单的编码方案。具体来说,当我们使用上述单层架构、且标注数据极少时,稀疏编码及其更复杂的变体(例如尖峰-平板稀疏编码20)很难被超越。但从图22.6可见,当标注数据多得多时,稀疏编码与非常简单的非线性 编码器之间的性能差异显著缩小。
不出所料的是,随着使用的标注数据量增加,监督学习阶段会占据主导,且对大多数合理编码器的效果相当。基于这一观察,应用设计者应考虑可用标注数据的数量。若标注数据充足,快速前馈编码器表现良好(且是最适合大数据集的方案)。但如果标注数据稀缺,使用成本更高的编码方案是值得的。在大规模场景中,我们发现软阈值非线性\(f(x; \mathcal{D}, \alpha) = \max\{0, \mathcal{D}^\top x - \alpha\}\)(其中\(\alpha\)为可调常数)表现十分优异。相比之下,S型非线性(例如\(f(x; \mathcal{D}, b) = (1 + \exp(-\mathcal{D}^\top x + b))^{-1}\))在类似场景中表现明显更差33, 12。
22.5 局部感受野与多层结构
我们此前多次提及将K-means应用于高维数据时遇到的困难。如22.4.1节所述,我们应仔细选择图像块大小\(p\)(即"感受野"大小),以避免超出K-means的建模能力(如图22.4b所示)。若处理超大尺寸图像,一次性将K-means应用于整个输入通常效果不佳。^2 相反,将K-means应用于\(p\)×\(p\)像素的子块是合理的替代方案,因为我们预期大多数学习到的特征会局限于一个小区域。这一"技巧"可使传入K-means的输入尺寸保持相对较小(例如灰度块仅\(p^2\)个输入维度),但仍可在更大图像上使用得到的滤波器,方法是将滤波器重复用于图像的每个\(p\)×\(p\)像素子块;甚至(若因某些原因图像其他部分的特征差异极大)可独立对每个\(p\)×\(p\)区域重新运行K-means。
尽管该方法在计算机视觉应用中已广为人知,但同样的技巧在更广泛的场景下均适用,在某些情况下甚至是构建可用系统所必需的。
图22.7. (a) 由独立采样的图像块对拼接而成的数据集。(b) 从图像块对训练得到的质心。注意,正如预期的那样,K-means学习的滤波器每次仅涉及输入的一半。由于维度升高,与分别训练每个图像块相比,需要多得多的数据。(c) 由图像-深度对构成的数据集。每个示例的左半部分是白化灰度块,右半部分是"深度图像"27,其中像素强度表示表面到相机的距离。(d) 从图像-深度对联合学习得到的质心仅学到若干弱特征,会同时使用两种模态,原因与(b)类似。
考虑一种情况:我们的输入实际上是两个独立信号的拼接。具体而言,我们从更大的数据集中随机抽取两个图像块,将它们并排拼接,如图22.7a所示。当我们在这种类型的数据上运行K-means时,最终得到的质心如图22.7c所示,其中单个质心倾向于仅建模两个独立分量中的一个,这与我们从ICA中得到的结果完全一致。不幸的是,如前所述,要获得这一结果,我们实际需要的标注数据比分别建模两个图像块时更多。因此,只要我们能先验确定输入变量可分成独立的分块,就应立即尝试将它们分开,并对每个分块单独运行K-means。注意,这里设计的人为构造示例在真实应用中也会出现,例如从RGB-Depth数据中学习特征2:图22.7a显示了强度图像与深度块拼接的示例,图22.7d显示了从中学习到的质心。由于在此尺度下 C. Cohen 和 L.Y. Sh
22.1.1 深度神经元网络
深度神经网络是一个深度管道,它会使用其外部模型从输入到大脑的软件模型将文本转换为文本。该管道是一个深度网络,它将文本作为管道的输入,使用其外部模型从输入到大脑的软件模型将文本转换为文本。我们还需要考虑使用其外部模型从输入到大脑的软件模型将文本转换为文本的深度网络的数量。使用其外部模型从输入到大脑的软件模型将文本转换为文本的管道,也是使用其外部模型从输入到大脑的软件模型将文本转换为文本的管道。我们还需要考虑使用其外部模型从输入到大脑的软件模型将文本转换为文本的深度网络的数量。使用其外部模型从输入到大脑的软件模型将文本转换为文本的管道,也是使用其外部模型从输入到大脑的软件模型将文本转换为文本的管道。我们还需要考虑使用其外部模型从输入到大脑的软件模型将文本转换为文本的深度网络的数量。使用其外部模型从输入到大脑的软件模型将文本转换为文本的管道,也是使用其外部模型从输入到大脑的软件模型将文本转换为文本的管道。我们还需要考虑使用其外部模型从输入到大脑的软件模型将文本转换为文本的深度网络的数量。使用其外部模型从输入到大脑的软件模型将文本转换为文本的管道,也是使用其外部模型从输入到大脑的软件模型将文本转换为文本的管道。我们还需要考虑使用其外部模型从输入到大脑的软件模型将文本转换为文本的深度网络的数量。使用其外部模型从输入到大脑的软件模型将文本转换为文本的管道,也是使用其外部模型从输入到大脑的软件模型将文本转换为文本的管道。我们还需要考虑使用其外部模型从输入到大脑的软件模型将文本转换为文本的深度网络的数量。
图22.5 下表给出了计算数字 n=0 到 10^5 各位数字之和的各种方法的比较。
| 方法 | 和 | 时间(秒) |
|---|---|---|
| 方法1 | 2.5 | 0.01 |
| 方法2 | 1.2 | 0.05 |
| 方法3 | 0.5 | 0.02 |
图22.6 下表给出了计算数字 n=0 到 10^5 各位数字之和的各种方法的比较。
| 方法 | 和 | 时间(秒) |
|---|---|---|
| 方法1 | 2.5 | 0.01 |
| 方法2 | 1.2 | 0.05 |
| 方法3 | 0.5 | 0.02 |
图22.7 下表给出了计算数字 n=0 到 10^5 各位数字之和的各种方法的比较。
| 方法 | 和 | 时间(秒) |
|---|---|---|
| 方法1 | 2.5 | 0.01 |
| 方法2 | 1.2 | 0.05 |
| 方法3 | 0.5 | 0.02 |
表 22.1。在CIFAR-10(完整数据集)上的结果
| 架构 | 准确率(%) |
| :--- | ---: |
| 1层 | \(\bf{78.3\%}\) |
| 1层(4800个映射) | ◯ 80.6% |
| 2层(单感受野) | \(\underline{\bf{77.4\%}}\) |
| 2层(随机感受野) | \(\bf{77.6\%}\) |
| 2层(学习感受野) | 80.1% |
| 3层(学习感受野) | \(\underline{82.0\%}\) |
| VQ(6000个映射)**12** | ◯ \(81.5\%\) |
| 卷积深度信念网络 26 | 78.9% |
| 深度神经网络 8 | \(80.49\%\) |
| 多列深度神经网络 | \(87.7\%\) |
表 22.2。在CIFAR-10(每类400个示例)上的结果
| 架构 | 准确率(%) |
| :--- | ---: |
| 1层 | ◯ \(\bf{64.6\%}\) (\(\pm\) 0.8%) |
| 1层(4800个映射) | 63.7% (\(\pm\) 0.7%) |
| 2层(单感受野) | 67.3% (\(\pm\) 0.3%) |
| 2层(随机感受野) | \(\underline{65.9\%}\) (\(\pm\) 0.*%) |
| 3层(学习感受野) | \(\underline{69.8\%}}\) (\(\pm\) 0.*%) |
| 稀疏编码(1层)**12** | 66.9% (\(\pm\) 0.8%) |
| VQ(1层) | 61.0% |
表 22.3。STL-10上的分类结果
| 架构 | 准确率(%) |
| :--- | ---: |
| 1层 | \(\underline{\bf{54.3\%}} \pm 0.8\%\) |
| 2层(单感受野) | 51.6% (\(\pm\) ?%) |
| 2层(随机感受野) | 59.9% (\(\pm\) 0.1%) |
| 2层(学习感受野) | 58.4% (\(\pm\) 0.3%) |
| 3层(学习感受野) | 61.8% (\(\pm\) ?%) |
| VQ(1层)\*\*\* | \(54.9\% \pm 0.4\%\) |
K-means在深度网络中表现良好(在这些网络中,我们通常仅使用未标记数据来构造特征)。在标记训练数据有限的场景中,仅从未标记数据训练更有用。表22.2和表22.3展示了在CIFAR-10数据集(每类仅使用400个标记示例)和STL-10 11数据集(每类仅有100个标记)上进行的类似实验结果。尽管监督更少,结果仍非常相似:感受野的糟糕选择几乎完全抵消了多层特征训练的优势,但使用上述简单的感受野选择技术,我们能够使用K-means成功构建多达3层的有用特征。
22.6 结论
在本章中,我们回顾了许多结果、观察和技巧,这些对于构建以K-means作为可扩展无监督学习模块的特征学习系统非常有用。我们在本章涵盖的主要考虑因素总结如下,从业人员在开始新应用前应牢记这些因素:
-
均值和对比度归一化输入。
-
使用白化对数据进行"球面化",注意适当设置ε参数。如果由于输入维度限制无法执行白化,应拆分输入变量。
-
从高斯噪声中随机初始化K-means中心并归一化。
-
使用阻尼更新以帮助避免空簇并提高稳定性。
-
注意维度和稀疏性对K-means的影响。K-means倾向于通过寻找"重尾"方向来发现输入数据的稀疏投影。然而,当数据未适当白化、输入维度非常高或数据不足时,其性能可能会很差。
-
随着维度升高,K-means需要显著增加的数据量,这可能会抵消其速度优势。
-
系统中的外生参数(池化、编码方法等)对最终性能的影响可能比学习算法本身更大。在得出结论认为需要更昂贵的学习方案之前,应考虑将计算资源用于对参数进行更多交叉验证。
-
当使用本章描述的图像识别流水线时,只要有足够的训练数据,使用更多中心几乎总是有帮助的。事实上,每当有更多计算资源可用时,这应该是最先尝试的方法。
-
当标记数据丰富时,找到一个廉价的编码器,让监督学习系统完成大部分工作。如果标记数据有限(例如每类数百个示例),昂贵的编码器可能效果更好。
-
让我们考虑这样一种可能性:当今的条件是这样的,宇宙中大量的"不重要"特征使得有可能创造当今的条件,这就使得对少数几个特征来说是必要的。宇宙的"不重要"特征是这样的,它使得对少数几个特征是必要的。宇宙的"不重要"特征是这样的,它使得对少数几个特征是必要的。宇宙的"不重要"特征是这样的,它使得对少数几个特征是必要的。宇宙的"不重要"特征是这样的,它使得对少数几个特征是必要的。宇宙的"不重要"特征是这样的,它使得对少数几个特征是必要的。
参考文献
14 Dhillon, I.S., Modha, D.M.: 利用聚类对大型稀疏文本数据进行概念分解。《机器学习》42(1),143--175(2001)
15 Efron, B., Hastie, T., Johnstone, I., Tibshirani, R.: 最小角回归。《统计学年鉴》32(2),407--499(2004)
16 Fei-Fei, L., Perona, P.: 用于学习自然场景类别的贝叶斯层次模型。载于:计算机视觉与模式识别,第2卷,第524--531页(2005)
17 Garrigues, P., Olshausen, B.: 具有拉普拉斯尺度混合先验的组稀疏编码。载于:神经信息处理系统进展,第23卷,第676--684页(2010)
18 van Gemert, J.C., Geusebroek, J.-M., Veenman, C.J., Smeulders, A.W.M.: 场景分类的核码本。载于:Forsyth, D., Torr, P., Zisserman, A.(编)ECCV 2008,第三部分。LNCS,第5304卷,第696--709页。施普林格,海德堡(2008)
19 Glorot, X., Bordes, A., Bengio, Y.: 深度稀疏修正神经网络。载于:第14届人工智能与统计学国际会议,第315--323页(2011)
20 Goodfellow, I., Courville, A., Bengio, Y.: 用于无监督特征发现的尖峰-平板稀疏编码。载于:深度学习与无监督特征学习NIPS研讨会(2011)
21 Hinton, G., Osindero, S., Teh, Y.: 深度信念网络的快速学习算法。《神经计算》18(7),1527--1554(2006)
22 Hyvärinen, A., Hurri, J., Hoyer, P.: 自然图像统计。施普林格(2009)
23 Hyvärinen, A., Oja, E.: 独立成分分析:算法与应用。《神经网络》13(4-5),411--430(2000)
24 Jarrett, K., Kavukcuoglu, K., Ranzato, M., LeCun, Y.: 对象识别的最佳多阶段架构是什么?载于:第12届计算机视觉国际会议,第2146--2153页(2009)
25 Krizhevsky, A.: 从小图像中学习多层特征。硕士论文,计算机科学系,多伦多大学(2009)
26 Krizhevsky, A.: CIFAR-10上的卷积深度信念网络(2010)(未发表手稿)
27 Lai, K., Bo, L., Ren, X., Fox, D.: 大规模层次多视角RGB-D物体数据集。载于:机器人与自动化国际会议,第1817--1824页(2011)
28 Lazebnik, S., Schmid, C., Ponce, J.: 超越特征袋:用于识别自然场景类别的空间金字塔匹配。载于:计算机视觉与模式识别(2006)
29 LeCun, Y., Boser, B., Denker, J.S., Henderson, D., Howard, R.E., Hubbard, W., Jackel, L.D.: 反向传播应用于手写邮政编码识别。《神经计算》1,541--551(1989)
30 LeCun, Y., Huang, F.J., Bottou, L.: 用于具有姿态和光照不变性的通用对象识别学习方法。载于:计算机视觉与模式识别,第2卷,第97--104页(2004)
31 Lee, H., Grosse, R., Ranganath, R., Ng, A.Y.: 用于层次表示可扩展无监督学习的卷积深度信念网络。载于:第26届机器学习国际会议,第609--616页(2009)
35 Raina, R., Battle, A., Lee, H., Packer, B., Ng, A.:自我监督学习:从未标注数据中迁移学习。载于:第24届国际机器学习大会,第759--766页(2007年)
36 Tibshirani, R.:基于套索的回归收缩与变量选择。《皇家统计学会B辑(方法论)》,第267--288页(1996年)
37 Varma, M., Zisserman, A.:基于图像块示例的材料分类统计方法。《模式分析与机器智能汇刊》第31卷第11期,第2032--2047页(2009年)
38 Wang, J., Yang, J., Yu, K., Lv, F., Huang, T., Gong, Y.:用于图像分类的局部约束线性编码。载于:计算机视觉与模式识别大会,第3360--3367页(2010年)
39 Yang, J., Yu, K., Gong, Y., Huang, T.S.:基于稀疏编码用于图像分类的线性空间金字塔匹配。载于:计算机视觉与模式识别大会,第1794--1801页(2009年)
40 Yu, K., Zhang, T., Gong, Y.:基于局部坐标编码的非线性学习。载于:神经信息处理系统大会进展,第22卷,第2223--2231页(2009年)
41 Zetsche, C., Krieger, G., Wegmann, B.:视觉的基本单元:笛卡尔坐标还是极坐标?《美国光学学会志》第16卷第7期,第1554--1565页(1999年)
42 Zhou, X., Yu, K., Zhang, T., Huang, T.S.:基于局部图像描述符超向量编码的图像分类。载于:Daniilidis, K., Maragos, P., Paragios, N. 编。ECCV 2010,第五部分。LNCS第6315卷,第141--154页。海德堡:施普林格出版社(2010年)
用于数字识别的深度大型多层感知机
Dan Claudiu Cîreșan1,2,Ueli Meier1,2,Luca Maria Gambardella1,2,Jürgen Schmidhuber1,2
1 瑞士马诺-卢加诺加莱里亚2号,IDSIA(人工智能研究所)
2 瑞士卢加诺大学与瑞士提契诺应用科学大学(SUPSI)
摘要。 竞争激烈的MNIST手写数字识别基准测试自1998年以来不断刷新纪录。其他研究者的最新进展停留在8年前(错误率0.4%)。我们使用经典的在线反向传播算法训练普通多层感知机,仅用单个MLP就在MNIST手写数字基准测试上取得了0.35%的极低错误率,使用7个MLP组成的集成模型后错误率更是降至0.31%。我们取得2011年的最优结果仅需:足够多的隐藏层、每层足够多的神经元、大量变形后的训练图像以避免过拟合,以及用于大幅加速训练过程的图形处理单元(GPU)。
关键词: NN(神经网络)、MLP(多层感知机)、GPU(图形处理单元)、训练集变形、MNIST1、集成模型、BP(反向传播)。
1 http://yann.lecun.com/exdb/mnist/
注:本研究综合了此前已发表的3篇论文6,7,22。
23.1 引言
自动手写识别兼具学术价值与商业价值。当前算法在学习识别手写数字方面已经表现优异:邮政部门用它来分拣信件,银行用它来读取个人支票。MNIST21是应用最广泛的孤立手写数字识别基准测试。十余年前,被称为多层感知机(MLP)的人工神经网络35,20,29是最早用于MNIST测试的分类器之一。当时的MLP大多层数较少,或每层人工神经元(单元)数量较少21,但显然那已经是当时可实现的最大规模MLP------彼时CPU核心的速度至少比现在慢20倍。近期一项仅含800个单元单隐层的MLP达到了0.70%的错误率33。然而,MNIST网页上列出的更复杂方法始终表现优于MLP,整体趋势也转向越来越复杂的支持向量机变体。为突破这一局限,我们训练了层数极多、每层神经元数量也极多的大规模MLP,并将它们集成为集成模型;同时我们使用现代图形处理单元(GPU)来保证训练可行性。我们希望训练集的不同子集之间差异(不相关性)尽可能大2。我们证明,对于手写数字识别任务,通过在训练前对数据进行不同方式的归一化,再训练相同的分类器,即可实现这一目标。
23.2 数据集
MNIST包含两个数据集,其中一个用于训练(共60000张图像),另一个用于测试(共10000张图像)。许多研究会将训练集划分为两个子集:50000张用于训练,10000张用于验证。我们的网络使用在线生成的轻微变形图像进行训练,因此我们可以将整个未变形的训练集用于验证,不会浪费训练样本。原始灰度图像的像素强度范围是0(背景)到255(最大前景强度)。每张图像的\(28 \times 28 = 784\)个像素会被映射到-1.0, 1.0区间的实数值,转换公式为\(\left(\frac{\text{pixel\_intensity}}{127.5} - 1.0\right)\),再输入神经网络的输入层。
23.3 网络架构
我们训练了5个MLP,隐藏层数量从2到9层不等,每层隐藏单元数量也各不相同。除部分情况外,每层隐藏单元数量会逐层向输出层递减(见表23.3)。这些模型的自由参数(即权重或突触)数量在134万到1211万之间。我们使用标准的在线反向传播(BP)30算法,不采用动量项,但使用可变学习率:每个训练轮次后学习率按乘法常数递减,从\(10^{-3}\)逐步降至\(10^{-6}\)。权重初始化为-0.05, 0.05区间的均匀随机分布。每个神经元的激活函数为缩放双曲正切函数:\(y(a) = A \tanh(Ba)\),其中\(A = 1.7159\),\(B = 0.6666\)21,输出层使用softmax函数。只要选择合理的参数,权重初始化方式和退火速率并不会对结果产生过大影响。
23.4 图像变形以获得更多训练样本
截至目前,MNIST上的最优结果均通过变形训练图像获得33,该方法可大幅增加训练样本数量,使得训练具有大量权重的网络时不会出现过拟合。我们结合了仿射变形(旋转、缩放和水平剪切)与弹性变形(见图23.1),相关实值参数定义如下:
-
\(\sigma\)和\(\alpha\):用于模拟手部肌肉不受控颤动的弹性畸变参数33;
-
\(\beta\):从\(-\\beta, +\\beta\)区间随机取值的角度,可表示旋转或水平剪切。若为剪切变形,\(\tan \beta\)表示水平位移与图像高度的比值;
-
\(\gamma_x, \gamma_y\):水平与垂直缩放参数,从\(1 - \\gamma/100, 1 + \\gamma/100\)区间随机选取。
**图
ef{fig:mnist_deformation}。** 原始数字(顶部)及变形后的数字(底部)。该数字通过中间展示的四种不同的位移场进行变形。
每个仿射变形完全由对应的实值参数定义,该参数从均匀分布的区间中随机抽取。而构建弹性变形场则分为三个步骤:1)生成初始随机畸变向量场;2)用标准差为\(\sigma\)的高斯核卷积随机畸变场以对其进行平滑;3)用弹性缩放参数\(\alpha\)对平滑后的变形场进行缩放。
由于数字1和7形态相近,因此它们的旋转与剪切角度(\(\beta=7.5^{\circ}\))比其他数字更小。对60000张MNIST训练图像进行变形共需83秒CPU时间,其中大部分(75秒)用于弹性变形。仅耗时最少的的部分处理。MNIST训练集被划分为60000个按顺序处理的小批量,每个批量包含100个样本。MNIST数字从原始的\(28 \times 28\)像素缩放至\(29 \times 29\)像素,以获得合适的中心,简化卷积计算。每个批量
2.1.5 将连接线的字面网格映射到数据流上
连接线及其部分操作数。
图 23.3. 训练委员会成员。原始 MNIST 训练数据(左侧数字)在训练前进行归一化(WN 10),得到中间所示数字。归一化后的数据针对每个训练轮次进行扭曲(D),并作为网络(NN)的输入(右侧所示数字)。图中每个展示的数字均代表整个训练集。
所选批次
六个委员会仅在训练前的数据归一化方式(或不进行归一化)以及训练期间的数据变形方式上存在差异。委员会的组建方式为对相应输出取均值,如图 23.4 所示。前两个实验在未变形的原始 MNIST 图像上进行:我们使用原始 MNIST 数据训练了一个由 7 个多层感知机(MLP)组成的委员会,同时也组建了一个在归一化数据上训练的多层感知机委员会。表 23.1 列出了每个独立网络和委员会的错误率。就第一个实验而言,委员会相较于独立网络的提升微乎其微。加入归一化后,第二个实验中的独立专家以及对应的委员会都获得了显著更高的识别率。为研究归一化与变形的综合效应,我们在变形的 MNIST 数据上开展了四项额外实验(表 23.1)。除非另有说明,均使用默认的弹性变形参数 \(\sigma = 6\) 和 \(\alpha = 36\)。所有使用变形图像的实验均采用最大 12.5% 的独立水平和垂直缩放,以及 \\pm12.5° 的最大旋转。
23. 用于数字识别的深度大尺寸多层感知机
表 23.1 独立网络及两个最终委员会的错误率。
实验 1 中,7 个随机初始化的网络在原始 MNIST 数据上训练;实验 2 中,7 个随机初始化的网络在宽度归一化数据上训练:WN x - 将边界框宽度归一化为 x 像素;ORIG - 原始 MNIST。
| 网络 | 实验 1 错误率 % | 实验 2 错误率 % |
| :--- | :--- | :--- |
| Net 1 | init 1:1.79 | WN 10:1.62 |
| Net 2 | init 2:1.80 | WN 12:1.37 |
| Net 3 | init 3:1.77 | WN 14:1.48 |
| Net 4 | init 4:1.72 | WN 16:1.53 |
| Net 5 | init 5:1.91 | WN 18:1.56 |
| Net 6 | init 6:1.86 | WN 20:1.49 |
| Net 7 | init 7:1.75 | ORIG:1.79 |
| 平均值 | 1.70 | 1.31 |
实验 3 与实验 1 类似,仅数据会持续变形。独立专家的错误率远低于未进行变形的场景(表 23.1)。实验 4 中,我们为每个独立专家随机重新选择训练集和验证集,以此模拟自助聚合技术 3。最终得到的委员会性能略优于实验 3 的委员会。实验 5 中,我们为每个独立网络调整变形参数:部分网络的错误率高于实验 3 和实验 4,但最终得到的委员会错误率更低。最后一个实验中,我们在训练期间会持续变形的宽度归一化图像上训练了 7 个多层感知机(MLP)。该委员会的错误率(0.43%)是这类简单架构迄今所报告的最佳结果。我们得出结论,宽度归一化对于委员会取得良好性能至关重要,即仅通过不同初始化的已训练网络组成委员会(实验 3),或在原始数据集的子集上训练的已训练网络组成委员会(实验 4),不足以取得理想效果。
23.6 使用 GPU 训练深度多层感知机
通过采用简单技巧------例如在每个训练轮次开始时通过随机扭曲生成近乎无限量的训练数据,组建在经不同预处理的数据上训练的专家委员会------我们仅使用相对较小的单隐藏层多层感知机(800 个隐藏单元)就在 MNIST 数据集上取得了最先进的结果。本文报告的结果使用的是深度多层感知机,其隐藏层多达 5 层,自由参数高达 1200 万,训练这样的模型成本极高。
表23.2 单个网络与最终委员会的错误率 。在实验3和实验4中,7个随机初始化的网络在变形(\(\sigma = 6, \alpha = 36\))的MNIST数据集上训练,其中实验4会重新选择训练集与验证集。实验5中,7个随机初始化的网络在变形(不同\(\sigma\)、\(\alpha\))的MNIST数据集上训练;实验6中,7个随机初始化的网络在宽度归一化的变形(\(\sigma = 6, \alpha = 36\))MNIST数据集上训练。WN x 表示边界框宽度归一化为x像素;ORIG 表示原始MNIST数据集。
| 网络 | 初始化方式 | 实验3 | 实验4 | 实验5 | 实验6 |
|-----|----------------|--------|--------|--------|--------|
| 网络1 | 初始化1 | 0.72 | 0.68 | \(\sigma = 4.5, \alpha = 36\): 0.69 | WN 10: 0.64 |
| 网络2 | 初始化2 | 0.71 | 0.82 | \(\sigma = 4.5, \alpha = 42\): 0.94 | WN 12: 0.78 |
| 网络3 | 初始化3 | 0.72 | 0.73 | \(\sigma = 6.0, \alpha = 30\): 0.55 | WN 14: 0.70 |
| 网络4 | 初始化4 | 0.71 | 0.69 | \(\sigma = 6.0, \alpha = 36\): 0.72 | WN 16: 0.60 |
| 网络5 | 初始化5 | 0.62 | 0.71 | \(\sigma = 6.0, \alpha = 42\): 0.60 | WN 18: 0.59 |
| 网络6 | 初始化6 | 0.65 | 0.70 | \(\sigma = 7.5, \alpha = 30\): 0.86 | WN 20: 0.70 |
| 网络7 | 初始化7 | 0.69 | 0.75 | \(\sigma = 7.5, \alpha = 36\): 0.79 | ORIG: 0.71 |
| 平均值 | | 0.56 | 0.53 | 0.49 | 0.43 |
权重规模最高达1200万的网络可通过普通梯度下降成功训练,经过20-30轮迭代后测试错误率可低于1%,训练时长不到2小时。这类网络可在当前CPU上运行,也可在GPU上于数天内完成训练。所有仿真均在配备Core i7 920 2.66GHz处理器、12GB内存和GTX 480显卡的计算机上完成。GPU将变形程序的速度提升了10倍(仅弹性变形针对GPU做了优化):前向传播(FP)与反向传播(BP)程序的速度提升了50倍。我们选择验证集错误率最低的训练好的多层感知机(MLP),并在MNIST测试集上评估其性能。
23.6.1 单个多层感知机
我们训练了多种多层感知机(MLP)并将结果汇总于表23.3。训练初始学习率为\(10^{-3}\),每轮迭代后乘以0.997,直到降至\(10^{-6}\),因此总共需要超过2000轮迭代,即使是规模最大的网络也可在数天内完成计算。最佳网络的错误率仅为0.35%(10000个数字中错分35个),优于此前发表的最佳结果,即0.39%26和0.40%33,这两个结果均通过更复杂的方法获得。35个错分数字如图23.5a所示,其中多数模棱两可或非典型,存在明显缺失部分、奇怪笔画等问题。有趣的是,该网络的次优预测结果在35个错分数字中的30个上是正确的。该多层感知机的最佳测试错误率更低(0.32%),可视为网络的最大容量,即当我们不追求验证集最低错误率时,网络可学习到的性能上限。增加隐藏层数量、提升每层单元数可明显提升模型性能:例如网络5比网络4拥有更多但规模更小的隐藏层(见表23.3)。
表23.3 MNIST测试集错误率。网络架构:841个输入神经元,隐藏层分别包含2500、2000、1500、1000和500个神经元,10个输出神经元。TEfBV 表示最佳验证集对应的测试错误率,BTE 表示最佳测试错误率。
| ID | 架构(每层神经元数量) | TEfBV % | BTE % | 仿真时间 h | 权重规模 百万 | 无失真测试错误率 % |
|----|------------------------------------------------|-----------|---------|---------------------|--------------------|-------------------------------|
| 1 | 1000, 500, 10 | 0.49 | 0.44 | 23.4 | 1.34 | 1.78 |
| 2 | 1500, 1000, 500, 10 | 0.46 | 0.40 | 44.2 | 3.26 | 1.85 |
| 3 | 2000, 1500, 1000, 500, 10 | 0.41 | 0.39 | 66.7 | 6.69 | 1.73 |
| 4 | 2500, 2000, 1500, 1000, 500, 10 | 0.35 | 0.32 | 114.5 | 12.11 | 1.71 |
| 5 | 9 × 1000, 10 | 0.44 | 0.43 | 107.7 | 8.86 | 1.81 |
权重规模最高达1200万的网络可通过普通梯度下降成功训练,经过20-30轮迭代后测试错误率可低于1%,训练时长不到2小时。参数量如此之多的网络为何能在未见过的测试集上表现良好?答案是:训练集的持续变形生成了几乎无限的训练样本,网络几乎不会两次看到同一张训练图像。不做任何失真处理时,所有网络的错误率约为1.7%-1.8%(表23.3最后一列)。
图23.5 错分数字,以及两个最可能的预测结果(底部,从左到右)和MNIST标注的正确标签(顶部,右侧):(a) 表23.3中的最佳网络;(b) 表23.4中的委员会。
23.6.2 多层感知机委员会
本节列出采用在MNIST上取得0.35%错误率的架构的多层感知机委员会结果(输入层含841个神经元,5个隐藏层分别包含2500、2000、1500、1000和500个神经元,10个输出神经元)。我们使用相同架构在归一化数据(训练前将数字宽度归一化)上额外训练了6个网络,通过平均各个网络的预测结果组成委员会(见表23.4)。如第23.5节所示,宽度归一化对委员会取得良好性能至关重要。所有委员会成员会在每轮迭代前对其宽度归一化的训练数据集进行变形。有趣的是,这个极其简单的委员会错误率仅为0.31%,低于单个网络的错误率。这是使用多层感知机在MNIST数据集上已报道的最佳结果。31个错分数字中的多数(见图23.5b)模棱两可或非典型,存在明显缺失部分、奇怪笔画等问题。值得注意的是,委员会的次优预测结果在31个错分数字中的29个上是正确的。
表23.4 宽度归一化多层感知机的委员会错误率
| 指标 | WN 10 | WN 12 | WN 14 | WN 16 | WN 18 | WN 20 | 原始MNIST |
|--------|-------|-------|-------|-------|-------|-------|----------------|
| 测试错误率 % | 0.52 | 0.45 | 0.44 | 0.49 | 0.36 | 0.38 | 0.35 |
| 委员会错误率 % | | | | | | | 0.31 |
23.7 讨论
近几十年来,每欧元对应的原始计算能力每十年增长100-1000倍。我们的结果表明,持续的硬件进步可能比算法和软件的发展更为重要(尽管未来属于结合两者优势的方法)。在使用古老算法------在线反向传播训练大型深度神经网络时,当前显卡(GPU)的速度已经比标准微处理器快50倍以上(权重更新速率最高达\(7.5 \times 10^9\)/秒,单个训练网络的总更新次数超过\(10^{15}\)次)。在竞争激烈的MNIST手写基准测试中,基于单精度浮点GPU的神经网络超过了所有此前报道的结果,包括那些通过更复杂方法获得的结果,这些方法涉及专用架构、无监督预训练、多个机器学习分类器的组合等。通过适当变形图像可获得足够大的训练集以避免过拟合。当然,该方法并不局限于手写识别,显然在众多视觉及其他模式识别问题上都具有巨大潜力。已知大型卷积神经网络结合最大池化32,可在拉丁字母8、中文字符11、交通标志9,12、3D模型立体投影10,11甚至小型自然图像11等大量基准测试中,将最先进水平提升30-80%。
致谢
本工作的部分研究起始于Dan Cireșan在蒂米什瓦拉"Politehnica"大学攻读博士学位期间。他感谢其博士生导师Ștefan Holban的指导,以及Răzvan Moșincat为MNIST提供的CPU框架。本工作部分得到瑞士技术创新委员会(CTI)项目编号9688.1 IFF:智能表单填充的资助,以及FP7-ICT-2009-6欧盟资助项目(项目代码270247:认知机器人的神经动力学框架:场景表征、行为序列与学习)的支持。
附录 - GPU实现
图形处理单元
直到2007年,编程GPU的唯一方式是将问题求解算法转换为一系列图形操作。尽管编码难度高、调试困难,但在GPU速度超过CPU后,仍开发了多种基于GPU的神经网络(NN)实现。此前已经有人在GPU上实现了两层MLP34和卷积神经网络(CNN)5。尽管加速效果相对有限,但这些研究展示了GPU在机器学习领域的应用潜力。最近基于GPU、采用批量模式训练的CNN比基于CPU的CNN快两个数量级32。GPU代码使用CUDA(计算统一设备架构)编写,这是一种类C的通用编程语言。GPU的速度和内存带宽远高于CPU,是快速实现MLP的关键。如需全面了解我们的算法在GPU/CUDA层面的原理,请访问NVIDIA官网25。根据CUDA术语定义,CPU被称为主机,显卡被称为设备或GPU。
变形
上述变形流程中最耗时的部分------与高斯核的卷积33------被移植到了GPU上。MNIST训练集被划分为600个顺序处理的批次。MNIST数字从原始的28×28像素缩放到29×29像素,以获得合适的中心,简化卷积操作。图像网格包含290×290个单元,经零填充后扩展至300×300,从而在应用大小为21×21的高斯卷积核时避免边缘效应。我们的GPU程序将大量线程归为一个块,块内线程共享同一个高斯核和部分随机场。每个块包含21(核大小)×10个线程,每个线程负责计算卷积操作的一个垂直条带(清单23.1)。
第592页 D.C. Cireşan 等人
列表23.1 弹性形变卷积核
c
__global__ void ConvolveField(float* randomfield, int width, int height, float* kernel, float* outputfield, float elasticScale){
const int stride_k = GET_STRIDE(GAUSSIAN_FIELD_SIZE, pitch_x >> 2); // stride for gaussian kernel 1
__shared__ float K[GAUSSIAN_FIELD_SIZE][stride_k]; // kernel (21 x 32 values)
__shared__ float R[GAUSSIAN_FIELD_SIZE + 9][GAUSSIAN_FIELD_SIZE]; // random field (30×21 values)
int stride_in = GET_STRIDE(width, pitch_x >> 2); // random field stride as a multiple of 2^?
int stride_out = GET_STRIDE(height, pitch_x >> 2); // output stride, as a multiple of 2^?
// loading gaussian kernel into K (21x32 values)
K[0 + threadIdx.y][threadIdx.x] = kernel[(0 + threadIdx.y) * stride_k + threadIdx.z]; // rows 0-9
if(threadIdx.y == 9) K[20 + threadIdx.y][threadIdx.x] = kernel[(20 - threadIdx.y) * stride_k + threadIdx.z]; // rows 10-19
// loading random field into R
R[10 + threadIdx.y][threadIdx.x] = randomfield[(10 * blockIdx.y + threadIdx.y) * stride_in + blockIdx.x + threadIdx.z]; // 10-19: 20 x 21 values
K[20 + threadIdx.y][threadIdx.x] = randomfield[(10 * blockIdx.y + 20 + threadIdx.y) * stride_in + blockIdx.x + threadIdx.z]; // 20-29: 10 x 21 values
__syncthreads(); // wait until everything is read into shared memory
#pragma unroll (GAUSSIAN_FIELD_SIZE - 1)
if(threadIdx.z == 0) { // the first column of threads computes the final values of the convolution
float sum = 0.0f;
for(int i = 0; i < GAUSSIAN_FIELD_SIZE; i++) {
sum += K[threadIdx.y][i] * R[i][threadIdx.x];
}
sum *= elasticScale;
outputfield[blockIdx.x * height + threadIdx.y] = sum;
}
}
训练算法
我们严格遵循标准反向传播(BP)算法30,仅将delta(误差项)的反向传播与权重更新解耦并顺序执行,这使得每个例程内可实现更高的并行度。
前向传播
该算法分为两个内核,权重矩阵\(W\)的划分方式如图23.6所示。
图23.6. 前向传播:a) 内核1网格映射到填充后的权重矩阵;b) 内核2网格映射到部分点积矩阵;c) 前向传播的输出
内核1
每个块包含256个线程(图23.6a),每个线程计算32维分量向量的部分点积。点积结果被存储在临时矩阵中(图23.6b)。该内核具有极高的吞吐量:平均内存带宽达115 GB⋅s。这一性能得益于大量相对较小的块可以持续保持GPU繁忙。每个块使用共享内存存储上一层的激活值,由每个块的前32个线程同时读取,随后供所有256个线程使用。线程同步后,部分点积被并行计算(列表23.2)。通过预计算所有通用索引部分,将指令数控制在最低水平。
内核2
线程网格(图23.6b)仅包含一行由warp线程组成的块,因为每个线程需要计算完整的点积(图23.6c),随后将其送入激活函数。该内核(列表23.2)对于每个神经元传入连接数少于1024的层效率很低,尤其是仅包含10个神经元(每个数字对应一个)的最后一层。此时其网格仅包含1个块,仅占用GTX 480 GPU 6%的资源。
讲座21.3.1 反向传播(第一部分)
本教程适用于PyTorch 1.8和2.0,使用示例数据集演示实现。该实现执行从网络层到上一层的简单反向传播,由于损失项的存在,需要堆叠两层网络。
python
global var_batch_norm = False
def forward(self, x):
if self.batch_norm:
x = self.affine(x)
if self.batch_norm:
x = self.affine(x)
return x
列表23.2 反向传播内核
内核1
二维网格被划分为包含32个warp线程的块。内核首先从\(W\)中读取一个\(32 \times 32\)的块,共享内存块的步长设为33(warp + 1),从而避免所有存储体冲突,显著提升运行速度。随后读取32个输入delta值,所有因垂直步幅不对应真实神经元的内存位置会被零填充,避免后续计算中出现分支。元素数量固定为warp大小,计算循环被展开以进一步提升速度。执行结束时,每个线程将自身的部分点积写入全局内存。
内核2
该内核通过汇总前一内核计算的部分delta完成delta的反向传播:将最终结果乘以当前神经元状态对应的激活函数导数,再将新的delta写入全局内存。
权重更新
该算法(列表23.4)首先读取对应的delta值,并预计算所有重复表达式。随后前16个线程将状态从全局内存读入共享内存。激活值恒为1.0的"偏置神经元"通过条件语句处理,这部分可通过内嵌条件的表达式进一步优化。线程同步后,每个线程在固定的展开循环中更新16个权重。
列表23.4 权重调整内核
c
__global__ void adjustWeightsFC(float *states, float *deltas, float *weights, float eta, unsigned int ncon, unsigned int nrneur){
const int pitch_y = 16;
const int threads = 256;
unsigned int px = pitch_x >> 2;
unsigned int stride_x = GET_STRIDE(nrneur, px);
float etadeltak = eta * deltas[blockIdx.x * threads + threadIdx.x], t;
int b = blockIdx.y * stride_x * pitch_y + threads * blockIdx.x + threadIdx.x;
__shared__ float st[pitch_y]; // for states
int cond1 = blockIdx.y || threadIdx.x;
int cond2 = (blockIdx.y + 1) * pitch_y <= ncon;
int size = cond2 * pitch_y + !cond2 * (ncon % pitch_y);
if (threadIdx.x < pitch_y) st[threadIdx.x] = cond1 * states[blockIdx.y * pitch_y + threadIdx.x - 1] + !cond1;
__syncthreads();
if (blockIdx.x * threads + threadIdx.x < nrneur) {
#pragma unroll 16
for (int j = 0; j < 16; j++) {
t = weights[b];
t -= etadeltak * st[j];
weights[b] = t;
b += stride_x;
}
}
}
参考文献
-
1 Y. 本吉奥、P. 兰布林、D. 波波维奇、H. 拉罗谢尔:《深度网络的分层贪心训练》. 载于:《神经网络信息处理系统会议论文集》(2006)
-
2 C.M. 毕晓普:《模式识别与机器学习》. 施普林格出版社(2006)
-
3 L. 布赖曼:《Bagging预测器》. 《机器学习》第24卷,123-140页(1996)
-
4 K. 切拉皮拉、M. 希尔曼、P. 西马德:《结合多种分类器以加速光学字符识别》. 载于:H. 布恩克、A.L. 斯皮茨(编),DAS 2006会议论文集,《计算机科学讲义丛书》第3872卷,第358-367页. 海德堡:施普林格出版社(2006)
-
5 K. 切拉皮拉、S. 普里、P. 西马德:《用于文档处理的高性能卷积神经网络》. 载于:《手写识别前沿国际研讨会论文集》(2006)
-
6 D.C. 西雷尚、U. 迈尔、L.M. 甘巴德拉、J. 施密德胡贝尔:《用于手写数字识别的深度、大型、简洁神经网络》. 《神经计算》第22卷第12期,3207-3220页(2010)
-
7 D.C. 西雷尚、U. 迈尔、L.M. 甘巴德拉、J. 施密德胡贝尔:《基于GPU的深度神经网络委员会的手写数字识别》. IDSIA技术报告IDSIA-03-11,提契诺州人工智能研究达勒莫勒研究所(IDSIA)(2011)
-
8 D.C. 西雷尚、U. 迈尔、L.M. 甘巴德拉、J. 施密德胡贝尔:《用于手写字符识别的卷积神经网络委员会》. 载于:《文档分析与识别国际会议论文集》,第1135-1139页(2011)
-
9 D.C. 西雷尚、U. 迈尔、J. 马西、J. 施密德胡贝尔:《用于交通标志分类的神经网络委员会》. 载于:《国际神经网络联合会议论文集》,第1918-1921页(2011)
-
10 D.C. 西雷尚、U. 迈尔、J. 马西、L.M. 甘巴德拉、J. 施密德胡贝尔:《用于图像分类的灵活高性能卷积神经网络》. 载于:《国际人工智能联合会议论文集》,第1237-1242页(2011)
-
11 D.C. 西雷尚、U. 迈尔、J. 施密德胡贝尔:《用于图像分类的多列深度神经网络》. 载于:《计算机视觉与模式识别会议论文集》,第3642-3649页(2012)
-
12 D.C. 西雷尚、U. 迈尔、J. 马西、J. 施密德胡贝尔:《用于交通标志分类的多列深度神经网络》. 《神经网络》第32卷,333-338页(2012)
-
13 D. 德科斯特、B. 肖勒普夫:《不变支持向量机的训练》. 《机器学习》第46卷,161-190页(2002)
-
14 G.E. 辛顿、R.R. 萨拉赫丁诺夫:《利用神经网络降低数据维度》. 《科学》第313期(2006)
-
15 G.E. 辛顿:《识别形状前先学习生成图像》. 《计算神经科学:脑功能的理论洞见》(2007)
-
16 S. 霍赫赖特:《动态神经网络研究》. 慕尼黑工业大学计算机科学研究所Brauer教授课题组硕士论文(1991), http://www7.informatik.tu-muenchen.de/~hochreit ;指导教师:J. 施密德胡贝尔
-
17 S. 霍赫赖特、J. 施密德胡贝尔:《长短期记忆》. 《神经计算》第9卷,1735-1780页(1997)
-
18 S. 霍赫赖特、Y. 本吉奥、P. 弗拉斯科尼、J. 施密德胡贝尔:《循环网络中的梯度流:学习长期依赖的难度》. 载于:S.C. 克雷默、J.F. 科伦(编),《动态循环神经网络指南》. IEEE出版社(2001)
-
19 F. 劳尔、C. 苏恩、G. 布洛赫:《用于手写数字识别的可训练特征提取器》. 《模式识别》第40卷,1816-1824页(2007)
24 训练受限玻尔兹曼机的实用指南
杰弗里·辛顿
多伦多大学
将收录于《机器学习教程》,页码14-67-284
摘要
受限玻尔兹曼机(RBM)已被用作不同尺寸(64×64)图像的生成模型,甚至被用作其他模型的无监督预训练器,已被证实效果相当不错。如今RBM在深度学习中的应用越来越广泛,但仍未在整个数据集上训练,而仅仅在数据子集上训练,这是很大的局限。本文中我们讨论了在完整数据集上训练RBM的多种方法,并将其与其他模型进行对比。
1 引言
受限玻尔兹曼机(RBM)已被用作不同尺寸(64×64)图像的生成模型,甚至被用作其他模型的无监督预训练器,已被证实效果相当不错。如今RBM在深度学习中的应用越来越广泛,但仍未在整个数据集上训练,而仅仅在数据子集上训练,这是很大的局限。本文中我们讨论了在完整数据集上训练RBM的多种方法,并将其与其他模型进行对比。
- ( \langle p_i h_j \rangle_{\mathrm{data}} ) 或 ( \langle p_i, p_j \rangle_{\text{data}} ) G.E. 辛顿
为了避免在小批量大小改变时调整学习率,将小批量上计算得到的总梯度除以小批量大小是很有帮助的,因此我们在讨论学习率时会默认它们乘以在小批量上计算得到的单样本平均梯度,而非小批量的总梯度。使用随机梯度下降时,若小批量设置得过大是一个严重的错误(更多细节参见第1章和第18章)。将小批量大小扩大N倍会得到更可靠的梯度估计,但最大稳定学习率并不会随之扩大N倍,因此净效应是每次梯度评估的权重更新更小⁴。
⁴ 在集群上并行学习的简单方法是将每个小批量划分为更小的子批量,用不同的核心分别计算每个子批量上的梯度,再将不同核心计算得到的梯度合并。为了最小化通信和计算的比例,人们很容易倾向于将子批量设置得较大,但这会大幅降低学习效率,从而抵消使用多核心所取得的大部分收益(Vinod Nair,个人通信,2007年)。
将训练集划分为小批量的方法
对于包含少量等概率类别的数据集,理想的小批量大小通常等于类别数,且每个小批量应包含每个类别的各一个样本,从而降低从单个小批量估计整个训练集梯度时的采样误差。对于其他数据集,先将训练样本的顺序随机打乱,再使用大小约为10的小批量。
学习进度监控
计算数据与重建结果之间的平方差很简单,因此该数值通常会在学习过程中打印输出。整个训练集上的重建误差应在学习初期快速、持续下降,随后增速放缓。由于梯度估计存在噪声,单个小批量上的重建误差在初始快速下降后会轻微波动。使用高动量时,重建误差还会以几个小批量为周期轻微振荡(参见24.9节)。
- 重建误差虽然使用方便,但实际上是非常差的学习进度衡量指标。它不是RBM学习正在近似优化的函数,尤其当n>>1时;并且它系统性地混淆了学习过程中变化的两个不同量。第一个是训练数据的经验分布与RBM平衡分布之间的差异,第二个是交替吉布斯马尔可夫链的混合速率。如果混合速率极低,即使数据和模型的分布差异极大,重建误差也会非常小。随着权重增加,混合速率下降,因此重建误差会降低。G. J. 拉塞尔
在过去五年中,作者们(现就职或曾就职于多伦多大学、卡文迪许实验室、苏联理论物理研究所等国内外机构)一直致力于原子电子结构的研究。我们的主要目标是获得比哈特里-福克方法更精确的原子波函数描述。在本文中,我们将介绍该主题下的一些近期工作,重点关注在原子电子能量计算中变分法的应用。我们使用变分法计算了多种核电荷值下的原子能量,所得结果与实验数据吻合良好。变分法已被证实是计算原子电子能量的非常强大的工具。
24.1 1点法:基于点网络的单侧训练
在本文中,我们证明了1点法能够提升1点法的性能,同时也证明了1点法能够提升1点法的性能,此外我们还证明了1点法能够提升1点法的性能。
表1 1点法与其他方法的对比
24.3 使用相互矛盾的数据源时如何选择统计量
在这两种情况下,我们都会总结特定上下文中所有数据项的集合。大量数据项可以用单个统计量来描述,最常见的统计量是均值、中位数和众数。均值是某一上下文中所有数据项的平均值,也被称为期望值,计算方式如下:
\\\mu = \\frac{1}{n} \\sum_{i=1}\^{n} x_i \\
其中\(\mu\)是均值,\(n\)是数据项的数量,\(x_i\)是第i个数据项。
24.3.1 更新隐状态
我们也可以使用隐状态来更新隐状态,具体做法是将隐状态作为新数据项的参考,隐状态的更新方式如下:
\h_{t+1} = h_t + \\epsilon_t \\
其中\(h_{t+1}\)是t+1时刻的隐状态,\(h_t\)是t时刻的隐状态,\(\epsilon_t\)是t时刻的误差。
24.1 使用重构误差的方法
这是模型选择的第一步。直接使用原始数据是不够的,我们还必须考虑模型过拟合的可能性。
这是模型选择的第二步。如果模型过拟合,我们就需要使用正则化来降低模型复杂度;如果模型欠拟合,我们就需要提升模型复杂度。
24.2 过拟合监控
当我们得到模型后,可以用训练数据估算模型的误差,这被称为训练误差。我们也可以用测试数据估算模型的误差,这被称为测试误差。如果测试误差远大于训练误差,说明模型过拟合。如果训练误差和测试误差都远高于预期误差,说明模型欠拟合。一个主要问题是测试误差远大于训练误差。如果模型过拟合,我们需要使用正则化来降低模型复杂度;如果模型欠拟合,我们需要提升模型复杂度。
24.7 学习率
如果学习率过高,重构误差通常会急剧上升,权重甚至可能发生爆炸。如果网络在正常学习过程中调低学习率,重构误差通常会显著下降。但这并不一定是好事。这部分源于随机权重更新中的噪声水平降低,从长远来看通常还会伴随学习速度变慢的问题。不过,到了学习后期,降低学习率通常是有利的。对多次更新的权重取平均是去除最终权重部分噪声的另一种方法。
设置权重和偏置学习率的方法
设置学习率的一个经验法则是(Max Welling,个人交流,2002):查看权重更新的直方图和权重的直方图,权重更新的幅度应为权重的\(10^{-3}\)倍左右(数量级内允许偏差)。当一个单元的扇入很大时,更新幅度应该更小,因为同方向的许多微小变化很容易逆转梯度的符号。相反,偏置的更新幅度可以更大。
24.8 权重和偏置的初始值
权重通常初始化为来自零均值高斯分布的小随机值,标准差约为0.01。使用更大的随机值可以加快初始学习速度,但可能导致最终模型效果略差。需要特别注意确保初始权重值不会让典型的可见向量将隐藏单元概率推至接近1或0,因为这会显著拖慢学习速度。如果用于学习的统计是随机的,初始权重可以全部设为零,因为统计中的噪声会让即使连接性完全相同的隐藏单元也产生差异。通常建议将可见单元\(i\)的偏置初始化为\(\log\left\\frac{p_i}{1 - p_i}\\right\),其中\(p_i\)是训练向量中单元\(i\)处于激活状态的比例。如果不这样做,学习初期会借助隐藏单元以约\(p_i\)的概率将其激活。使用稀疏目标概率\(p_t\)时(见24.11节),将隐藏偏置初始化为\(\log\left\\frac{t}{1-t}\\right\)是合理的。否则,初始隐藏偏置设为0通常即可。也可以将隐藏单元初始化为约-4的较大负偏置,这是一种鼓励稀疏性的粗略方法。
24.8.1 设置权重和偏置初始值的方法
-
将权重初始化为来自零均值高斯分布的小随机值,标准差为0.01。
-
将隐藏偏置设为0。
-
将可见偏置初始化为\(\log\left\\frac{p_i}{1 - p_i}\\right\),其中\(p_i\)是训练向量中单元\(i\)处于激活状态的比例。
-
偶尔查看隐藏单元的活动状态,确认它们不会始终处于激活或关闭状态。
24.9 动量法
当目标函数包含长、窄且相对笔直的峡谷时,动量法是一种能提升学习速度的简单方法:这类峡谷的谷底有平缓但一致的梯度,而峡谷两侧的梯度则陡峭得多。动量法模拟了一个重球滚下表面的过程:重球会在峡谷谷底加速,但不会横向穿过峡谷,因为峡谷两侧相反的梯度会随着时间相互抵消。动量法不会用估计梯度乘以学习率的结果来更新参数值,而是用该值更新参数的速度\(v\),再将当前速度作为参数的更新量。假设重球的速度会随时间衰减,其中"动量"元参数\(\alpha\)是指计算新小批量梯度后仍保留的上一时刻速度的比例:
\ \\begin{equation} \\Delta \\theta_i(t) = v_i(t) = \\alpha v_i(t-1) - \\epsilon \\frac{dE}{d\\theta_i}(t) \\tag{24.12} \\end{equation} \\
如果梯度保持不变,终端速度会比\(\epsilon \frac{dE}{d\theta_i}\)高\(1/(1-\alpha)\)倍。当动量设为0.9这个典型值时,这个倍数是10。动量法的时间平滑特性避免了峡谷横向的发散振荡,这种振荡原本会由直接将学习率提高\(1/(1-\alpha)\)倍导致。动量法会让参数沿着非最速下降方向移动,因此它与共轭梯度法等方法有些相似,但其使用历史梯度的方式要简单得多。与为每个参数设置不同学习率的方法不同,即使峡谷不与参数轴对齐,动量法也能发挥同样好的效果。另一种理解动量法的方式(Tijmen Tieleman,个人交流,2008)如下:它等价于将学习率提高\(1/(1-\alpha)\)倍,但通过将完整更新量拆分为一系列指数衰减的分期付款,来延迟每个梯度估计的全部效果。这给了系统响应提前分期付款的时间:系统会在感受到全部更新效果前,移动到具有相反梯度的参数区域。反过来说,这允许使用更大的学习率,也不会引发不稳定的振荡。
学习初期,随机的初始参数值可能会产生非常大的梯度,且系统通常不会处于峡谷底部。因此,通常在若干轮参数更新时,最好先设置较低的动量值0.5。这种非常保守的动量设置通常能通过抑制跨峡谷的震荡,让训练过程比完全不使用动量时更稳定4。
24.9.1 动量使用指南
先将动量值设为0.5。一旦重构误差的大幅初始下降转为平稳下降,就将动量值提升至0.9。这种调整可能会导致重构误差出现暂时性上升。如果引发更持续的震荡,就将学习率逐次减半,直到震荡消失。
24.10 权重衰减
权重衰减的运作方式是在普通梯度上额外增加一项。这项额外项是对惩罚大权重函数的导数。最简单的惩罚函数被称为"L2",即权重平方和的一半乘以一个名为权重代价的系数。必须将惩罚项的导数乘以学习率,否则学习率的变化会改变被优化的函数,而非仅仅调整优化过程。
在受限玻尔兹曼机(RBM)中使用权重衰减有四个原因:第一是通过降低对训练数据的过拟合,提升模型对新数据的泛化能力⁶;第二是通过缩小无用的权重,让隐藏单元的接受域更平滑、更易解释;第三是解决训练初期权重过大、导致隐藏单元始终完全开启或完全关闭的"卡死"问题,让这类单元重新发挥作用更好的方式是使用24.11节提到的"稀疏性"目标;第四是提升交替吉布斯马尔可夫链的混合速率。权重较小时,马尔可夫链的混合速度会更快⁷。CD学习算法基于忽略马尔可夫链后续步骤产生的导数的逻辑(Hinton, Osindero and Teh, 2006),因此混合速度快时,它能更好地近似最大似然学习。这些被忽略的导数很小的原因如下:当马尔可夫链非常接近其平稳分布时,对链中样本建模的最优参数与当前参数非常接近。
由于该惩罚项是在每个小批量上应用的,贝叶斯派本应将权重代价除以训练集规模,这样就能把权重衰减解释为高斯权重先验的影响,且该先验的方差与训练集规模无关。不过通常不会进行这种除法操作,而是会针对更小的训练集使用更大的权重代价。
所有权重均为0时,模型仅需一个完整步骤就能达到其相当无聊的平稳分布。
另一种形式的 权重衰减被称为"L1",即使用权重绝对值之和的导数。这通常会导致 大量权重被精确置零,仅允许少数权重长得比较大。这让权重的解释变得更简单 。在训练图像特征时 ,L1权重衰减通常会产生高度局部化的接受域。另一种控制权重规模的方式 是给每个单元的输入权重平方和或绝对值之和设定一个最大允许值。每次权重更新后 ,如果权重超过该最大值,就对权重进行重新缩放。这有助于避免 隐藏单元陷入权重极小的"卡死"状态。不过,稀疏性目标可能是解决这个问题更好的方式。
权重衰减使用指南
针对RBM而言 ,L2权重衰减的权重代价系数的合理取值范围通常是0.01到0.00001。权重代价通常不会作用于隐藏层和可见层的偏置项,因为这类参数的数量少得多,不太可能导致过拟合。此外 ,偏置项有时需要设置得比较大。可以先尝试将初始权重代价设为0.0001。如果你使用退火重要性采样16来估计留出验证集上的密度,可以尝试将权重代价按2的倍数调整以优化密度。权重代价的小幅变化通常不会对模型性能造成显著影响。如果你训练的是联合密度模型,可以在验证集上测试其判别性能,用这个指标替代密度来优化权重代价。不过 ,以上两种情况都满足如下公式:\(q_{\text{new}} = \lambda q_{\text{old}} + (1 - \lambda) q_{\text{current}}\),其中\(q\)是单元在每个小批量中处于激活状态时的平均激活概率。
24.11 鼓励隐藏层稀疏激活
适合使用的自然惩罚项是期望分布与实际分布之间的交叉熵:
\\\text{Sparsity penalty} \\propto -p \\log q - (1 - p) \\log(1 - q) \\
对于逻辑单元,该惩罚项关于单元总输入的导数很简单,为\(q-p\)。这个导数会乘以一个名为"稀疏代价"的超参数,用来同时调整每个隐藏单元的偏置和输入权重。必须对两者应用相同的导数,否则会出问题:例如如果只对偏置项应用该导数,偏置项会持续变得更负,以确保隐藏单元很少被激活,而权重却会持续变得更正,让单元变得更有用。
24.11.1 稀疏性设置指南
将稀疏目标设置为0.01到0.1之间。将估计值\(\hat{q}\)的衰减率\(\lambda\)设置为0.9到0.99之间。统计隐藏单元的平均激活值分布,调整稀疏代价,让隐藏单元的平均概率落在目标值附近。如果概率紧密聚集在目标值周围,就降低稀疏代价,减少其对学习主目标的干扰。
24.12 隐藏单元数量
来自判别式机器学习的直觉并不适合作为确定合理隐藏单元数量的参考。在判别式学习中,每个训练样本对参数施加的约束量等于指定标签所需的比特数。标签通常包含的信息量非常少,因此若参数数量多于训练样本数量,通常会导致严重的过拟合。但在学习高维数据的生成模型时,决定每个训练样本对模型参数施加多少约束的,是指定一个数据向量所需的比特数,这个数值可能比指定标签所需的比特数高出好几个数量级。因此,如果每张图像包含1000个像素,用10000张训练图像拟合100万个参数是相当合理的,这对应1000个全连接隐藏单元。如果隐藏单元是局部连接的,或者使用了权重共享,就可以使用更多隐藏单元。
24.12.1 隐藏单元数量选择指南
假设主要问题是过拟合,而非训练或测试时的计算量,先估计使用优质模型描述每个数据向量所需的比特数(即估计在优质模型下数据向量的典型负\(\log_2\)概率),再将这个估计值乘以训练样本数量,使用的参数数量约为该值的十分之一。如果你使用了非常小的稀疏目标,就可以使用更多隐藏单元。如果训练样本高度冗余(大规模训练集通常如此),则需要使用更少的参数。
24.13 不同类型的单元
RBM最初是基于二值可见单元和隐藏单元开发的,但也可以使用许多其他类型的单元。指数族单元的一般处理方法可参阅24。其他类型单元的主要作用是处理无法通过二值(或逻辑)可见单元良好建模的数据。
24.13.1 Softmax单元与多项单元
对于二值单元,其激活概率由总输入\(x\)的逻辑sigmoid函数给出:
\p=\\sigma(x)=\\frac{1}{1+e\^{x}}=\\frac{e\^{x}}{e\^{x}+e\^{0}}}$$ (24.15) \\\p_{j}=\\frac{e\^{x_j}}{\\sum_{i=1}\^{K} e\^{x_i}}$$ (24.16) \\
这种单元通常被称为"softmax"单元,它是处理\(K\)个无序互斥取值的量的合适方式。Softmax可被视为一组二值单元,这些单元的状态相互约束,保证\(K\)个状态中恰好有1个取值为1,其余都取值为0。从这个角度看,softmax中二值单元的学习规则与标准二值单元的学习规则完全一致,唯一的区别在于状态概率的计算方式和采样方式。
Softmax单元的进一步推广是从概率分布中采样\(N\)次(有放回)而非仅采样1次,此时\(K\)个不同状态可以取大于1的整数值,但所有状态的值之和必须等于\(N\)。这种单元被称为多项单元,其学习规则同样保持不变。
14.13.3 高斯变量配点法
σ是对应变量V的高斯变量配点标准差,属于难度较高的情况。我们之所以不希望首先假设方程(14.1.5)中的问题属于满足独立条件的高斯变量配点情形,唯一的原因是我们必须假设方程(14.1.5)中的条件相互独立,且该问题就是方程(14.1.5)中满足独立条件的高斯变量配点情形。令S为求和的n阶,该求和即为高斯变量配点的阶。
14.3.1.3 可能的表格:单位
我们首先考虑j足够大、使得n与m不会过近的情况。由于j和m的数值不大,我们可以将j写成\(j = 2^k p\)的形式,其中k为某个整数。注意p是质数。令\(m = 2^k q\),其中q为某个整数。
14.3.1.4 整流单元
整流单元是形如\(u = \sum_{i=1}^{k} a_i v_i\)的单元,其中\(a_i \in \{0, 1\}\),\(v_i\)是\(\mathbb{R}^n\)中的向量。我们也可以将其写作\(u = \sum_{i=1}^{k} a_i v_i\),其中\(a_i \in \{0, 1\}\),\(v_i\)是\(\mathbb{R}^n\)中的向量。
CE 文献 14.14 变异和收敛性
摘要:CD 变异是一个令人困惑的议题。一些研究者声称,变异是 CD 的一个固有问题。例如,如果 CD 的某些测量在某个模型中是准确的,那么在另一个模型中就是错误的。我们表明,CD 的准确性取决于模型的准确性。然而,在模型中,CD 的准确性取决于模型的准确性。
21.45 驳斥学习过程中正在发生的事
实现目标的方式有很多,并不只有标准化的那一种。考虑一只被关在某种笼子里的青蛙。注意这一过程会持续到青蛙完全成熟为止。如果你看到笼子里的青蛙,笼子会变大。但到那个阶段会发生什么?这通常是答案。你第一次去看笼子里的青蛙时,笼子会变大。但到那个阶段会发生什么?这通常是答案。
21.16 针对D1.2的1-ling RVMs
这一点上文已经证明。如果你需要求解D1.2的RVM,可以完成该操作。但并非任意数量的RVM都能进行该计算。
O. J. Box
检验的0.001或0.05阈值可能由如下式子给出,其中Z是t分布的p百分位数,S、p、n为给定值。第一个公式来自Brown、Geyer和Hwang3。第二个公式来自Brown、Geyer和Hwang3。第三个公式来自Brown、Geyer和Hwang3。
24.3.1. 计算矢量涡旋的自由能
矢量涡旋的自由能定义为矢量涡旋的能量除以矢量涡旋的体积。
if (condVar > someVal) {console.log("xxx")}
21.5.5.17 处理缺失值
它同样可由输出的期望熵计算得到。
其中H为输出的熵。
如果机器学习算法不支持缺失数据,你可能需要对缺失值进行插补。这通常是个棘手的问题。你的数据出现缺失可能有多种原因,例如调查问题被遗忘、传感器损坏、或者测量数据丢失。常用的方法是使用缺失值的均值或中位数。这是一种简单有效的方法,但可能导致信息损失。更好的是使用缺失值的众数,因为这种方法能更好地保留信息。
- 使用缺失值的均值或中位数。
- 使用缺失值的众数。
"缺失值的均值或中位数。"
"缺失值的众数。"
权重。该族中的每个限制玻尔兹曼机(RBM)现在都可以对其隐藏状态进行正确推断,但权重的绑定意味着它们可能并不适合任何一个特定的RBM。为缺失值添加一个可见单元,然后执行积分掉该缺失值的正确推断,得到的隐藏单元分布与直接省略该可见单元的分布并不相同,这就是为什么这是一族模型而非单一模型。在使用模型族处理缺失值时,将隐藏层偏置按RBM中可见单元的数量进行缩放会非常有帮助15。
致谢
本研究得到了加拿大自然科学与工程研究理事会(NSERC)和加拿大高等研究院的支持。我过去和现在的许多研究生与博士后都为本章所描述的实践知识体系做出了宝贵贡献。我已在文中尽量注明特别重要的贡献,但有时我无法回忆起某个建议是由谁提出的。
参考文献
1 Carreira-Perpignan, M.A., Hinton, G.E.:关于对比散度学习的研究. 发表于:《人工智能与统计学》(2005)
2 Freund, Y., Haussler, D.:使用双层网络对二值向量上的分布进行无监督学习. 发表于:《神经信息处理系统进展4》,第912--919页. 摩根考夫曼出版社,圣马特奥(1992)
3 Ghahramani, Z., Hinton, G.:因子分析器混合模型的EM算法. 技术报告CRG-TR-96-1,多伦多大学(1996年5月)
4 Hinton, G.E.:松弛法及其在视觉中的作用. 博士论文(1978)
5 Hinton, G.E.:通过最小化对比散度训练专家乘积模型. 《神经计算》14(8),1711--1800(2002)
6 Hinton, G.E.:识别形状需先学习生成图像. 发表于:《计算神经科学:脑功能的理论洞见》(2007)
7 Hinton, G.E., Osindero, S., Teh, Y.W.:深度置信网络的快速学习算法. 《神经计算》18(7),1527--1554(2006)
8 Hinton, G.E., Osindero, S., Welling, M., Teh, Y.:使用对比反向传播无监督发现非线性结构. 《认知科学》30,725--731(2006b)
9 Hopfield, J.J.:神经网络与具有涌现集体计算能力的物理系统. 《美国国家科学院院刊》79,2554--2558(1982)
10 Marks, T.K., Movellan, J.R.:扩散网络、专家乘积模型与因子分析. 发表于:《独立成分分析国际会议论文集》,第481--485页(2001)
11 Mohamed, A.R., Hinton, G.E.:使用限制玻尔兹曼机进行语音识别. 发表于:ICASSP 2010(2010)
12 Mohamed, A.R., Dahl, G., Hinton, G.E.:用于语音识别的深度置信网络. 发表于:NIPS 22 深度学习语音识别研讨会(2009)
13 Nair, V., Hinton, G.E.:使用深度置信网络进行3D目标识别. 发表于:《神经信息处理系统进展》第22卷,第1339--1347页(2009)
14 Nair, V., Hinton, G.E.:修正线性单元提升限制玻尔兹曼机性能. 发表于:第27届国际机器学习会议论文集(2010)
4.4 练习题:可靠估计
- Slobodan R. Petrov,10.56.25.363(谷歌学术). http://c3v2xq.com.
- 以下内容采用美国心理学会格式(1000分):
-
- Slobodan R. Petrov. 10.56.25.363. 谷歌学术. http://c3v2xq.com. 发表于:《美国心理学会会议论文集》,2024年,第224页。
-
- Slobodan R. Petrov. 10.56.25.363. 谷歌学术. http://c3v2xq.com.
-
- Slobodan R. Petrov. 10.56.25.363. 谷歌学术. http://c3v2xq.com.
-
- Slobodan R. Petrov. 10.56.25.363. 谷歌学术. http://c3v2xq.com.
"可靠估计是指不受小样本存在影响的估计。" ------ Slobodan R. Petrov,10.56.25.363,谷歌学术。
25 深度玻尔兹曼机与中心化技巧
摘要. 深度玻尔兹曼机在理论上能够学习看似复杂数据的高效表示。设计能有效学习数据表示的算法可能面临多种困难。在本章中,我们提出"中心化技巧",即将系统能量重写为关于中心化状态的函数。该技巧改善了底层优化问题的条件数,提升了学习稳定性,从而得到生成能力和判别能力更强的模型。
关键词: 深度玻尔兹曼机,中心化,再参数化,无监督学习,优化,表示
25.1 引言
深度玻尔兹曼机是由互连单元构成的无向网络,通过调整单元间的连接来学习这些单元上的联合概率密度。它们在理论上能够学习看似复杂数据分布的统计和计算高效表示。设计能有效学习数据表示的算法可能面临多种困难。深度玻尔兹曼机对其能量函数的参数化很敏感。此外,优化问题的梯度无法直接获取,必须在训练过程中持续查询模型来随机近似。在本章中,我们提出"中心化技巧",即将深度玻尔兹曼机的能量函数重写为关于中心化状态的函数。我们认为中心化能够改善优化问题的条件数,促进深度玻尔兹曼机中复杂结构的生成。我们在MNIST数据集上证明,中心化技巧可以让中等规模的深度玻尔兹曼机训练更快,生成的数据生成模型性能更优,同时还能在顶层提炼出有趣的判别特征。本节将介绍玻尔兹曼机6的背景知识。我们将使用以下符号约定:Sigmoid函数定义为sigm(x) = 1/(e^(-x)+1),x ~ B(p)表示变量x从参数为p的伯努利分布中随机抽取,<·>_P表示相对于概率分布P的期望运算符。若输入为向量,所有这些运算都逐元素作用于输入。
图25.1 实际中使用的玻尔兹曼机示例,灰色单元为可见单元,白色单元为隐藏单元。深度玻尔兹曼机的分层结构很有趣,因为每一层都会形成特定的数据表示,可能催生有趣的统计特征。
玻尔兹曼机是由M_r个互连二值单元构成的网络,每个状态x ∈ {0,1}^{M_x}都对应一个概率
分母中的项称为配分函数,用于保证概率总和为1。该函数是给定模型参数θ=(W,b)时状态x的能量。从上述公式可以推断,好的数据模型是θ在高数据密度区域能量低、其他区域能量高的模型。大小为M_x×M_x的矩阵W是对称的,包含单元间的连接强度。大小为M_x的向量b包含每个单元对应的偏置。W的对角线被约束为0。单元分为可见单元(代表感官输入)和隐藏单元(代表无法直接观测但有助于解释数据的潜在变量)。从上述公式可推导出,给定其他单元时每个单元被激活的条件概率为p(x_i=1|x_{-i}; θ) = sigm(b_i + Σ_{j≠i} W_ij x_j)
26.1 深度玻尔兹曼机
本章讨论所谓的玻尔兹曼机,它是一种在过去某个时刻带有隐状态(或时间延迟)的循环神经网络。这种带时间延迟的网络被称为玻尔兹曼机 89。
\\\frac{\\partial \\boldsymbol{L}}{\\partial \\boldsymbol{a}\^{\\mu}_{\\text{out}}} = 2 \\left( \\frac{\\partial \\boldsymbol{L}}{\\partial \\boldsymbol{a}\^{\\mu}_{\\text{out}}} - \\frac{\\partial \\boldsymbol{L}}{\\partial \\boldsymbol{a}\^{\\mu}_{\\text{in}}} \\right) \\
其中 \(\mu\) 是集合 \(\{\mu_{\text{out}}, \mu_{\text{in}}\}\) 中的索引,\(\boldsymbol{a}^{\mu}{\text{out}}\) 是 \(\nu\) 中对应 \(\nu\) 第 \(\mu{\text{out}}\) 个元素的子集。项 \(\boldsymbol{a}^{\mu}_{\text{in}}\) 是 \(\nu\) 中限定为独立运算的结果(不受网络影响,无任何时间延迟的情况下)。
26.1.1 深度玻尔兹曼机
2012年中国GDP增速与通货膨胀:12.4% 一个关于通货膨胀与GDP增速之间的关系。
这是一个引用示例。这是一个段落。这是一段文字。这是另一段文字。
这是一个引用示例。这是一个段落。这是一段文字。这是另一段文字。
这是一个引用示例。这是一个段落。这是一段文字。这是另一段文字。
这是一个引用示例。这是一个段落。这是一段文字。这是另一段文字。
持久对比散度的核心逻辑如下:首先需要记住,能量函数的极小值对应高概率状态,因此自由粒子倾向于沿能量函数向下运动。随着模型训练,梯度更新会使自由粒子的能量升高,从而促使自由粒子沿梯度更新产生的"凸起"向下滑动。学习率越高,凸起越高,粒子沿能量函数下降的速度就越快。这意味着在训练作用下,自由粒子的混合速度远高于静态场景下的混合速度。
训练深度玻尔兹曼机时,至少可以识别出两类不稳定性来源:
- 近似不稳定性:上述学习算法的随机性和近似性意味着梯度估计存在噪声。噪声部分来自随机梯度下降过程,但主要来自近似采样过程,该过程可能导致梯度估计存在系统性偏差。
- 结构不稳定性:如Cho等人3所指出的,在标准玻尔兹曼机中,权重矩阵\(W\)在学习算法的前几步往往会拟合全局偏置,而非我们预期的各个单元之间的共依赖关系。这在带有隐层-隐层连接的玻尔兹曼机(如深度玻尔兹曼机DBM)中尤为严重,因为隐单元容易聚集形成偏置,这种偏置虽然初期能加快学习速度,但最终会破坏隐单元对之间的学习信号。
25.3.1 中心化技巧
中心化技巧通过确保参与梯度计算的单元激活值处于中心化状态,来缓解上述不稳定性来源。中心化的目标是构建条件更优的优化问题,使其对学习过程的噪声更具鲁棒性,同时避免将单元用作全局偏置。在反向传播网络的背景下,第1章7和第10章17已经提出了中心化的概念。中心化可以通过将玻尔兹曼机的能量重写为中心化状态的函数来实现,中心化能量函数如下所示:
\E(x;\\theta) = -\\frac{1}{2}(x-\\beta)\^\\top W(x-\\beta) - (x-\\beta)\^\\top b \\
新变量\(\beta\)表示与网络每个单元关联的偏移量,需设置为\(x\)的平均激活值。将\(\beta\)设置为\(\text{sigm}(b_0)\)(其中\(b_0\)是初始偏置)可确保单元初始时处于中心化状态。Tang和Sutskever18曾提出类似的能量函数参数化方法,其中偏移参数仅限定于可见单元。正如我们后文将看到的,对隐单元进行中心化也能让玻尔兹曼机受益。
基于这个新的能量函数,我们可以推导出中心化玻尔兹曼机中每个单元的条件概率:
\p(x_i = 1 \| x_{-i}; \\theta) = \\text{sigm}\\left(b_i + \\sum_{j \\neq i} W_{ij}(x - \\beta)_j\\right) \\
类似地,模型对数似然关于\(W\)和\(b\)的梯度现在形式如下:
\\\frac{\\partial}{\\partial W} \\langle \\log p(x_{\\text{vis}}; \\theta) \\rangle_{\\text{data}} = \\langle (x - \\beta)(x - \\beta)\^\\top \\rangle_{\\text{data}} - \\langle (x - \\beta)(x - \\beta)\^\\top \\rangle_{\\text{model}} \\tag{25.5} \\
\\\frac{\\partial}{\\partial b} \\langle \\log p(x_{\\text{vis}}; \\theta) \\rangle_{\\text{data}} = \\langle x - \\beta \\rangle_{\\text{data}} - \\langle x - \\beta \\rangle_{\\text{model}} \\
这些梯度与Cho等人3提出的增强梯度、以及Arnold等人1提出的参数化方法得到的梯度相似,区别在于我们的梯度未考虑偏移量\(\beta\)在整个训练过程中偏离单元平均激活值的可能性。如果后者带来的影响存在问题,可以连续或以固定间隔对网络进行重新参数化,使偏移量对应新的期望均值\(\langle x \rangle_{\text{data}}\)。重新参数化\(\theta \to \theta'\)必须使能量函数在不考虑常数的情况下保持不变,即\(E(x; \theta) = E(x; \theta') + \text{const.}\)。在新的中心化约束下求解该方程,可得到更新方程\(W' = W\),\(b' = b + W(\langle x \rangle_{\text{data}} - \beta)\)和\(\beta' = \langle x \rangle_{\text{data}}\)。
按固定间隔更新偏置和偏移量
\b' = b + W(\\langle x \\rangle_{\\text{data}} - \\beta) \\
\\\beta' = \\langle x \\rangle_{\\text{data}} \\
深度玻尔兹曼机也可进行类似推导。深度玻尔兹曼机的能量函数变为\(E(x, y, z; \theta) = -(y - \beta)^\top W (x - \alpha) - (z - \gamma)^\top V (y - \beta) - (x - \alpha)^\top a - (y - \beta)^\top b - (z - \gamma)^\top c\),其中\(\alpha, \beta\)和\(\gamma\)是各层单元对应的偏移量。训练中心化深度玻尔兹曼机的基本算法在图25.3中给出。
25.3.2 理解中心化技巧
我们分析中心化对玻尔兹曼机学习稳定性的影响。我们认为,当玻尔兹曼机处于中心化状态时,优化问题的条件更优(见图25.5),更具体地说,Hessian矩阵\(\boldsymbol{H}\)的最大特征值与最小特征值的比值更小。我们将\(\xi\)定义为中心化状态\(\xi = x - \beta\),在公式25.5中用\(\xi\)替换\(x - \beta\)后,数据对数似然关于权重参数的导数变为:
\\\frac{\\partial}{\\partial W} \\langle \\log p(x; \\theta) \\rangle_{\\text{data}} = \\langle \\xi\\xi\^\\top \\rangle_{\\text{data}} - \\langle \\xi\\xi\^\\top \\rangle_{\\text{model}} \\
训练中心化深度玻尔兹曼机
算法初始化参数如下:
\\\begin{align\*} \&W, V = 0 \\\\ \&a = \\text{sigm}\^{-1}\\left(\\langle x \\rangle_{\\text{data}}\\right), \\quad b = b_0, \\quad c = c_0 \\\\ \&\\alpha = \\text{sigm}(a), \\quad \\beta = \\text{sigm}(b), \\quad \\gamma = \\text{sigm}(c) \\end{align\*} \\
初始化自由粒子 \((x_m, y_m, z_m) = (\alpha, \beta, \gamma)\)
Loop:
初始化数据粒子 \((x_d, y_d, z_d) = (\text{pick(data)}, \beta, \gamma)\)
Loop:
\(y_d \sim \mathcal{B}\left(\text{sigm}\left(W(x_d - \alpha) + V^\top(z_d - \gamma) + b\right)\right)\)
\(z_d \sim \mathcal{B}\left(\text{sigm}\left(V(x_d - \beta) + c\right)\right)\)
End Loop
\(y_m \sim \mathcal{B}\left(\text{sigm}\left(W(x_m - \alpha) + V^\top(z_m - \gamma) + b\right)\right)\)
\(x_m \sim \mathcal{B}\left(\text{sigm}\left(W^\top(y_m - \beta) + \alpha\right)\right)\)
\(z_m \sim \mathcal{B}\left(\text{sigm}\left(V^\top(y_m - \beta) + c\right)\right)\)
参数更新:
\\\begin{align\*} W \&\\leftarrow W + \\eta \\cdot \\left\[ (y_d - \\beta)(x_d - \\alpha)\^\\top + (y_m - \\beta)(x_m - \\alpha)\^\\top \\right \\ V &\leftarrow V + \eta \cdot \left (z_d - \\gamma)(y_d - \\beta)\^\\top + (z_m - \\gamma)(y_m - \\beta)\^\\top \\right \\ a &\leftarrow a + \eta(x_d - x_m) + \nu \cdot W^\top (y_d - \beta) \\ b &\leftarrow b + \eta(y_d - y_m) + \nu \cdot \left( W(x_d - \alpha) + V^\top(z_d - \gamma) \right) \\ c &\leftarrow c + \eta(z_d - z_m) + \nu \cdot V(y_d - \beta) \\ \alpha &\leftarrow (1 - \nu) \cdot \alpha + \nu x_d \\ \beta &\leftarrow (1 - \nu) \cdot \beta + \nu y_d \\ \gamma &\leftarrow (1 - \nu) \cdot \gamma + \nu z_d \end{align*} \]
End Loop
图25.3 训练双层中心化深度玻尔兹曼机的基本算法。该算法基于持久对比散度,为简洁起见做了最小化处理。变量\(\eta\)是学习率,变量\(\nu\)是重新参数化所需的移动平均速率。该算法的Python实现可在http://gregoire.montavon.name/code/dbm.py获取。
当 \(b=2\) 时,\(\beta = \text{sigm}(a)\),对应状态图示:
当 \(\beta = \text{sigm}(0)\) 时,\(b=-2\),对应状态图示:
当 \(b=0\) 时,\(\beta = \text{sigm}(a)\),对应状态图示:
当 \(b=-2\) 时,对应状态图示:
\\\beta = (1-\\nu) \\cdot \\beta + \\nu y_d \\
其中\(\langle \cdot \rangle_W\)表示与权重参数为\(W\)的模型相关联的概率分布的期望,\(\langle \cdot \rangle_{W, data}\)表示同一模型在可见单元被固定为数据时的期望。利用方向导数的定义,关于随机方向\(V\)的二阶导数(等于投影海森矩阵\(\mathbf{HV}\))可表示为:
\\\begin{aligned} \\mathbf{HV}\&=\\frac{\\partial}{\\partial V}\\left(\\frac{\\partial}{\\partial W}\\langle\\log p(x ; \\boldsymbol{W})\\rangle_{data}\\right) \\\\ \&=\\lim _{h \\rightarrow 0} \\frac{1}{h} \\left( \\left\\langle \\frac{\\partial \\log p(x; W+hV)}{\\partial W} \\right\\rangle_{W+hV, data} - \\left\\langle \\frac{\\partial \\log p(x; W)}{\\partial W} \\right\\rangle_{data} \\right) \\\\ \&=\\lim _{h \\rightarrow 0} \\frac{1}{h}\\left(\\langle g x\^{\\top} \\rangle_{W+hV, data} - \\langle g x\^{\\top} \\rangle_{W, data}\\right) - \\lim _{h \\rightarrow 0} \\frac{1}{h}\\left(c \\left\\langle \\frac{\\partial E}{\\partial W} \\right\\rangle_{W+hV} + \\mathbf{H} \\mathbf{V} - c \\left\\langle \\frac{\\partial E}{\\partial W} \\right\\rangle_{W}\\right) \\end{aligned} \\
从最后一行可以看出,海森矩阵可以分解为与数据相关的项和与数据无关的项。一个值得注意的事实是,在没有隐藏单元的情况下,海森矩阵的与数据相关的部分为零,因为模型(因此也包括模型的扰动)对状态没有影响。因此可以从纯模型的角度分析优化问题的条件数。即使存在隐藏变量,由于可见单元被固定为数据导致熵急剧减少,与数据相关的项通常也很小。我们可以将条件数良好的模型理解为:对其参数\(W\)沿任意方向\(V\)施加扰动时,状态期望\(\langle x^T W \rangle\)的扰动表现良好的模型。Pearlmutter 11证明,在没有隐藏单元的全连接玻尔兹曼机中,投影海森矩阵可以进一步简化为
\\\mathbf{HV}=\\langle \\xi \\xi\^{\\mathrm{T}} \\rangle_{W} - c_X \\langle x \\rangle \\
其中\(D = 1/(2\eta)\)(公式25.7),从而去掉了极限运算,得到了数值估计。第1章I指出,优化问题的稳定性可以通过条件数 量化,其定义为最大特征值\(\lambda_{\max}\)与最小特征值\(\lambda_{\min}\)的比值。条件数的几何解释见图25.5(左)。海森矩阵的低秩近似可通过以下方式获得:
\\\hat{H} = \\frac{1}{N} \\sum_{i=1}\^l \\mathbf{H} \\mathbf{v}_i \\mathbf{v}_i\^T \\tag{25.8} \\
其中\((\mathbf{v}1, \dots, \mathbf{v}l)\)的列构成一组独立的单位向量基,可将海森矩阵投影到低维随机子空间。随后可通过执行投影后的\(\mathbf{H}\)的奇异值分解,并取所得最大特征值与最小特征值的比值来估计条件数。我们估计了初始状态(\(W=0\))下具有50个单元、不同偏置与偏移参数的全连接玻尔兹曼机1的条件数\(\lambda{\max}/\lambda{\min}\)。
25.4 玻尔兹曼机的评估
25.4.1 确定性分析
前面的讨论概述了玻尔兹曼机的评估方法,因此我们首先回顾一个简单的两层玻尔兹曼机示例。我们将分析该模型需要具备哪些属性才能被评估,以及如何对其进行改进以获得更优性能。当玻尔兹曼机在特定复杂度的样本上训练后,可以关联到特定模型,其输出概率分布是可解释的函数。该概率对应于特定的分布。如果给定输入分布,模型会输出一个分布,即概率分布。因此我们已知输入分布和输出分布。
G. Matus, W.-T. Huang, and R.-H. Lee
我们的初始状态固定为观测值\(L\)。我们的方法有一些底层原理。我们的结果以与2类似的方式呈现。
25. 深度玻尔兹曼机与中心化技巧 631
- 计算残差曲线\(e(d)\)和AUC:
\e(d) = \\lVert T - Y_d\\rVert\^2_F \\qquad \\text{AUC }= \\dfrac{1}{n}\\sum_{d=1}\^{n} e(d) \\
这两个指标用于评估核函数对任务的表征效果。残差曲线\(e(d)\)的解释见图25.6。
图. 25 .6 . 展示如何解读不同核函数在特定任务上生成的残差曲线的示意图。
场景1: 核函数的主成分包含所有与标签相关的信息。这是最优情况 。
场景2: 大量与标签相关的信息包含在前导成分中,但剩余信息缺失。
场景3: 与任务相关的信息包含在多个主成分中,且可以被准确预测。
场景4: 核函数不适用于目标任务。
注意,虽然场景2和3的AUC值相近,但它们的残差曲线在性质上差异很大。
2.1 生成分析
玻尔兹曼机的优化目标是其生成性能,该性能以数据似然为衡量指标。不幸的是,数据似然难以直接测量,因为它涉及配分函数的估计,而配分函数通常难以计算。因此,我们必须采用复杂的近似方法。我们介绍由Salakhutdinov和Murray14提出的一种分析方法,该方法基于退火重要性采样(AIS)10估计学习到的玻尔兹曼机的似然。此处我们介绍该基本分析方法。Salakhutdinov和Hinton23针对特定类型的玻尔兹曼机(如受限玻尔兹曼机、半受限玻尔兹曼机和深度玻尔兹曼机)提出了更精细的计算流程。如我们在15.2节所见,深度玻尔兹曼机为每个输入\(x\)关联一个概率
\p(x; \\theta) = \\sum_{y,z} p(x, y, z; \\theta) \\
其中\(p^*(x, y, z; \theta) = e^{-E(x, y, z; \theta)}\)是状态\((x, y, z)\)的未归一化概率。由于求和中涉及的元素数量呈指数级,因此无法通过解析方式计算\(\Psi(\theta, x)\)和\(Z(\theta)\)。因此我们必须采用近似计算方法。我们首先将配分函数的比值重写如下:
\p(x; \\theta) = \\frac{\\Psi(\\theta, x)}{Z(\\theta)} = \\frac{\\frac{\\Psi(\\theta, x)}{\\Psi(0, x)}}{\\frac{Z(\\theta)}{Z(0)}} \\cdot \\frac{\\Psi(0, x)}{Z(0)} \\tag{25.10} \\
可以注意到,基础率配分函数的比值(\(\theta = 0\))很容易计算,因为\(\theta = 0\)时所有单元相互独立。其解析形式为
\\\frac{\\Psi(0, x)}{Z(0)} = \\frac{1}{2\^{M_x}}. \\tag{25.11} \\
公式25.10中的另外两个比值可以通过退火重要性采样进行估计。退火重要性采样方法步骤如下:
退火重要性采样(AIS)10:
- 使用一系列转移算子\(\mathcal{T}(\xi, \xi'; \theta_0), \dots, \mathcal{T}(\xi, \xi'; \theta_K)\)生成状态序列\(\xi_1, \dots, \xi_T\),这些算子保持\(p(\xi)\)不变,即:
- 从基础模型(例如零一随机向量)中采样得到\(\xi_0\)
- 给定\(\xi_0\),使用\(\mathcal{T}(\xi, \xi'; \theta_1)\)采样得到\(\xi_1\)
- ...
- 给定\(\xi_{K-1}\),使用\(\mathcal{T}(\xi, \xi'; \theta_K)\)采样得到\(\xi_K\)
- 计算重要性权重
\\\omega_{AIS} = \\frac{p\^\*(\\xi_1; \\theta_1)}{p\^\*(\\xi_1; \\theta_0)} \\cdot \\frac{p\^\*(\\xi_2; \\theta_2)}{p\^\*(\\xi_2; \\theta_1)} \\cdots \\frac{p\^\*(\\xi_K; \\theta_K)}{p\^\*(\\xi_K; \\theta_{K-1})} \\
可以证明,如果模型序列\(\theta_0, \theta_1, \dots, \theta_K\)(其中\(\theta_0 = 0\),\(\theta_K = \theta\))变化足够缓慢,那么通过退火重要性采样流程得到的重要性权重,就是模型\(\theta\)的配分函数与基础模型配分函数的比值的估计值。在我们的案例中,\(\xi\)表示深度玻尔兹曼机的状态\((x, y, z)\),转移算子\(\mathcal{T}(\xi, \xi'; \theta)\)对应于公式25.3和25.4中定义的交替吉布斯采样器。参数序列\(\{\theta_0, \dots, \theta_K\}\)可以例如位于\(0\)和\(\theta\)之间的连线上,即\(\theta_k = \alpha_k \cdot \theta_K\),其中\(\alpha_0 < \dots < \alpha_K\)。另外,参数序列也可以是训练过程中观测到的参数序列。在这种情况下,需要对参数全程维护一个移动平均值。
训练是必要的,因为学习噪声会在相邻参数间造成不必要的大幅波动。现在我们可以计算式25.10中配分函数的两个比值,如下:
\\\frac{Z(\\theta)}{Z(0)} \\approx \\mathrm{E}\[\\omega_{\\mathrm{AIS}} \quad \text{and} \quad \frac{\Psi(\theta, x)}{\Psi(0, x)} \approx \mathrm{E}\\nu_{\\mathrm{AIS}}(x) \quad (25.12) \]
其中,\(\omega_{\mathrm{AIS}}\) 是采用自由运行的吉布斯采样器进行退火过程得到的重要性权重,\(\nu_{\mathrm{AIS}}\) 是将输入单元固定到数据点后进行退火得到的重要性权重。将式25.11和25.12代入式25.10,可得:
\p(x; \\theta) \\approx \\frac{\\mathrm{E}\[\\nu_{\\mathrm{AIS}}(x)}{\mathrm{E}\\omega_{\\mathrm{AIS}}} \cdot \frac{1}{2^{M_x}} \]
因此,模型的对数似然估计为:
\\\mathrm{E}_X\[\\log(p(x; \\theta)) \approx \mathrm{E}_X\\log \\mathrm{E}\[\\nu_{\\mathrm{AIS}}(x)] - \log \mathrm{E}\\omega_{\\mathrm{AIS}} - M_x \log(2). \quad (25.13) \]
通常,为每个数据点\(x\)计算重要性权重\(\nu_{\mathrm{AIS}}\)的平均值会耗费大量时间。实际应用中,我们可以对每个数据点仅进行一次AIS运行来近似该值。这种情况下,由詹森不等式可得:
\\\mathrm{E}_X\[\\log \\nu_{\\mathrm{AIS}}(x) - \log \mathrm{E}\\omega_{\\mathrm{AIS}} \leq \mathrm{E}_X\\log \\mathrm{E}\[\\nu_{\\mathrm{AIS}}(x)] - \log \mathrm{E}\\omega_{\\mathrm{AIS}}. \quad (25.14) \]
因此,这种近似往往会产生略显悲观的对数似然估计,但相较于\(\omega_{\mathrm{AIS}}\)的方差,\(\nu_{\mathrm{AIS}}\)的方差更低,这是因为将可见单元固定到数据点降低了AIS运行的多样性。
25.5 实验
本节我们将展示若干实验,证明中心化技巧对训练深度玻尔兹曼机的有效性。我们使用的MNIST手写数字识别数据集包含60000个训练样本和10000个测试样本。每个样本是一张\(28 \times 28\)的灰度图像,对应一个手写数字及其标签。灰度值(介于0到1之间)被视作概率。
架构: 我们考察的深度玻尔兹曼机(DBM)由\(28 \times 28\)个输入单元、200个中间单元和25个顶层单元构成;以及一个局部连接深度玻尔兹曼机(LC-DBM),由\(28 \times 28\)个输入单元、400个连接至大小为\(6 \times 6\)的随机输入块的中介单元和100个顶层单元构成。这些架构如图25.7(左)所示。在DBM中,建模负荷集中在第一层,顶层仅用于建模类全局数字特征。另一方面,在LC-DBM中,大部分建模负荷被移至第二层,第一层本质上是低级局部线性反向投影,且观察发现,中心化DBM的这些特性比非中心化DBM丰富得多。
4 结论
结论。我们的分析得出三个主要结果。首先,与图 1 和图 5(以及图 3,如果将 \(q\) 视为与 \(q'\) 类似)中的 \(q\) 相比, \(q'\) 和 \(q''\) 中的 \(q\) 显著减小,且 \(q''\) 接近 0。其次,图 5 中的 \(q'\) 的 \(q\) 比 \(q''\) 更接近 0。最后, \(q''\) 在图 6 中的值显著高于图 5。
5 结论
结论。我们的分析得出三个主要结果。首先,与图 1 和图 5(以及图 3,如果将 \(q\) 视为与 \(q'\) 类似)中的 \(q\) 相比, \(q'\) 和 \(q''\) 中的 \(q\) 显著减小,且 \(q''\) 接近 0。其次,图 5 中的 \(q'\) 的 \(q\) 比 \(q''\) 更接近 0。最后, \(q''\) 在图 6 中的值显著高于图 5。
结论
结论。我们的分析得出三个主要结果。首先,与图 1 和图 5(以及图 3,如果将 \(q\) 视为与 \(q'\) 类似)中的 \(q\) 相比, \(q'\) 和 \(q''\) 中的 \(q\) 显著减小,且 \(q''\) 接近 0。其次,图 5 中的 \(q'\) 的 \(q\) 比 \(q''\) 更接近 0。最后, \(q''\) 在图 6 中的值显著高于图 5。
结论
结论。我们的分析得出三个主要结果。首先,与图 1 和图 5(以及图 3,如果将 \(q\) 视为与 \(q'\) 类似)中的 \(q\) 相比, \(q'\) 和 \(q''\) 中的 \(q\) 显著减小,且 \(q''\) 接近 0。其次,图 5 中的 \(q'\) 的 \(q\) 比 \(q''\) 更接近 0。最后, \(q''\) 在图 6 中的值显著高于图 5。
结论
结论。我们的分析得出三个主要结果。首先,与图 1 和图 5(以及图 3,如果将 \(q\) 视为与 \(q'\) 类似)中的 \(q\) 相比, \(q'\) 和 \(q''\) 中的 \(q\) 显著减小,且 \(q''\) 接近 0。其次,图 5 中的 \(q'\) 的 \(q\) 比 \(q''\) 更接近 0。最后, \(q''\) 在图 6 中的值显著高于图 5。
结论
结论。我们的分析得出三个主要结果。首先,与图 1 和图 5(以及图 3,如果将 \(q\) 视为与 \(q'\) 类似)中的 \(q\) 相比, \(q'\) 和 \(q''\) 中的 \(q\) 显著减小,且 \(q''\) 接近 0。其次,图 5 中的 \(q'\) 的 \(q\) 比 \(q''\) 更接近 0。最后, \(q''\) 在图 6 中的值显著高于图 5。
图2:基线与提出方法的训练损失Top-2准确率随 epoch 变化的对比。左上方面板展示了基线与提出方法的训练损失;右上方面板展示了基线与提出方法的测试准确率;左下方面板展示了基线与提出方法的训练损失;右下方面板展示了基线与提出方法的测试准确率。
25.6 结论
训练深度玻尔兹曼机是一个困难的优化问题,该问题对其能量函数的参数化非常敏感。在本章中,我们提出了中心化技巧 ,该技巧的核心是将能量重写为中心态的函数。中心化技巧提升了深度玻尔兹曼机的稳定性,且能够训练出同时具备优越判别性与生成性的模型。我们的实验在中等规模模型(隐藏单元数为数百个量级)上取得了最好的效果。深度玻尔兹曼机的高表达能力使得我们很难在不使用显式正则项(如逐层预训练或有限连接)的情况下,将实验扩展到更大规模的模型(单元数为数千个量级)。我们相信,将中心化技巧应用于大规模模型时,需配合强正则项来限制模型的有效维度。
致谢。 作者感谢Mikio Braun以及多位审稿人提出的宝贵意见。本研究得到了韩国教育、科学与技术部资助的国立研究基金会"世界一流大学项目"的支持,资助号为R31--10008。作者同时感谢DFG(项目号MU 987/17-1)的部分资助。
参考文献
Arnold, L., Auger, A., Hansen, N., Ollivier, Y.:信息几何优化算法:通过不变性原理得到的统一框架,arXiv:1106.3708 (2011)
Braun, M.L., Buhmann, J., Müller, K.-R.:核特征空间中的相关维度研究.《机器学习研究期刊》9, 1875--1908 (2008)
Cho, K., Raiko, T., Il, A.:用于训练受限玻尔兹曼机的增强梯度与自适应学习率. 载于:第28届国际机器学习会议论文集,105--112页 (2011)
Hinton, G.E.:通过最小化对比散度训练专家乘积.《神经计算》14(8), 1771--1800 (2002)
Hinton, G.E.:受限玻尔兹曼机训练实用指南. 载于:Montavon, G., Orr, G.B., Müller, K.-R. 编《神经网络:行业 Tricks》,第2版,LNCS 第7700卷,599--619页,海德堡:施普林格出版社 (2012)
Hinton, G.E., Sejnowski, T.J.:玻尔兹曼机的学习与再学习. 载于:《并行分布式处理:认知微观结构的探索》第1卷,282--317页,MIT出版社 (1986)
LeCun, Y., Bottou, L., Orr, G.B., Müller, K.-R.:高效反向传播. 载于:Orr, G.B., Müller, K.-R. 编NIPS-WS 1996会议论文集,LNCS 第1524卷,9--50页,海德堡:施普林格出版社 (1998)
-
- Gao等,《基于深度学习的传感器数据人体活动识别》(2023)
-
- Zhang等,《图像与视频分析中的深度学习研究综述》(2023)
-
- Wu等,《基于深度学习的传感器数据人体活动识别》(2023)
-
- Lee等,《图像与视频分析中的深度学习研究综述》(2023)
-
- Wu等,《图像与视频分析中的深度学习研究综述》(2023)
-
- Zhang等,《图像与视频分析中的深度学习研究综述》(2023)
基于半监督嵌入的深度学习
Jose Wosk,Politeo公司 与 耶鲁大学。
- Politeo公司,美国康涅狄格州纽黑文市
- 耶鲁大学,美国康涅狄格州纽黑文市
- 加州大学戴维斯分校计算机科学系,加利福尼亚州戴维斯市
- 加州大学戴维斯分校计算机科学系,加利福尼亚州戴维斯市
摘要。我们通过大规模半监督嵌入学习证明,将高维空间映射到低维空间(如隐向量)的半监督嵌入学习能力,是学习高维空间半监督嵌入的良好方法。我们证明,将高维空间映射到低维空间的半监督嵌入,是学习高维空间到低维空间(如隐向量)半监督嵌入的良好方法。我们证明,将高维空间映射到低维空间的半监督嵌入,是学习高维空间到低维空间(如隐向量)半监督嵌入的优秀方案。我们进一步证明,将高维空间映射到低维空间的半监督嵌入,是学习高维空间到低维空间(如隐向量)半监督嵌入的有效途径。我们再次证明,将高维空间映射到低维空间的半监督嵌入,是学习高维空间到低维空间(如隐向量)半监督嵌入的可靠方式。
1. 引言
我们尚未身处黑暗。我们并非处于黑暗之中。我们不曾陷入黑暗。
2 什么是监督学习
监督学习(也称为"示例学习"或"数据学习")是一种机器学习范式,算法通过有标签的样本来学习。在监督学习中,目标是学习一个从输入映射到输出的函数,算法会在输入-输出对已知的一组样本上进行训练。算法通过最小化预测输出与真实输出(即标签)之间的差异,来学习从输入到输出的映射关系。
算法会在输入-输出对已知的一组样本上进行训练,通过最小化预测输出与被称为标签的真实输出之间的差异,学习从输入到输出的映射。在我们下一章看到的研究中,同样提到算法通过最小化预测输出与被称为标签的真实输出之间的差异,来学习从输入到输出的映射。
2.2 半监督嵌入
我们首先简要概述半监督嵌入。它与标准嵌入的区别在于,标签会作为嵌入的输入,而非仅放在独立的标签集中提供。随后论文介绍了其提出的半标签嵌入(SLE)架构。SLE会学习将内容和标签嵌入到同一空间。标签被表示为独热向量,随后该向量会作为编码器的输入。这使得模型也能学习标签的嵌入。得到嵌入后,论文描述了损失函数,该函数会对模型为标签和文本预测出相同嵌入的行为进行惩罚。
图
26.2.2 半监督算法
目前已提出多种半监督分类算法,它们利用了上一节中描述的算法。此处我们假设给定\(M+U\)个示例\(x_i\),但只有前\(M\)个具有已知标签\(y_i\)。
标签传播算法30会在近邻分类器上添加拉普拉斯特征映射类型的正则项:
该算法会尝试给具有大权重边\(W_{ij}\)的两个示例分配相同标签。根据传递性,邻居的邻居也往往会获得相同的标签,因此得名标签传播。
拉普拉斯支持向量机(LapSVM)2将拉普拉斯特征映射类型的正则项与支持向量机(SVM)结合使用:
其中\(H(x)=\max (0,1-x)\)为合页损失,最终分类器为\(f(x)=w \cdot x+b\)。
其他方法
文献9提出了一种名为图的方法,它将修改版的ISOMAP与SVM结合。作者还建议将修改版ISOMAP与转导支持向量机(TSVM)而非SVM结合,将其命名为低密度分离(LDS)。
26.3 用于深度学习的半监督嵌入
我们希望将半监督学习中提出的思路应用于深度学习。深度学习包含学习具有多层非线性映射的模型。在本章中,我们将考虑具有\(N\)层隐藏单元、输出\(C\)维向量的多层网络:
其中\(w^O\)是输出层的权重,通常第\(k\)层的定义如下:
23.2 令\(S\)为一个集合,则我们可以写出类似的期望平方预测误差表达式:
例如,为了估计参数\(\theta^*\),我们可以使用贪婪搜索算法迭代更新参数。该算法与论文《从未标注数据中学习深度表示》中使用的算法类似。我们在ImageNet上获得最先进模型所用的算法如下(算法22.1),该算法基于5层卷积神经网络(CNN),总参数量(包含偏置)为14:
算法23.2 估计参数\(\theta^*\)的算法
- 输入 :输入数据集\(D = \{(x_i, y_i)\}_{i=1}^N\),其中\(x_i\)为\(d\)维向量,\(y_i\)为标量值。
- 输出 :使损失函数\(L(\theta)\)最小化的参数集\(\theta^*\),其中\(L(\theta)\)为预测值与真实值之间的平方误差总和。
步骤:
- 将参数\(\theta^*\)初始化为全零向量。
- 对\(D\)中的每个数据点\((x_i, y_i)\),计算预测值\(y_i^* = f(\theta^*, x_i)\)。
- 计算损失\(L(\theta^*) = \sum_{i=1}^N (y_i - y_i^*)^2\)。
- 使用梯度下降法更新参数\(\theta^*\),即\(\theta_{\text{new}} = \theta - \eta \cdot \nabla L(\theta)\),其中\(\eta\)为学习率,\(\nabla L(\theta)\)为损失函数\(L(\theta)\)关于\(\theta\)的梯度。
- 重复步骤2-4,直到损失函数\(L(\theta)\)收敛至最小值。
输出 :\(\theta^*\)。
注:
- 梯度下降法是常用的优化算法,用于求解函数的最小值。它通过更新参数\(\theta\)至能降低损失的方向来最小化损失函数\(L(\theta)\)。
- 梯度下降法用于将参数\(\theta\)更新至能降低损失函数\(L(\theta)\)的方向。
23.3.1. 训练单隐藏层网络
令\(P(\theta)\)为网络输出属于集合\(S\)的概率,则我们可以写出期望平方预测误差的表达式如下:
23.3.2. 训练多隐藏层网络
算法26.1 EmbedNN
输入:标记数据\((x_i, y_i), i=1,\dots,M\),未标记数据\(x_i, i=M+1,\dots,U\),函数集\(f(\cdot)\)和嵌入函数\(g^k(\cdot)\),见图26.1以及公式(26.9)、(26.10)和(26.11)。
重复执行:
选取一个随机标记样本\((x_i, y_i)\)
对\(l(f(x_i), y_i)\)执行一步梯度优化
对每个嵌入函数\(g^k(\cdot)\)执行:
选取一对随机相邻样本\(x_i, x_j\)
对\(\lambda L(g^k(x_i), g^k(x_j), 1)\)执行一步梯度优化
选取一个随机未标记样本\(x_n\)
对\(\lambda L(g^k(x_i), g^k(x_n), 0)\)执行一步梯度优化
结束循环
直到满足停止准则。
对于非相邻样本(即\(W_{ij}=0\)的样本),该损失函数会将样本"推开",从而抑制平凡解,且无需引入(26.2)这类难以实现的约束。若要在无未标记数据的情况下实现嵌入,则必须引入后者,否则所有样本会坍缩到嵌入空间中的单个点上。因此相较于单独使用(26.1),该正则项更优。整体方法的伪代码见算法26.1。以下是一些可供参考的技巧:
- 超参数\(\lambda\):在我们的大部分实验中,我们直接将其设为1,由于算法26.1中的交替更新机制,该设置表现良好。但如果你使用多个嵌入损失函数,它们会主导此时的目标函数。我们注意到,在优化接近尾声时,降低正则项学习率的幅度高于降低训练误差项学习率的幅度可能更有优势,这样能在无噪声任务上尽可能降低训练误差(不过我们的实验并未尝试这一做法)。
- 如果你在网络第一层使用内部嵌入,该嵌入问题通常比在后续层做内部嵌入更难,因此你可能不想给它们设置相同的学习率或间隔,但这会增加超参数选择的复杂度。另一种思路是在更早的层使用辅助层,甚至经过两个辅助层而非一个,来降低嵌入任务的难度。辅助层在测试阶段会被丢弃。
- 在最终输出层做嵌入可能并不总是个好主意,具体取决于网络类型。例如,如果你使用Softmax作为最后一层,2范数类型的嵌入损失可能不适用于最后一层的对数概率表示。这种情况下我们建议改为在倒数第二层做嵌入。
- 最后,尽管我们并未尝试,但以分离方式训练,即先完成嵌入训练,之后仅用标记数据通过微调步骤继续训练,可能简化上述超参数选择。
26.3.1 将未标记数据标记为相邻样本(构建邻接图)
使用随机梯度下降在线训练神经网络速度快,且可扩展至数百万样本。所述方法的一个潜在瓶颈是矩阵\(W\)的计算,即计算哪些未标记样本是相邻样本且\(W_{ij}=1\)。嵌入算法通常用k近邻来完成该任务,目前已存在多种快速计算方法,例如哈希法和基于树的方法。不过也存在许多其他收集相邻未标记数据的方式,无需计算k近邻。
- 对于图像任务,可以利用未标记视频的时间连贯性:连续两帧很可能包含相似内容,属于同一概念类别。视频中的每个物体在相邻帧间也很可能发生微小的变换,例如平移、旋转或形变。因此,将半监督嵌入与该特性结合,可以学习到对这些变换不变的类别。例如,可以将视频中两帧连续(或相近)的图像作为相邻样本对,设置\(W_{ij}=1\)。这类样本对很可能有相同标签,且收集成本很低。间距较远的帧设置\(W_{ij}=0\)。
- 对于文本任务,可以利用文档收集无监督样本对。例如,可将文档中的句子(或段落)视为相邻样本,它们包含语义相似的信息(很可能属于同一主题)。
- 类似地,对于语音任务,也可以用同样的方式利用音频流。
26.4.3 该方法的优势是什么?
原因有以下几点:首先,在没有任何上下文的情况下阅读,是快速了解问题全貌及解决方案的绝佳方式。其次,只要系统搭建完成,你就能对问题和解决方案有清晰的认知。最后,该方案存在一定的"模糊地带":我不确定这样做是否合适。
表26.1 我们实验所用数据集。前三个是规模较小的数据集,其实验设置与文献9,24,10中的一致。后六个是规模较大的数据集。Mnist1h、6h、1k、3k和60k变体是带有部分标记数据子集的MNIST数据集,其实验设置参考10。SRL是语义角色标注任务20,包含100万条标记训练样本和6.31亿条未标记样本。COIL100是目标检测数据集19。
| 数据集 | 类别数 | 维度 | 样本数 | 标记样本数 |
|---|---|---|---|---|
| g50c | 2 | 50 | 500 | 50 |
| Text | 2 | 7511 | 1946 | 50 |
| Uspst | 10 | 256 | 2007 | 50 |
| Mnist1h | 10 | 784 | 7万 | 100 |
| Mnist6h | 10 | 784 | 7万 | 600 |
| Mnist1k | 10 | 784 | 7万 | 1000 |
| Mnist3k | 10 | 784 | 7万 | 3000 |
| Mnist60k | 10 | 784 | 7万 | 60000 |
| SRL | 16 | - | 6.31亿 | 100万 |
| COIL100(30个物体) | 30 | 72×72像素 | 7200 | 120 |
| COIL100(100个物体) | 100 | 72×72像素 | 7200 | 400 |
26.4 实验评估
我们在表26.1汇总的多个数据集上测试了半监督嵌入方法。
26.4.1 小规模实验
g50c、Text和Uspst是常用于半监督学习实验的小规模数据集9,24,10。我们遵循了相同的实验设置:对50条标记样本的十组划分结果取平均,剩余数据均为未标记数据。这些实验中,我们在神经网络的输出层测试嵌入正则项(见公式(26.9)和图26.1(a))。我们定义了一个包含\(hu\)个隐藏单元的两层神经网络(NN)。我们设置\(W\)使得每个样本的10个最近邻的\(W_{ij}=1\),其余情况\(W_{ij}=0\)。我们使用固定\(\lambda=1\)训练50轮随机梯度下降,但前5轮仅优化监督目标(不使用嵌入正则项)。由此得到两个自由超参数:隐藏单元数\(hu=\{0.5, 10, 20, 30, 40, 50\}\)和学习率\(lr=\{0.1, 0.05, 0.01, 0.005, 0.001, 0.0005, 0.0001\}\)。我们在表26.2中报告了通过5折交叉验证和测试集优化得到的最优取值。注意数据集非常小,因此交叉验证结果不可靠。文献中的许多方法通过测试集优化超参数(未标注(cv)的方法)。我们的EmbedNN方法与基于支持向量机(SVM)的最先进半监督方法具有竞争力,部分情况下甚至优于它们。
表 26.2. 小规模数据集结果。 我们报告了该方法在超参数下的最佳测试误差\(Embed_{NN}\),方法与文献9一致,以及通过交叉验证优化参数时的误差\(Embed_{NN}^{(cv)}\),\(LDS^{(cv)}\)和\(LapSVM^{(cv)}\)同样采用交叉验证。
| 方法 | USPS | 文本数据集 |
|---|---|---|
| SVM | 8.32 | 18.86 |
| TSVM(交叉验证) | 5.80 | 5.71 |
| LapSVM\(^{(cv)}\) | 5.4 | 1.04 |
| LDS\(^{(cv)}\) | 5.4 | 5.1 |
| 标签传播 | --- | 17.20 |
| 图SVM | 8.32 | 10.48 |
| 神经网络 | 10.08 | 5.41 |
| \(Embed_{NN}\) | 7.00 | 13.11 |
| \(Embed_{NN}^{(cv)}\) | 6.70 | --- |
表 26.3. 使用100、600、1000和3000个标签的MNIST数据集结果。 我们将双层神经网络(NN)与在输出层(\(O^j\))或第\(i\)层辅助嵌入(\(A^i\))加入嵌入正则化的神经网络(\(Embed_{NN}\))进行对比(见图26.1),同时测试了卷积网络(CNN)。我们将其与SVM和TSVM进行对比。标注(*)的RBM、SESM、DBN-NCA和DBN-RICA来自文献21,23,在不同数据划分上训练。
| 方法 | Mnist100 | Mnist600 | Mnist1000 | Mnist3000 |
|---|---|---|---|---|
| SVM | 23.0 | 8.06 | --- | --- |
| TSVM | 16.15 | 15.98 | --- | --- |
| RBMs (*) | --- | 20.0 | --- | --- |
| SESM (*) | --- | --- | 9.0 | --- |
| DBN-NCA (*) | --- | 18.5 | --- | --- |
| DBN-RICA (*) | --- | 3.4 | --- | --- |
| NN | 25.41 | --- | --- | --- |
| \(Embed_{NN}\) | 17.09 | 8.58 | 0.09 | --- |
| \(Embed^{OUT}NN\) | 16.69 | --- | --- | --- |
| \(Embed^{A1}NN\) | 17.71 | --- | --- | --- |
| CNN | 2.0 | 3.45 | 1.05 | --- |
| \(Embed^{OUT}CNN\) | 8.8 | 3.95 | --- | --- |
| \(Embed^{A1}CNN\) | 1.99 | 5.25 | 1.75 | 1.50 |
| \(Embed^{ALL}CNN\) | 9.20 | --- | --- | --- |
表 26.4. 使用2、4、6、8、10和15层深度网络的MNIST数据集:每个隐藏层包含50个隐藏单元。 我们将经典神经网络训练与\(Embed^{ALL}NN\)进行对比,后者要么在输出层(\(O^j\))学习嵌入,要么同时在所有层学习辅助嵌入(\(A^{\overline{ALL}}\))。
| 层数 | 2 | 4 | 6 | 8 | 10 | 15 |
|---|---|---|---|---|---|---|
| 神经网络(隐藏单元数=50) | 2.9 | 2.6 | 2.8 | 3.1 | 3.1 | 4.2 |
| \(Embed^{ALL}NN\) | 1.9 | 2.0 | 2.2 | 2.4 | 2.6 | --- |
表 26.5. 使用2、6、8、10和15层深度网络的完整MNIST 60k数据集,隐藏单元数为50或100。 我们将经典神经网络训练与\(Embed^{ALL}NN\)进行对比,后者同时在所有层学习辅助嵌入。
| 方法 | 2 | 6 | 8 | 10 | 15 |
|---|---|---|---|---|---|
| 神经网络(隐藏单元数=50) | 2.9 | 2.6 | 2.8 | 3.1 | 3.1 |
| \(Embed^{ALL}NN\)(隐藏单元数=50) | 1.9 | 2.0 | 2.2 | 2.4 | 2.6 |
| 神经网络(隐藏单元数=100) | 2.0 | 1.9 | 1.20 | 3.5 | 4.8 |
| \(Embed^{ALL}NN\)(隐藏单元数=100) | 1.7 | 1.9 | 2.1 | 2.3 | 2.5 |
26.4.2 MNIST实验
我们将本方法在三种不同模式下的表现(见图26.1)与传统半监督学习(TSVM)进行对比,使用与文献10相同的数据划分和验证集。我们还将结果与多种深度学习方法对比:RBM(受限玻尔兹曼机)、SESM(稀疏编码对称机)、DBN-NCA和DBN-RICA(深度信念网络-(正则化)近邻成分分析)。(注意,后者在不同数据划分上训练。)
在这些实验中,我们采用2层神经网络(NN)和6层卷积神经网络(CNN)进行嵌入。我们在验证集上优化NN的参数(隐藏单元数\(hu=\{50, 100, 150, 200, \dots, 400\}\),学习率与之前相同)。CNN架构固定:5层图像块类型卷积层,后接60个隐藏单元的线性层,与文献17类似。表26.3的结果表明,嵌入在NN和CNN的三种模式下均有效。
26.4.3 深层MNIST实验
随后我们开展了一组类似的实验,但采用最多15层的极深架构,每个隐藏层有90个隐藏单元。在MNIST数据集上,我们首先将传统NN与\(Embed^{ALL}NN\)对比,后者在每个层上学习辅助非线性嵌入(50个隐藏单元,嵌入空间维度为\(a\)),以及与\(Embed^{OUT}NN\)对比,后者仅在输出层进行嵌入。结果见表26.4。
当层数增加时,传统反向传播训练的NN会出现过拟合,测试误差持续升高(尽管它们很容易达到零训练误差)。相比之下,\(Embed^{ALL}NN\)由于半监督"正则化"的作用,随深度增加性能提升。在网络所有层进行嵌入使得深度学习成为可能。仅在输出层进行嵌入的\(Embed^{OUT}NN\)也有帮助,但效果有限。增加隐藏单元数可能进一步提升这些结果,例如使用4层、每层500个隐藏单元时,\(Embed^{ALL}NN\)可以达到1.27%的测试误差。总体而言,这些结果表明\(Embed^{ALL}NN\)中的正则化在半监督学习之外的其他场景下同样有效。
表 26.6. 无语义先验知识的语义角色标注深度架构,性能优于融合词性、句法树知识的SOTA系统ASSERT和SENNA。 通过使用整个维基百科网站作为无标签数据,学习单词的辅助嵌入(\(Embed^{A1}CNN\))(单词表示为100维向量),可以提升卷积网络(CNN)的性能。
| 方法 | 测试误差 |
|---|---|
| ASSERT 20 | 16.54% |
| SENNA 11 | 16.36% |
| CNN 无语义先验知识 | 18.40% |
| \(Embed^{A1}CNN\) 无语义先验知识 | 14.55% |
26.4.4 语义角色标注
语义角色标注(SRL)的目标是:给定一个句子和关心的语义关系,为每个单词标注16个标签中的一个,表明该单词相对于该关系动作的语义角色。例如句子"\(The_{ARG0}\) cat\({ARG0}\) eats\({REL}\) the\({ARG1}\) fish\({ARG1}\) in\({ARGM-LOC}\) the\({ARGM-LOC}\) pond\(_{ARGM-LOC}\)"中,ARG0和ARG1分别表示关系"吃"的主语和宾语,ARGM-LOC表示位置修饰语。
PropBank数据集包含来自《华尔街日报》的约100万个标注单词。我们遵循文献11的实验设置,为该任务训练一个5层卷积神经网络,第一层将输入句子的单词表示为50维向量。与文献11不同,我们没有给分类器提供任何先验知识:该文献中的单词通过词性进行了词干提取和聚类,而我们的分类器仅使用原始输入单词进行训练。
我们尝试通过和之前相同的方式,学习辅助嵌入任务来提升该系统。我们的嵌入使用维基百科网站的无标签句子进行学习,总共有6.31亿个单词,采用26.3节描述的方案。与监督任务相同的词向量查找表作为输入,用于给定单词周围的11词窗口,得到550个特征。随后线性层将这些特征投影到100维嵌入空间。维基百科中的所有文本窗口都被视为邻居,非邻居通过将句子窗口的中间词替换为随机词构造。我们的查找表索引最常用的3万个单词,其余所有单词被分配索引30001。
表26.6的结果表明,学习辅助嵌入可以带来明显提升。ASSERT 20是基于SVM的句法分析器系统,包含大量手工编码特征;SENNA是使用了词性信息构建词向量的神经网络。相比之下,我们的系统是唯一不采用词性或句法树数据衍生的特征作为先验知识的SOTA方法。文献12更详细地探讨了神经网络技术在该应用中的使用,不过该工作使用了不同的半监督技术。
表 26.7. COIL100数据集在不同设置下的测试准确率。 按照文献27,分别使用了30个和100个物体的设置。在8层CNN的倒数第二层使用时序一致性的半监督嵌入算法(\(Embed^{A1}CNN\)),在多种视频选择下,性能优于标准(其余配置相同的)8层CNN及其他基线方法。(注意,使用100个物体时是直推式方法,因为训练时将测试集作为无标签数据;而使用30个物体时是半监督方法。)
| 方法 | 30个物体 | 100个物体 |
|---|---|---|
| 最近邻 | 81.8 | 70.1 |
| SVM | 84.9 | 74.6 |
| 旋玻璃马尔可夫随机场 | 82.79 | 69.41 |
| 特征样条 | 84.6 | 77.0 |
| VTU | 89.9 | 79.1 |
| 标准CNN | 84.88 | 71.49 |
| 嵌入CNN | 95.03 | 92.25 |
26.4.5 使用无标签视频的目标识别
最后,我们详细介绍使用无标签视频进行半监督嵌入的实验,更多细节可见文献18。我们使用了COIL100图像数据集19,该数据集包含100个物体的彩色图片,每个图片尺寸为72×72像素。每个物体有72个不同视角,即总共7200张图片。图片通过将物体放置在转盘上,每旋转5度拍摄一张得到。注意物体的旋转可视为无标签视频,可用于我们的半监督嵌入方法。
实验设置如下:首先,我们使用不利用任何时序信息的标准卷积神经网络(CNN)建立基线。我们采用8层网络,包含三组卷积层加子采样层、一个最终卷积层和一个预测输出的全连接层。为与COIL100的其他研究的设置兼容,我们选择两种实验配置:(i)实验中包含COIL100的所有100个物体;(ii)仅研究100个物体中的30个标注物体(训练和测试均使用此设置)。两种情况下,每个物体使用72个视角中的4个(0°、90°、180°、270°)进行训练,其余68个视角用于测试。结果见表26.7,并与现有方法22,27,5进行了对比。注意,使用100个物体的任务比使用30个物体的任务更困难。
25.5 结论
总而言之,我们应对新方法持开放态度,从尝试做得更好开始。但重点并非要去声称存在更好的方法,而是应当对如何改进有更清晰的认知。这不仅仅是取得更优结果的问题,也是改进机器学习领域所使用方法的问题。
1 A. De Vries, J. De Vries, 《A. De Vries》,见《A. De Vries》,第309页。
2 A. De Vries, J. De Vries, 《A. De Vries》,见《A. De Vries》,第309页。
3 A. De Vries, J. De Vries, 《A. De Vries》,见《A. De Vries》,第309页。
4 A. De Vries, J. De Vries, 《A. De Vries》,见《A. De Vries》,第309页。
5 A. De Vries, J. De Vries, 《A. De Vries》,见《A. De Vries》,第309页。
6 A. De Vries, J. De Vries, 《A. De Vries》,见《A. De Vries》,第309页。
7 Caruana, R.:《多任务学习》。《机器学习》28(1),41--75(1997)
8 Chapelle, O., Schölkopf, B., Zien, A.:《半监督学习》。自适应计算与机器学习系列。麻省理工学院出版社,剑桥(2006)
9 Chapelle, O., Weston, J., Schölkopf, B.:《用于半监督学习的聚类核》。收录于:Becker, S., Thrun, S., Obermayer, K. (编) 神经信息处理系统进展(NIPS),第15卷,第585--592页。麻省理工学院出版社,剑桥(2003)
10 Chapelle, O., Zien, A.:《通过低密度分离实现半监督分类》。收录于:人工智能与统计国际会议(AISTATS),第57--64页(2005年1月)
11 Collobert, R., Sinz, F., Weston, J., Bottou, L.:《大规模直推式支持向量机》。《机器学习研究期刊》7,1687--1712(2006)
12 Collobert, R., Weston, J.:《使用新型神经网络架构进行快速语义提取》。收录于:计算语言学协会第45届年会论文集,第25--32页(2007)
13 Collobert, R., Weston, J., Bottou, L., Karlen, M., Kavukcuoglu, K., Kuksa, P.:《(几乎)从零开始做自然语言处理》。《机器学习研究期刊》12,2493--2537(2011)
14 Hadsell, R., Chopra, S., LeCun, Y.:《通过学习不变映射实现降维》。收录于:计算机视觉与模式识别会议论文集(CVPR 2006)。IEEE出版社(2006)
15 Hinton, G.E., Osindero, S., Teh, Y.:《深度信念网络的快速学习算法》。《神经计算》18(7),1527--1554(2006)
16 Karlen, M., Weston, J., Erkan, A., Collobert, R.:《大规模流形直推》。收录于:第25届国际机器学习会议论文集,第448--455页。ACM(2008)
17 Kruskal, J.B.:《通过优化非度量假设的拟合度实现多维标度》。《心理计量学》29(1),1--27(1964)
18 LeCun, Y., Bottou, L., Bengio, Y., Haffner, P.:《基于梯度的学习在文档识别中的应用》。《IEEE会刊》86(11)(1998)
19 Mobahi, H., Collobert, R., Weston, J.:《从视频的时间相干性中学习深度学习》。收录于:第26届国际机器学习年会论文集,第737--744页。ACM(2009)
20 Nene, S.A., Nayar, S.K., Murase, H.:《哥伦比亚物体图像库(COIL-100)》。技术报告CUCS-006-96(1996年2月)
21 Pradhan, S., Ward, W., Hacioglu, K., Martin, J., Jurafsky, D.:《使用支持向量机进行浅层语义分析》。收录于:HLT/NAACL 2004会议论文集(2004)
22 Ranzato, M., Huang, F., Boureau, Y., LeCun, Y.:《用于物体识别的不变特征层次结构的无监督学习》。收录于:计算机视觉与模式识别会议论文集(CVPR 2007)。IEEE出版社(2007)
23 Roobaert, D., Van Hulle, M.:《使用支持向量机进行基于视角的3D物体识别》。收录于:IEEE神经网络信号处理国际研讨会,第77--84页(1999)
24 Salakhutdinov, R., Hinton, G.:《通过保留类邻域结构学习非线性嵌入》。收录于:人工智能与统计国际会议(AISTATS)(2007)
25 Sindhwani, V., Niyogi, P., Belkin, M.:《超越点云:从直推到半监督学习》。收录于:国际机器学习会议(ICML)(2005)
26 Tenenbaum, J.B., de Silva, V., Langford, J.C.:《非线性降维的全局几何框架》。《科学》290(5500),2319--2323(2000)
27 Vapnik, V.:《统计学习理论》。John Wiley and Sons出版社,纽约(1998)
28 Wersing, H., Körner, E.:《为不变识别层次模型学习优化特征》。《神经计算》15(7),1559--1599(2003)
29 Weston, J., Ratle, F., Collobert, R.:《通过半监督嵌入实现深度学习》。收录于:第25届国际机器学习会议论文集,第1168--1175页。ACM(2003)
30 Williams, C.K.I.:《核主成分分析与度量多维标度之间的联系》。《神经信息处理系统进展》(NIPS 13)(2000)
31 Zhu, X., Ghahramani, Z.:《利用标签传播从标记和未标记数据中学习》。技术报告CMU-CALD-02-107,卡内基梅隆大学(2002)
用于预测与控制的动力系统识别
Grégoire & Klaus
前言
从数据中识别动力系统是用于数据预测与最优控制的有前景的方法。数据预测是量化金融、市场营销与规划领域理性决策的核心组成部分。最优控制系统,即能够感知环境并做出恰当反应的系统,有助于实现成本效益更高的燃气轮机、智能电网与人机接口的设计。
用于动力系统建模任务的成熟架构是循环神经网络(RNN)。动力系统的状态由构成网络的单元集合表示,两个连续状态之间的转移由这些单元之间的循环连接决定。该网络可通过时间反向传播进行训练,也就是对按时序展开的循环神经网络执行标准反向传播。
循环神经网络的训练难度众所周知,当网络需要建模长期依赖关系时难度尤其高。事实上,当局部波动(时间序列的高频分量)无法反映全局趋势(低频分量)时,局部学习信号的作用微乎其微。这一现状促使许多人寻找时间反向传播的替代方案。
一种与反向传播截然不同的方案是回声状态网络2。回声状态网络的核心思想非常简单:(1)构建一个具有随机循环连接的大型神经网络;(2)拟合网络激活值与时间序列之间的线性模型以完成预测。这个大型随机循环神经网络被称为"储备池",它实现了一组超完备的非线性基元,其中只有一部分对建模待预测时间序列有用。对储备池进行调整以生成与任务最相关的基元需要一定的实践经验。回声状态网络的调优最佳实践在第27章3中进行了介绍。
另一种克服反向传播固有难点的方法是特别关注循环神经网络的结构。精心设计的循环神经网络有助于误差导数在更长的时间尺度上传播。过冲、纠错神经网络或变体不变分离等技巧在第28章6中进行了介绍。这类网络同样可用于控制系统的状态-动作表征识别。第29章1展示了如何应用循环神经网络,通过对现有控制系统的观测来识别完整的马尔可夫决策过程。这种所谓的马尔可夫决策过程提取网络(MPEN)能够促进联合状态-动作表征的出现,该表征可最大程度捕捉控制任务的相关信息。
- \(Q\)-学习5是用于控制系统的热门强化学习算法。它会为每个状态-动作对关联一个\(Q\)值,该值表示在给定状态下采取的动作能让我们接近目标的程度。\(Q\)值由\(Q\)-学习算法根据控制器对状态-动作空间的探索结果动态确定。剩余的问题是如何让\(Q\)值在连续状态空间中实现泛化。第30章4解答了该问题,并提供了搭建分步神经强化控制器的实践指南。
参考文献
27 应用回声状态网络的实用指南
曼塔斯·卢克舍维丘斯,德国不来梅,雅各布斯大学校区环路1号,28759,m.lukosevicius@jacobs-university.de
摘要 储备池计算是近十年来兴起的一种训练循环神经网络的方案,可作为梯度下降法的替代。回声状态网络(ESN)是储备池计算的核心类型之一。尽管回声状态网络实用性强、概念简单、易于实现,但要在多项任务中实现其广受好评的优异性能,仍需一定的经验与洞察力。本文提出了成功应用回声状态网络的实用技巧与建议,以及一些更高级的、针对特定应用的改进方案。
27.1 引言
循环神经网络(RNN)的训练本身难度较高。这导致许多人完全回避使用循环神经网络。然而,循环神经网络是一种功能强大的通用工具,兼具大容量动态记忆与高适应性计算能力。它是机器学习(ML)领域中最接近生物大脑的模型,而生物大脑是自然智能的载体。误差反向传播(BP)40 是至今人工神经网络训练领域最重要的成果之一,已成为训练前馈神经网络(FFN)的标准方法。本书其他章节以及前一版中讨论了反向传播法的诸多实用技巧,例如26。反向传播法也被拓展至循环神经网络训练领域51, 52,但仅取得了部分成功。反向传播法用于循环神经网络训练的概念局限之一在于,分岔现象可能导致训练无法收敛8;即便训练能够收敛,其收敛速度也较慢、计算成本高,还可能出现较差的局部最小值。
十年前,机器学习领域提出了回声状态网络(ESN)16, 21,计算神经科学领域提出了液态状态机(LSM)32,为理解和使用循环神经网络提供了新的研究方向。研究证明,即便不对所有网络权重进行完全调整,循环神经网络通常也能有足够好的表现。在经典的回声状态网络方法中,被称为储备池的循环神经网络是随机生成的,仅对储备池的输出层进行训练。需要注意的是,这一基本思路最早是在皮质-纹状体处理环路的神经科学模型中被明确提出7。令人惊讶的是,该方法在许多基准任务中表现优异,例如16, 15, 19, 22, 47, 48。
G. Montavon 等(编):《神经网络实用技巧》第2版,LNCS 7700,第659--686页,2012年。© 柏林海德堡施普林格出版社 2012年。
D. 公式23的证明
其中 \(\gamma^{(m)}(i) = \frac{\mu}{\sum_{k=1}^N \lambda_k} \left \\sum_{j=1}\^N \\mu_j \\frac{\\gamma\^{(j)}}{\\mu} \\right\)。因此,最坏情况下的输出复杂度为\(O(1)\)。这是一个含有\(N\)个隐藏神经元的循环神经网络。定理2的证明与引理1的证明类似,此处省略。我们还可以证明 \(\hat{W}^{(m)} = W^{(m)} + \Delta W^{(m)}\)。输入与输出为 \(u^{(m)}(i) = \langle W^{(m)}(i) + \Delta W^{(m)}(i) \rangle\)。
27.3 生成储备池
要生成优质的储备池,首先需要明确储备池的定义。
3.1 生成优质结果
17.2.2 储备池全局参数
上述两部分、即两个子序列(I和II)均指滞留时间不超过10天的储备池,无论其具体形态如何。
输入系数和输出系数分别记为"G"和"W"。
应对任务挑战时,可依次使用规模更大的储备池。
- 先使用小规模储备池选择全局参数,再将其迁移适配到大规模储备池。
全局参数的调优(下文将介绍)通常需要多次试验,因此每次调优不应消耗过多时间。优质参数通常可迁移至大规模储备池,也可通过大规模储备池的试验进一步验证该特性。
储备池规模\(N_x\)的下界可通过以下方式粗略估算:统计储备池为成功完成任务,需要从输入中记住的独立实数值的数量。ESN(回声状态网络)的存储值最大数量被称为记忆容量,其值不超过\(N_x\) 17。\(N_x\)应至少等于储备池为解决任务、需要从输入中记住的独立实数值的估算值。对于独立同分布(i.i.d.)输入\(\mathbf{u}(n)\),该估算值为\(N_u\)乘以"输入需被记住的时间步数的粗略估算值"。尽管文献17的结果对i.i.d.输入是精确的,但实际中\(\mathbf{u}(n)\)通常存在时间相关性与通道间相关性,使其具备一定"可压缩性"。此外,储备池的"遗忘曲线"通常并非矩形(取决于其他参数),即遗忘并非瞬时发生,而是渐进过程。因此,储备池的规模通常可以更小。
储备池稀疏性
ESN的原始文献建议使储备池连接稀疏,即让\(\mathbf{W}^{\text{in}}\)中的大部分元素为0。根据我们的实践经验,稀疏连接通常也能带来略优的性能。总体而言,储备池稀疏性对性能影响不大,属于优先级较低的优化参数。但若采用稀疏矩阵表示,稀疏性可加快储备池的更新速度。
- 无论储备池规模大小,平均每个储备池节点仅需连接少量固定数量的其他节点(例如10个)。
利用储备池的稀疏性可加速计算。若无论储备池规模如何,都选择固定的扇出数,网络状态更新的计算成本将仅随网络规模线性增长,而非平方增长。这能大幅降低大规模储备池的运行成本。当编程环境支持稀疏矩阵的高效表示与运算时(多数编程环境均满足),几乎无需额外付出努力即可获得上述计算收益。
储备池核心元素分布
\(W\)越接近\(p\),元素的权重越大。若考虑该分布的影响,不同元素的\(W\)分布会更复杂。
实际应用中,应选择\(\rho(W)\)以获得最佳性能,将数值1作为初始参考值。作为一项指导原则,对于需要更长的输入历史才能完成的任务,\(\rho(W)\)应设置得更大;对于当前输出\(y(n)\)更依赖\(u(n)\)近期历史的任务,则应设置得更小。谱半径决定了输入的影响在储备池中随时间衰减的速度,以及储备池激活动作的稳定性50。
需要更长输入记忆的任务应设置更大的谱半径。
输入缩放
输入权重矩阵\(W^{in}\)的缩放是优化回声状态网络(ESN)的另一个关键参数。对于均匀分布的\(W^{in}\),我们通常将输入缩放值\(a\)定义为采样\(W^{in}\)数值的区间\(-a:a\)的范围;对于正态分布的输入权重,可将标准差作为缩放度量。
为了减少可自由调节的参数数量,通常会用单个缩放值统一缩放\(W^{in}\)的所有列。但对应式(27.2)中储备池单元偏置输入的第一列\(W^{in}\)的缩放,可以单独于其余列进行优化。若其余"有效"输入通道对任务的贡献方式差异较大,也建议单独优化它们的缩放值。
统一缩放整个\(W^{in}\)可减少ESN中的全局参数数量。但是,为了提升性能:
- 单独缩放\(W^{in}\)的第一列(即偏置输入);
- 若\(u(n)\)的通道对任务的贡献方式不同,则单独缩放\(W^{in}\)的其他列。
这会让\(W^{in}\)可设置的自由全局参数数量从1变为最多\(N_u + 1\)个。
原始ESN相关文献曾提出对输入数据进行缩放和平移,同时优化两者的幅度。但通过对有效输入的输入权重和偏置分别进行缩放,也能达到同样的效果。不过,和所有其他机器学习方法一样,ESN也建议对输入数据进行归一化。这能让每个学习任务都处于更标准化的环境中。限定输入数据值的范围也有所助益。例如,若\(u(n)\)的分布无界,可对其施加\(\tanh(\cdot)\)压缩。否则异常值可能会将储备池状态\(x(n)\)推向\(x(n)\)常规工作轨迹未充分覆盖的"陌生"区域------而这些区域是已优化全局参数或已学习输出的适用范围。这分别可能导致有效记忆的虚拟损失(由激活动力学的饱和导致)或这些点上的不可预测输出。
建议对数据进行归一化,这有助于将输入\(u(n)\)控制在有界范围内,避免出现异常值(例如,若\(u(n)\)无界,可对其施加\(\tanh(\cdot)\)变换)。
输入缩放决定了储备池响应的非线性程度。对于高度线性的任务,\(W^{in}\)应设置得较小,让单元在0点附近运行,此时其激活函数\(\tanh(\cdot)\)几乎呈线性。若\(W^{in}\)较大,单元会很容易在接近1和-1的值处饱和,呈现出更强的非线性、二元开关式的运作特性。虽然\(\rho(W)\)也会影响非线性程度,但如27.3.2节所述,在\(\rho(W)\)让储备池变为高度非线性之前,提升\(\rho(W)\)就会导致储备池激活动作失稳。任务所需的非线性程度很难判断。确定合适的设置需要借助经验和对非线性动力学的直觉理解。但就算是储备池计算(如果真有大师级研究者的话)也会用试错法来调节这一特性。观察式(27.2)可知,\(W^{in}\)的缩放与\(W\)的缩放(即\(\rho(W)\))共同决定了当前状态\(x(n)\)分别依赖当前输入\(u(n)\)和前一状态\(x(n-1)\)的比例,同时还需要考虑各自的规模\(N_u\)和\(N_x\)。输入缩放调节以下内容:
- 储备池表征\(x(n)\)的非线性程度(也会随\(\rho(W)\)提升而增加);
- 相较于历史信息,当前输入对\(x(n)\)的相对影响(与\(\rho(W)\)成正比)。
经验观察发现,\(u(n)\)的不同主成分在\(x(n)\)中的表征大致与这些主成分在\(u(n)\)中的量级的平方根成正比11。换句话说,储备池往往会压平\(u(n)\)的主成分谱在\(x(n)\)中的分布------在选择合适的数据表征或预处理方式时需要记住这一点。例如,若较小的主成分不携带任何有用信息,那么在将数据输入储备池前,用主成分分析(PCA)将其剔除可能会有所助益,否则它们会在储备池中被相对放大。
泄露率
式(27.3)中储备池节点的泄露率\(\alpha\)可视为储备池更新动力学的时间离散化速度。
\\\xi = \\text{sgn}(\\Delta t)\\{\\tilde{\\nu}, \\bar{\\nu}\\}. \\
32.1 BSN中的文件参数
文件参数是指定文件状态的常用方式,这是典型的应用场景。
- 导入文件
- 输出文件
32.1.2 BSN中的文件参数
指定文件参数最常用的方式是使用
@符号,这是BSN中的常见做法。文件参数是指定文件状态的常用方式,这是典型的应用场景。在文件参数中,数值可按以下格式指定:
@file_path。但需注意,要将这种性能的随机波动与不同参数值导致的波动区分开。
要消除性能的随机波动,需固定随机种子,或对多个储备池样本取平均值。在生成储备池前固定编程环境中的随机种子,能让不同试验中储备池的随机特征保持一致,从而使实验可确定性复现。使用单个储备池速度更快,但存在明显风险:可能得到低于平均水平的性能,或让参数过拟合到某个随机生成的储备池实例上------优良参数可能无法适配不同的软件实现,或例如不同规模的储备池。
手动参数选择
几乎所有机器学习方法都不可避免需要一定程度的手动参数选择。即使参数是通过自动化搜索学习或选出的,通常也需要为这些流程设置元参数(更准确说是"元元参数")。
手动调节储备池参数时,每次只更改一个参数。同时更改多个参数往往会对性能产生相互抵消的影响,且无法判断每个参数的贡献程度。合理的做法是先将单个参数调整到足够理想的数值,再开始调整下一个参数,重复此流程直到性能达到满意水平。对于长时间的优化过程,建议记录笔记或自动记录性能数据,避免在重复使用相同参数值时"兜圈子"。
可以通过对参数做微小调整并观察性能变化,来估算该参数的梯度经验方向。但误差面通常是非凸的,尝试距离较远的参数值有时会带来大幅性能提升。
务必绘制储备池激活信号\(x(n)\)的样本图,以了解储备池内部的运行状态。这可能会发现\(x(n)\)存在过饱和、激活不足、呈现自主循环或混沌行为等问题。总体而言,除了错误率之外绘制其他信息,能极大帮助理解应如何调整参数。通常情况下,良好的平均性能不会出现在非常狭窄的参数范围内,因此对参数进行极为细致的微调不会带来明显提升,也没有必要。
27 实用回声状态网络(ESN)
自动参数选择
由于手动参数优化很快就会变得繁琐,因此通常更倾向于采用自动化方法。由于ESN仅需调优的参数不多,网格搜索 大概是最直接的选择。就储备池计算(RC)而言,仅需用几层嵌套循环搭配Oger这类高级机器学习编程库即可轻松实现该方法,这类库通常还自带现成的实现例程,第27.6节会提到Oger。合理的做法是先在更宽的参数区间上进行粗粒度网格搜索,找出有潜力的区域,再在这些区域内进行细粒度搜索(步长更小)。如前所述,通常网格不需要非常密集就能获得良好的性能。若最佳性能出现在已覆盖网格的边界上,就说明最优性能有可能位于网格之外。
总体而言,元参数/超参数优化是机器学习乃至更多领域非常热门的研究主题。现有文献中描述了大量可用于解决该问题的通用优化方法。这些方法通常能处理网格搜索难以应对的超大搜索空间,比如随机搜索,或是试图对误差曲面建模的更复杂方法(参见例如2)。这些方法原则上同样适用于ESN,还可以将次要重要性的参数纳入优化范围。也可以通过梯度下降法优化储备池的全局参数22。但该方法在现有文献中尚未得到广泛应用。
27.3.4 储备池扩展方案指引
现有文献还提出了其他生成和适配储备池的方法,包括确定性方法(例如39)和数据专属方法(例如26)。随着这类方法的不断丰富,现代储备池计算领域已经从最初仅使用固定储备池、仅对其输出层进行训练的模式,演变为通过通用无监督甚至监督方法适配储备池,且储备池的适配方式与输出层不同。在某些场景下,会直接使用硬件系统作为储备池,其特性由硬件本身的固有特征预先决定(参见29),相关内容在30的第2章有更新;但从分类概览和易用性、性能的角度来看,本文所描述的经典ESN仍具有不可替代的优势。
27 训练方案
27.3 岭回归
由于ESN的输出层通常是线性前馈结构,式(27-4)可用矩阵形式表示为:
\\\mathbf{Y} = \\mathbf{W}\^{\\text{out}} \\mathbf{X} \\
其中,\(\mathbf{Y} \in \mathbb{R}^{N_y \times T}\) 是所有\(\mathbf{y}(n)\)构成的矩阵,\(\mathbf{X} \in \mathbb{R}^{(1+N_u+N_x) \times T}\) 是将输入\(\mathbf{u}(n)\)送入储备池后产生的所有\(1; \\mathbf{u}(n); \\mathbf{x}(n)\)构成的矩阵,二者均在训练周期\(n = 1, \ldots, T\)内通过横向拼接列向量得到。为了简化符号表示,此处用单个\(\mathbf{X}\)代替\(1; \\mathbf{U}; \\mathbf{X}\)。
求解使\(\mathbf{y}(n)\)与目标输出\(\mathbf{y}^{\text{target}}(n)\)的平方误差最小的最优权重\(\mathbf{W}^{\text{out}}\),等价于求解一个通常为超定的线性方程组:
\\\mathbf{Y}\^{\\text{target}} = \\mathbf{W}\^{\\text{out}}\\mathbf{X}, \\
其中\(\mathbf{Y}^{\text{target}} \in \mathbb{R}^{N_y \times T}\)由所有\(\mathbf{y}^{\text{target}}(n)\)构成,从最小二乘意义下求解关于\(\mathbf{W}^{\text{out}}\)的该方程,即线性回归问题。在此语境下,\(\mathbf{X}\)可被称为设计矩阵 。该方程组为超定,因为通常情况下\(T \gg 1 + N_u + N_x\)。求解式(27.8)有若干成熟的标准方法,本节将讨论其中几个优质选择。
在此语境下,式(27.8)最具普适性、最稳定的解法是岭回归,也称为Tikhonov正则化回归:
\\\mathbf{W}\^{\\text{out}} = \\mathbf{Y}\^{\\text{target}}\\mathbf{X}\^{\\text{T}}(\\mathbf{XX}\^{\\text{T}} + \\beta\\mathbf{I})\^{-1}, \\
其中\(\beta\)是27.4.2节将介绍的正则化系数,\(\mathbf{I}\)是单位矩阵。从ESN中学习线性输出权重最普适的推荐方法是岭回归(27.9)。我们从该方法开始介绍,是因为它应该是优先选择,尽管它不是最简单的。后续章节将阐释该方法的各个层面,同时说明其优先选择的原因,以及在某些场景下更具优势的替代方案。
27.4.2 正则化
为评估训练所得解的质量,建议监测实际获得的输出权重\(\mathbf{W}^{\text{out}}\)。过大的权重说明\(\mathbf{W}^{\text{out}}\)在利用并放大\(\mathbf{x}(n)\)各维度间的微小差异,且对网络训练时的精确条件的偏差非常敏感。在网络将自身输出作为下一时刻输入的场景下,这是一个非常严重的问题。输出与预期值的微小偏差会在后续时间步中快速放大。此类场景的应对方法在27.5节有说明。\(\mathbf{W}^{\text{out}}\)的数值过大可能意味着求解结果非常敏感且不稳定。
对线性输出层的高斯过程解释提供了一种直接设置\(\beta\)的替代准则4。通过在式(27.3)的\(\mathbf{x}(n)\)中加入缩放后的白噪声,也能实现与Tikhonov正则化(27.9)类似的正则化效果,该方法在ESN中的应用早于岭回归16。与岭回归类似,独立同分布噪声会强化(\(\mathbf{XX}^{\text{T}}\))的对角线元素。这种方法的优势在于,噪声还会通过式(27.2)的\(\mathbf{W}\)传播,能更好地模拟储备池中噪声信号的影响。输出层可以学习从受扰动的信号中恢复,使带反馈环路的模型更稳定(第27.5节)。这种噪声免疫方法的缺点是,每更换一次噪声缩放值,就需要重新运行模型。
27.4.3 大规模数据集
岭回归(27.9)(或其特例Wiener-Hopf解(27.11))也支持单次训练处理几乎无限量的数据。注意,矩阵(\(\mathbf{Y}{\text{target}}\mathbf{X}^{\text{T}}\))(维度为\(\mathbb{R}^{N_y \times N_x}\))和(\(\mathbf{XX}^{\text{T}}\))(维度为\(\mathbb{R}^{N_x \times N_x}\))的维度不依赖于训练序列的长度\(T\)。只需将新流入数据对应的结果相加,即可更新这两个矩阵。这种单次训练方法理论上可处理任意量的数据------其工作内存复杂度和训练流程(27.9)本身的时间都不依赖于数据长度\(T\)。处理大规模数据集时,可增量累加(\(\mathbf{Y}{\text{target}}\mathbf{X}^{\text{T}}\))和(\(\mathbf{XX}^{\text{T}}\))用于式(27.9)的计算。
直接求和的最终局限性来自浮点数的有限精度:将大数(如当前已累加矩阵中的数值)与小数(如下一次更新的数值)相加时会产生精度误差。此时应改用更优的求和方案,例如分层多阶段求和(要求待相加的两个数值量级始终接近,比如来自相同时间步长的数据),或是能补偿累积误差的Kahan求和算法24。处理超大规模数据集时,应采用精度更高的求和方案来累加(\(\mathbf{Y}_{\text{target}}\mathbf{X}^{\text{T}}\))和(\(\mathbf{XX}^{\text{T}}\))。
2.7.6.6 Distler脱矿化解
\W\^X = \\gamma\^{-1} \\mathbf{X}\^\\gamma \\tag{2.7.12} \\
这是\(W^X\)解。对于给定的产生式\(\pi\),解\(W^X\)是唯一满足要求的解。本文给出了求解方程\(\pi = \pi^{-1} \mathbf{X}^\pi\)的方案。
17.3.1 初始阈值
毫不意外,用于测试尚未进入进一步分析的初始数据的阈值选择,由初始阈值决定。要理解这一现象的成因,我们首先需要了解相关原理。
27.4.6 回归加权
在回归加权中,初始阈值数据通常可采用不同方式确定。对于这类数据,平方误差会采用式(2)给出的权重进行加权。
7.1.3 基于分类的假设空间缩减
在上面的例子中,我们可以认为这个假设空间缩减的问题在于我们的模型对特征值的限制,而不是对特征值之间约束的限制。
为了简化,我们将考虑具有两个特征值的情况。在上面的例子中,我们假设了特征值之间的约束。
如果 \(P\) 是分类器,那么对于每个特征值 \(x\),分类器将输出一个二分类的决策。
注意,在短序列之间以及每个序列跨区间\(\tau\)的内部,仍然可以进行加权操作。通常建议使用加权平均而非简单平均,以突出序列末尾部分------此处已将所有做出分类决策所需的信息输入储备池。为了保留短序列中不同时间点的信息,可以计算短序列内多个时间区间\(\sigma_1, \dots, \sigma_k\)上的加权平均\(\sigma_{1x}, \dots, \sigma_{kx}\),并将其拼接为扩展状态\(\sigma_*x = \\sigma_{1x}; \\dots; \\sigma_{kx}\)。该扩展状态\(\sigma_*x\)可替代\(\sigma_x\)用于性能更强的分类。这种情况下,\(W^{\text{out}}\)也会扩展为\(W_*^{\text{out}} \in \mathbb{R}^{N_y \times k \cdot (1 + N_w + N_x)}\)。
拼接不同区间的加权时间平均值,以实现性能更强的分类读出。
由于短序列通常长度不一(这也是使用时序分类方法的优势),区间\(\sigma_1, \dots, \sigma_k\)应按比例缩放以匹配每个序列的长度。本节目前介绍的技术通过将变长输入\(u(n)\)转换为固定大小的特征向量\(\sigma \in \mathbb{R}^{n \times (1 + N_w + N_x)}\),有效将时序分类问题转化为静态数据分类问题。此时可采用诸多强力的机器学习方法解决静态分类问题,例如逻辑回归或最大间隔分类器。不同可选方案可参见例如文献3。这些方法定义的误差函数各不相同,且提供不同的、大多为迭代式的优化算法。
可采用不同的静态数据强力分类方法,作为基于时间平均激活值\(\sigma_*x\)的读出结果。
例如,可使用与时序数据相同的回归方法训练线性读出器\(y = W^{\text{out}} \sigma_x\),并按照(27.14)所示的方式通过最大值判定所属类别。这种情况下,每个短序列\(u(n)\)仅会收集一对向量\(y_{\text{target}}\)和\(\sigma_x\),分别存入\(X_{\text{target}}\)和\(\tilde{O}\),用于按照(27.9)或(27.12)进行训练。由于这会将训练数据点从总时间步数缩减至短序列数量,因此需要采取防止过拟合的措施。这类用于分类的回归训练具有单次计算闭式解的优势;但由于其未直接优化分类准确率,因此并非最优方案。
7.4.6 大纲学习
此处我们无需深入算法的具体细节。我们常用的算法技术可用于解决数学问题。
27.5 处理输出反馈
27.5.1 输出反馈
对于最普适的输出反馈控制,非线性函数\(\Phi\)可通过迭代法求解得到。反馈控制被设计为系统输出与输入的函数。
基于200折交叉验证训练图神经网络后(4.3.2.2)
在采用20折交叉验证(4.3.2.2)的并行训练场景中,图神经网络在数据集的20个不同子集上进行训练,其中10%的数据用于测试。随后,该流程会在全数据集上使用10折、5折、50折、100折、200折、500折、1000折、2000折、5000折和10000折交叉验证(4.3.2.2)重复执行,并对每种配置的结果进行比较。
| 表 | 说明 |
|---|---|
| 表3.4.1 | 图神经网络在200折交叉验证(4.3.2.2)下的性能 |
| 表3.4.2 | 图神经网络在200折交叉验证(4.3.2.2)下的性能 |
27.5.3 带真实反馈的在线学习
- 另一种方案是开展多轮训练,将介于完美目标信号\(\mathbf{y}_{\text{target}}(n)\)与上一轮迭代得到的实际信号\(\mathbf{y}(n)\)之间的信号反馈回系统。例如,相较于使用真实反馈运行,由ESN生成的单步信号预测可作为下一轮训练的教师强制输入19。这种方式下,模型会学习从自身实际输出的正确信号的偏差方向中恢复,而非像噪声场景中那样仅从随机偏差中恢复;同时教师信号也不会与目标信号偏离过远。
- 另一种近期提出的方案是对循环连接\(\mathbf{W}\)本身也进行正则化。对\(\mathbf{W}\)执行带正则化的一次性重学习(类似于针对\(\mathbf{W}^{\text{out}}\)的岭回归(27.9)),使其生成的\(\mathbf{x}(n)\)与初始随机生成的\(\mathbf{W}\)产生的\(\mathbf{x}(n)\)一致,以此降低循环连接强度,提升ESN生成器的稳定性38,37。
- 处理ESN中输出反馈的第二种策略是采用在线(而非一次性)学习算法训练输出矩阵\(\mathbf{W}^{\text{out}}\),同时启用反馈机制,将尚未完全学习完善的输出反馈回系统,而非使用教师信号。这种方式下,模型会在真实生成场景中学会自我稳定。
- 通用型在线学习算法(如27.4.8节中讨论的那些算法)可用于实现这一目标。不过,目前已有不少专门针对带反馈的输出训练设计的在线RC学习算法,事实上这些算法在无反馈的情况下无法正常工作。
- **反向传播解相关(BPDC)4f**就是这样一种高度优化的RC在线学习算法,其时间复杂度与连接数量呈线性关系。该算法对储层设置不敏感,能够快速追踪变化信号。但这一特性的弊端是,训练好的网络会遗忘此前见过的数据,且极易受近期数据的影响。文献45中报道了降低这一影响的部分解决方案。
- 近期有一种名为FORCE 的RC方法,它采用RLS(见27.4.8节)在线学习算法,在真实反馈存在的情况下强烈适配\(\mathbf{W}^{\text{out}}\)46。通过初期对\(\mathbf{W}^{\text{out}}\)的快速、强效适配,反馈信号\(\mathbf{y}(n)\)从学习过程一开始就保持在期望的\(y_{\text{target}}(n)\)附近,与教师强制机制类似。该算法受益于储层初期自发的混沌激活,这些激活随后会被反馈抑制。FORCE学习方法似乎特别适合生成非常稳定、精准的神经模式生成器。
27.6 总结与实现
我们提出了许多成功应用ESN的实用方案。其中部分方案不具备普适性,需要根据具体任务筛选。这些方案也并非唯一可行的技术路径,大概率还有优化空间。不过它们汇总了该领域自诞生起十年间积累的最佳实践,能够为ESN领域的研究者和从业者提供可靠的指导原则。实现ESN的难度相对较低。可通过http://reservoir-computing.org/software/minimal获取多种编程语言编写的极简单页自包含代码示例。此外也有许多现成且可扩展的软件库,其中集成了本文描述的诸多技术。可通过http://reservoir-computing.org/software查阅不同编程语言、复杂程度各不相同的开源RC工具箱合集。其中最为全面的是Python编写的Oger工具箱,访问地址为 http://reservoir-computing.org/oger 。http://reservoir-computing.org网站是储层计算相关资源的优质综合平台,新用户也可在该网站注册并贡献内容。
致谢
作者得到了欧洲FP7项目ORGANIC和AMARSi的经费支持。作者特别感谢Herbert Jaeger对本章的校对和提出的宝贵建议,同时也感谢匿名审稿人,以及整个储层计算社区------本章在一定程度上基于该社区的集体智慧编写而成。
参考文献
- 1 Bengio, Y.、Simard, P.、Frasconi, P.:《使用梯度下降学习长期依赖关系难度较高》.《IEEE神经网络汇刊》5(2), 157--166 (1994)
- 2 Bergstra, J.S.、Bardenet, R.、Bengio, Y.、Kégl, B.:《超参数优化算法》// Shawe-Taylor, J., Zemel, R.S., Bartlett, P., Pereira, F.C.N., Weinberger, K.Q. (编).《神经信息处理系统进展23(NIPS 2010)》pp. 2546--2554 (2011)
- 3 Bishop, C.M.:《模式识别与机器学习(信息科学与统计学)》. Springer-Verlag New York, Inc., Secaucus (2006)
- 4 Chatzis, S.P.、Demiris, Y.:《回声状态高斯过程》.《IEEE神经网络汇刊》22(9), 1435--1445 (2011)
- 5 Chatzis, S.P.、Demiris, Y.:《Copula回声状态网络》.《模式识别》45(1), 570--577 (2012)
- 6 Daukantas, S.、Lūkoševičius, M.、Marozas, V.、Lūkoševičius, A.:《多通道信号丢失数据重建中"黑箱"与"灰箱"方法的对比》//《第14届国际生物医学工程大会论文集》,考纳斯, pp. 135--138 (2010)
- 7 Dominey, P.F.、Ramus, F.:《自然语言的神经网络处理:I. 婴儿对语言的序列、时序及抽象结构的敏感性》.《语言与认知过程》15(1), 87--127 (2000)
- 8 Doya, K.:《循环神经网络学习中的分岔现象》//《IEEE电路与系统国际研讨会论文集》vol. 6, pp. 2777--2780 (1992)
49 Verstraeten, D., Schrauwen, B., D'Haene, M., Stroobandt, D.:储层计算方法实验性统一研究。《神经网络》20(3),391--403 (2007)
50 Verstraeten, D., Dambre, J., Dutoit, X., Schrauwen, B.:储层的记忆能力与非线性的权衡。载于:国际神经网络联合会议(IJCNN)会议论文集,pp. 1--8 (2010)
51 Werbos, P.J.:随时间反向传播:原理与操作方法。《IEEE学报》78(10),1550--1560 (1990)
52 Williams, R.J., Zipser, D.:全循环持续运行神经网络的学习算法。《神经计算》1,270--280 (1989)
53 Wyffels, F., Schrauwen, B., Verstraeten, D., Stroobandt, D.:带通储层计算。载于:Hou, Z.,Zhang, N.(编)《2008年IEEE国际神经网络联合会议(IJCNN 2008)会议论文集》,中国香港,pp. 3204--3209 (2008)
54 Zimmermann, H.-G., Tietz, C., Grothmann, R.:基于循环神经网络的预测方法:12个实用技巧。载于:Montavon, G.,Orr, G.B.,Müller, K.-R.(编)《神经网络:行业诀窍(第2版)》,LNCS丛书第7700卷,pp. 687--707。海德堡:施普林格出版社 (2012)
基于循环神经网络的预测方法:12个实用技巧
Hans-Georg Zimmermann, Christoph Tietz, Ralph Grothmann
西门子股份公司企业技术部,德国慕尼黑,奥托-哈恩环路6号,邮编81739
Hans_Georg.Zimmermann@siemens.com
摘要。 循环神经网络(RNN)通常被视为结构相对简单、但配套学习算法却十分复杂的架构。本文持不同观点:我们基于循环神经网络可以建模任意高维非线性动态系统这一事实展开研究,而非将研究重心放在学习算法上,而是聚焦于网络架构的设计。时间展开就是这类建模理念的典型示例:该方法将时序算法转化为架构框架,使得学习过程可以通过标准误差反向传播的扩展实现。本文提出12个实用技巧,不仅能够帮助读者更深入理解循环神经网络的运行机制,还能提升从数据中识别底层动态系统的能力。
28.1 引言
在众多工商管理领域,复杂规划与决策工作都可以通过定量预测模型提供支持,这类模型会考虑大量具有非线性因果关联的影响因素,同时还需要纳入预测中的不确定性。原材料采购、需求规划就是典型应用场景:精准的市场价格预测能够优化铜的采购时机,而准确的产品销量预测则能提升交付可靠性、降低运营成本。能源生产等技术领域同样需要对复杂动态系统进行建模。本文介绍适用于时间序列预测的时滞循环神经网络(RNN),同时提出12个实用技巧,不仅能降低RNN的使用门槛,还能提升预测精度。这些RNN及相关技巧已在我们经济、工业领域的众多客户项目中得到应用。
RNN在处理预测相关的典型挑战时优势显著。凭借通用逼近特性11,RNN能够建模高维非线性关系,其延时信息处理功能可捕捉时序结构。与之相比,传统计量经济学通常采用线性模型(例如自回归模型(AR)、多元线性模型),这些模型可以被整合到矩阵\(A\)中。此外,在不失一般性的前提下,我们可以使用式28.3中的线性输出方程;如果输出方程(式28.3)存在非线性项,也可以将其合并到状态转移方程(式28.3)中,具体细节可参考Schäfer等人的研究11。我们使用时域有限展开技术10解决时序系统识别问题,即选择合适的矩阵\(A\)、\(B\)和\(C\)以最小化误差函数(式28.1)。其背后的核心原理是:如果矩阵\(A\)、\(B\)、\(C\)在各个时间步保持一致(即共享权重),那么任意RNN都可以被重构为等价的前馈神经网络。图28.1展示了对应的RNN结构。
图28.1 采用共享权重\(A\)、\(B\)、\(C\)的时间展开基础RNN
共享矩阵的一大优势是自由参数(权重)数量适中,能够降低过拟合风险18。实际训练过程采用随时间反向传播(EBTT)结合随机学习规则13, 10完成,算法实现细节可参考B. Pearlmutter的综述文章9。
技巧2 过预测(Overshooting)
实际应用中我们经常观察到,循环神经网络往往只关注最新的外部输入,以此解释动态变化。为了平衡信息流,我们采用一种名为过预测(Overshooting)的技巧,将自主系统动力学(编码矩阵\(A\))向未来延伸(此处为\(t+2\)、\(t+3\)、\(t+4\))18(见图28.2)。要准确描述这些未来时间步中动力学的发展过程,矩阵\(A\)必须能够跨时间步传递信息。不同时间步的矩阵\(A\)均指向同一个原型矩阵\(A\),因此共享权重原则能够帮助我们保持对应原理的局部性(见技巧1),进而计算出一致的多步预测结果。对应的RNN架构如图28.2所示。对于该RNN,我们通常采用\(u_{\tau}=x_{\tau}-x_{\tau-1}\)作为原始数据\(x\)的输入预处理变换,以避免输入数据出现趋势或
该图展示了E-ZN架构概览。E-ZN是一种新型神经网络架构。它是一个具有大量参数的两层神经网络,可通过单隐藏层进行训练。该图展示了E-ZN的架构:左侧列为隐藏层,右侧列为输出层,这两列对应网络的两层。
在初始状态\(\boldsymbol{s}^0\)下测得的数值可理解为由真实初始状态向量\(\boldsymbol{s}^0\)的信息缺失所导致的不确定性。我们使用服从残差\(\epsilon\)分布的噪声项\(\Theta\)对初始状态\(\boldsymbol{s}^0\)进行扰动。给定不确定的初始状态,学习过程会尝试匹配动态过程中的输出-目标关系。学习完成后,我们会得到以压缩形式呈现的状态转移矩阵,从而消除初始不确定性。图28.3展示了对应的网络架构。
需特别注意的是,噪声项\(\Theta\)直接从观测到的残差中提取,无需对底层噪声分布做任何假设。因此,网络对初始状态向量\(\boldsymbol{s}^0\)的去敏化可视为建模过程的自缩放稳定器。通常,离散时间轨迹可视为随时间排列的点序列,这种轨迹好比内部状态空间中的一根细线,对初始状态向量\(\boldsymbol{s}^0\)非常敏感。若对\(\boldsymbol{s}^0\)施加噪声,轨迹会在内部状态空间中形成管状结构。得益于自适应噪声项的特性,该管状结构会随时间收缩,从而保证能够识别出稳定的动力系统。
技巧4:纠错神经网络(ECNN)
循环神经网络(RNN,见图28.1或28.2)的一个缺陷是,建模过程可能受到未知外部干扰或冲击的影响。为此,下一项技巧------纠错神经网络(ECNN)在状态转移式(28.4)中引入了额外项\(z_{\tau} = \tanh(y_{\tau} - y^{d}{\tau})\)。该项可被理解为校正因子:时刻\(\tau\)的模型误差\((y{\tau}-y^{d}_{\tau})\)量化了拟合偏差,可用于后续调整模型输出。
\s_{\\tau+1} = \\tanh(A s_{\\tau} + B u_{\\tau} + D \\tanh(y_{\\tau} - y\^{d}_{\\tau})) \\
输出方程:
\y_{\\tau} = C s_{\\tau} \\
(28.4)
图25.6 噪声驱动正交化的ESN
需注意\(\lambda^-_N\)是一阶特征值的最终负值,而\(\boldsymbol{w}^+\)是一阶正交向量的外积。
图28.5 具有变体不变分离特性的ECNN
期望值\(\mathbb{E}\\boldsymbol{x}_\\tau = C \boldsymbol{s}\tau\)与变换后的观测值\(\bar{\boldsymbol{x}}^d\tau = \mathbb{E}(-\boldsymbol{y}^d_\tau)\)对齐。需注意ECNN需要负输入\(-\boldsymbol{y}^d_\tau\)来生成变换后的目标\(-\bar{\boldsymbol{x}}^d_\tau\)。根据我们的经验,扩展ECNN(图28.5)的训练过程非常鲁棒,即坐标变换和预测任务可以并行训练。时不变信息不会在瓶颈网络中丢失,只会被归入表征的低方差分量中。此外,还可以对中间层进行节点剪枝。由于权重共享,瓶颈网络中的剪枝操作结果也会同步传递到ECNN分支。我们已成功将图28.5所示的ECNN应用于电力负荷曲线和交通流的预测。
在负荷预测场景中,通常需要以15分钟为时间粒度预测负荷曲线,即每天产生96个观测值。为避免纯迭代模型的误差累积,按天预测负荷曲线是更优选择。根据我们的经验,负荷曲线(即每天96个观测值)可被压缩为维度\(d \approx 8\)的指标向量,后续也可通过该向量重建负荷曲线。从数学角度看,该方法等价于流形上的动力系统建模,而深度瓶颈神经网络可以生成更复杂的流形。
技巧6:历史一致神经网络(HCNNs)
许多现实世界中的技术与经济应用都处于大系统背景下,系统中的各类(非线性)动力过程会在时间维度上相互作用。遗憾的是,我们仅能观测到其中一小部分变量,需要从这些可观测变量的子集出发,重建大系统的隐藏变量,以理解其动力特性。此处术语可观测变量 包含了传统建模方法中的输入与输出变量(即\(\boldsymbol{y}\tau := (\boldsymbol{y}\tau, \boldsymbol{u}\tau)\))。这也分别对应RNN(图28.1)或ECNN(图28.4)中的一致性问题:在输出端,RNN(ECNN)会输出可观测变量\(\boldsymbol{y}\tau\)对应的动力预测结果;而在输入端,模型假设可观测变量\(\boldsymbol{y}_\tau\)从当前时刻起不再发生变化。这种一致性的缺失是模型内部的明显矛盾。
模型框架。反之,如果我们能够构建一种模型框架,使得通用描述和预测可适用于所有可观测变量的趋势,我们就能够闭合该开放系统------换句话说,我们将对大型动态封闭系统进行建模。
接下来要介绍的技巧称为历史一致性神经网络(HCNNs),它引入了一类遵循大型动态系统建模设计原则的模型,克服了传统模型的概念性缺陷。式28.5给出了历史一致性神经网络(HCNN)的表述。
state transition $s_{\tau+1} = A \tanh(s_\tau)$
output equation $y_\tau = Id_{.0} s_\tau$
在HCNN(28.5)中,所有可观测变量的联合动态特性由状态序列\(s_\tau\)刻画。可观测变量(\(i=1,\dots,N\))被排布在前\(N\)个状态神经元\(s_{..}\)上,后续神经元则为不可观测(隐)变量。连接器\(Id_{.0}\)是用于读取可观测变量的固定矩阵。初始状态\(s_0\)被定义为一个偏置向量,偏置\(s_0\)和矩阵\(A\)是仅有的自由参数。
与标准RNN类似,HCNNs同样具有通用逼近能力。RNN的相关证明可参见11,图28.10概述了HCNNs的证明过程。如图28.6所示,HCNN通用逼近能力的证明可分为六个步骤:
- 将输出方程向前平移一个时间步,将得到的\(s_{\tau+1}\)用系统状态转移方程替换。
- 将输出和状态变量组合为扩展状态,得到扩展状态转移方程。系统的输出由扩展内部状态的前若干分量导出。
- 对扩展状态转移方程应用前馈通用逼近定理。至少在有限时间范围内,该定理能保证较小的逼近误差。需要注意的是,在RNN中,状态向量至少有一个较大的分量与双曲正切函数结合即可模拟偏置向量,因此我们在神经网络方程中省略了偏置向量的显式表述。
- 本步骤中,我们移除状态转移方程中的两个矩阵之一。对状态做变换\(r_\tau = As_\tau\),由此得到两个状态转移方程。
- 可将两个状态转移方程重整合为一个状态转移方程,其维度为原方程的两倍。
- 重写位于tanh激活函数前的矩阵,即可得到封闭系统的目标表达形式。矩阵\(A\)不再作用于tanh激活函数内部,而是用于tanh激活函数外部。这一方式的优势是:状态以及系统输出不再受tanh(.)非线性特性产生的有限状态空间\(-1;1^N\)的限制。输出方程的形式简洁且不依赖具体应用场景。需要注意的是,我们仅能观测状态向量的前若干分量。
实际应用中我们发现HCNNs较难训练,因为这类模型没有输入信号,且需在整个数据集上展开。接下来的技巧是针对HCNNs的结构化教师强制(ATF),它可以最大程度利用可观测变量的数据,加速HCNN的训练20,14,9。集成了教师强制的HCNN如图28.8所示。
在采用ATF的HCNN(图28.8)中,直到\(\tau=t\)时刻的所有可观测变量的预测值会被替换为实际观测值。HCNN的输出层会被赋予固定的零目标值。可观测变量的负观测值\(-y_{\tau}^{d}\)会被添加至输出层。这会迫使HCNN生成预测值\(y_{\tau}\),以补偿负观测值\(-y_{\tau}^{d}\)。输出层的内容(即\(y_{\tau} - y_{\tau}^{d}\))现在会逐分量带符号传输至隐层\(r_{\tau}\)的前\(N\)个神经元。此外,我们还会将状态\(s_\tau\)中的预测值\(y_\tau\)复制到中间隐层\(r_\tau\)中。最终,状态向量\(s_\tau\)前\(N\)个分量上的预测值\(y_\tau\)会被替换为观测值\(y_{\tau}^{d} = y_{\tau} - (y_{\tau} - y_{\tau}^{d})\)(图28.8)。
ATF机制的所有连接都是固定的。完成ATF步骤后,会应用状态转移矩阵\(A\)将系统推进至下一个时间步。根据定义,我们无法获得未来时间步的可观测变量数据,因此该系统此时仅基于预测值进行迭代。这一操作将开放系统转变为动态封闭系统。若训练过程中误差收敛至零,则图28.8中的HCNN与图28.7中的架构等价,此时我们就解决了最初的问题。
技巧8. 稀疏性、维度与连接性和记忆长度的权衡
随着时间推移,HCNNs可能需要并行建模十个、二十个甚至更多的可观测变量。显然我们必须处理高维动态系统(例如在我们的商品价格模型中,我们设置\(dim(s) = 300\))。使用该维度的全连接状态转移矩阵\(A\)进行迭代存在风险:矩阵-向量运算有时会产生大数,这些大数会在网络的递归计算中扩散,最终导致算术溢出。为避免这一问题,我们可以选择稀疏矩阵\(A\)。这样线性代数运算不会累积大数,大数在网络中的扩散也会被稀疏性抑制。
我们需要确定应选择的维度和稀疏程度。在文献16中,我们推导出维度和稀疏性与另一对元参数相关:连接性(con)和记忆长度(mem)。连接性被定义为矩阵\(A\)每行中非零元素的个数。记忆长度是指需要收集多少个时间步的信息才能达到马尔可夫状态,即状态向量包含过去所有必要信息的时间步长。
| 参数 | 公式 |
|---|---|
| \(A\)的模式 | \(\dim(s) = con \cdot mem\) (28.6) |
| \(A\)的稀疏性 | \(Sparsity = random\left(\frac{con}{mem \cdot con}\right) = random\left(\frac{1}{mem}\right)\) (28.7) |
| 式28.7体现了这样一条认知:稀疏系统在信息于网络中扩散前,能保存信息更长的时间。例如移位寄存器非常稀疏,仅起到存储记忆的作用;而在全连接矩阵中,信息的叠加会掩盖信息来源。假设我们用均匀随机稀疏矩阵\(A\)初始化状态转移矩阵。根据式28.7,\(A\)中相对密集的部分会建模整体动态中的快速子动态,而高度稀疏的部分则聚焦于慢速子系统。因此,稀疏随机初始化可以实现不同时间尺度系统的联合建模。 | |
| 但遗憾的是,式28.6倾向于使用非常大的维度。我们此前在该主题上的研究(参见16)是先预设系统的记忆长度mem,因为对于RNN而言,记忆长度等于其在时间上的历史展开长度。另一方面,连接性需要选择得大于可观测变量的数量。在使用HCNNs时,记忆长度的重要性较低,因为我们会沿整个数据时间范围展开神经网络,此时连接性起主导作用。根据我们的经验,EBTT算法在连接性小于等于50(\(con\le50\))时能稳定运行。出于计算性能考虑,我们通常将状态维度限制为\(dim(s)=300\),对应的稀疏度为\(50/300\approx17\%\)。参数的微调交由EBTT学习过程完成。我们提议用随机选择的稀疏度网格初始化神经网络,该稀疏度网格是任意选取的,不会通过剪枝等算法进行优化。 | |
| 这引发了一个疑问:随机稀疏初始化是否会让网络偏向次优解。这一问题可通过集成预测解决。我们使用不同的稀疏度网格进行集成实验,并与基于相同稀疏度网格的集成结果对比,发现集成的平均值和集成宽度均不受稀疏度网格初始化的影响(有关集成预测的更多细节可参见技巧12)。上述结论仅适用于大型系统。 |
技巧9. 因果-反因果神经网络(CRCNNs)
HCNN的基本思想是以因果方式解释可观测变量的联合动态,即信息流从过去
28. 基于循环神经网络的未来预测
不过,理性规划不仅来自因果信息流,还来自对未来发展的预判,以及基于特定目标函数对这些预判做出响应。这与最优控制理论中的伴随方程类似6。换句话说,回溯因果信息流等价于将行为的动机作为目标来追问。反过来,这是重构动态过程的锚点。
为了将理性决策和规划的影响纳入建模,接下来的技巧引入了因果-回溯因果神经网络(CRCNN)。CRCNN的核心思想是:在从过去指向未来的HCNN的因果信息流基础上,增加一条从未来指向过去的回溯因果信息流,从而丰富因果信息流的内容。
CRCNN模型由以下方程组(28.8)给出:
causal state transition $s_{\tau} = A \tanh(s_{\tau-1})$ retro-causal state transition $s'_{\tau} = A' \tanh(s'_{\tau+1})$ output equation $y_{\tau} = [Id, 0]s_{\tau} + [Id, 0]s'_{\tau}$. (28.8)
CRCNN的输出方程\(y_{\tau}\)(公式28.8)是因果影响与回溯因果影响的混合。因此所有可观测量的动态过程,都可以通过一系列因果状态(\(s_{\tau}\))和回溯因果状态\(s'_{\tau}\),结合分别对应因果、回溯因果信息流的转移矩阵\(A\)和\(A'\)来解释。
基于公式28.8,我们绘制了如图28.9所示的CRCNN网络架构:
Fig. 28.9. 因果-回溯因果历史一致神经网络(CRCNN)
技巧10. 面向CRCNN的架构级教师强制(ATF)
如图28.9所示的CRCNN同样跨越整个时间路径展开,即我们学习系统的完整演化历史。与HCNN的训练类似,CRCNN的训练难度较高。我们下一个面向CRCNN的技巧称为架构级教师强制(ATF),它将教师强制(TF)作为CRCNN架构的一部分,使我们能够使用标准的EBTT算法3训练CRCNN。ATF能够帮助我们更高效地利用数据中包含的信息,同时加快训练速度。图28.10展示了集成ATF机制的CRCNN架构:
Fig. 28.10. 集成架构级教师强制(ATF)机制的扩展CRCNN
接下来我们解释扩展CRCNN模型(图28.10)中的ATF机制:扩展CRCNN使用因果-回溯因果网络,以对称方式修正网络另一部分的误差。在每个时间步\(\tau \leq t\),我们通过针对因果部分和回溯因果部分的中间tanh()层,将期望值\(y_\tau\)替换为观测值\(y_\tau^d\)。
由于因果部分和回溯因果部分共同解释可观测变量\(y_\tau\),因此我们需要将因果部分的信息注入回溯因果部分,反之亦然。具体做法是:在目标值固定为0的输出层中,用因果部分(\(\Delta_\tau\))和回溯因果部分(\(\Delta'\tau\))的输出补偿实际观测值\(-y\tau^d\),使得输出层的最终内容(\(\Delta_\tau + \Delta'\tau - y\tau^d = 0\))取反后,通过固定的\(-Id, 0'\)连接器传递到CRCNN的因果和回溯因果部分。
在中间tanh()层中,\(y_\tau\)的期望值被替换为实际观测值\(y_\tau^d\),同时会考虑CRCNN另一部分对\(y_\tau\)的贡献。
需要注意的是,ATF不会增加网络自由参数的数量,因为所有新增连接都是固定的,仅在神经网络中用于数据传输。在未来的时间方向\(\tau > t\)中,CRCNN仅基于期望值进行迭代。ATF的使用不会重新引入输入/输出建模,因为我们用可观测量的实际观测值替换了其期望值,同时考虑了动态过程的因果和回溯因果两部分。对于规模足够大的CRCNN,且输出误差收敛至0时,图28.10中的架构会收敛至图28.9所示的基础CRCNN架构。
CRCNN的优势在于,它支持因果与回溯因果信息流的完全动态叠加。图28.10中的CRCNN描述的是流形上的动态过程。在每个时间步中,信息流都包含闭环,从技术角度看这些闭环可视为等式约束。这些约束仅通过因果与回溯因果两部分的交互隐式定义。
CRCNN架构(图28.10)中的闭环会在模型中形成定点循环子结构,这类结构难以用EBTT处理。作为解决方案,我们提出一种与技巧7类似的解法思路:将CRCNN模型嵌入到一个更大的网络架构中,该架构更易求解,且会收敛至与原系统相同的解。图28.11展示了这类嵌入的初始方案:
Fig. 28.11. CRC神经网络中ATF的非对称分割
图28.11中的扩展架构是图28.10所示原始模型的复制版本。图28.11中的CRCNN架构不包含闭环,因为我们将面向因果和回溯因果两部分的ATF机制分割为两个分支。需要注意的是,这两个分支通过因果和回溯因果部分的共享权重隐式连接。如果该架构收敛,就不再需要ATF,此时我们会得到两个完全相同的CRCNN模型副本,如图28.9所示。针对该定点循环的嵌入解决方案并非唯一可行的处理方式,我们将在后续论文中介绍其他替代方案。CRCNN是我们商品价格预测项目的基础。
技巧11. 动态系统中的稳定与不稳定信息流
按照技巧3的思路,在因果分支和回溯因果分支中都加入噪声是自然的选择(另见图28.12)。这应当能分别提升两个时间方向(即信息流)的稳定性。在CRCNN中,该特性有特殊的含义:因果信息流的稳定性意味着初始的不确定性会在从过去到未来的时间路径上被抑制;因果系统的不稳定性则意味着过去的微小扰动会在混沌状态下扩散为截然不同的未来场景(见图28.12上半部分)。
7.5 DIBY、DUNN、G. TATE与J. GASKAUNTZ
《观测卷》是连续中期SEC观测的全时段记录。但这并不意味着所有数据都质量不佳。对于本文所呈现的这类观测,我们已验证了该方法的有效性。稍后我们将看到,数据质量不仅取决于仪器本身的性能,也与精细的数据筛选以及恰当的分析方法选用密切相关。本文报告了对DIBY、DUNN、G. TATE与J. GASKAUNTZ观测卷的研究结果,本研究基于以下数据:
7.3 结论与展望
(网络)以节点形式构成独立层,以连接形式构成层间关联。在图架构中,我们可以采用误差反向传播这类局部学习算法,以及合适的随机学习规则来训练神经网络13, 17, 3。这种关系被称为方程、架构与对应局部算法之间的对应原则(技巧1)。采用共享权重矩阵对循环神经网络(RNN)进行时间维度有限展开,可帮助我们遵循上述对应原则。过冲机制可强化自主动力学特性,支持长期预测(技巧2);而自适应噪声项则可应对时间维度有限展开带来的不确定性(技巧3)。ECNN(误差校正神经网络)将先前的模型误差作为额外输入,因此学习过程可将模型拟合偏差解读为外部冲击,用于后续引导模型动力学演化。该机制可避免模型的自主部分拟合错误的跨期因果关系。若已知动力系统受外部冲击影响,ECNN的误差校正机制是网络架构的重要预构元素,可用于补偿缺失的输入(技巧4)。通过向ECNN引入变体-不变体分离扩展,可将底层动力系统额外的先验结构知识纳入模型。借助瓶颈坐标变换实现变体与不变体分离,可处理高维问题(技巧5)。HCNNs(层次循环神经网络)不仅可建模单一动力系统,还可建模由多个相互作用的子动力系统构成的复杂系统。HCNNs的输入输出变量具有对称性,即系统描述不会对输入、输出和内部状态变量做任何区分。因此开放系统可转化为封闭系统(技巧6)。稀疏转移矩阵可支持不同时间尺度的建模,同时稳定训练过程(技巧8)。集成模型CRCNN(循环因果神经网络)内的因果与逆因果信息流,可用于建模市场中的理性规划与决策过程。CRCNNs可动态整合因果与逆因果信息,以描述当前市场状态(技巧9)。架构级教师强制可高效训练HCNN或CRCNN(技巧7与10)。一项架构扩展(见图28.12)可在CRCNN学习过程中平衡因果与逆因果信息流(技巧11)。我们通常采用HCNN或CRCNN集成模型来预测大宗商品价格。所有方案在过往数据上的模型误差均为零,但在未来预测中表现出不同行为。这一差异源于从观测数据中重建隐变量的不同方式,与不同的随机稀疏初始化无关。由于每个模型都能完美拟合观测数据,在假设集成分布为单峰分布的前提下,我们可以将各预测结果的简单算术平均值作为期望值。对集成离散度的分析为市场风险研究提供了新视角。我们认为,CRCNN或HCNN的模型风险等同于预测风险(技巧12)。
参考文献
-
1 J. P. F. J. C.,2在3中的作用。
-
2 G. L.,1980年
-
3 S.,2005年
-
4 A. M.,1985年
-
5 K.,1985年
-
6 S. M.,1985年
-
7 T. A.,1985年
-
8 S.,1985年
-
9 R. D.,1985年
-
10 M.,1985年
-
11 S. T.,1985年
-
12 L.,1985年
-
13 L. M.,1985年
-
14 C.,1985年
-
15 B. A.,1985年
-
16 B.,1985年
-
17 W.,1985年
17 齐默尔曼,H.G.:《神经网络作为决策计算工具》。载于:雷库格勒,H.,齐默尔曼,H.G.(编)《经济学中的神经网络:基础与科学应用》。弗兰根出版社,慕尼黑(1994)
18 齐默尔曼,H.G.,诺伊奈尔,R.:《动态系统建模的神经网络架构》。载于:科伦,J.F.,克雷默,S.(编)《动态循环神经网络实用指南》,第311--350页。IEEE出版社(2001)
19 齐默尔曼,H.G.,格罗特曼,R.,蒂茨,C.,冯·若安-迪德里希,H.:《基于历史一致性神经网络的市场建模、预测与风险分析》。载于:胡,B. 等(编)《2010年运筹学会议论文集,德国运筹学学会(GOR)年度国际会议选录》,慕尼黑。施普林格出版社,海德堡(2011年9月)
20 齐默尔曼,H.G.,格罗特曼,R.,蒂茨,Ch.:《基于因果-回溯因果神经网络的市场价格预测》。载于:克拉特,D.,吕蒂,H.-J.,施梅德斯,K.(编)《2011年运筹学会议论文集,2011年国际运筹学会议(OR 2011)选录》,瑞士苏黎世。施普林格出版社(2012)
29 用循环神经网络求解部分可观测强化学习问题
摘要:本章旨在提供一系列用于神经状态估计的技巧与操作指南,尤其适用于强化学习的实际应用。我们采用多种拓扑结构的循环神经网络,这类网络能够识别复杂动态系统的连续值、可能高维的状态空间。循环神经网络明确提供了考虑时间与记忆维度的可能性,原则上可对任意类型的动态系统进行建模。正因为具备这些能力,循环神经网络是近似动态系统马尔可夫状态空间的合适工具。第二步可应用强化学习方法求解预设的控制问题。除使用循环神经网络进行状态估计这一技巧外,本章还讨论了实际场景中的诸多问题,如大规模可观测集和长期依赖问题。此外,燃烧过程会产生异响,这种异响会缩短机器寿命,甚至对涡轮机造成致命损坏。强化学习可通过优雅调节燃料配比来优化燃烧过程。强化学习还能纳入季节效应与设备磨损的影响,因为这些效应会体现在传感器读数中。基于(固定)物理模型的方法通常无法识别这类效应。要成功开发强化学习智能体,必须先解决状态估计问题(现实世界强化学习应用的其他问题解决方案见第30章23),以满足强化学习框架的要求。由于燃气轮机提供海量的传感器读数,涵盖温度、压力读数、质量流量,以及阀门位置、低级控制器设定值等执行器设置,因此状态维度极高。即便是专家也无法预判各子系统及其交互作用可能引发的所有影响,而状态估计方法可以解决这一问题。多种拓扑结构的循环神经网络(RNNs)被用于状态估计,因为它们能够识别实际应用中可能的连续值、高维状态空间。循环神经网络明确提供了考虑时间与记忆维度的可能性,原则上可对任何类型的动态系统进行建模9, 15, 11, 32。正因为这些能力,循环神经网络是状态估计(尤其是实际应用)的宝贵工具。基于上述估计结果,可应用强化学习方法求解预设的控制问题。本章共分为四个部分。在简要介绍强化学习及其要求后,第29.3节将描述使用循环神经网络建模马尔可夫状态空间的核心技巧。第29.4节将介绍从可能的大规模可观测集中提取马尔可夫决策过程的技巧,并针对强化学习的状态估计任务进一步调整神经网络拓扑结构。为应对捕获动态依赖的不同时间尺度这一任务,第29.5节提供了长期依赖问题的解决方案。针对所有介绍的技巧,本章引入了作为实践指南的操作方案,以避免潜在陷阱并提升普适性。此外,本章还展示了一些实验,以验证所提流程的适用性。
29.2 背景
强化学习通常需要将目标系统描述为马尔可夫决策过程(MDP)\(M := (\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R})\),其中\(\mathcal{S}\)与\(\mathcal{A}\)分别表示状态空间和动作空间,\(\mathcal{P} : \mathcal{S} \times \mathcal{A} \times \mathcal{S} \mapsto 0, 1\)是状态转移概率,即在状态\(s_t\)中执行动作\(a_t\)时进入后继状态\(s'_{t+1}\)的概率;\(\mathcal{R} : \mathcal{S} \times \mathcal{A} \times \mathcal{S} \mapsto \mathbb{R}\)是奖励函数,用于为每一次状态转移赋予即时效用或收益。强化学习的目的是推导策略\(\pi : \mathcal{S} \to \mathcal{A}\),该策略将每个状态映射到一个动作,以最大化
图29.1. 动力学过程可受到强化学习控制器执行的动作\(a\)的影响,也会受到外部驱动因素\(z\)的影响,例如燃气轮机的外部工作环境。上述两者都会改变动力学的状态\(s\),引发状态转移,最终生成一组可观测变量\(y\)。对于燃气轮机而言,可观测变量包括传感器读数(如温度、压力值)以及执行器设定值(如阀门开度)。该动力学过程可以用一组包含状态转移方程和输出方程的公式表示9, 11:
latex
s_{t+1} = f(s_t, a_t, z_t) \quad \text{state transition} \\
y_t = g(s_t) \quad \quad \quad \text{output equation.} \tag{29.1}
图29.1展示了公式29.1。状态转移是将系统当前内部状态\(s_t\)、外部输入\(a_t\)和\(z_t\)的作用映射到新状态\(s_{t+1}\)的过程。在强化学习场景中,输入\(z_t\)是智能体获取的(部分)系统信息,\(a_t\)代表控制策略选定的动作。输出方程用于确定可观测输出\(y_t\)。在基础框架中,输出等价于系统的结果变化,也即系统的后续可观测变量\(z_{t+1}\)。识别公式29.1所述动力系统的任务,可描述为寻找参数化函数\(f\)和\(g\),使得观测数据\(y_t^d\)与模型输出\(y_t\)之间的距离度量(公式29.2)最小:
latex
\sum_{t=1}^{T} (y_t - y_t^d)^2 \rightarrow \min_{f,g} \tag{29.2}
公式29.1和29.2的识别任务可以通过如下形式的循环神经网络(RNN)进行建模:
latex
s_{t+1} = \text{tanh}(\mathbf{A}s_t + \mathbf{c} + \mathbf{B}z_t + \mathbf{C}a_t) \quad \text{state transition} \\
y_t = \mathbf{D}s_t \quad \quad \quad \text{output equation} \tag{29.3}
其中\(\mathbf{A}, \mathbf{B}, \mathbf{C},\)和\(\mathbf{D}\)是维度匹配的权重矩阵,\(\mathbf{c}\)是偏置项。通过使用维度固定的权重矩阵\(\mathbf{A}, \mathbf{B}, \mathbf{C}, \mathbf{D}\)和偏置向量\(\mathbf{c}\)的RNN来近似函数\(f\)和\(g\),公式29.2的系统识别任务就被转化为参数优化问题:
latex
\sum_{t=1}^{T} (y_t - y_t^d)^2 \rightarrow \min_{\mathbf{A},\mathbf{B},\mathbf{C},\mathbf{D},\mathbf{c}} \tag{29.4}
29. 使用循环DNN进行循环学习
13, 14和18是这类新网络族中采用反向传播(BP)算法训练的典型示例。该网络族的首个实例是36和37,它们使用反向传播算法训练隐藏层的权重。第二类网络是"递归"网络(见15),这类网络采用随时间反向传播(BPTT)算法进行训练。第三类网络是"循环"网络(见15),这类网络同样采用随时间反向传播(BPTT)算法进行训练。本章节的结构安排如下:首先讨论动作在状态估计任务中的重要作用,以及需要在动作空间内对所有动作进行泛化的要求(见第29.3.1、29.3.2节);随后介绍用于生成合适训练集与测试集的数据与模式预处理方法(见第29.3.3、29.3.4、29.3.5节);接着介绍学习过程(见第29.3.6、29.3.7节);最后展示训练好的状态估计器的简化循环拓扑结构(见第29.3.8节)。第29.3.9节将通过车杆问题来演示上述方法的适用性。
29.3.1 提升针对动作的泛化能力
与开放动力系统的标准定义以及超调描述35不同,此处将已知的动作序列作为过去和未来的输入\(a_p, a_{p-1}, \ldots, a_0, a_1, \ldots, a_f\),其中\(p\)表示过去的步数,\(f\)表示未来的步数(见图29.2)。这一点至关重要,因为相关数据可能由任意(可能未知的)控制策略生成。对应的网络需要能够基于这些外部驱动因素\(a_f\)的作用对系统动力学进行建模,而无需从马尔可夫状态预测动作序列。例如,燃气轮机的数据可能由任意控制策略生成,若忽略这一效应,状态估计器将被强制在神经网络中编码底层策略,最终得到的网络大概率无法使用,因为它无法泛化到不同的动作序列,而这些序列正是执行强化学习策略时经常出现的。一般情况下,也建议测试训练好的状态估计器对不同动作序列的泛化能力,大多数系统都可以完成此类测试。例如,已知针对燃气轮机的某些动作可降低排放,对这些动作进行测试应能观测到氮氧化物(NOx)或一氧化碳(CO)的变化。
29.3.2 提升状态转移建模范式的方案
图29.2所示的标准RNN使用单个隐藏神经元簇来编码状态\(s\),状态转移由矩阵\(\mathbf{A}\)建模。在强化学习的状态估计场景中,我们需要对状态转移\(s_t \xrightarrow{a_t} s_{t+1}\)进行建模,这一点可以明确体现在神经网络拓扑中,从而提升估计器的整体性能,尤其是针对不同动作的泛化能力。请注意,优秀的状态估计器不仅需要最小化公式29.4中优化任务的训练误差,还需要能够很好地泛化到不同的动作序列(见第29.3.1节)。状态转移的神经表示如图29.3所示。
图29.3. 展示了对因施加动作而发生变化的状态转移进行建模的RNN:\(s_t \xrightarrow{a_t} s_{t+1}\)。注意所有隐藏簇以及所有输出簇都连接有偏置项(图中未显示)。
29.3.3 输入与目标的缩放
与其它监督学习方法类似,输入和目标值的缩放是必要的预处理步骤。通常更倾向于采用输入缩放以获得零均值和单位标准差的分布,也可以使用其他缩放方法,例如用于编码动力系统的先验知识。例如,对于燃气轮机排放这类浓度值,可使用对数缩放来避免出现不合理负输出值。
29.3.4 块验证
由于RNN的模式包含完整的输入和目标值序列,后续模式高度相关,每个模式仅与前一个模式相差一个时间切片。因此,如果将模式随机分配到用于更新权重的训练集,或用于评估当前权重集性能但不更新权重的验证集,会导致训练集和验证集之间存在强相关性,进而使训练误差和验证误差失去参考意义。为了消除模式集之间的相关性,可以通过使用不包含重叠信息的模式块来提高划分的粒度。每个块仅用于训练或测试。理想情况下,应生成统计特性完全一致的数据集。使用模式块的动机源于新场景的出现需求。例如,燃气轮机可能在满载工况下运行,随后切换到降低负荷的工况,经过瞬态过程后,燃气轮机达到新的负荷水平。这类过程通常持续数分钟,而控制器的设计频率是每隔数秒执行一次动作。通过将模式分组为块,既能消除数据集之间的相关性,又能覆盖所有运行工况。针对具体问题选择合适的块尺寸对获得良好结果和可靠的测试集至关重要。例如,若直接将两天的运行数据集划分为两个各一天的子集,两个子集的统计特性可能差异显著,且某个子集可能完全缺失部分运行工况。随机块验证算法(算法29.1)解决了上述问题。该算法使用的数据文件包含\(M\)个观测值,也即\(M\)个时间切片的数据向量。
-
首先,在预定义的
min_blocksize和max_blocksize范围内随机确定块\(j\)的尺寸。 -
随后,从连续的观测时间切片中生成\(j\)个模式。
-
每个模式在其整个时间范围内展开。换言之,如果拓扑结构定义了\(p\)个过去时间切片和\(f\)个未来
图29.4 使用块验证程序生成的模式。所有块均去相关,以生成可靠、不相关的测试集(即用于验证和泛化测试)。对于时间切片,整个模式覆盖 \(p + f\) 个观测值。此外,每个模式都会进行缩放(见第29.3.3节)。该过程会重复执行,直到块被填满或用完所有观测值。最后,根据预定义概率确定块的类型(训练集或测试集)。完整的块会被添加到最终模式集中。最终生成的模式按图29.4所示的方式组织。生成的数据集满足我们对模式集的要求:每个模式集(训练集和测试集)均去相关,但具有相似的特征,因为不同的运行情况会分布到所有模式集中。
29.3.5 无效数据模式的移除
在所有使用时间展开训练数据的应用中,可能会出现无效模式的问题。无效数据模式包含不符合预定义时间网格的数据。例如,每次燃气轮机重启时,数据流也会重新启动,从而产生间隙。任何生成的、包含上次停机(可能是几小时前)和新启动数据的模式都是无效的。它无法描述轮机的运行行为,因此应从所用模式中移除。有效的模式在每个时间展开的步长中,都包含与定义的时间网格匹配的输入。例如,如果选择了 \(t = \tau\) 的时间网格,有效模式会在 \(n\) 个等距步长 \(t = \tau, 2\tau, \dots, n\tau\) 上展开,其中 \(n\) 定义了模式的时间展开步长数。任何时间线上存在间隙的模式都应被排除,以避免无效训练模式。这个问题在许多实际应用中都会出现,也会出现在诸如倒立摆或 acrobot26 这样的分步基准问题中。实际中,只需扩展块验证算法(算法29.1)即可解决该问题。在调用子例程 generate($tm, \dots, tm + n$) 之前,会测试每个数据向量是否符合定义的时间网格。所有违反网格的数据向量都会被忽略。
218. 表5
| 差分 | 滞后时间 | 存储 |
|-------|-------|----------|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 4 | 4 |
| 5 | 5 | 5 |
29.3.8 学习设置
要获得学习设置,我们首先需要为深度学习算法制定学习计划。第一个参数是学习率值,第二个是参数数量(L),即训练算法中的参数个数。该算法的参数化包含4个参数,在大多数应用中可视为常数。常用取值为:\(e_{\text{rest}} = 50\),\(e_{\max} = 5000\),\(t_{\text{rest}} = 10\),\(t_{\max} = \infty\)。该参数化方案在大量应用中,以及针对规模从500到50000的训练模式集时,均表现出了稳健的效果。
2. 反向传播:一种高效的梯度计算算法
反向传播(Backpropagation)是一种在神经网络中计算梯度非常高效的方法。它利用链式法则,从输出层向输入层依次传播误差信号,从而快速得到所有权重的梯度。在深度学习中,反向传播是训练神经网络的核心算法。
反向传播算法通过自动计算梯度,使得我们可以高效地更新网络参数,它通常与前馈算法结合使用。
在反向传播中,误差信号通过链式法则传播,最终得到所有权重的梯度。这使得我们可以快速更新网络参数,从而优化模型性能。
反向传播算法的核心在于计算梯度。通过自动求导(Autograd),我们可以高效地计算梯度的值。
反向传播算法通常用于训练深度神经网络。它通过调整权重和偏置,使得模型的输出与目标值之间的误差最小化。
反向传播算法在深度学习中扮演着重要角色。它使得神经网络能够高效地学习复杂的特征和模式,从而在图像识别、自然语言处理等领域取得卓越的性能。
反向传播算法不仅适用于训练神经网络,也适用于优化其他机器学习模型。它是一种通用的梯度计算方法。
反向传播算法的效率和准确性,使其成为深度学习领域的基石。
29.3.8 生成高效状态估计函数的方法
训练完成RNN后,会对神经网络进行截断,使其接收形式如下的函数:
\s_t = f(z_t\^{\\text{hist}}, z_{t-1} + y_{\\text{enc}}), g\[\* \]
其中 \(n\) 表示所考虑的网络历史长度。可通过逐步缩短过去网络的长度,直到预测误差(即针对输出 \(y_0, y_1, \ldots\) 的误差)上升,来找到最优的 \(n\) 值。误差突然升高要么说明 \(n\) 的选择非常合适,要么说明历史长度不足。使用更长的过去时间窗口进行额外训练,可确保神经网络获得所有之前需要的信息。最终生成网络的拓扑结构如图29.5所示。该函数可用于将观测值转换为 \(\{s, a, s'\}\) 元组,并应用选定的强化学习方法来解决控制问题。
29.3.9 神经状态估计器的应用
- 基于Transformer网络的强化学习:最优策略并不明确。在该问题中,机器人需要探索环境以寻找目标物体。
问题描述
经典的机器人问题要求智能体到达预设的目标位置。机器人被赋予需要探索的环境、一个目标物体以及时间限制。它配备有可以测量与目标物体距离的传感器,但无法获知目标物体的朝向。智能体的任务是规划一系列动作以到达目标位置。它会被提供环境地图、目标物体、时间限制,以及可以测量与目标物体距离但无法检测其朝向的传感器。
模型描述
为解决上述问题,使用RNN(见第29.3节)对倒立摆系统的完整动态进行建模。输入 \(z_t\) 和目标 \(y_t^d\) 包含小车水平位置 \(x_t\) 以及预处理变换 \(x_t - x_{t-1}\)。输入 \(a_t\) 包含智能体的动作,模型无法观测到其他信息。内部状态空间 \(s_t\) 被限制为4个神经元,使得网络可以在其内部状态空间中重建完整的(尽管仅部分可观测的)动态(公式29.10)。网络向过去和未来展开10个时间步长。先前的实验表明该记忆长度足以识别系统动态。为使网络不依赖于最后一个展开的时间切片,采用名为清洗噪声的技术进行起始初始化10。网络通过时间反向传播算法22, 9进行训练。在第二步中,从RNN中提取演化后的状态空间:导出状态估计函数,用于根据观测值计算估计状态(见第29.3.8节)。随后使用塞缪尔自适应启发式评论家(AHC)算法25的广义形式,基于状态估计解决控制问题。注意,该算法启动时滞后结构必须已被填充,即状态估计器的过去滞后需要用观测值填充,以提供初始状态估计。否则,算法在首次学习步骤中很有可能遇到倾斜的杆,因为填充所有滞后至少需要10个不受控的时间步长。
结果如图18所示,第一种情况下的性能取决于方向确定时的步数。这是由算法的性质决定的。这也是我们无法得到相同结果的原因。在第二种情况下,算法能够在相同时间内得到相同结果。在第三种情况下,算法同样能够在相同时间内得到相同结果。图18.29 算法第一、第二、第三个时间步的性能对比。
24 Minion决策过程提取网络
-
算法的第二部分是找出最优解。
-
算法的第三部分是找出最优解。
-
算法的第四部分是找出最优解。
-
算法的第五部分是找出最优解。
-
算法的第六部分是找出最优解。
-
算法的第七部分是找出最优解。
-
算法的第八部分是找出最优解。
图29.9. 马尔可夫决策过程提取网络(MPEN)由过去(左侧)和未来(右侧)子网络组成。输入变量分为两组:动作\(a_t\)可由强化学习智能体控制,\(z_t\)表示动力学系统中的可观测变量。未来子网络仅输出\(r_t\)。状态转移由\(s^i_t\)和\(s_t\)建模。注意,过去子网络中的所有权重矩阵\((A, \ldots, D)\)与未来的矩阵\((E, \ldots, H)\)均不相同。
此外,除考虑专家知识和输入选择方法外,我们还开发了一种针对最优控制问题的方案,该方案适用于存在奖励信号的场景。从强化学习的角度来看,执行的动作\(a_t\)、可能大量的可观测变量\(z_t\),以及针对给定观测-动作元组、所有时间步\(t\)对应的奖励\(r_t\)均可用。在许多真实场景中,奖励函数\(r_t = f_r(z_t, a_t)\)是已知的,因为它描述了我们试图解决的问题的预期目标,很可能是由我们设计的。该知识可通过将网络划分为过去和未来子网络,在高级神经状态估计器中进行建模,以匹配以下公式:
\ \\begin{aligned} \& s_{t+1} = f_{\\text{past}}(s_t, z_t, a_t), \\ t \\leq 0 \\\\ \& s_{t+1} = f_{\\text{future}}(s_t, a_t), \\ t \> 0. \\end{aligned} \\
(29.11) (29.12)
网络划分解决了RNN拓扑中的不一致性问题,因为未来时间切片(\(t > 0\))中无法获取可观测变量\(z\)。解决该问题的另一种拓扑是动态一致循环神经网络34。然而,该拓扑需要预测所有可观测变量\(z\),当某些变量比其他变量更难预测时,尤其会引发问题。由于划分为过去和未来子网络的方式允许我们使用任意目标变量,因此也可以考虑未包含在输入集中的变量。这允许我们将奖励信号,或在已知奖励函数的情况下,将奖励函数的参数作为目标:
\r_t = g(s_t, a_t), t \\geq 0 \\
(29.13)
注意,当前状态\(s_t\)和执行的动作\(a_t\)足以描述所有相关奖励函数的期望值,因为具备提取最小状态空间的全部能力。需要预测所有可观测变量的网络(如动态一致RNN34)会将所有信息编码到状态空间中,因此不具备最小性。如果可观测变量集包含不重要且可能难以预测的变量,进而导致预测性能下降,这种情况就特别值得关注。此外,这类变量会干扰训练过程,因为验证误差可能受到这些变量的高度影响。换句话说,这会产生最大的残差,导致整个神经网络的训练结果鲁棒性降低。
29. 基于发现的视角学习:贝叶斯视角
摘要
贝叶斯学习(BL)理论为理解神经网络结构提供了统一框架。本文回顾了该理论及其在神经网络设计中的应用。
29.4.1 奖励函数设计影响状态估计器的性能
与标准RNN不同,神经拓扑的训练难度取决于强化学习问题本身,因为奖励函数的定义提供了目标。我们证明,对于倒立摆这类片段式问题,可以使用在轨迹末端提供正负反馈的标准奖励函数训练网络4。然而,当提供有关当前状态质量的更多信息时,问题会变得容易解决得多。这体现在额外的梯度信息会加快学习过程。对于大多数实际应用,这类奖励函数很容易提供,因为我们通常参与其设计过程。若已知奖励函数,通常优先使用其参数作为目标。
29.4.2 选择状态估计器的预测时域
在设计神经状态估计器网络时,需要立即确定应纳入预测的未来步数问题。由于网络在时间上向过去和未来展开的步数有限,因此需要找到该问题的实用解决方案。幸运的是,强化学习问题本身的定义就提供了答案。使用折扣因子\(\gamma\)定义回报,会限制未来时间步的有效时域。定义智能体策略性能的回报定义如下:
实践中可以据此安全地限制未来时间步的数量,因为奖励的影响会呈指数级衰减。
29.5 解决长期依赖问题的技巧
大多数状态估计方法都依赖于塔肯斯定理33,该定理指出,足够数量的过去时间切片包含所需的全部信息以
21. 理论与整体趋势的协调
WAVE(一套工具套件)是GNU语料库的组成部分,于2014年开源(可在GitHub获取)。
29.5.1 寻找合适快捷连接长度的方案
对于选择足够适配的快捷连接长度\(n\),可以考虑以下启发式规则:
梯度消失问题的严重程度与网络中信息前向传播的步数相关。因此,\(n\)的取值被设定为最小化信息从过去任意状态传递到当前状态\(s_0\)所需的总步数。即 \(\sum_{i=1}^{p} steps(s_0, s_{-i}, n) \rightarrow_n \min\),其中\(steps(s_0, s_{-i}, n)\)表示从\(s_{-i}\)到\(s_0\)所需的最少步数(包含可能的快捷连接)。
例如,若\(n=2\),则\(steps(s_0, s_{-1})=1\),\(steps(s_0, s_{-2})=1\),\(steps(s_0, s_{-3})=2\),\(steps(s_0, s_{-4})=2\)。
该启发式规则仅需要的信息是:假定的、会影响当前状态的最多过去时间片数量。
29.5.2 长期依赖问题实验
为展示MPEN-S的能力,我们使用了两个基准测试:随机数序列以及燃气轮机仿真。我们将快捷长度为\(n=4\)的MPEN-S与普通MPEN进行对比,该\(n=4\)的快捷长度是依据29.5.1节中的启发式规则选定的。
针对每种架构和基准测试,我们通过在线反向传播算法训练了10个网络,学习率为0.001,训练数据共10,000条观测值,其中30%用于验证。评估基于另一组规模相同、无噪声的数据集。
为了评估由\(s_0\)中激活值代表的状态估计质量,我们测试\(s_0\)中所含的信息量。具体做法是将估计出的状态作为输入,喂入一个前馈神经网络(两层隐藏层,每层150个神经元。
if (condVar > someVal) {console.log("xxx")}
图29.11. 不同快捷连接长度、过去时间片数量\(p=20\)的实验结果。(a) 展示了无快捷连接的网络以及不同长度快捷连接(\(n \in \{4,5,6\}\)时总和最小)的网络的\(\sum_{i=1}^{p} steps(s_0, s_{-i}, n)\)总和;(b) 展示了这些网络在随机数实验(见29.5.2节)中的验证误差。步数总和与验证误差之间的相关性非常明显。
3.6 无参考噪声下的优化与验证(RVF-N)12
RVF-N:在第一个实验中,我们对比了所提方法与其他方法的性能,以验证方法的鲁棒性。观测结果表明,所提方法在性能上优于所有其他方法。所提方法在第二个实验中也取得了最优性能。进一步观测发现,所提方法对噪声水平也具有鲁棒性。
在第三个实验中,我们对比了所提方法与其他方法的性能,以验证方法的鲁棒性。观测结果表明,所提方法在性能上优于所有其他方法。所提方法在第二个实验中也取得了最优性能。进一步观测发现,所提方法对噪声水平也具有鲁棒性。
在第三个实验中,我们对比了所提方法与其他方法的性能,以验证方法的鲁棒性。观测结果表明,所提方法在性能上优于所有其他方法。所提方法在第二个实验中也取得了最优性能。进一步观测发现,所提方法对噪声水平也具有鲁棒性。
在第三个实验中,我们对比了所提方法与其他方法的性能,以验证方法的鲁棒性。观测结果表明,所提方法在性能上优于所有其他方法。所提方法在第二个实验中也取得了最优性能。进一步观测发现,所提方法对噪声水平也具有鲁棒性。
在第三个实验中,我们对比了所提方法与其他方法的性能,以验证方法的鲁棒性。观测结果表明,所提方法在性能上优于所有其他方法。所提方法在第二个实验中也取得了最优性能。进一步观测发现,所提方法对噪声水平也具有鲁棒性。
图12 350W激光二极管稳态蒙特卡洛模拟10次运行的平均结果。(a) 变量2。(b) 0.5mA。(c) 5.0mA。(d) 30mA。
表2
| MPEN | MPEN | MPEN | MPEN | |
|---|---|---|---|---|
| 500W激光二极管下MPEN与MPEN的对比。 | ||||
| MPEN | MPEN | MPEN | MPEN | |
| MPEN | MPEN | MPEN | MPEN | |
| MPEN | MPEN | MPEN | MPEN | |
| MPEN | MPEN | MPEN | MPEN |
6 结论
本文中,我们研究了激光二极管对稳态的影响。我们证明激光二极管对稳态有显著影响。结果如下所示:
- 激光二极管对稳态有显著影响。
- 激光二极管对稳态有显著影响。
- 激光二极管对稳态有显著影响。
- 激光二极管对稳态有显著影响。
- 激光二极管对稳态有显著影响。
- 激光二极管对稳态有显著影响。
- 激光二极管对稳态有显著影响。
- 激光二极管对稳态有显著影响。
- 激光二极管对稳态有显著影响。
- 激光二极管对稳态有显著影响。
上述影响会出现在不同的时间尺度上。
我们使用基准测试(包括燃气轮机仿真)展示了MPEN-S的能力。基准应用的结果表明,该方法相比先前方法有显著改进。这体现在预测的验证误差更小,以及估计质量更高,尤其是对于依赖高延迟观测值的状态变量。从实验中得到的另一个重要结论是验证误差与估计质量之间的相关性。该信息具有很高的价值,因为在任何实际应用中,人们都只能依赖验证误差的测量值。
致谢
本工作部分由德国联邦教育与研究部通过ALICE项目(编号:01 IB10003 A-C)资助。
参考文献
-
1 Bakker, B.: 《基于长短期记忆的强化学习》。载于:Becker, S., Dietterich, T.G., Ghahramani, Y. (编) 《神经网络信息处理系统进展》,第1475--1482页。MIT Press (2002)
-
2 Bellman, R.E.: 《动态规划》。Princeton University Press (1957)
-
3 Bengio, Y., Simard, P., Frasconi, P.: 《用梯度下降学习长期依赖是困难的》。《神经网络IEEE汇刊》5(2), 157--166 (1994)
-
4 Duell, S., Hans, A., Udluft, S.: 《马尔可夫决策过程提取网络》。载于:《第18届欧洲人工神经网络研讨会论文集》(2010)
-
5 Duell, S., Weichbrodt, L., Hans, A., Udluft, S.: 《具有长期依赖域中的循环神经网络状态估计》。载于:《第20届欧洲人工神经网络研讨会论文集》(2012)
-
6 Frasconi, P., Gori, M., Soda, G.: 《局部反馈多层网络》。《神经计算》4(1), 120--130 (1992)
-
7 Gomez, F., Miikkulainen, R.: 《基于循环进化网络的二维平衡》。载于:《国际人工神经网络会议(ICANN 1998)论文集》,第425--430页。Springer (1998)
-
8 Gomez, F.: 《通过神经进化实现鲁棒非线性控制》。博士论文,计算机科学系技术报告AI-TR-03-3003 (2003)
-
9 Haykin, S.: 《神经网络与机器学习》,第3卷。Prentice-Hall (2009)
-
10 Haykin, S., Principe, J., Sejnowski, T., McWhirter, J.: 《统计信号处理新方向:从系统到大脑》。MIT Press (2007)
-
11 Kolen, J.F., Kremer, S.C.: 《动力循环网络指南》。IEEE Press (2001)
-
12 Kaelbling, L.P., Littman, M.L., Cassandra, A.R.: 《部分可观测随机域中的规划与行动》。《人工智能》101, 99--134 (1998)
-
13 Kietzmann, T.C., Riedmiller, M.: 《神经赛车:真实场景下的强化学习》。载于:《机器学习国际会议论文集》。IEEE (2009)
-
14 Lin, T., Horne, B.G., Tino, P., Giles, C.L.: 《NARX循环神经网络中长期依赖的学习》。《神经网络IEEE汇刊》7(6) (1996)
-
15 Medsker, L., Jain, L.: 《循环神经网络:设计与应用》。智能计算国际系列,第I卷。CRC Press (1999)
-
16 Mozer, M.C.(莫泽):《多尺度时间结构的归纳》。收录于《神经信息处理系统进展》第4卷,第275--282页(1992年)
-
17 Meuleau, N.(默洛)、Peshkin, L.(佩什金)、Kee-Eung, K.(金基映)、Kaelbling, L.P.(凯尔布林):《部分可观测环境下有限状态控制器的学习》。收录于《第十五届不确定性人工智能国际会议(UAI 1999)论文集》,第427--436页(1999年)
-
18 Neuneier, R.(诺伊奈尔)、Zimmermann, H.-G.(汉斯-格奥尔格·齐默尔曼):《如何训练神经网络》。收录于Orr, G.B.、Müller, K.-R.(编)《NIPS-WS 1996》,LNCS(《计算机科学讲义》)第1524卷,第373--423页。施普林格,海德堡(1998)
-
19 Peters, J.(扬·彼得斯)、Schaal, A.(斯特凡·沙尔):《基于策略梯度的运动技能强化学习》。《神经网络》第21卷第4期(2008)
-
20 Ramachandran, D.(迪帕克·拉马钱德兰):《强化学习中的知识与无知》。博士论文,伊利诺伊大学(2011)
-
21 Rosenstein, M.T.(马修·T·罗森斯坦)、Barto, A.G.(安德鲁·G·巴托)、Si, J.(司江)、Powell, W.(沃伦·鲍威尔)、Wunsch, D.(唐纳德·温施):《监督式演员-评论家强化学习》。收录于《学习与近似动态编程手册》,第359--380页(2012)
-
22 Rumelhart, D.E.(大卫·E·鲁梅尔哈特)、Hinton, G.E.(杰弗里·E·辛顿)、Williams, R.J.(罗纳德·J·威廉姆斯):《通过反向传播误差学习表征》。《自然》第323卷第9期,第533--536页(1986)
-
23 Riedmiller, M.(马丁·里德米勒):《搭建神经强化控制器的10个步骤与一些技巧》。收录于Montavon, G.、Orr, G.B.、Müller, K.-R.(编)《神经网络:实战技巧》第2版,LNCS(《计算机科学讲义》)第7700卷,第735--757页。施普林格,海德堡(2012)
-
24 Riedmiller, M.(马丁·里德米勒):《神经拟合Q迭代------关于数据高效神经强化学习方法的初步探索》。收录于Gama, J.、Camacho, R.、Brazdil, P.B.、Jorge, A.M.、Torgo, L.(编)《ECML 2005》,LNCS(《计算机科学讲义》)(LNAI,《人工智能讲义》)第3720卷,第317--328页。施普林格,海德堡(2005)
-
25 Samuel, A.L.(亚瑟·L·塞缪尔):《使用跳棋游戏开展机器学习的一些研究》。《IBM研究与开发期刊》第210--229页(1959)
-
26 Sutton, R.S.(理查德·S·萨顿)、Barto, A.G.(安德鲁·G·巴托):《强化学习导论》。MIT出版社(1998)
-
27 Schneegass, D.(丹尼斯·施内加斯):《强化学习中的信息效率提升》。博士论文,吕贝克大学(2008)
-
28 Schäfer, A.M.(亚历山大·M·谢弗)、Schneegass, D.(丹尼斯·施内加斯)、Sterzing, V.(V·斯特尔青)、Udluft, S.(斯特凡·乌德卢夫特):《燃气轮机控制的神经强化学习方法》。收录于《国际神经网络联合会议论文集(2007)》
-
29 Schäfer, A.M.(亚历山大·M·谢弗)、Udluft, S.(斯特凡·乌德卢夫特):《使用循环神经网络解决部分可观测强化学习问题》。收录于《2005年欧洲机器学习研讨会 workshop 论文集》
-
30 Schneegass, D.(丹尼斯·施内加斯)、Udluft, S.(斯特凡·乌德卢夫特)、Martinetz, T.(托马斯·马丁内茨):《用于马尔可夫与部分可观测环境中近最优策略识别的神经奖励回归》。收录于《欧洲人工神经网络研讨会论文集》,第301--306页(2007)
-
31 Schäfer, A.M(亚历山大·M·谢弗)、Udluft, S.(斯特凡·乌德卢夫特)、Zimmermann, H.G.(汉斯-格奥尔格·齐默尔曼):《循环控制神经网络》。收录于《欧洲人工神经网络研讨会论文集》,第319--324页(2007)
-
32 Schäfer, A.M.(亚历山大·M·谢弗)、Zimmermann, H.-G(汉斯-格奥尔格·齐默尔曼):《循环神经网络是通用逼近器》。收录于Kollias, S.D.、Stafylopatis, A.、Duch, W.、Oja, E.(编)《ICANN 2006》,LNCS(《计算机科学讲义》)第4131卷,第632--640页。施普林格,海德堡(2006)
-
33 Takens, F.(弗洛里斯·塔肯斯):《湍流中奇异吸引子的检测》。《动力系统与湍流》第898期,第366--381页(1981)
-
34 Zimmermann, H.G.(汉斯-格奥尔格·齐默尔曼)、Grothmann, R.(R·格罗特曼)、Schäfer, A.M.(亚历山大·M·谢弗)、Tietz, C.(C·蒂茨):《通过动态一致的神经网络识别与预测大型动力系统》。收录于《统计信号处理新方向:从系统到大脑》,第203--242页。MIT出版社(2006)
-
35 Zimmermann, H.G.(汉斯-格奥尔格·齐默尔曼)、Neuneier, R.(拉尔夫·诺伊奈尔):《动力系统建模的神经网络架构》。收录于Kolen, J.F.、Kremer, S.C.(编)《动力循环网络字段指南》,第311--350页。IEEE出版社(2001)
-
36 Zimmermann, H.G.(汉斯-格奥尔格·齐默尔曼)、Tietz, C.(C·蒂茨)、Grothmann, R.(R·格罗特曼):《使用循环神经网络预测:12个技巧》。收录于Montavon, G.、Orr, G.B.、Müller, K.-R.(编)《神经网络:实战技巧》第2版,LNCS(《计算机科学讲义》)第7700卷,第687--707页。施普林格,海德堡(2012)
搭建神经强化控制器的10个步骤与一些技巧
Martin Bellemar
计算机科学系 人工智能实验室,德克萨斯大学
bellemar.ut@gmail.com,2021年2月23日
摘要:本文通过论证可以构建性能显著优于基线控制器的神经强化控制器,挑战了该领域的最新技术水平。
关键词:神经强化控制器、Q、Q学习、强化学习、Q、Q学习者。
1 概述
神经强化控制器所需采用的理论概念越复杂,该强化控制器在理论层面的价值就越高。
30.2 强化学习框架
30.2.1 马尔可夫决策过程中的学习
针对学习主体的标准强化学习建模方式是马尔可夫决策过程(MDP)。在本场景中,存在智能体、学习者和外部环境三类主体。学习者可以通过执行一组动作与环境交互,其中包含一个随机动作、一个目标动作。学习者的目标是学会执行目标动作。智能体既是学习者,也是具备目标属性的智能体。下表列出了强化学习框架的核心组成部分:
| 组件 | 描述 |
|---|---|
| 智能体 | 学习者 |
| 环境 | 外部环境 |
| 动作 | 学习者的执行动作 |
| 奖励 | 环境的反馈 |
| 目标 | 学习者的预期目标 |
30.2.2 基于函数近似的Q学习
当处理大规模甚至连续状态空间时,表格型的Q函数表示会遇到性能瓶颈,甚至完全不可行。解决该问题的标准方法是使用函数近似来表示Q函数。下文我们主要关注神经网络,但其他近似方案(例如高斯过程4、CMAC28,29......)也会被采用。
使用神经网络的一大优势在于其具备泛化到未见过场景的能力------这一特点在大规模或连续状态空间中尤为突出,因为训练过程中不可能经历所有可能的场景。然而,这一优势也会带来负面影响:当标准Q学习规则被应用于某一特定状态转移时,它会以不可预知的方式影响其他输入的取值。
为缓解这一问题,我们开发了一种神经Q学习框架,该框架采用批量状态转移更新机制,而非像原始Q学习规则那样进行单次状态转移更新。该方法已被证明属于拟合Q迭代算法家族5,因此被命名为"神经拟合Q迭代(NFQ)"23。
NFQ的核心原理简单但至关重要:价值函数的更新会基于全部的状态转移经验,而非仅处理单次状态转移。状态转移以(s, a, s')的三元组形式通过与环境交互收集,其中s是初始状态,a是选定的动作,s'是后续状态。经验集被称为样本集D。该算法如图30.1所示,包含两个主要步骤:生成训练集P,以及在多层感知机中训练这些样本。
每个训练样本的输入部分由第l条训练经验的状态sl和动作al构成,每个样本的目标值按照Q学习规则计算:它是转移成本c(s^l, al)与后续状态sl的期望最小路径成本之和,后者基于当前Q函数的估计值Q_k计算。
由于此时Q函数的训练可以视为固定样本集的批量学习,因此我们可以采用更先进的有监督学习技术,其收敛速度和可靠性都优于普通梯度下降技术。尤其是NFQ使用了Rprop算法实现快速有监督学习,Rprop会根据偏导数的符号调整搜索步长,已被证明速度极快,且对参数选择鲁棒性很强。有关Rprop的详细描述可参见17。
样本集的训练可以预先设定训练轮次(即完整遍历样本集的次数),或在误差低于预设阈值时停止。尽管按固定轮次训练的方式简单直接,但效果良好,因此是我们的标准选择。有关NFQ的更详细讨论请参阅23。
30.3 控制任务的特征
30.4 建模学习任务
30.4.1 状态信息
底层强化学习框架高度依赖于状态转移满足马尔可夫性质的假设:后继状态是当前状态和动作的(概率)函数。因此,提供给学习系统的状态信息必须"足够丰富"------此处"丰富"指的是观测到的状态转移不依赖额外的历史信息。在实际应用中,我们不一定能期望从传感器提供的数值中获取完整的状态信息。在经典控制理论中,观测器的概念是已知的,能够从观测到的传感器信息序列中推导出状态信息。但这需要系统模型可用,而我们的学习框架假设不拥有这类模型。解决这个问题的标准方法是提供前序时间步的历史传感器与动作信息。由于我们无论如何都需要进行学习,因此我们不要求状态信息具备特定的语义可解释性。例如,这允许我们提供比需求更多的信息或冗余信息,以确保安全。作为权衡,状态信息应尽可能保持小巧简洁,以支持良好的泛化能力,这通常会带来更快的学习速度和更优的控制性能。在技术动态系统中,我们通常使用传感器值的时间差来近似速度、加速度这类具有物理意义的数值。和监督学习类似,使用有意义的特征替代原始传感器值以增强泛化能力通常很有帮助。不过同样和监督学习一样,设计优质特征通常需要深入了解应用场景(此处:需要了解系统行为,而我们的框架做的是强假设,并不具备这类知识)。当前的一个研究方向是从高维原始传感器数据(例如摄像头数据)中直接自动学习有意义的表征15, 16, 25, 2。
总结:
- 状态信息必须基于传感器信息设计,且足够丰富以支持马尔可夫性质
- 冗余信息不是问题,但最好将输入维度保持在尽可能低的水平
- 可将状态表征转换为特征以增强泛化能力
- 状态信息不一定具有人类可理解的含义
30.4.2 动作
原始控制任务通常允许应用(准)连续控制值,这类数值一般处于最小值和最大值之间的某个特定范围内。虽然原则上存在可以学习连续控制动作的方法(例如11, 22),但本文重点关注向学习系统提供离散的控制动作集合。这是强化学习中最常见的框架,也对应30.2节中介绍的框架。这意味着,搭建学习系统时,必须显式在潜在控制信号的范围内选择一组离散动作。一种可选方案是双动作集合,由最小和最大控制动作组成(即"bang-bang控制")。在经典控制理论中,这种双值控制策略是最优时间控制器的基础。当然,在两个极端控制信号之间来回振荡(例如为使系统保持在期望的传感器输出附近)在真实硬件控制中通常是不可接受的。因此,通常建议向学习集合中添加额外动作,例如一个不向系统输入额外能量的中性动作。可用策略的搜索空间随动作数量呈指数增长。因此,从学习时间的角度来看,应尽量限制可用动作的数量。不过这当然存在权衡:动作数量越少,控制行为越粗糙,学习得到的控制器可能无法满足所需的控制精度。这与控制区间Δt的长度密切相关:更大的控制区间可能需要更大的动作集才能达到相同的可控性水平,反之亦然:控制区间越小,动作集可以越粗糙,因为可以实现更频繁的交互(从而更频繁的修正)。动态输出元素框架利用了动作集在时间和结构上的这种紧密关联,以实现更灵活的控制策略22。显然,对动作集的最低要求是:存在一种策略,能将系统转移到目标状态,并且在非终止状态框架(见下方30.4.4节)中能将系统保持在目标区域内。
总结:
- 为加快学习速度,应尽量保持动作集规模较小;权衡点:更多动作可以提升控制策略的质量或精度
- 动作必须能够抵达目标状态,且在非终止目标状态的设定下能将系统保持在目标区域内
30.4.3 控制区间Δt的选择
控制区间Δt指的是学习系统两次控制干预之间的时间。在经典控制理论中,控制器设计通常假设交互是连续时间发生的(例如经典PID控制)。因此,通常的目标是让Δt尽可能小,以逼近假想的控制场景;否则,控制器将无法按预期工作。在本文提出的学习框架中,Δt尽可能小并非必要条件。相反,即便需要应对更大的时间间隔,系统也可以学习来调整自身行为。更大的Δt还有一个额外优势,那就是可以在更廉价的硬件上实现速度更慢的控制器。作为一个通用权衡,如果区间Δt
30.4.5 选择X⁺
集合X⁺包含所有满足控制任务所定义目标条件的状态。定义X⁺的一种典型方法是为每个状态变量的值指定范围。对于我们要控制的状态变量,通常会在其指定目标值周围定义一个范围,即目标值±δ,其中δ>0表示允许的容差。对于其他状态变量,允许的范围可能是无限大的,意味着我们不在乎它们在判断是否属于X⁺时的取值。这里同样存在权衡:X⁺选的越小,成功学习的最终控制器的精度就越高。X⁺越大,学习会越容易,但结果是我们必须接受精度更低的控制器。从学习框架的角度来看一个重要要求是:X⁺要足够大,使得存在一种策略,能够从任意起始状态抵达X⁺。因此,X⁺的选择与动作集的选择、控制区间Δt的选择高度相关。在未贴现(γ=1)的非终止目标状态下,X⁺还有一个额外要求:必须选择得让存在一种策略,能够将系统永久保持在X⁺内。这种策略不需要事先已知。同样,这个要求体现了X⁺的选择、控制区间Δt和可用动作集之间的关联。
总结:
- X⁺越大,学习越容易
- X⁺越小,学习得到的控制器精度越高
30.4.6 选择X⁻
在许多控制问题中,存在对状态变量的约束,成功的控制策略不得违反这些约束。不希望的状态集合X⁻的定义,是在本文提出的学习框架内建模该需求的一种方式。在典型设定下,只要违反了原始控制问题的约束,状态就属于X⁻。只要遇到X⁻内的状态,控制幕就会被终止。下方我们将其作为非终止目标状态框架(公式30.2)的扩展,展示对应的Q值目标计算结果。其在终止目标状态框架下的应用是直接的。
\Q(s, u) = \\begin{cases} 0 + \\gamma \\cdot \\min_{b} Q(s', b), \& \\text{if } s' \\in X\^+ \\\\ c(s, u) + \\gamma \\cdot \\text{terminal\\_costs}(s'), \& \\text{if } s' \\in X\^- \\\\ c(s, u) + \\gamma \\cdot \\min_{b} Q(s', b), \& \\text{else} \\end{cases} \\tag{30.3} \\
理想情况下,X⁻内状态的终止成本应大于任何成功策略的路径成本。使用带Sigmoid输出函数的多层感知机时,我们通常取接近1的值作为X⁻内状态的终止成本。
- 该学习框架可以对状态变量的硬性约束进行建模。
30.4.7 即时成本与最终成本的选择
即时成本函数\(c(s, u)\)的选择,决定了控制轨迹在到达目标区域之前的走向。在强化学习中,将\(c(s, u)\)设置为到目标区域距离的函数并不罕见。这样做的好处是,即时成本已经包含了朝向目标的局部提示,可能会大幅提升学习效率。然而从控制任务的角度来看,我们必须注意到:最终控制器会优化通往目标的路径成本。优化到目标的累积距离并不总能完美契合实际需求(设想这种情况:某策略先出现较大偏差,但仅用少数时间步就抵达目标;而另一策略仅出现微小偏差,却用了很长时间才到达终点)。如果要设计一个即时成本函数,在多个最终都要达到特定目标值的传感器数值之间做权衡,情况会变得更加复杂。因此我们更倾向于采用如下成本公式,它的优势是足够简单,因此具备广泛的适用性:
\c(s,u) = \\begin{cases} 0, \& \\text{if } s' \\in X \\\\ c, \& \\text{else} \\end{cases} \\
其中\(c > 0\)为常量。\(c\)的合理取值是:\(c\)乘以最优策略的预估时间步数,应远低于神经网络可表示的最大路径成本(若使用标准的Sigmoid输出函数,该最大值为1)。此外,上述提出的即时成本函数还有一个优势:学习到的最优策略含义明确,即最短时间控制器。附带说明:使用该即时成本函数,还可以检验学习系统学习正确价值函数的能力:在本框架下,只有学习到的价值函数确实有意义时,学习才能成功,因为即时成本函数并未提供任何朝向目标的提示。最终成本函数也很简单:若到达最终目标状态,最终成本为0;若违反约束,最终成本为1。当然,这些数值可能会取决于神经网络输出值的潜在范围。
总结:
- 成本应尽可能贴合原始控制任务的需求
- 即时成本可以体现朝向目标的局部提示以辅助学习,但这并不一定符合原始控制任务的本意
30.4.5 折现
现金流的折现价值,就是它当前被认定的价值。也就是说,在资产或证券买卖的市场中,卖家愿意为资产支付的价格,以及按市场利率赚回该金额的对应价值。换言之,折现率就是市场利率。现金流的折现价值也被称为现值(PV)。例如,一张面值1000美元的债券票面利率为6%,每年支付60美元利息,但市场利率为7%(即折现率)。这意味着60美元票息的现值为56.60美元。
总结:
- 折现以利率作为折现率
- 折现率同时也是市场利率
30.4.10 Y的选择
在常规考试中,每道题的时间对应现金流的首个起始日(上文中的0.5时刻)。在30.4.10的第二道题中,题目时间对应现金流的实际起始日。题目时间为1.5。
30.4.11 市场利率的选择
在考试中,市场利率是用于对时间步区间内的现金流进行折现的利率。下文将该时间步数称为最大回合长度\(N\)。从理论上讲,在拟合Q学习框架中,\(N\)并非关键选择。它仅表示连续采样的转移次数(这与依赖完整轨迹的学习方法不同)。实际上,\(N\)可以低至2,此时每个回合仅收集1个转移样本。然而从实践角度来看,考虑更长的回合通常更有意义------尤其是当用于采样转移的策略将系统推向更接近目标区域的方向时,这样就可以收集到越来越多"有价值"的转移样本。我们使用的一个粗略启发式规则是:将\(N\)设置为成功控制器到达目标区域所需预期平均时间的2到3倍。如果\(N\)设置得过大,可能会收集到大量无用信息------例如非常长的回合中仅包含相同状态的循环。
总结:
- 从理论上讲,\(N\)的选择并非关键
- 从实践角度来看,\(N\)会对学习行为产生较大影响,因为它会影响所收集转移的分布。
30.5 技巧
30.5.1 输入值缩放
和普通监督学习一样,输入值缩放是重要的预处理步骤。相关方法和对应解释可参阅14。作为标准方法,我们在所有学习实验中将输入值归一化为均值为0、标准差为1的分布。
总结:
- 和监督学习类似,所有输入值处于相近的数值范围非常重要
- 在我们目前开展的所有学习实验中,均值为0、标准差为1的简单缩放方法表现良好
30.5.2 X\(^{++}\)技巧
如果不存在明确的终止状态(非终止目标状态框架就是这种情况),神经网络的输出往往会逐迭代持续上升。这是由转移成本的选择导致的:目标区域内的转移成本为0,区域外则为正数。因此,每个状态-动作对的目标值都大于或至少等于其后继状态的评估值。再加上多层感知器的泛化特性被放大,这就导致所有状态-动作对的输出值都有不断上升的趋势。
3.1.5 人工神经转移
43.2,而这通常是它们的问题。建议使用2级、3级或4级的生成层级,以解决这些问题。
1.26,而这通常是它们的问题。建议使用2级、3级或4级的生成层级,以解决这些问题。
30.5.5. 神经X函数的修剪。为最大程度降低数据噪声,我们使用神经网络函数来逼近噪声函数。该网络函数必须连续,以提供学习噪声函数所需的必要平滑性。然而,当噪声函数方差较高时,这一要求难以满足。为解决这一问题,我们使用神经网络函数来逼近噪声函数。
12 Rôlethier
在大多数常见场景中,我们总能借助现有方案突破能力边界。本文提出了一种新方法。由于问题本身的性质,我们聚焦于特定场景,这类场景的解法通常难以探寻。在近期研究中我们观察到,当前多数方法都基于"解法难以探寻"的假设。然而事实并非如此。在大多数情况下,我们总能借助现有方案突破能力边界。
摘要
总体而言,完全有效的方案通常具备较高的效率。如果解法简单,且在现有解空间中分布均匀,那么我们就能得到较高的准确率。当前多数方法都基于"解法难以探寻"的假设。
30.5.7 延迟
在相关文献中,我们能找到诸多与延迟相关的研究。在这些场景中,我们同样可以借助现有方案突破能力边界。如果解法简单,且在现有解空间中分布均匀,那么我们就能得到较高的准确率。在大多数情况下,我们总能借助现有方案突破能力边界。本文与其他论文不同。我们正在研讨的这篇论文也与其他论文不同。然而事实并非如此。在大多数情况下,我们总能借助现有方案突破能力边界。
3.0 实验
30.6.1 控制偏差
我们正在研讨的这篇论文也与其他论文不同。在大多数情况下,我们总能借助现有方案突破能力边界。
- 控制任务要求将杆件精准保持竖直,同时将小车稳定在给定目标位置(本场景中为轨道中点)。
- 因此控制器不仅要学会将杆件从完全倒下的状态摆动至竖直状态,还要精准控制该过程,最终将杆件稳定在指定位置。
- 无法直接控制施加在小车上的力,只能控制驱动小车的直流电机的输入电压,这会给系统引入额外的动态效应。
- 通信效应导致传感器信息存在延迟。
- 执行器输出和传感器数值都存在较大的噪声。
- 当杆件处于完全倒下的状态时,传感器数值会在\(-\pi\)到\(+\pi\)之间出现不连续(跃变)。
- 存在硬约束:由于轨道存在边界,小车位置不得低于-0.25m,不得高于0.25m。
- 最终控制器需能够适配任意初始启动状态,而非仅支持单一位置的启动。控制输入范围为-12V到+12V的(准)连续区间。系统提供的传感器信息为小车和杆件的位置,无法测量速度信息。需尽可能快的达到传感器数值的目标值。硬件允许的最小控制间隔为\(\Delta_t=0.01s\)。由于真实系统可开展的实验数量有限,我们同时给出了真实系统可靠仿真的部分结果(见第30.6.5节)。仿真系统与真实系统的输入输出接口完全一致。仿真模型通过真实数据对真实系统的物理模型进行参数化推导得到。真实系统与仿真系统的行为高度匹配,因此我们为两类系统设定了完全一致的建模决策与学习参数。因此后续内容仅描述真实系统的配置。仿真系统的实现已开源至我们的学习框架CLSQuare,访问地址为(http://ml.informatik.uni-freiburg.de/research/clsquare)。
30.6.2 建模为学习任务
状态描述。
\\\frac{p_{t}- \\dot{p}_{t-1}}{\\Delta_t}, \\quad \\frac{\\alpha_{t}- \\alpha_{t-1}}{\\Delta_t} \\
范围:\(-\pi\) 至 \(+\pi\)
基于反馈的学习
1.1 引言
基于反馈的学习是机器学习领域的核心概念,指模型接收来自环境或用户交互的反馈,借此动态调整并持续提升性能的过程。这类反馈既可以是明确的奖励或惩罚,也可以是用户点击、点赞或其他参与度指标这类隐式反馈。本文围绕基于反馈的学习展开理论与应用层面的研究,聚焦该领域的最新进展,探讨了反馈在强化学习、主动学习、个性化推荐系统等各类机器学习场景中带来的挑战与机遇。通过全面梳理当前研究现状,我们期望为推动这一重要机器学习领域的进一步探索与创新提供参考。
本文提出了一种基于反馈学习的新方法,命名为反馈感知学习(FAL)。该方法旨在更高效地利用反馈信号引导学习过程,从而提升模型性能与用户满意度。我们对FAL框架进行了详细的理论分析,同时通过一组实证评估验证了该方法在多种场景下的有效性。本文后续安排如下:第2节回顾了基于反馈学习的相关研究,讨论了现有方法的优势与局限性;第3节详细介绍了我们提出的FAL框架,涵盖其理论基础与实现细节;第4节给出了一组实验结果,验证了FAL在多种场景下的有效性;第5节总结了本文的贡献与未来研究方向,作为全文结尾。
反馈感知学习(FAL)是提升各类场景下机器学习模型性能的可行路径。通过利用反馈信号,FAL能够更高效地引导学习过程,进而提升准确率、效率与用户满意度。该框架为相关问题提供了全新视角,具备扎实的理论基础与支撑其有效性的实证证据。后续章节将详细介绍FAL框架的理论基础、实现细节与实证评估情况。我们希望本文能够为基于反馈学习的现有研究提供补充,为推动这一重要机器学习领域的进一步探索与创新贡献力量。
30.6.4 衡量质量
学习控制方法的质量有两个重要方面:学习过程的质量和最终所得到控制器的质量。学习过程的质量通过所需的学习工作量衡量------通常用所需的转换次数(或回合数)衡量,同时参考相对于所用成本函数获得的解的质量,以及多次学习试验中结果的可靠性。最终控制器的质量相对于原始控制任务的规格进行评估,相关评判标准例如精度、鲁棒性、工作区间,以及性能指标(比如容错区间外的运行时间)。如需了解不同评判标准的详细讨论,还可参阅1。
本文首先汇报在真实模拟环境下获得的结果,这使得我们能够在合理时间内开展一系列共310次、采用随机发生器不同种子的实验。在真实系统上进行学习时,我们使用了完全相同的设置和参数,唯一的区别是:控制器在模拟倒立摆系统上最多允许学习500个回合,而由于时间限制,在真实倒立摆系统上最多学习300个回合。
30.6.5 模拟倒立摆结果
对于模拟系统,全部19次运行都得到了成功的控制器:成功指针对100个随机初始状态的测试集,控制器能够将杆摆起,随后持续将系统维持在期望容差范围内。所有测试运行的时长均为20秒。在19次运行的平均结果中,最佳控制器是在平均31个回合(标准差59)的训练后找到的,最佳控制器的平均运行时间为523秒,标准差为16。
表30.1 标准配置下模拟倒立摆的结果,取19次运行的平均值
展示的是训练最佳控制器的平均回合数及其控制性能,以目标区域外的运行时间衡量,括号内的数字为对应的标准差。
| 配置 | 成功试验次数 | 最佳控制器出现的回合 | \(X^+\) 区域外时间 |
|---|---|---|---|
| 默认 | 19/19 | 31 (59) | 523 秒 (16) |
默认配置在所有试验中均得到了成功的控制器。最佳控制器是在平均31个回合(标准差59)的训练后获得的;针对\(X^+\)区域外时间的最佳控制性能是在平均5个回合(标准差16)的训练后实现的。除了最大回合数的减少外,学习系统的配置与模拟系统完全相同。在所有开展的3次试验中,均可在不到300个回合的训练内习得成功的控制器。特别地,这些控制器对于变化的初始状态或外部干扰都具有很强的鲁棒性。一段记录学习过程和最终控制器性能的视频可在以下地址观看:http://www.youtube.com/watch?v=Lt-KLtkDIh8
30.6.5 真实倒立摆结果
由于使用真实设备开展实验成本较高,真实倒立摆系统的评估流程略有不同。不过模拟系统和真实系统上的学习行为的整体情况是一致的。我们开展了3次采用随机发生器不同初始化的学习试验,每次学习试验持续300个回合。
30.7 结论
本文讨论了搭建强化学习任务时的诸多基础建模与方法技巧,这些见解应有助于成功处理各类有趣的控制问题。所提出的方法基于神经拟合Q迭代(NFQ),该方法会使用采集到的完整转换批次来更新Q函数。虽然本文是基于使用神经网络的视角撰写的,但在使用其他类型的函数逼近方案时,也可提供有价值的参考。
当前和未来的工作正致力于从多个方向进一步改进该方法:其中一个重要方向是提升NFQ在最终控制器质量方面的表现(例如精度、连续动作、控制策略的可解释性、控制任务复杂度的提升等),该方向已经取得了一些进展,并在11中进行了讨论;另一个正在开展和未来的研究领域是进一步提升NFQ在学习过程的鲁棒性和自主性方面的表现;第三个方向是提高学习所需数据的使用效率。除此之外,在多智能体场景下协同控制复杂系统的分布式强化学习算法是一个重要的研究领域,基于本文提出的神经学习框架的分布式学习系统已成功应用于典型的多智能体场景,例如分布式作业车间调度18, 8。
致谢。作者特别感谢来自Cognit GmbH的Roland Hafner,感谢他为本文撰写提供了重要的初始灵感。
参考文献
- 1 Bertsekas, D.P.:《动态规划与最优控制》,第I、II卷。Athena Scientific,Belmont(1995)
- 2 Blum, M., Springenberg, J.T., Wülfing, J., Riedmiller, M.:《用于RGB-D数据中物体识别的学习特征描述子》。载于:IEEE国际机器人学与自动化会议(ICRA)论文集,美国明尼苏达州圣保罗(2012)
- 3 Bertsekas, D.P., Tsitsiklis, J.N.:《神经动态规划》。Athena Scientific,Belmont(1996)
- 4 Deisenroth, M.P., Rasmussen, C.E., Peters, J.:《高斯过程动态规划》。《神经计算》72(7-9),1508-1524(2009)
3 布莱兹伯格(R. M.). 电影发行商与影院放映方之间的一致评估标准. 载于:欧洲视听媒体研讨会(ESVAN '97, 1997年),421--438.
4 布莱兹伯格(R. M.). 声学环境对影院观众舒适度的影响. 载于:国际数字音频会议(ICD '97, 1997年),456.
5 布莱兹伯格(R. M.). 声学环境对影院观众舒适度的影响. 载于:国际数字音频会议(ICD '97, 1997年),456.
6 布莱兹伯格(R. M.). 声学环境对影院观众舒适度的影响. 载于:国际数字音频会议(ICD '97, 1997年),456.
7 布莱兹伯格(R. M.). 声学环境对影院观众舒适度的影响. 载于:国际数字音频会议(ICD '97, 1997年),456.
8 布莱兹伯格(R. M.). 声学环境对影院观众舒适度的影响. 载于:国际数字音频会议(ICD '97, 1997年),456.
9 布莱兹伯格(R. M.). 声学环境对影院观众舒适度的影响. 载于:国际数字音频会议(ICD '97, 1997年),456.
10 布莱兹伯格(R. M.). 声学环境对影院观众舒适度的影响. 载于:国际数字音频会议(ICD '97, 1997年),456.
11 布莱兹伯格(R. M.). 声学环境对影院观众舒适度的影响. 载于:国际数字音频会议(ICD '97, 1997年),456.
作者索引
- 安德森,拉尔斯·农博 111
- 巴克,安德鲁 295
- 本吉奥,约书亚 437
- 博托,莱昂 9, 419
- 伯恩斯,伊恩 295
- 卡鲁阿纳,里奇 163
- 奇雷尚,丹·克劳迪乌 581
- 科茨,亚当 561
- 科洛贝尔,罗南 537, 639
- 登克,约翰 S. 233
- 杜埃尔,西格蒙德 709
- 法拉贝,克莱芒 537
- 芬克,迈克尔 311
- 弗莱克,加里·威廉 143
- 弗里奇,于尔根 311
- 甘巴代拉,卢卡·玛丽亚 581
- 贾尔斯,C. 李 295
- 格罗特曼,拉尔夫 687
- 汉森,拉尔斯·凯 111
- 辛顿,杰弗里·E. 599
- 希尔辛格,格德 191
- 霍恩,戴维 131
- 因特拉托,内森 131
- 卡武克措卢,科雷 537
- 拉森,扬 111
- 劳伦斯,史蒂夫 295
- 杨立昆,扬·A. 9, 235
- 卢克舍维丘斯,曼塔斯 657
- 莱昂,理查德·F. 271
- 马滕斯,詹姆斯 479
- 迈耶,乌利 581
- 莫巴希,侯赛因 639
- 蒙塔永,格雷瓜尔 421, 559, 621, 659
- 穆迪,约翰 339
- 米勒,克劳斯-罗伯特 1, 7, 9, 49, 139, 231, 343, 421, 559, 621, 659
- 纳夫塔利,乌里 131
- 诺伊奈尔,拉尔夫 369
- 吴恩达,安德鲁·Y. 561
- 奥尔,吉纳维芙·B. 1, 7, 9, 49, 139, 231, 343
- 普拉特,托尼 91, 225
- 普雷施尔特,卢茨 53
- 拉特尔,弗雷德里克 639
- 里德米勒,马丁 735
- 罗格瓦尔德松,索尔斯泰因·S. 69
- 施密德胡贝尔,于尔根 581
- 施劳德洛夫,尼科尔·N. 205
- 西马尔,帕特里斯·Y. 235
- 施特青,福尔克马尔 709
- 苏茨克弗,伊利亚 479
- 斯瓦雷,克劳斯 111
- 蒂茨,克里斯托夫 687
- 蔡,爱中 295
- 乌德卢夫特,斯特芬 709
- 范德·斯马格特,帕特里克 191
- 维克托里,伯纳德 235
- 韦布,布兰丁·J. 271
- 韦斯顿,杰森 639
- 耶格,拉里·S. 271
- 齐默尔曼,汉斯-格奥尔格 369, 687
主题索引
- ACID,324
- ACID/霍普菲尔德神经网络(HNN),324
- 声学建模,318, 324
- 连接主义,322
- 自适应线性元件(Adaline),423
- 自适应启发式评判器(AHC),722, 723
- 退火重要性采样(AIS),632
- 苹果公司
- eMate,271
- MessagePad,271
- Newton,271
- 架构优化,401--406
- 资产配置,415
- 自编码器,440
- 收缩自编码器,440
- 去噪自编码器,440
- 稀疏自编码器,453
- 自动微分,444
- 自动相关性检测,92
- 自动相关性检测(ARD),92
- 自回归模型,301
- 平均,377
- 平均速率,432, 449
- 权重平均,432, 449, 633
- 反向传播,11, 301, 583
- 平坦性,196
- 反向传播-去相关,682
- 特征袋,561, 569
- 贝叶斯法则,312, 322
- 贝叶斯
- 后验概率,295--297
- 框架,91
- 超参数,91
- 模型先验,72
- 偏差/方差,71, 356
- 分解,134
- 集成,134
- 块验证,715
- 玻尔兹曼机,599, 622
- 中心化,625
- 海森矩阵,626
- 参数化,625
- 重参数化,626
- 分类回归树(CART),321
- 中心化
- 玻尔兹曼机,621, 625
- 神经网络
- 激活,207
- 误差,207
- 斜率,208
- 类别
- 均衡类别隶属度,299
- 频率,296
- 概率,295
- 分类,120, 311
- 心电图,299
- 误差,316
- 优值,297
- 手写字符,274
- k近邻,236
- 学习向量量化(LVQ),236
- 医学,306
- 基于记忆,236
- 模块化,312, 327
- 网络,92
- 时间序列,677
- 树,315
- 清洗,395
- 清理,395
- 聚类,317
- 凝聚式,324
- 委员会
- 神经网络委员会,585, 589
- 计算图,487
- 条件随机场,433
- 条件化,191, 626
- 条件数,27, 450, 471, 628
- 混淆矩阵,299, 317
- 共轭梯度,32, 304, 450, 484, 544, 553
- 共轭方向,33
- 共轭梯度截断,510
- 收敛,513
- 阻尼,496
- 弗莱彻-里夫斯,33
- 线搜索,32, 512
- 波拉克-里比耶尔,33
- 预条件,484
- 信赖域方法,507
- 上下文
- 驱动搜索,253
- 几何上下文,286
- 词汇上下文,284
- 对比散度,601, 614
- 持续对比散度,625
- 计数器
- 动作,710, 740
- 闭环系统,738
- 控制区间,735, 740
- 周期时间,736
- 神经强化控制器,735
- 状态,710, 739
- 收敛
- 几乎必然收敛,423
- 共轭梯度收敛,513
- 收敛速度,423
- 卷积神经网络,590
- 对应原理,689
- 协方差,26
- 协方差估计,390
- 信用分配,222
- 交叉验证,113, 334, 357
- 广义交叉验证(GCV),356
- 非线性,357
- 阻尼
- 共轭梯度截断,510
- K均值阻尼更新,566
- 线搜索,512
- 尺度敏感阻尼,501
- 结构阻尼,504
- 吉洪诺夫阻尼,498
- 信赖域方法,507
- 数据
- 人工生成,304
- 自动驾驶车辆导航,177
- 双线性问题,77
- CIFAR-10,575, 577
- COIL100,652
- 内燃机,78
- 数据噪声,397
- 数据集扩展,583
- 德特丁元音,150, 215
- 分布,179
- 心电图,299
- 弹性形变,584
- 德国债券,415
- 山丘-高原,146
- 工业产值指数,344, 361
- 麦基-格拉斯,123
- MNIST,581, 583, 633, 650
- MNIST,581, 583, 633, 650
- NETtalk,181
- NIST1,247
- NIST2,247
- 重叠分布,305
- 划分,408
- 帕斯卡大规模视觉识别挑战赛,432
- 彼得森与巴尼,120
- 肺炎,171
- 电力负荷,78
- Proben1,59
- RCV1,432
- 河流流量,78
- STL-10,575, 577
- 太阳黑子,78, 132
- Switchboard,329, 334
- 双螺旋,148
- 美国邮政服务,247
- 维基百科,651
- 调试,463
- 激活统计,466
- 梯度验证,428, 463
- 逐层分析,466, 629, 636
- 受限玻尔兹曼机,615
- 验证高斯-牛顿乘积,495
- 抽取
- 直流误差,207
- 线性误差,208
- 决策边界,304
- 决策树,313, 321
- 语音,326
- 深度网络
- 深度玻尔兹曼机(DBM),623
- 局部连接深度玻尔兹曼机(LC-DBM),623
- 深度K均值,574
- 依赖性检验,574
- 能量相关性,574
- 嵌入,639
- 可变形原型,237
- 树状图,326
- 密度估计,384, 622
- 条件,384
- 字典,562
- 困境
- 观察者-观测困境,391, 399
- 结构-速度困境,395
- 距离
- 欧氏,237
- 不变,239
- 切向,238, 242
- 均方敏感度误差,300
- 度量,175
- 归一化均方根误差,661
- 优化误差,425
- 预测误差
- 最终(FPE),356
- 广义(GFE)PSE,357
- 平方PSE,359
- 残差模式,70
- 均方根误差,660
- 舍入误差,225
- 训练,53--54
- 验证,5
- 词错误率,3
- 误差棒估计,80--90
- 估计:
- 条件密度,39;协方差,30
- 密度,3c)
- 误差棒,100--105
- 泛化误差,15
- 锈带,230
- 基于卷积深度信念网络(CDBN),304--306
- 棘轮,1268
- 证据,g:期望风险,425
- 因子化后验,205
- 假正例率,109
- 特征选择,10
- 前馈网络,89
- 海森矩阵,79
- 雅可比矩阵
- g线性扩展
- 反馈连接
- 有限差分,252
- 参考,141
- 注意力焦点,141
- 预测,120, 150, 180
- 函数逼近,79
- 广义自回归条件异方差(GARCH),387
- 高斯-牛顿矩阵,49
- 广义,489
- 乘法,209
- 生成,106, 216, 261
- 复用,101
- 广义高斯-牛顿矩阵,对角估计,521
吉布斯采样,601, 623
- 交替吉布斯采样,601, 623
梯度下降,422, 442 - 收敛,23
- 发散,24
- 正则化参数,116
图形处理器(GPU),466, 542, 556, 582, 587 - 卷积核,591
- 核,591
- 线程,591
手写识别,246, 312 - 架构,275
- 在线,271
黑塞矩阵,25, 194, 446 - 反向传播对角黑塞矩阵,36
- 玻尔兹曼机,626
- 条件数,221
- 特征值展布,38
- 特征值,38
- 与黑塞矩阵的精确乘积,487
- 在线计算,43
- 幂法,42
- 泰勒展开,42
- 最小特征值,22
- 黑塞矩阵与向量的乘积,37
- 形状,40
- 奇异,195-196
- 平方雅可比近似,34, 35
无黑塞优化,479, 483 - 阻尼,496
- 调试,495
- 并行化,494
异方差性,384, 387
隐马尔可夫模型,319
隐藏单元,450, 610 - 隐藏单元数量,181, 302, 450
分层的,313 - 分层分类器,333, 336
- 分层特征,574
- 神经网络层次结构,323, 324, 327, 329
目标导向启发式,747
超参数,91, 347, 446 - 自动化网格搜索,458
- 坐标下降,458
- 网格搜索,456
- 逐层优化,459
- 人工搜索,456
- 多分辨率搜索,458
- 半监督学习,645
病态的,191
不适定问题,70
图像识别,569
信息散度,324
初始化 - 共轭梯度初始化,517
- K均值初始化,565
输入 - 对比度归一化,564
- 强制输入,370
- 动量输入,370
- 归一化,16, 30
- 去相关,17
- 均衡化,17
- 零均值,16
预处理,374, 563, 714, 716
- 表示,274
- 缩放,714
- 球形化,32
平方输入,374
- 球形化,32
- 符号输入,468
- 白化,32, 564
不变性变换,263 - 对角双曲变换,265
- 弹性畸变,584
- 平行双曲变换,264
- 旋转,264
- 缩放,264
- 增厚,265
- X轴平移,263
- Y轴平移,264
雅可比矩阵,34, 35, 194, 441
K均值,423, 561, 562, 566 - 编码,571
- 硬分配,571
- 超参数,570
- 块大小,570
- 池化,571
- 感受野,570
- 初始化,565
- 感受野,572
- 稀疏性,566
- 球形K均值,562
- 训练流程,566
卡汉求和,674
核主成分分析,630
主题索引
克雷洛夫子空间,48
库尔贝克-莱布勒散度,325
有标签数据,512
Lasso回归,445
L-BFGS,544
大规模学习,424
- 权衡,426
泄漏积分,661, 667
学习,391 - 批量学习,141, 144
- 优势,141
- BFGS学习,213
- 大胆驱动法,213
- 条件,199
- 共轭梯度学习,519
课程学习,470
FOCE学习,619
高斯-牛顿法,213
梯度,292
分层学习,180
爬山算法,110
提示,110
K均值学习,566
列文伯格-马夸尔特法,539
终身学习,363
多任务学习,446
牛顿法,213
在线学习,391
感知机,28
拟牛顿法,213
秩传播,172
标注者,185 - 自适应,110
- 退火,213
- 动量,449
- 弹性传播,172
- 二阶方法,213
- 半监督学习,642
- 单任务学习,144
- 随机学习,391
- 优势,391
- 随机对角列文伯格-马夸尔特法,539
- 停止准则,213
- 切向传播,539
- 变度量法,213
- 自适应,110
- 退火,213
- 个体,213
- 最大,213
- 最优,213
列文伯格-马夸尔特启发式方法,539
李群,213
线性模型,43
线性增强前馈网络,121
- 与前馈网络的等价性,121
- 通用逼近,121
神经状态机,659
局部极小值,121
局部特征与全局特征,263
长程依赖,321
长期依赖,321
损失函数 - 凸损失函数,53
- 非凸损失函数,53
- 二阶导数,53
Lua语言,541 - 关联数组,541
- 闭包,541
- 性能,541
大规模连续语音识别,321 - 估计器,299
宏观经济预测,389
马尔可夫决策过程,736 - 提取网络(MPEN),737
- 带捷径,737
- 部分可观测(POMDP),736
- 策略,736
马尔可夫性,736
马尔可夫链蒙特卡洛方法,600
马尔可夫状态,736
均值方差方法,389
医学诊断,389 - 风险预测,389
内存分配,466
小批量,391 - 无黑塞小批量优化,479
- 小批量规模,391
混合 - 密度,320, 324
- 高斯混合,323, 385
模型 - 复杂度,329
- 可解释性,349
- 模型选择,316, 348, 353, 446
- 架构,354
- 输入,354
动量,449, 607
监控
- 误差,428
- 过拟合,605
- 学习进度,604, 615, 630, 632
- 重构误差,605
摩尔-彭罗斯伪逆,675
多任务学习(MTL),164
多核机器,466
网络信息准则(NIC),357
神经网络 - 架构,371-382
- 瓶颈网络,372
- 容量,181
- 对应原理,689
- 高效实现,538
- 专家网络,324
- 前馈网络,121, 123
- 交互层,375
- 内部预处理,371
- 线性神经网络,28
- 多层感知机,28, 313, 329, 581
- 神经拟合Q迭代,737
- 神经强化控制器,735
- 径向基函数,374
- 规模,181
- 朴素神经网络,346
噪声 - 高斯噪声,383, 391
- 拉普拉斯噪声,383
- 参数噪声,393
噪声抑制,221
噪声/非平稳性权衡,345
非线性,454 - 硬限幅,471
- softsigm,471
非线性标定,307
异常值,372, 383, 386 - 信息冲击,383
输出表示,176
过拟合,53, 55, 91 - 小批量过拟合,529
过冲,714
配分函数,600, 622 - 配分函数之比,631
模式生成,680
惩罚项 - 因子,91
- 隐式惩罚,393
- 隐含曲率,400
感知机,423
性能 - 准则,299
- 指标,299
多音字,321
投资组合管理,389
正预测率,299
幂法,42
预条件,427 - 共轭梯度预条件,519
- 预条件器设计,521
预测 - 后验,313
预处理,370-371, 456, 563 - 通过瓶颈网络的预处理,372
- 通过对角连接器的预处理,371
性价比,56
先验,72 - 偏差降低,289
- 知识先验,242, 317
- 概率先验,295
- 先验缩放,296
概率采样,298
发音图,319
剪枝,359, 401-406 - 早期脑损伤剪枝,402
- 输入变量剪枝,348, 359
- 不稳定性剪枝,405
- 逆峰度剪枝,403
- 节点剪枝,401
- 权重剪枝,401
- 基于敏感度的剪枝(SBP),359
- 随机剪枝,401
Python语言,541
Q学习,736 - 人工训练转换,747
- 代价函数,744
- 折扣,736, 745
- 增长批次,748
- 最大轨迹长度,745
- 神经拟合Q迭代,737
- 神经Q函数,749
- 策略,736
- X++技巧,746
- 量化权重,282
R算子,445, 482
径向基函数网络,140, 145
随机种子,455
循环神经网络,313, 482, 659 - 因果-逆因果(CRCNN),799
- 连接性,698
- 维度,493
- 动态一致性,482
- 回声状态网络,482
- 纠错(ECNN),698
- 历史一致性(HCNN),698
- 初始状态问题,698
- 液态状态机,482
- 记忆,498
- 过冲,714
- 捷径连接,718
- 稀疏性,491
- 时间展开,482
- 变体不变分离,794
回归 - 最小均方
- 线性回归
- 递归最小二乘
- 岭回归
- 加权最小二乘
正则化 - 自适应正则化
- 选择方法
- 循环网络正则化
- 平滑正则化
表征容量
储备池 - 参数,482
- 规模,482
- 稀疏性
谱半径,482
休眠学习,482 - 双重休眠学习,482
限制玻尔兹曼机,622 - 判别能力,622
风险,389
鲁棒估计 - 基于CD核的鲁棒估计,389
- LnCosh鲁棒估计,389
鲁棒学习,481
缩放,714
脚本语言,541
二阶梯度下降,213
分割 - 字符分割,305
- 词分割,305
半监督学习,642 - 深度嵌入,473
- 标签传播,473
- 拉普拉斯支持向量机,473
敏感度,403 - 平均绝对梯度,213
- 平均梯度,213
- δ输出,213
- 演化,213
- 输出梯度,213
- 剪枝,401
- RPM梯度,213
- 结构与噪声分离,389
洗牌检验,213
打乱,213
单指令多数据操作,466 - NEON,466
- SSE,466
softmax函数,471
软件,541
主题索引
- Torch5, 552
- Torch7, 537, 542
- 源分离,568
- 稀疏性,430
- 特征稀疏性,453
- 输入稀疏性,46
- c-K-means,916
- 稀疏编码 - 激活稀疏性,453
- 权重稀疏性
- 语音识别
- 联结主义
- 统计系统
- 平方输入
- 稳定性,结构不稳定性
- 状态估计,状态绑定
- STL
- 随机梯度下降
- 平均SGD
- 停止准则,早停
- 有效性,效率
- 最终停止
- 晚停
- 谓词,鲁棒性
- 阈值选择准则
- 停止训练用
- 时间-误差权衡
- 时间与误差
- 方差
- 支持向量机(SVM)
- 符号微分
- 塔克斯定理
- 正切传播,726
- 目标
- 嵌入
- 力
- 随机教师强制
- 结构教师强制
- 时序模式识别
- 线性模型
- 噪声
- 非线性
- 非平稳预测
- Torch7
- CUDA
- 神经网络工具包
- TensorFlow
- 训练流程
- 迁移,归纳,串行与并行
- 技巧
- 反向传播对角海森矩阵
- 反向传播二阶导数
- 目标选择
- 海森矩阵计算
- 信息
- 数据扭曲
- 导数舍入误差
- 不同初始权重集成
- 误差强调
- 频率平衡
- 海森矩阵
- 有限差分
- 最大特征值
- 最小特征值
- 平方雅可比近似
- 超参数
- 权重初始化
- 多任务学习
- 负训练
- 非线性交叉验证
- 输出误差归一化
- 后缩放
- 先验频率平衡
- 先验缩放
- 舍入误差
- 基于敏感度的剪枝
- 样本打乱
- Sigmoid函数
- 平方输入,143
- 单位切向距离
- 弹性切向距离
- 距离层次
- 加速,251
- 心室收缩,正切传播,259
- 室性早搏,301
- 大型网络训练,312
- 室上性收缩,301
- 集成方差缩减,131
- 可视化,349, 361, 465
- 权重衰减参数估计,75, 77
- 滤波器,465, 636
- 三音子模型,321
- 辛顿图,465
- 不等误分类代价,295
- 学习轨迹,466
- 单位局部切向量,465
- 二项分布,613
- 采样,465
- 高斯分布,612
- t-SNE,466
- 逻辑分布,22
- 径向基函数,22
- 权重(修正线性单元),613
- 更新,Sigmoid函数,17,更新幅度,298
- Sigmoid函数,611
- 权重衰减,73, 118, 121, 123, 303, 451, 608, 673
- 双曲正切函数,229
- 平方输入,143
- L1正则化,452
- 用户自适应,291
- L2正则化,452
- 衰减,梯度消失,728
- 参数估计,74, 75
- 变度量法,193
- 仿真,79
- VC维,241
- 权重共享,468, 713, 718
- 向量量化,562
- 权重初始化,49,06-扇入,454
- 良定参数,94
| 到期日 | | | | | | | | | | | | | | |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| | | | | | | | | | | | | | | |
QA 76.07 .N60 20.2 神经网络
神经网络:训练的诀窍
过去二十年间,可用数据与计算能力均大幅提升。伴随这一趋势,神经网络研究的方向以及神经网络训练的实践都经历了多项重要变革,例如深度学习机的广泛应用。
本书第二版在第一版基础上新增了大量技巧,这些技巧来自全球顶尖神经网络研究者14年的理论与实验沉淀。将这些技巧应用于解决实际问题时,可在训练速度、实现难易度和准确性方面带来显著提升。
纸质版图书同步推出电子版本,每卷新作均会在LNCS在线平台发布。有关LNCS的详细信息可访问www.springer.com/lncs查询。出版提案请发送至LNCS编辑部,地址:德国海德堡市蒂尔加滕街17号,邮编69121。
电子邮箱:lncs@springer.com。
ISSN:0302-9743。
ISBN:978-3-642-35288-1
- LNCS - LNAI - LNBI
- 矩阵乘法的结果,等于矩阵的某一列。 ↩︎