你知道机器是怎么学习的吗?

陈晓猛

2020-02-07 发表于 2020-02-07 15:23 专题文章

在一次家庭饭局上,我父亲提到:现在科技真发达,连人工智能都出来了,可以识别你的人脸,可以算计你的消费能力,甚至下棋的时候,还能下赢人类中的顶级高手!对此他老人家有个疑问:这些人工智能怎么这么聪明,难道自己就会了?

我顿时愣了一下,是啊,如果机器学习会思考,那么是如何思考的呢?

就拿人工智能中应用最广的机器学习来说,在整个学习流程中,其实并不是自己就会了。如果大致分为两类的话,可以分为监督学习和无监督学习,监督学习的过程就像我们教咿呀学语的小孩认识爸爸和妈妈一样,我们给这两个人贴上标签,分别是“爸爸””和“妈妈”,又或者像是在教数学题一样,土豆2元钱一斤,5斤是多少钱?这些预先指定数据的意义的学习的方式就是监督学习;而无监督学习则是通过自身的规则,来划分数据之间的差别或识别特性的方式,也就是所谓自己就会了。

但是并不是机器学习都这么靠自己就学会了,其中涉及一些步骤——数据预处理、建立模型、验证模型以及优化模型。其实和我们人类学习的流程大致相同,只不过在某些方法上显得更为精进。数据预处理是为让数据变得可以被接收,可以被解读学习;而模型呢,则像是人形成的主观经验,当然,主观经验并不一定准确,所以需要验证模型;而优化模型则是使自己更加精进。

我们在这里用机器学习的观点解读一下人类中的存在的现象。

▊ 人为什么会对某些类型的信息比较敏感?

小明爸爸是厨师,或许小明对味觉本身就比较敏感;小虎的妈妈是摄影师,或许小虎对颜色比较敏感。如果一个模型通常在某一种类型的数据中浸淫,那么是否会对该类型的数据敏感呢?笔者认为还是有一定相关性的。至少在机器学习模型中,有这样的情况发生。在人生阅历不足的情况下,机器学习会采用什么方法呢?如下图所示,分别是过采样和欠采样。过采样是把小种类复制多份,以增加其小种类的样本数量。欠采样是从大众类中剔除一些样本,或者说只从大众类中选取部分样本。刻意减少或者增加某一方面的数据,以让数据整体分布平衡。

当然,过采样和欠采样并不是某种具体的方法,而是一类方法的集合,下面我们将分别介绍两种采样具体涉及那些方法。

例如过采样中合成少数类过采样技术(Synthetic Minority Oversampling Technique,SMOTE),一种通过在原始数据样本集中的通过个体样本之间进行内插来产生新样本的技术。这个过程基本上如下:

首先,将多数类样本排除在外,提取少数类样本;

最后,用同样的方式在其他原始少数类样本点合成新的样本。

欠采样中的近丢失方法(NearMiss)可以减少在模型抽取过程中的信息丢失的情况。和许多邻近方法类似,首先,该方法计算多数类的所有实例与少数类的实例之间的距离。然后,选取邻近中与少数类样本距离最短的多数类样本点,利用距离远近剔除多数类样本。

其方法存在着一些变种,但是只要思路是相同的,即与邻近中少数类样本点距离最短的多数类样本点,这些变种中唯一不同的地方在于度量距离最短的方式:

NearMiss-1,计算多数类样本点邻近中,与少数类样本的平均距离最短的多数类样本点,或者计算离该多数类样本点个距离最短的少数类样本点之和,从效力上是等效的,并对其进行从小到大的排序;最后并保留个需要提取多数类样本。

NearMiss-2,计算邻近中,与少数类样本的最远距离最短的多数类样本点,对其进行从小到大的排序;最后并保留个需要提取多数类样本。

NearMiss-3,和前两种方法解决问题的思路有所不同,从少数类样本点入手,假如要提取个离该少数类样本的最近多数类样本点,同样按照从小到大排列,按照特定数量提取。

▊ 模型的“题海战术”

上面说到,数据平衡性,在数据质量有保证的情况下,提升模型的健壮性,就像我们读书的时候一样,也在做题海战术(润色)。

LeoBreiman在1994年提出的套袋法(Bagging)是为了通过将随机生成的训练集分类相结合来改进分类。

套袋法(Bagging),是一种机器学习集成算法,旨在提高机器学习算法在统计分类和回归中的稳定性和准确性。它还减少了差异,并有助于避免过度拟合。虽然它通常被应用于决策树方法,但它可以与任何类型的方法一起使用。套袋是模型平均法的特例。

其方法的具体实现过程如下。

套袋法原理图

BootStrap原理图

通过做大量“习题”来提升模型的性能;有时候,通过简单粗暴的题海战术并不能得高分,而错题集的方式,则提供了另外的思路。

提升法(Boosting)的最早思想起源于Kearns和Valiant提出的一个这样的问题—能否通过一组弱学习器组成一个强学习器?。弱学习器被定义为仅比随机猜测更好地标记样本的一个分类器,而一个强学习器是与与实际分类结果相近的一个分类器,学习器的本质就是分类模型。罗伯特·夏贝尔在1990年的一篇论文The Strength of Weak Learnability中对Kearns和Valiant提出的问题做出了肯定的回答。

