社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

CCCF精选|机器学习:从先验假设到自动化——迈向通用人工智能的必然步骤

中国计算机学会 • 2 年前 • 829 次点击  


本文讨论了五个主要的先验假设以及如何突破这些假设限制并进一步提升机器学习效果的方法。在此基础上我们提出了机器学习自动化的概念以及SLeM框架。SLeM为机器学习自动化研究提供了一个形式化/模型化/科学化的研究框架和途径。现有应用表明SLeM是一个强大而有效的工具,同时它也处于快速持续的发展过程中。


关键词:机器学习 自动化机器学习


以深度学习为代表的人工智能已经突破了从“不能用”到“可以用”的技术拐点,但是从“可以用”到“很好用”,还有很长的路要走。人工智能最核心的技术是机器学习,即从给定的数据集中总结规律或寻求表征,可以概括为图1所示的公式。

 


这个模型概括了机器学习解决问题的一般步骤:首先我们需要选择一个较大范围的、可能包含数据规律或表示函数的假设空间,然后指定一个损失度量,在该度量下,我们在假设空间中找一个函数,它能够将函数在给定数据集上的平均损失极小化。极小化数据集上的平均损失这一目标被称为“数据拟合项”,相应的方法即为经验风险极小化。然而,仅通过极小化数据拟合项来寻找解常常是不适定的,因而必须添加某些额外的约束,新增加的希望满足的这些约束构成“正则项”。极小化数据拟合项与正则项之和被称为“正则化方法”,它构成了机器学习的最基本模型。



机器学习有先验假设


使用机器学习时,我们总是自觉或不自觉地施加一些假设,例如:


损失度量的独立性假设。我们总是习惯使用像最小二乘或者交叉熵这样确定的度量作为损失,而不把损失度量的选择与我们要解决的具体问题关联起来,更没有依据面临的问题自适应地确定最优的损失度量。


假设空间的大容量假设 。我们总是自然地认为,我们选择使用的机器架构(例如用一个20层的深度学习架构)已经包含我们期望找到的解,或者说,已经包含数据所蕴含的规律。这个假设显然是保证机器学习成功的前提。我们通常都很自信:我们选的架构是合理的,是包含所要找的解的。


训练数据的完备性假设。我们使用机器学习时,总期望训练机器的数据是非常充分的、足够多的、高质量的。这个假定常常是我们选择机器学习方法的前提和原由。


正则子的先验决定论假设。为了使机器学习产生的决策函数有期望的性质,施加一定的正则约束是必须的。例如我们已习惯于使用L2正则保证光滑性,使用L1正则保证稀疏性,使用TV正则保持图像边缘稀疏性,等等。人们一般认为,正则项的形式是由先验决定的,我们在使用机器学习时,能够根据先验事先加以确定。这个假定的本质是,我们已经能够将问题的先验抽象出知识,而且能够正确地以“正则子”形式建模。之所以把这一认识叫作假设,是因为我们其实并不知道应用中所选择的正则子是否已经正确地对先验进行了建模。


分析框架的欧氏假设。当我们训练深度网络架构时,会自然地选择使用BP或ADAM这样类型的优化算法。为什么?这是因为这些算法都经过了严格的理论评判(收敛性、稳定性、复杂性等)。评判算法即把算法放在一个特定的数学框架内进行分析而得出结论的活动。我们通常把评判算法放在可使用二范数、正交性这样的欧氏框架中。这样的假设本质上限定了可用算法的类型和可用机器的架构(损失函数、正则项等)。在这样的假设下,我们并不能处理和敢于使用更复杂的非欧氏空间算法和机器学习架构。


这5个假设相当大程度上决定了机器学习的效能。



如何突破机器学习的先验假设


已有大量工作聚焦于如何突破机器学习的这些假设。以下是笔者团队近年来在这方面的一些代表性工作。


关于分析框架欧氏假设


