本文将针对与深度学习的平台的这样的一个理解和实战这样的一个理解。这是一个系列的课程。我将一直更新有关于的paddle的开发和学习。Paddle包括众多方面。目标检测、文字识别、图像分类、图像分割、生成对抗、视频、海量类别分类、语义理解、语音合成、语音识别、弹性计算推荐、强化学习框架、图学习框架、量子机器学习、生物计算等。本人就这些方面进行二次的研发和应用。
机器学习机器学习的实现可以分成两步:训练和预测,类似于我们熟悉的归纳和演绎:
- 归纳: 从具体案例中抽象一般规律,机器学习中的“训练”亦是如此。从一定数量的样本(已知模型输入XXX和模型输出YYY)中,学习输出YYY与输入XXX的关系(可以想象成是某种表达式)。
- 演绎: 从一般规律推导出具体案例的结果,机器学习中的“预测”亦是如此。基于训练得到的YYY与XXX之间的关系,如出现新的输入XXX,计算出输出YYY。通常情况下,如果通过模型计算的输出和真实场景的输出一致,则说明模型是有效的。
下面从“牛顿第二定律”入手,介绍机器学习的思考过程,以及在过程中如何确定模型参数,模型三个关键部分(假设、评价、优化)该如何应用。相信很多都有摆弄滑轮和小木块做物理实验的青涩年代和美好回忆。通过多次实验数据,可以统计如图所示的不同作用力下的木块加速度。
观察实验数据不难猜测,物体的加速度aaa和作用力之间的关系应该是线性关系。因此我们提出假设 a=w⋅Fa = w \cdot Fa=w⋅F,其中,aaa代表加速度,FFF代表作用力,www是待确定的参数。
通过大量实验数据的训练,确定参数www是物体质量的倒数(1/m)(1/m)(1/m),即得到完整的模型公式a=F⋅(1/m)a = F \cdot (1/m)a=F⋅(1/m)。当已知作用到某个物体的力时,基于模型可以快速预测物体的加速度。例如:燃料对火箭的推力FFF=10,火箭的质量mmm=2,可快速得出火箭的加速度aaa=5。
确定模型参数这个有趣的案例演示了机器学习的基本过程,但其中有一个关键点的实现尚不清晰,即:如何确定模型参数(w=1/m)(w=1/m)(w=1/m)?
确定参数的过程与科学家提出假说的方式类似,合理的假说至少可以解释所有的已知观测数据。如果未来观测到不符合理论假说的新数据,科学家会尝试提出新的假说。如天文史上,使用大圆和小圆组合的方式计算天体运行在中世纪是可以拟合观测数据的。但随着欧洲机械工业的进步,天文观测设备逐渐强大,越来越多的观测数据无法套用已有的理论,这促进了使用椭圆计算天体运行的理论假说出现。因此,模型有效的基本条件是能够拟合已知的样本,这给我们提供了学习有效模型的实现方案。
图3 是以HHH为模型的假设,它是一个关于参数WWW和输入XXX的函数,用H(W,X)H(W, X)H(W,X) 表示。模型的优化目标是H(W,X)H(W, X)H(W,X)的输出与真实输出YYY尽量一致,两者的相差程度即是模型效果的评价函数(相差越小越好)。那么,确定参数的过程就是在已知的样本上,不断减小该评价函数(H(W,X)H(W, X)H(W,X) 和YYY的差距)的过程,直到学习到一个参数WWW,使得评价函数的取值最小。这个衡量模型预测值和真实值差距的评价函数也被称为损失函数(损失Loss)。
举例类比,机器如一个机械的学生一样,只能通过尝试答对(最小化损失)大量的习题(已知样本)来学习知识(模型参数WWW),并期望用学习到的知识(模型参数WWW)所代表的模型H(W,X)H(W, X)H(W,X),回答不知道答案的考试题(未知样本)。最小化损失是模型的优化目标,实现损失最小化的方法称为优化算法,也称为寻解算法(找到使得损失函数最小的参数解)。参数WWW和输入XXX组成公式的基本结构称为假设。在牛顿第二定律的案例中,基于对数据的观测,我们提出了线性假设,即作用力和加速度是线性关系,用线性方程表示。由此可见,模型假设、评价函数(损失/优化目标)和优化算法是构成模型的三个部分。
上述过程在一些文献中也常用下面的公式图所表示:未知目标函数f产生了一些训练样本D,从假设集合H中,通过学习算法A找到一个函数g,g能够最大程度的拟合训练样本D,那么可以认为函数g就接近于目标函数f。
模型结构介绍那么构成模型的三个部分(模型假设、评价函数和优化算法)是如何支撑机器学习流程的呢?如图所示:
- 模型假设:世界上的可能关系千千万,漫无目标的试探YYY~XXX之间的关系显然是十分低效的。因此假设空间先圈定了一个模型能够表达的关系可能,如蓝色圆圈所示。机器还会进一步在假设圈定的圆圈内寻找最优的YYY~XXX关系,即确定参数WWW。
- 评价函数:寻找最优之前,我们需要先定义什么是最优,即评价一个YYY~XXX关系的好坏的指标。通常衡量该关系是否能很好的拟合现有观测样本,将拟合的误差最小作为优化目标。
- 优化算法:设置了评价指标后,就可以在假设圈定的范围内,将使得评价指标最优(损失函数最小/最拟合已有观测样本)的YYY~XXX关系找出来,这个寻找的方法即为优化算法。最笨的优化算法即按照参数的可能,穷举每一个可能取值来计算损失函数,保留使得损失函数最小的参数作为最终结果。
从上述过程可以得出,机器学习的过程与牛顿第二定律的学习过程基本一致,都分为假设、评价和优化三个阶段:
- 假设:通过观察加速度aaa和作用力FFF的观测数据,假设aaa和FFF是线性关系,即a=w⋅Fa = w \cdot Fa=w⋅F。
- 评价:对已知观测数据上的拟合效果好,即w⋅Fw \cdot Fw⋅F计算的结果,要和观测的aaa尽量接近。
- 优化:在参数www的所有可能取值中,发现w=1/mw=1/mw=1/m可使得评价最好(最拟合观测样本)。
机器执行学习的框架体现了其学习的本质是“参数估计”(Learning is parameter estimation)。在此基础上,许多看起来完全不一样的问题都可以使用同样的框架进行学习,如科学定律、图像识别、机器翻译和自动问答等,它们的学习目标都是拟合一个“大公式”,如 图5 所示。
他们的学习目标都是拟合一个“大公式”,公式中有很多可学习参数,机器学习的过程就是不断更新这些可学习参数。假定fff是最终期望的"公式"函数,ggg是当前公式所拟合的函数。那么,机器学习的目的就是让假设ggg更加逼近期望目标fff。
机器学习算法理论在上个世纪90年代发展成熟,在许多领域都取得了成功应用。但平静的日子只延续到2010年左右,随着大数据的涌现和计算机算力提升,深度学习模型异军突起,极大改变了机器学习的应用格局。今天,多数机器学习任务都可以使用深度学习模型解决,尤其在语音、计算机视觉和自然语言处理等领域,深度学习模型的效果比传统机器学习算法有显著提升。
那么相比传统的机器学习算法,深度学习做出了哪些改进呢?其实两者在理论结构上是一致的,即:模型假设、评价函数和优化算法,其根本差别在于假设的复杂度,如图所示。
不是所有的任务都像牛顿第二定律那样简单直观。对于 图7 中的美女照片,人脑可以接收到五颜六色的光学信号,能用极快的速度反应出这张图片是一位美女,而且是程序员喜欢的类型。但对计算机而言,只能接收到一个数字矩阵,对于美女这种高级的语义概念,从像素到高级语义概念中间要经历的信息变换的复杂性是难以想象的!这种变换已经无法用数学公式表达,因此研究者们借鉴了人脑神经元的结构,设计出神经网络的模型。
神经网络的基本概念人工神经网络包括多个神经网络层,如卷积层、全连接层、LSTM等,每一层又包括很多神经元,超过三层的非线性神经网络都可以被称为深度神经网络。通俗的讲,深度学习的模型可以视为是输入到输出的映射函数,如图像到高级语义(美女)的映射,足够深的神经网络理论上可以拟合任何复杂的函数。因此神经网络非常适合学习样本数据的内在规律和表示层次,对文字、图像和语音任务有很好的适用性。因为这几个领域的任务是人工智能的基础模块,所以深度学习被称为实现人工智能的基础也就不足为奇了。
神经网络结构如 图8 所示。
- 神经元: 神经网络中每个节点称为神经元,由两部分组成:
- 加权和:将所有输入加权求和。
- 非线性变换(激活函数):加权和的结果经过一个非线性函数变换,让神经元计算具备非线性的能力。
- 多层连接: 大量这样的节点按照不同的层次排布,形成多层的结构连接起来,即称为神经网络。
- 前向计算: 从输入计算输出的过程,顺序从网络前至后。
- 计算图: 以图形化的方式展现神经网络的计算逻辑又称为计算图。我们也可以将神经网络的计算图以公式的方式表达,如下:
由此可见,神经网络并没有那么神秘,它的本质是一个含有很多参数的“大公式”。如果大家感觉这些概念仍过于抽象,理解的不够透彻,先不用着急,后续我们会以实践案例的方式,再次介绍这些概念。
深度学习改变了AI应用的研发模式 实现了端到端的学习深度学习改变了很多领域算法的实现模式。在深度学习兴起之前,很多领域建模的思路是投入大量精力做特征工程,将专家对某个领域的“人工理解”沉淀成特征表达,然后使用简单模型完成任务(如分类或回归)。而在数据充足的情况下,深度学习模型可以实现端到端的学习,即不需要专门做特征工程,将原始的特征输入模型中,模型可同时完成特征提取和分类任务,如图所示。
以计算机视觉任务为例,特征工程是诸多图像科学家基于人类对视觉理论的理解,设计出来的一系列提取特征的计算步骤,典型如SIFT特征。在2010年之前的计算机视觉领域,人们普遍使用SIFT一类特征+SVM一类的简单浅层模型完成建模任务。
说明:SIFT特征由David Lowe在1999年提出,在2004年加以完善。SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,适合海量数据库中快速准确匹配。
实现了深度学习框架标准化除了应用广泛的特点外,深度学习还推动人工智能进入工业大生产阶段,算法的通用性导致标准化、自动化和模块化的框架产生,如 图
在此之前,不同流派的机器学习算法理论和实现均不同,导致每个算法均要独立实现,如随机森林和支撑向量机(SVM)。但在深度学习框架下,不同模型的算法结构有较大的通用性,如常用于计算机视觉的卷积神经网络模型(CNN)和常用于自然语言处理的长期短期记忆模型(LSTM),都可以分为组网模块、梯度下降的优化模块和预测模块等。这使得抽象出统一的框架成为了可能,并大大降低了编写建模代码的成本。一些相对通用的模块,如网络基础算子的实现、各种优化算法等都可以由框架实现。建模者只需要关注数据处理,配置组网的方式,以及用少量代码串起训练和预测的流程即可。
飞桨PaddlePaddle-源于产业实践的开源深度学习平台
思考的问题1、类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?模型假设和参数是什么?评价函数(损失)是什么?
大数据的常见应用场景:
个性化匹配∶在长尾经济与共享经济下的全新业务模式信息/商品/服务/资源的个性化匹配,如:搜索,新闻APP,电商,找工作/对象,打车APP,信贷,医疗(治疗癌症)…… 代替人工∶业务中的人工环节,引入智能模型,提升效率基于大数据的智能学习,替代机械性的人工服务:机器翻译,人脸检测的安保系统,电商的自动客服,无人车……
模型假设和参数是什么:用一个函数关系去表示的一只样本的数据的后面存在的规律。参数的是用于表现的规律的特征参数。
评价函数(损失):是与评价预测与目标的之间的一种关系函数。衡量模型预测值和真实值差距的评价函数也被称为损失函数(损失Loss)
三种的核心的要素:1假设空间2优化目标3寻找最优的算法求解。
2、为什么说深度学习工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?
促进业务发展
- 原来业务是基于数据和数据,其价值与数据量相关。因此采用的是这样的数据发挥更大价值。来保证的数据的能够发挥到最大的价值。
核心竞争力:
- 商业上的成功∶技术——满足需求二——控制供给
- 角度理解创新:创新是追求垄断,垄断是追求利润刘新只是一个领先的时间窗口,
- 需进入产品领先与数据领先的正向循环
- 技术和产品的壁垒期缩短,
- 数据领先是相对安全、轻松的垄断模式
大数据的关键
- 数据——业务——需求