百度飞桨 | 深度学习入门① 机器学习和深度学习综述(转载;个人删改版)

百度飞桨 | 深度学习入门① 机器学习和深度学习综述(转载;个人删改版)

  • 机器学习综述
    • 机器学习的实现
    • 机器学习的方法
      • 确定模型参数
      • 模型结构介绍
  • 深度学习综述
    • 神经网络的基本概念
    • 深度学习改变了AI应用的研发模式
      • 实现了端到端的学习
      • 实现了深度学习框架标准化

课程链接:
百度架构师手把手带你零基础实践深度学习 (虽然名字挺中二的,但用来入门深度学习确实不错;学习该课程时推荐不看视频,只看项目文档(视频仅仅是重复项目文档内容))

原笔记链接:机器学习和深度学习综述
(原笔记在百度飞桨发布的原始笔记版本上有删改,删去了feihua)

机器学习综述

机器学习的实现

机器学习的实现可以分成两步:训练和预测,类似于我们熟悉的归纳和演绎:

  • 归纳: 从具体案例中抽象一般规律,机器学习中的“训练”亦是如此。从一定数量的样本(已知模型输入 X X X和模型输出 Y Y Y)中,学习输出 Y Y Y与输入 X X X的关系(可以想象成是某种表达式)。
  • 演绎: 从一般规律推导出具体案例的结果,机器学习中的“预测”亦是如此。基于训练得到的 Y Y Y X X X之间的关系,如出现新的输入 X X X,计算出输出 Y Y Y。通常情况下,如果通过模型计算的输出和真实场景的输出一致,则说明模型是有效的。

机器学习的方法

确定模型参数

确定参数的过程与科学家提出假说的方式类似,合理的假说至少可以解释所有的已知观测数据。如果未来观测到不符合理论假说的新数据,科学家会尝试提出新的假说。如天文史上,使用大圆和小圆组合的方式计算天体运行在中世纪是可以拟合观测数据的。但随着欧洲机械工业的进步,天文观测设备逐渐强大,越来越多的观测数据无法套用已有的理论,这促进了使用椭圆计算天体运行的理论假说出现。因此,模型有效的基本条件是能够拟合已知的样本,这给我们提供了学习有效模型的实现方案。

图3 是以 H H H为模型的假设,它是一个关于参数 W W W和输入 X X X的函数,用 H ( W , X ) H(W, X) H(W,X) 表示。模型的优化目标是 H ( W , X ) H(W, X) H(W,X)的输出与真实输出 Y Y Y尽量一致,两者的相差程度即是模型效果的评价函数(相差越小越好)。那么,确定参数的过程就是在已知的样本上,不断减小该评价函数( H ( W , X ) H(W, X) H(W,X) Y Y Y相差)的过程,直到学习到一个参数 W W W,使得评价函数的取值最小。这个衡量模型预测值和真实值差距的评价函数也被称为损失函数(损失Loss)


图3:确定模型参数示意图

最小化损失是模型的优化目标,实现损失最小化的方法称为优化算法,也称为寻解算法(找到使得损失函数最小的参数解)。参数 W W W和输入 X X X组成公式的基本结构称为假设。在牛顿第二定律的案例中,基于对数据的观测,我们提出了线性假设,即作用力和加速度是线性关系,用线性方程表示。由此可见,模型假设、评价函数(损失/优化目标)和优化算法是构成模型的三个部分

模型结构介绍

那么构成模型的三个部分(模型假设、评价函数和优化算法)是如何支撑机器学习流程的呢?如图4 所示:


图4:机器执行学习的框架

  • 模型假设:世界上的可能关系千千万,漫无目标的试探Y~X之间的关系显然是十分低效的。因此假设空间先圈定了一个模型能够表达的关系可能,如蓝色圆圈所示。机器还会进一步在假设圈定的圆圈内寻找最优的Y~X关系,即确定参数W。
  • 评价函数:寻找最优之前,我们需要先定义什么是最优,即评价一个Y~X关系的好坏的指标。通常衡量该关系是否能很好的拟合现有观测样本,将拟合的误差最小作为优化目标。
  • 优化算法:设置了评价指标后,就可以在假设圈定的范围内,将使得评价指标最优(损失函数最小/最拟合已有观测样本)的Y~X关系找出来,这个寻找的方法即为优化算法。最笨的优化算法即按照参数的可能,穷举每一个可能取值来计算损失函数,保留使得损失函数最小的参数作为最终结果。

从上述过程可以得出,机器学习的过程与牛顿第二定律的学习过程基本一致,都分为假设、评价和优化三个阶段:

  1. 假设:通过观察加速度a和作用力F的观测数据,假设 a a a F F F是线性关系,即 a = w ∗ F a = w * F a=wF
  2. 评价:对已知观测数据上的拟合效果好,即 w ∗ F w * F wF计算的结果,要和观测的 a a a尽量接近。
  3. 优化:在参数w的所有可能取值中,发现 w = 1 / m w=1/m w=1/m可使得评价最好(最拟合观测样本)。