我们认为,欧氏空间之所以被广泛使用,根本原因是我们在算法分析中能够使用欧式架构(a+b)2=a2+b2 +2ab,在这样的架构下,任何一个算法的性能(如收敛性)都和目标函数的凸性发生联系。因此,要冲破目标函数的凸性假设,本质上就是要冲破欧氏假设。笔者1989年及1991年的工作打开了用非欧氏架构工具研究非欧氏算法的可能性,近年来这些工具得到广泛应用。从这些研究中可看出,冲破欧氏假设的途径在于应用Banach空间几何学。


关于损失独立性假设


损失有两个功能,一是度量选定的函数在给定数据/数据集上的拟合程度,二是度量一个函数表示的精度。尽管在有导师学习和无导师学习模式下,它们可能有着不同的表现形式,但它的选择本质上都应该是与问题相关的。事实上,如果我们把问题的标签和特征用式(1)描述的观察模型来理解,


y=fθ(x)+e                (1)


那么,标签由一个固定的规律加上一个噪声得到,这个噪声就是数据获取的环境。根据概率公式,我们很容易看到,最好标签出现的概率完全由它的误差环境决定。这给我们一个很重要的启示:机器学习的最佳度量应该由误差决定。我们通过实验发现,如果假定误差是白噪声,那么最优的恢复度量确实是最小二乘。但如果噪声是其他类型,最优恢复度量就不再是最小二乘了。


给定一个具体的误差分布形式,我们能确定出一个特定的最佳恢复度量,这样的方法称为误差建模原理。对于任何机器学习问题,通过研究它生成的误差形式,就能获得一定意义下最优的损失度量,而在该度量下找到机器学习的经验函数才是最好的。笔者团队已有很多成功应用误差建模原理的案例,最典型的是根据这一原理成功研发微剂量CT,实现了将CT幅射剂量降低到微剂量水平。


一般来说,我们并不知道要解决的问题处于一个什么样的误差环境,这种情况下,我们可以运用高斯混合来逼近。事实上,任何一个分式函数都能以多个高斯分布函数之和来逼近。据此,我们证明,不同的高斯混合导致不同加权的“加权最小二乘”最优度量。这给出一个非常有用的提示:当我们不知道误差的真正形式时,加权最小二乘是一个不错的选择。


关于假设空间的大容量假设


如何设计一个机器架构使希望找到的问题解确在其中?我们提出了一个非常基础的方法:先构建一个含大量超参数的粗糙模型(叫模型族)来刻画问题解的范围,然后求解“模型族”构成解决问题的“算法族”,再把“算法族”自适应化展开成一个深度网络架构,它的参数包含模型簇和算法簇中的所有参数并且允许每个迭代步不同;最后应用数据来训练这样形成的网络产生问题的解。这样的一般化方法称为模型驱动的深度学习。模型驱动的深度学习表面上看是解决深度学习的架构设计问题,但本质上是在深度学习过程中逐步设置包含解的最小假设空间来突破假设空间的大容量假设。这一方法不同于传统的数学建模方法(要求精确建模),前者只要求对问题解的整体范围进行刻画;它也不同于传统的深度学习(没有融入物理机制),模型驱动的深度学习具有明确的物理机制解释和严密的数学基础。由此回避了深度学习架构设计难的问题,从而使机器学习架构能够在理论指导及可解释的意义下进行设计,如图2所示。

 


笔者团队2018年在《国家科学评论》(NSR)上正式提出了这一方法。使用这一方法,笔者团队提出了大家熟知的ADMM CS-Net深度学习架构。该架构是实现压缩感知的一个普遍有效的深度学习模型,已经得到普遍应用,并被认为是一个开创性的、奠基性的网络。它的重要意义是在最优化理论和深度学习网络设计之间搭建起一座桥梁,尤其是它能够比传统的压缩感知模型、正则化方法更好地处理稀疏性问题。


关于正则子先验决定论假设


