机器学习和深度学习综述
1 人工智能、机器学习、深度学习的关系近些年人工智能、机器学习和深度学习的概念十分火热但很多从业者却很难说清它们之间的关系外行人更是雾里看花。在研究深度学习之前先从三个概念的正本清源开始。概括来说人工智能、机器学习和深度学习覆盖的技术范畴是逐层递减的三者的关系如图1所示即人工智能 机器学习 深度学习。图1人工智能、机器学习和深度学习三者关系示意人工智能Artificial IntelligenceAI是最宽泛的概念是研发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。由于这个定义只阐述了目标而没有限定方法因此实现人工智能存在的诸多方法和分支导致其变成一个“大杂烩”式的学科。机器学习Machine LearningML是当前比较有效的一种实现人工智能的方式。深度学习Deep LearningDL是机器学习算法中最热门的一个分支近些年取得了显著的进展并替代了大多数传统机器学习算法。2 机器学习区别于人工智能机器学习、尤其是监督学习则有更加明确的指代。机器学习是专门研究计算机怎样模拟或实现人类的学习行为以获取新的知识或技能重新组织已有的知识结构使之不断改善自身的性能。这句话有点“云山雾罩”的感觉让人不知所云下面我们从机器学习的实现原理和实施方法两个维度进行剖析帮助读者更加清晰地认识机器学习的来龙去脉。2.1 机器学习的实现原理机器学习的实现可以分成两步训练和预测类似于归纳和演绎归纳从具体案例中抽象一般规律机器学习中的“训练”亦是如此。从一定数量的样本已知模型输入x和模型输出y中学习输出y与输入x的关系可以想象成是某种表达式。演绎从一般规律推导出具体案例的结果机器学习中的“预测”亦是如此。基于训练得到的y与x之间的关系如出现新的输入x计算出输出y。通常情况下如果通过模型计算的输出和真实场景的输出一致则说明模型是有效的。2.2 机器学习的实施方法机器学习的实施方法和人类科研的过程有着异曲同工之妙下面以“机器从牛顿第二定律实验中学习知识”为例帮助读者更加深入理解机器学习监督学习的方法论本质即在“机器思考”的过程中确定模型的三个关键要素假设、评价、优化。1案例机器从牛顿第二定律实验中学习知识牛顿第二定律牛顿第二定律是艾萨克·牛顿在1687年于《自然哲学的数学原理》一书中提出的其常见表述物体加速度的大小跟作用力成正比跟物体的质量成反比与物体质量的倒数成正比。牛顿第二运动定律和第一、第三定律共同组成了牛顿运动定律阐述了经典力学中基本的运动规律。在中学课本中牛顿第二定律有两种实验设计方法倾斜滑动法和水平拉线法如图2所示。图2牛顿第二定律实验设计方法相信很多读者都有摆弄滑轮和小木块做物理实验的青涩年代和美好回忆。通过多次实验数据可以统计出如表1所示的不同作用力下的木块加速度。表1实验获取的大量数据样本和观测结果观察实验数据不难猜测物体的加速度a和作用力F之间的关系应该是线性关系。因此我们提出假设 aw⋅F其中a代表加速度F代表作用力w是待确定的参数。通过大量实验数据的训练确定参数w是物体质量的倒数(1/m)即得到完整的模型公式aF⋅(1/m)。当已知作用到某个物体的力时基于模型可以快速预测物体的加速度。如燃料对火箭的推力F10火箭的质量m2可快速得出火箭的加速度a5。2如何确定模型参数这个有趣的案例演示了机器学习的基本过程但其中有一个关键点的实现尚不清晰即如何确定模型参数w1/m确定参数的过程与科学家提出假说的方式类似合理的假说可以最大化的解释所有的已知观测数据。如果未来观测到不符合理论假说的新数据科学家会尝试提出新的假说。如天文史上使用大圆和小圆组合的方式计算天体运行在中世纪是可以拟合观测数据的。但随着欧洲工业革命的推动天文观测设备逐渐强大已有的理论已经无法解释越来越多的观测数据这促进了使用椭圆计算天体运行的理论假说出现。因此模型有效的基本条件是能够拟合已知的样本这给我们提供了学习有效模型的实现方案。图3是以H为模型的假设它是一个关于参数w和输入x的函数用H(w,x) 表示。模型的优化目标是H(w,x)的输出与真实输出Y尽量一致两者的相差程度即是模型效果的评价函数相差越小越好。那么确定参数的过程就是在已知的样本上不断减小该评价函数H的计算结果和Y的差距的过程。直到模型学习到一个参数w使得评价函数的值最小衡量模型预测值和真实值差距的评价函数也被称为损失函数Loss。图3确定模型参数示意图假设机器通过尝试答对最小化损失大量的习题已知样本来学习知识模型参数w并期望用学习到的知识所代表的模型H(w,x)回答不知道答案的考试题未知样本。最小化损失是模型的优化目标实现损失最小化的方法称为优化算法也称为寻解算法找到使得损失函数最小的参数解。参数w和输入x组成公式的基本结构称为假设。在牛顿第二定律的案例中基于对数据的观测我们提出了线性假设即作用力和加速度是线性关系用线性方程表示。由此可见模型假设、评价函数损失/优化目标和优化算法是构成模型的三个关键要素。3模型结构模型假设、评价函数和优化算法是如何支撑机器学习流程的呢如图4所示。图4机器学习流程1模型假设世界上的可能关系千千万漫无目标的试探Y X之间的关系显然是十分低效的。因此假设空间先圈定了一个模型能够表达的关系可能如红色圆圈所示。机器还会进一步在假设圈定的圆圈内寻找最优的Y~X关系即确定参数w。2评价函数寻找最优之前我们需要先定义什么是最优即评价一个Y~X关系的好坏的指标。通常衡量该关系是否能很好的拟合现有观测样本将拟合的误差最小作为优化目标。3优化算法设置了评价指标后就可以在假设圈定的范围内将使得评价指标最优损失函数最小/最拟合已有观测样本的Y~X关系找出来这个寻找最优解的方法即为优化算法。最笨的优化算法即按照参数的可能穷举每一个可能取值来计算损失函数保留使得损失函数最小的参数作为最终结果。从上述过程可以得出机器学习的过程与牛顿第二定律的学习过程基本一致都分为假设、评价和优化三个关键要素1假设通过观察加速度a和作用力F的观测数据假设a和F是线性关系即aw⋅F。2评价对已知观测数据上的拟合效果好即w⋅F计算的结果要和观测的a尽量接近。3优化在参数w的所有可能取值中发现w1/m可使得评价最好最拟合观测样本。机器执行学习任务的框架体现了其学习的本质是“参数估计”Learning is parameter estimation。上述方法论使用更规范化的表示如图5所示未知目标函数ff以训练样本Dx1y1…xnyn为依据。从假设集合H中通过学习算法A找到一个函数g。如果g能够最大程度的拟合训练样本D那么可以认为函数g就接近于目标函数f。图5规范化表示在此基础上许多看起来完全不一样的问题都可以使用同样的框架进行学习如科学定律、图像识别、机器翻译和自动问答等它们的学习目标都是拟合一个“大公式ff”如图6所示。图6机器学习就是拟合一个“大公式”3 深度学习机器学习算法理论在上个世纪90年代发展成熟在许多领域都取得了成功但平静的日子只延续到2010年左右。随着大数据的涌现和计算机算力提升深度学习模型异军突起极大改变了机器学习的应用格局。今天多数机器学习任务都可以使用深度学习模型解决尤其在语音、计算机视觉和自然语言处理等领域深度学习模型的效果比传统机器学习算法有显著提升。相比传统的机器学习算法深度学习做出了哪些改进呢其实两者在理论结构上是一致的即模型假设、评价函数和优化算法其根本差别在于假设的复杂度。如图6第二个示例图像识别所示对于对于美女照片人脑可以接收到五颜六色的光学信号能快速反应出这张图片是一位美女而且是程序员喜欢的类型。但对计算机而言只能接收到一个数字矩阵对于美女这种高级的语义概念从像素到高级语义概念中间要经历的信息变换的复杂性是难以想象的如图7所示。图7深度学习的模型复杂度难以想象这种变换已经无法用数学公式表达因此研究者们借鉴了人脑神经元的结构设计出神经网络的模型如图8所示。图8上半部分展示了神经网络基本单元感知机的设计方案其处理信息的方式与人脑中的单一神经元有很强的相似性图8下半部分展示了几种经典的神经网络结构后续的章节中会详细讲述类似于人脑中多种基于大量神经元连接而形成的不同职能的器官。图8模拟人脑结构针对各种任务设计不同的深度学习模型3.1 神经网络的基本概念人工神经网络包括多个神经网络层如卷积层、全连接层、LSTM等每一层又包括很多神经元超过三层的非线性神经网络都可以被称为深度神经网络。通俗的讲深度学习的模型可以视为是输入到输出的映射函数如图像到高级语义美女的映射足够深的神经网络理论上可以拟合任何复杂的函数。因此神经网络非常适合学习样本数据的内在规律和表示层次对文字、图像和语音任务有很好的适用性。这几个领域的任务是人工智能的基础模块因此深度学习被称为实现人工智能的基础也就不足为奇了。神经网络基本结构如图9所示。图9神经网络基本结构示意图神经元神经网络中每个节点称为神经元由两部分组成加权和将所有输入加权求和。非线性变换激活函数加权和的结果经过一个非线性函数变换让神经元计算具备非线性的能力。多层连接大量这样的节点按照不同的层次排布形成多层的结构连接起来即称为神经网络。前向计算从输入计算输出的过程顺序从网络前至后。计算图以图形化的方式展现神经网络的计算逻辑又称为计算图也可以将神经网络的计算图以公式的方式表达由此可见神经网络并没有那么神秘它的本质是一个含有很多参数的“大公式”。如果大家感觉这些概念仍过于抽象理解的不够透彻先不用着急下一章会以“房价预测”为例演示使用Python实现神经网络模型的细节。3.2 深度学习的发展历程神经网络思想的提出已经是70多年前的事情了现今的神经网络和深度学习的设计理论是一步步趋于完善的。在这漫长的发展岁月中一些取得关键突破的闪光时刻值得深度学习爱好者们铭记如图10所示。图10深度学习发展历程1940年代首次提出神经元的结构但权重是不可学的。50-60年代提出权重学习理论神经元结构趋于完善开启了神经网络的第一个黄金时代。1969年提出异或问题人们惊讶的发现神经网络模型连简单的异或问题也无法解决对其的期望从云端跌落到谷底神经网络模型进入了被束之高阁的黑暗时代。1986年新提出的多层神经网络解决了异或问题但随着90年代后理论更完备并且实践效果更好的SVM等机器学习模型的兴起神经网络并未得到重视。2010年左右深度学习进入真正兴起时期。随着神经网络模型改进的技术在语音和计算机视觉任务上大放异彩也逐渐被证明在更多的任务如自然语言处理以及海量数据的任务上更加有效。至此神经网络模型重新焕发生机并有了一个更加响亮的名字深度学习。2017年-2021年2017年基于多头注意力机制的序列到序列模型Transformer在论文《Attention is all you need》中被提出。Transformer是一个具有里程碑意义的模型它的提出催生了众多基于Transformer网络结构的模型特别是在2018年预训练模型BERTBidirectional Encoder Representations from Transformers的提出其在多项NLP任务上均取得了突破性的进展。自此不管是学术界还是工业界均掀起了基于Transformer的预训练模型研究和应用的热潮并且逐渐从NLP领域延伸到CV、语音等多项领域。2022年之后2022年Open AI的ChatGPT正式发布2023年百度的文心一言正式发布使得生成式大规模语言模型正式破圈人工智能开始被千行百业了解进入应用爆发时代。为何神经网络到2010年后才焕发生机呢这与深度学习成功所依赖的先决条件大数据涌现和硬件发展有关。大数据是神经网络发展的有效前提。神经网络和深度学习是非常强大的模型需要足够量级的训练数据。时至今日之所以很多传统机器学习算法和人工特征依然是足够有效的方案原因在于很多场景下没有足够的标记数据来支撑深度学习。深度学习的能力特别像科学家阿基米德的豪言壮语“给我一根足够长的杠杆我能撬动地球”。深度学习也可以发出类似的豪言“给我足够多的数据我能够学习任何复杂的关系”。但在现实中足够长的杠杆与足够多的数据一样往往只能是一种美好的愿景。直到近些年各行业IT化程度提高累积的数据量爆发式地增长才使得应用深度学习模型成为可能。依靠芯片硬件的发展。现阶段依靠更强大的GPU芯片图形处理器graphics processing unit和并行计算技术深度学习在模型训练上的困难已经被逐渐克服。GPU本来被计算机厂商生产用于优化图形显示效果它特别适用于大规模矩阵计算而不是强控制的场景。在3D图像建模和渲染场景十分实用所以大型游戏的发烧友均会为电脑单独购买GPU显卡来追求极致的画面体验。这种硬件特性同样非常适用于深度学习模型的训练和推理促进深度学习大发展的同时也为自身拓展了更广阔的市场空间造就了英伟达这样的巨型企业。3.3 深度学习的研究和应用蓬勃发展早在1998年一些科学家就已经使用神经网络模型识别手写数字图像了。但深度学习在计算机视觉应用上的兴起还是在2012年ImageNet比赛上使用AlexNet做图像分类。如果比较下1998年和2012年的模型会发现两者在网络结构上非常类似仅在细节上有所优化。在这十四年间计算性能的大幅提升和数据量的爆发式增长促使模型完成了从“简单的数字识别”到“复杂的图像分类”的跨越。虽然历史悠久但深度学习在今天依然在蓬勃发展一方面基础研究快速发展另一方面工业实践层出不穷。基于深度学习的顶级会议ICLR(International Conference on Learning Representations)统计深度学习相关的论文数量呈逐年递增的状态如图11所示。同时不仅仅是深度学习会议与数据和模型技术相关的会议ICML和KDD专注视觉的CVPR和专注自然语言处理的EMNLP等国际会议的大量论文均涉及着深度学习技术。该领域和相关领域的研究方兴未艾技术仍在不断创新突破中。图11深度学习相关论文数量逐年攀升另一方面以深度学习为基础的人工智能技术在升级改造众多的传统行业领域存在极其广阔的应用场景。图12选自艾瑞咨询的研究报告人工智能技术不仅可在众多行业中落地应用广度同时在部分行业如安防、遥感、互联网、金融、工业等已经实现了市场化变现和高速增长深度为社会贡献了巨大的经济价值。图12以深度学习为基础的AI技术在各行业广泛应用如图13所示以计算机视觉的行业应用分布为例根据IDC的数据统计和预测随着人工智能向各个行业的渗透当前较多运用人工智能的互联网行业的产值占比反而会逐渐变小。图13以深度学习为基础的AI技术在各行业广泛应用3.4 深度学习改变了AI应用的研发模式1实现了端到端的学习深度学习改变了很多领域算法的实现模式。在深度学习兴起之前很多领域建模的思路是投入大量精力做特征工程将专家对某个领域的“人工理解”沉淀成特征表达然后使用简单模型完成任务如分类或回归。而在数据充足的情况下深度学习模型可以实现端到端的学习即不需要专门做特征工程将原始的特征输入模型中模型可同时完成特征提取和分类任务如图14所示。图14深度学习实现了端到端的学习以计算机视觉任务为例特征工程是诸多图像科学家基于人类对视觉理论的理解设计出来的一系列提取特征的计算步骤典型如SIFT特征。在2010年之前的计算机视觉领域人们普遍使用SIFT一类特征SVM一类的简单浅层模型完成建模任务。说明SIFT特征由David Lowe在1999年提出在2004年加以完善。SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、微视角改变的容忍度也相当高。基于这些特性它们是高度显著而且相对容易撷取在母数庞大的特征数据库中很容易辨识物体而且鲜有误认。使用SIFT特征描述对于部分物体遮蔽的侦测率也相当高甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下辨识速度可接近即时运算。SIFT特征的信息量大适合在海量数据库中快速准确匹配。2实现了深度学习框架标准化除了应用广泛的特点外深度学习还推动人工智能进入工业大生产阶段算法的通用性导致标准化、自动化和模块化的框架产生如图15所示。图15深度学习模型具有通用性特点在此之前不同流派的机器学习算法理论和实现均不同导致每个算法均要独立实现如随机森林和支撑向量机SVM。但在深度学习框架下不同模型的算法结构有较大的通用性如常用于计算机视觉的卷积神经网络模型CNN和常用于自然语言处理的长期短期记忆模型(LSTM)都可以分为组网模块、梯度下降的优化模块和预测模块等。这使得抽象出统一的框架成为了可能并大大降低了编写建模代码的成本。一些相对通用的模块如网络基础算子的实现、各种优化算法等都可以由框架实现。建模者只需要关注数据处理配置组网的方式以及用少量代码串起训练和预测的流程即可。在深度学习框架出现之前机器学习工程师处于“手工作坊”生产的时代。为了完成建模工程师需要储备大量数学知识并为特征工程工作积累大量行业知识。每个模型是极其个性化的建模者如同手工业者一样将自己的积累形成模型的“个性化签名”。而今“深度学习工程师”进入了工业化大生产时代只要掌握深度学习必要但少量的理论知识掌握Python编程即可在深度学习框架上实现非常有效的模型甚至与该领域最领先的模型不相上下。建模的技术门槛进一步降低了这是新入行者的机遇。图16深度学习框架大大减低了AI建模难度4 人工智能的职业发展空间广阔哲学家们告诉我们做我们所喜欢的然后成功就会随之而来。—— 沃伦 · 巴菲特 全球著名的投资家相信本课程的读者中有很多在校筹备找工作的同学和职场中期望转型的工程师 大家普遍对人工智能的职业发展非常关心。下面就从经济回报的视角分析下人工智能是不是一个有前途的职业。坦率的说如巴菲特所言选择一个自己喜欢的职业是真正的好职业。但对于多数普通人经济回报也是职业选择的重要考虑因素。一个有高经济回报的职业一定是市场需求远远大于市场供给的职业。即职业的市场需求要保持长期的增长而职业的市场供给难以在中短期得到补充。1人工智能岗位的市场需求旺盛根据各大咨询公司的行业研究报告人工智能相关产业在未来十年预计有30%~40%的年增长率。一方面人工智能的应用会从互联网行业逐渐扩展到金融、工业、农业、能源、城市、交通、医疗、教育等更广泛的行业应用空间和潜力巨大另一方面受限于工智能技术本身的成熟度以及人工智能落地要结合场景的数据处理、系统改造和业务流程优化等条件的制约人工智能应用的价值释放过程会相对缓慢。这使得市场对人工智能的岗位需求形成了一条稳步又长期增长的曲线与互联网行业相比对多数的求职者更加友好如图17所示。互联网行业由于技术成熟周期短应用落地的推进速度快反而形成一条增长率更高年增长率超过100%但增长周期更短的曲线电脑互联网时代10年移动互联网时代10年。当行业增长达到顶峰对岗位的需求也会相应回落如同2022年互联网行业开始出现人才饱和的现状。图17人工智能岗位的市场供给对比2复合型人才成为市场刚需在人工智能落地到千行万业的过程中企业需求量最大、也最为迫切的是既懂行业知识和场景又懂人工智能理论还具备实践能力和经验的“复合型人才”。成为“复合型人才”不仅需要学习书本知识还要大量进行产业实践使得这种人才有成长深度供给增长缓慢。从上述分析可见当人工智能产业在未来几十年保持稳定的增长而产业需要的“复合型人才”又难以大量供给的情况下人工智能应用研发岗位会维持一个很好的经济回报。人生天地之间若白驹过隙忽然而已每个人都希望留下自己的足迹。为何要学习深度学习技术以及如何通过这本书来学习呢一方面深度学习的应用前景广阔是极好的发展方向和职业选择。另一方面本书会使用国产的深度学习框架飞桨PaddlePaddle来编写实践案例基于框架的编程让深度学习变得易学易用。转自https://www.paddlepaddle.org.cn/tutorials/projectdetail/5646726