机器执行学习的框架体现了其学习的本质是“参数估计”(Learning is parameter estimation)

深度学习综述

相比传统的机器学习算法,深度学习做出了哪些改进呢?其实两者在理论结构上是一致的,即:模型假设、评价函数和优化算法,其根本差别在于假设的复杂度,如 图6 所示。


图6:深度学习的模型复杂度难以想象

牛顿第二定律例子中的假设:加速度与力呈线性关系
                    a = H(w, F) w参数 
                    
                    a = w*F

神经网络的基本概念

人工神经网络包括多个神经网络层,如卷积层、全连接层、LSTM等,每一层又包括很多神经元,超过三层的非线性神经网络都可以被称为深度神经网络。
深度学习的模型可以视为是输入到输出的映射函数,足够深的神经网络理论上可以拟合任何复杂的函数。
因此神经网络非常适合学习样本数据的内在规律和表示层次,对文字、图像和语音任务有很好的适用性。

神经网络结构如 图7 所示。


图7:神经网络结构示意图

  • 神经元: 神经网络中每个节点称为神经元,由两部分组成:
    • 加权和:将所有输入加权求和。
    • 非线性变换(激活函数):加权和的结果经过一个非线性函数变换
  • 多层连接: 大量这样的节点按照不同的层次排布,形成多层的结构连接起来,即称为神经网络。
  • 前向计算: 从输入计算输出的过程,顺序从网络前至后。
  • 计算图: 以图形化的方式展现神经网络的计算逻辑又称为计算图。我们也可以将神经网络的计算图以公式的方式表达如下:
    Y = f 3 ( f 2 ( f 1 ( w 1 ⋅ x 1 + w 2 ⋅ x 2 + w 3 ⋅ x 3 + b ) + … ) … ) … ) Y =f_3 ( f_2 ( f_1 ( w_1\cdot x_1+w_2\cdot x_2+w_3\cdot x_3+b ) + … ) … ) … ) Y=f3(f2(f1(w1x1+w2x2+w3x3+b)+)))

深度学习改变了AI应用的研发模式

实现了端到端的学习

深度学习改变了很多领域算法的实现模式。在深度学习兴起之前,很多领域建模的思路是投入大量精力做特征工程,将专家对某个领域的“人工”理解沉淀成特征表达,然后使用简单模型完成任务(如分类或回归)。而在数据充足的情况下,深度学习模型可以实现端到端的学习,即不需要专门做特征工程,将原始的特征输入模型中,模型可同时完成特征提取和分类任务,如 图11 所示。


图11:深度学习实现了端到端的学习

以计算机视觉任务为例,特征工程是诸多图像科学家基于人类对视觉理论的理解,设计出来的一系列提取特征的计算步骤,典型如SIFT特征。在2010年之前的计算机视觉领域,人们普遍使用SIFT一类特征+SVM一类的简单浅层模型完成建模任务。


说明:

SIFT特征由David Lowe在1999年提出,在2004年加以完善。SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,适合在海量数据库中快速准确匹配。


实现了深度学习框架标准化

除了应用广泛的特点外,深度学习还推动人工智能进入工业大生产阶段,算法的通用性导致标准化、自动化和模块化的框架产生,如 图12 所示。


图12:深度学习模型具有通用性特点

在此之前,不同流派的机器学习算法理论和实现均不同,导致每个算法均要独立实现,如随机森林和支撑向量机(SVM)。但在深度学习框架下,不同模型的算法结构有较大的通用性,如常用于计算机视觉的卷积神经网络模型(CNN)和常用于自然语言处理的长期短期记忆模型(LSTM),都可以分为组网模块、梯度下降的优化模块和预测模块等。这使得抽象出统一的框架成为了可能,并大大降低了编写建模代码的成本。一些相对通用的模块,如网络基础算子的实现、各种优化算法等都可以由框架实现。建模者只需要关注数据处理,配置组网的方式,以及用少量代码串起训练和预测的流程即可。

在深度学习框架出现之前,机器学习工程师处于手工业作坊生产的时代。为了完成建模,工程师需要储备大量数学知识,并为特征工程工作积累大量行业知识。每个模型是极其个性化的,建模者如同手工业者一样,将自己的积累形成模型的“个性化签名”。而今,“深度学习工程师”进入了工业化大生产时代。只要掌握深度学习必要但少量的理论知识,掌握Python编程即可以在深度学习框架实现非常有效的模型,甚至与该领域最领先的模型不相上下。


图13:深度学习工程师处于工业化大生产时代,“老科学家”长期积累的优势不再牢固

你可能感兴趣的:(百度飞桨 | 深度学习入门① 机器学习和深度学习综述(转载;个人删改版))