突破正则先验假设是非常困难的,因为无论怎么选择, 也很能保证所选的正则项能真实地反映先验。我们分析认为,问题的困难性出在“正则化方法是在知识层面建模先验”上,要摆脱困境,出路是直接从数据中学习先险。为此,我们提出并建立了一个称为“隐正则化理论”的方法。我们证明:正则化问题的解在一定条件下能够等价于一个含近点投影算子的不动点方程,从而可自然地迭代求解并展开成一个模型驱动的深度学习网络,而近点投影算子与正则项是能够惟一相互决定的。这样,代替设置正则项,我们可以通过数据学习近点投影算子,从而起到与正则化方法一样的效果。值得注意的是,设定正则项是利用先验知识,而隐正则化是从数据中抽取知识,融入学习过程,因此在原理上具有重要的意义。


关于数据完备性假设


数据的完备性和高质量是保证机器学习效果的关键。课程学习的想法能够把学习过程与人类受教育的过程类比,从而以“先易后难”分步处理的方式应对不完备的数据(正如小学生先学简单的内容再学更难的内容一样)。过去十余年,笔者团队完整建立了“课程自步学习”的理论与算法体系,将类课程学习标准化成一个十分有效的处理不完备数据的机器学习方法。


总的来说,我们过去多年的工作是发展一些科学原理,希望在这些原理指导下,机器学习的先验假设能得以突破。我们的工作主要是:利用Banach几何工具来突破分析的欧氏假设,利用误差建模原理来突破损失的独立性假设,利用模型驱动的深度学习方式来突破假设空间的大容量假设,利用隐正则化方法来突破正则先验假设,利用课程自步学习来突破数据的完备性假设(见图3)。所有这些工作都被证明是很有效的。

 



机器学习要实现自动化


机器学习的当前发展基本上仍处于“人工”阶段:在数据层面,仍需要人工收集数据、标注数据,且需要人工决定哪些数据用作训练,哪些数据用作测试;在模型和算法层面,人们还大都只是从已知的模型和算法中选择一个架构和算法,基本上处于被动选择状态;在应用层面,我们还是一个任务一个模型,做不到任务自切换、环境自适应。显然,要想把人工智能从“人工化”推向“自主化”,中间必须要迈过一个关口,即机器学习要“自动化”,其过程如图4所示。

 


我们认为,机器学习自动化首先要至少实现六个方面的自动化。一是数据自动化 :实现数据的自生成、自选择。要根据目标任务需要或少量元数据(标准、高质量数据)的引导,实现训练数据的自动生成,以及从海量非高质量数据中自动选择可供学习的样本;二是架构/算法自动化 :实现网络架构自构建和训练算法自设计。要能根据目标任务自动解析完成任务所需的“功能块”,并以最优方式加以组装(以尽可能简约,甚至极简的方式)形成所需的深度网络架构;三是应用/更新自动化 :要实现损失度量随问题(数据)的自适应设定和正则项的自适应设定,实现网络训练算法的自适应构建和选择;实现任务自切换和环境自适应。要实现一个架构完成多项任务、自动切换的机器学习, 要能够持续学习、自主进化、自适应地去完成新任务。


我们把能实现上述六个“自动化”目标的机器学习称为“自动化机器学习”。显然,我们现在仍处于机器学习的人工化阶段,但正在走向自动化、自主化阶段。应该高度认识实现机器学习自动化的重大意义与价值,笔者认为,它既是实现自主智能的必经之路,也是推动人工智能发展、应用的现实需求。



如何实现机器学习自动化:SLeM框架


如何实现机器学习自动化?表面上看,它涉及机器学习的各个要素(例如:假设空间、损失函数、正则项、学习算法等)的设计问题,但本质上涉及的是学习方法论的学习问题。这里提出一种模拟学习方法论(Simulate Learning Methodology,SLeM)的框架,如图5所示,并阐述如何通过SLeM来实现机器学习自动化。

 


学习方法论是指导、管理学习者如何去学习的一般原则与方法学。为建立SLeM框架,我们需要先严格地从数学上定义学习任务、学习方法、学习方法论等概念。


学习任务