提升法(Boosting)则是一种基于将多个弱模型集成为一个强模型机器学习集成算法,大多数提升法(Boosting)算法通过迭代学习关于某个分布的弱分类器,并将它们添加到最终的强分类器中,当它们被添加时,它们通常在某种程度上被加权,这通常与弱学习者的准确性有关。在添加弱学习者后,数据权重被重新调整,称为重加权。错误分类的训练样本获得了较高的权重,被正确分类的训练样本削减其权重。于是,后来的弱学习器(基模型)将更多地关注之前弱学习器(基模型)错误分类的样本。

Boosting原理图

▊ 机器有了“神经”,那会得神经病么?

在了解神经网络之前,首先介绍下感知器(神经元)是神经网络的基本单元,本质上是一个过滤器,存在一个阈值n(通常为0),当变量大于或者小于这个阈值,最终会生成-1或1,如下:

假设数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正负实例点完全分开的超平面。

感知器层,顾名思义,就是将多个感知器合并成一个层,而这个层以全连接或者部分连接的方式,以上一层的感知器层输出或者原始数据的输入作为输入,其输出则直接作为下一层的输入或者直接作为模型的输出。多个感知器层的叠加组成多感知器层(multilayer perceptron,MLP)。

从左到右来看,该网络的第一层为网络的输入层,通常是将原始数据转化成数字矩阵,提交到输入层,输入层的神经受到激励响应,并传播到下面的隐藏层,最终在输出层呈现训练结果。

那么,这个具体经历了什么?

神经网络主要经历了两次传播—前向传播(Forward Propagation)和反向传播(Back Propagation)。

第1阶段:前向传播,又叫激励传播

前向传播过程

第2阶段:反向传播

反向传播过程

同理,对神经网络模型上每一个神经元中的权重以及偏移系数做上述处理,于是权重得到更新,每一次更新视为一个批量(Batch),将所有的数据完全训练一遍称为一轮(Epoch),随着正向传播与反向传播交替进行,直到达到规定的轮数或者网络的对输入的响应达到预定的目标范围为止。

是否意味着,神经网络的层数越多,其表现能力越强,在一定的区间是这样的,因为神经网络也会犯“神经病”。反向传播算法,在这个算法中通过从输出层到输入层的方向,传播梯度误差;通过计算在网络中对应的权重下的损失函数的梯度,并利用这些梯度更新每个单元的权重,至此一个梯度下降的步进就完成了,通过多次梯度下降的步进,最终每个单元的权重值会收敛于某个固定的值域范围,从而模型训练完成。

在实际引用场景中,尤其是在深度网络中,梯度通过逐层传播之后,可能会越来越小,当传播到足够低的层时,该层的权重值由于梯度过小的原因,从而几乎不会改变,并且在增加训练轮数或者样本的情况下,拟合效果仍然没有明显改观,这种情况叫做梯度消失;

当然,存在与之相反的情况,即随着传播的层数变低,其梯度越来越大,以至于神经网络的中权重会在训练的过程中,较大幅度的更新,甚至到训练周期结束之时,都没有形成一个稳定的模型。


本文节选自博文视点新书《机器学习从入门到入职》

本书从分类、回归、聚类、降维、深度学习等方面介绍了主要的机器学习概念及模型原理,并有大量的基于主流机器学习平台的上机实践内容,可以让新人在理解机器学习原理的同时快速上手实战。直击左下阅读原文,破“门”而入,有如神助!

(扫码获取本书详情)

▊ 内容简介

近年来机器学习是一个热门的技术方向,但机器学习本身并不是一门新兴学科,而是多门成熟学科(微积分、统计学与概率论、线性代数等)的集合。其知识体系结构庞大而复杂,为了使读者朋友能够把握机器学习的清晰的脉络,本书尽可能从整体上对机器学习的知识架构进行整理,并以Sklearn和Keras等机器学习框架对涉及的相关理论概念进行代码实现,使理论与实践相结合。

本书分为4个部分:第1章至第3章主要介绍机器学习的概念、开发环境的搭建及模型开发的基本流程等;第4章至第7章涵盖回归、分类、聚类、降维的实现原理,以及机器学习框架Sklearn的具体实现与应用;第8章至第12章主要阐述深度学习,如卷积神经网络、生成性对抗网络、循环神经网络的实现原理,以及深度学习框架Keras的具体实现与应用;第13章简单介绍机器学习岗位的入职技巧。

本书可作为机器学习入门者、对机器学习感兴趣的群体和相关岗位求职者的参考用书。

▊ 作者简介

张威(Viking Zhang)

曾就职于IBM、平安科技、嘉实基金、微众银行,现就职于“特朗普品质认证”的人工智能公司,拥有多个关于人工智能方面的专利,致力于将人工智能应用场景普及化,将机器学习技术广泛用于运维架构、金融分析等方面。

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    5421 735 3 7
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    3299 36 0 1
  • czk 2017-07-29
    5866 28 0 1