学习的目的是对可观测的现实世界规律作总结和刻画。我们认为,一个现实世界的规律可以用一个随机变量来描述,或等价地,由一个分布函数(密度函数)来描述。一个随机变量(现实世界规律)在不同时空的抽样即表现为不同时空反映同一规律的数据(这些构成通常机器学习研究的对象)。从数据中学习,可以表现为分类、回归、降维、隐变量识别等具体任务,但本质上是学习数据背后的分布(只要知道了分布,所有具体任务都能通过分布函数表示出来)。因此,学习任务宜定义作统计上的“密度估计问题”,即根据给定的数据,确定数据背后的随机变量分布(密度函数)问题。学习的本质是对一个可观测的现实世界规律作总结和刻画。


学习方法


依据前文对机器学习要素的分析,只要指定一组特定的“数据产生方法、假设空间/机器架构、损失度量、优化算法”,就可以认为定义了一个学习方法。由此,我们定义一个学习方法是对学习空间的一组指定K=(D, f, L, A),其中D是数据生成方法,f是机器架构,L是损失度量,A是一个可用以训练的优化算法。这里学习空间K自然定义为分布函数空间、假设空间、损失函数空间、优化算法空间的乘积,如图6所示。

 


学习空间K显然是无穷维的。但如果我们假设:K的每一因子空间都存在可数基底(应用中自然满足,例如,不同均值与方差的高斯分布构成分布函数空间的可数基底),则学习空间K便可以序列化(即同构于序列空间),即对应地能用4个无穷序列来描述。这个过程被称为学习空间的超参数化。如此一来,学习方法便可以表示为4个无穷序列,或进而将无穷维序列有限维截断,近似表示为4个有穷序列。这样参数化后,一个学习方法便可被描述为4个有限参数序列。


学习方法论


有了以上准备,我们将学习方法论定义为:从任务空间到学习空间的一个映照(可记为LM)。更具体地,给定一个任务TLM(T)是在学习空间的一个取值,它由4元组描述,对应数据产生方法、假设空间/机器架构、损失度量和优化算法的参数化表示。这就是学习方法论。学习方法论本质上是函数空间上的一个映射,是参数的一个赋值规则。显然,SLeM是函数空间上的函数逼近问题。


融合SLeM的问题求解过程如图7所示。

 


不同于传统的机器学习过程(给定数据、机器架构,选择一个优化算法去求解,得到决策函数),基于SLeM求解问题,是在传统的机器学习之前增加了一步方法论学习,然后根据方法论学习机设计的方法去执行机器学习任务。因此,它是从任务出发,先产生方法,再执行任务,是一个典型的两阶段任务求解过程。


基于元数据的SLeM计算模型


SLeM可以描述成函数空间上的一个标准机器学习问题。但这种模型只有理论上的意义。然而,如果我们给出一些假设,就能将这样的机器学习模型变成一个计算机可操作的模型。例如,如果假设学习方法论的好坏可以通过一组元数据来评判(类似于通过学生的考试成绩度量老师的教学表现, 这里元数据可以类比为检验学生成绩的一组标准考题),则SLeM模型可变成一个可操作的两阶段优化模型,它们能够非常方便的用计算机处理。进而,如果把度量方法论优劣的元数据换成元知识,即基于规则来评判方法论,则可以获得另一类型的双层优化SLeM模型,即基于元知识的SLeM模型。总之,基于对方法论的不同评价标准,可获得不同的SLeM计算模型。


SLeM框架与其他框架的比较


基于SLeM的一般问题求解是从任务出发,根据任务产生方法,然后再去完成任务。整个求解过程可以分为“方法学习”和“任务学习”两个阶段。显然,这和现在的机器学习不同,这两者泛化的目标不一样,输入、结构、模型也都不一样。SLeM框架与元学习也非常不一样,元学习包括很多演化过程,但总体上都是启发式的,还没有明确的数学模型。



SLeM应用举例


迁移学习理论


我们首先应用SLeM理论解决迁移学习的度量问题。我们知道, 人工智能的目标是迁移学习,但是目前的迁移学习一直没有很好的理论支撑。利用SLeM理论,我们可以证明:从完成一些任务中学到的知识能不能迁移,取决于三个基本要素。一是我们过去是否见过这个任务,即任务的相关性。二是任务机和学习机的空间复杂性。三是我们用于度量方法论的元数据和训练数据的一致性。这三条要素的发现说明了迁移学习理论构建的可能性。


机器学习自动化


接下来展示如何用SLeM理论解决机器学习自动化的问题。首先要考虑数据自动化:通过给每一个数据赋权的方法来参数化,运用SLeM模型自动地从大量数据中选择适用于网络训练的数据(即数据自选择)。我们提出了一个名为Class-aware Meta-Weight-Net的方法论学习机。应用展示,基于SLeM选择后的数据学习效果远远优于不选择、人工选择或随机选择数据集的学习效果,并且基于SLeM的方法对非均衡、高噪音数据集可用。该方法在粤港澳大湾区算法大赛(2022)中获得冠军。SLeM也被用来做标签的自矫正,即对标记错误的数据进行自动校正,从而解决半监督学习所得的标签的校正问题。关于网络自动化方面,我们尝试了在深度学习中自动嵌入变换问题,取得到非常好的效果。利用SLeM理论也可以进行度量自动化学习,换句话说,就是自适应设定与任务相关的损失度量。我们提出了一个Meta Loss Adjuster方法论学习网络,取得了不错的学习效果。最后我们将SLeM用于算法自动化,特别地,应用SLeM学习如何自动设置BP算法的学习率。为此,我们设计了一个称作Meta-LR-Schedule-Net的方法论网络。测试表明,耦合Meta-LR-Schedule-Net的深度学习平均提高深度学习泛化性能4%左右。


总的来说,通过构建SLeM方法机,可以学习具有明确物理意义的超参赋值学习方法,实现面向不同任务的机器学习自动化任务。笔者团队已将所有研究成果公开在开源平台上,参见https://github.com/xjtushujun/Auto-6ML。



总结与展望


人工智能的当前应用仍以“带先验假设的机器学习”和人工化为特征,下一步发展必然会以“实现机器学习自动化”为追求,这是机器学习发展的根本问题。实现机器学习自动化要求对数据、网络、损失、算法、任务等要素进行设计和调控。实现这一目标要求“任务到方法的映射”,即学习方法论的学习(SLeM),现有研究/方法尚不能支持这一目标的实现。笔者团队提出了SLeM的数学框架、严格定义、数学模型、一般算法,展示了如何用SLeM方法解决机器学习自动化问题。SLeM为机器学习自动化研究提供了一个形式化/模型化/科学化的研究框架和途径。已有应用表明SLeM是一个强大而有效的工具。应用SLeM的关键在学习空间的超参数化方案和方法学习机的设计上。另外,元数据集的选择是决定SLeM效果的关键要素。SLeM正在快速发展中,我们期待它的持续深化、拓广和工具化。

(本文根据CNCC2022特邀报告整理而成)


作者:


徐宗本

西安交通大学数学与统计学院教授。中国科学院院士。主要研究方向为智能信息处理、机器学习、数据建模基础理论。

zbxu@mail.xjtu.edu.cn


整理:


刘克彬 

CCF专业会员。清华大学副研究员。主要研究方向为物联网和普适计算。

kebinliu2021@mail.tsinghua.edu.cn


朱追

CCF学生会员。清华大学自动化系博士研究生。主要研究方向为边缘智能与物联网。

z-zhu22@mails.tsinghua.edu.cn


特别声明:中国计算机学会(CCF)拥有《中国计算机学会通讯》(CCCF)所刊登内容的所有版权,未经CCF允许,不得转载本刊文字及照片,否则被视为侵权。对于侵权行为,CCF将追究其法律责任



CCF推荐

【精品文章】



点击“阅读原文”,查看更多CCCF文章。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/151789
 
829 次点击