《机器学习》理论——速读学习2 常用方法(1)

《机器学习》理论——速读学习2 常用方法(1)

该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动!

time: 2021-12-09

学习目标:我需要了解神经网络除了工程化部分之外的更多内容,以便于在实际有效数据中可以获得抽象模型的能力;

  • 第4章 决策树
  • 第5章 神经网络

第4章 决策树

4.1

决策树(decision tree),也称判定树(学习方法or学习得到的树),是一种常见的机器学习方法;

以一个二分类问题为例,可以看做是对“当前样本属于正类吗?”这个问题的决策或判定过程;决策树是基于树结构来进行决策的;决策树的对应结果就是我们希望的判定结果;

决策过程中提出的每个判定都是对某个属性的测试,每个测试的结果可能是最终结果,也可能只是下一步所需的新判定问题,新问题的考虑范围仅在上次决策结果的限定范围内;

决策树,包括:

  • 一个根节点和若干个内部节点,对应一个属性测试
  • 若干个叶节点,叶节点对应决策结果

每个节点包含的样本集合根据属性测试的结果被划分到子结点中,根节点包含了样本全集;从根节点到每个叶结点的路径对应了一个判定测试序列

决策树学习的目的是为了产生一颗泛化能力强的决策树;

决策树是一个递归的过程,三种情况会导致递归返回:

  • 当前结点包含的样本全属于同一类别,无需划分;

  • 当前属性集为空,或是所有样本所在属性上取值相同,无法划分;

  • 当前结点包含的样本集合为空,不能划分;

  • 第二种,把当前结点标记为叶结点,类别为该结点所含样本最多的类别,利用的是当前结点的后验分布;

  • 第三种,把当前结点标记为叶结点,类别为其父节点所含样本最多的类别,是把父结点的样本分布当做当前结点的先验分布;

注意这里说的都是树,可不是二叉树;

4.2 划分选择

如何选择最优划分属性?一般的,随着划分的不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别(即结点的纯度purity越来越高);

信息熵(information entropy)是度量样本集合纯度的常用指标,值越小纯度越高;

  • 某离散属性a有V个值,使用a对样本集D进行划分,则会产生V个分支结点,第v个分支结点包含了D中所有在属性a上取值为av的样本,即Dv;每个分支结点的权重记为|D^v|/|D,即样本数越多的分支结点,影响(权重)越大,
  • 对D的信息熵标记为Ent(D),上一步为分支结点赋予了权重,就可以计算出用属性a对样本集D进行划分的信息增益(information gain),即Ent(D) 与 每个结点样本集的信息熵乘以各自的权重后再累加的结果 做差;
  • 一般而言,信息增益 越大,意味着使用属性a来进行划分所获得的的“纯度提升”越大;因此可以用 信息增益 来进行决策树的划分属性选择;

著名的ID3决策树学习算法就是以信息熵增益为准则来划分属性的;

二分类示例划分过程:

  • 根节点包含了所有样例,其中包括比例约为1:1的正例和反例;并可基于正反例的占比计算出更节点的信息熵;
  • 之后计算出 当前样本属性集合中每个属性的 信息增益,比如以属性a为例,他有3个值,{a1,a2,a3},使用该属性值进行划分,则可得到3个子集,分别是D1 D2 D3,这三个子集中也包含了各自的正例和反例,使用其可计算出相应的信息熵,在计算出该属性的信息增益;
  • 类似的,可以计算出所有属性在当前结点样本集的信息增益,我们选择信息增益最大的属性作为划分属性
  • 后续每一层分支结点的划分属性,同理进行选择,相同最大信息增益的属性,任选其一作为划分属性即可;

增益率

  • 一般的样本都会有id这个属性,而id往往都是唯一的,如果使用这一属性作为划分属性其信息增益几乎为1,远大于其他候选划分属性,因为它将直接产生样本数个分支,且每个分支只有一个样本,这样的分支结构纯度已经达到最大了;但这样的决策树不具有泛化能力;
  • 也可以说,信息增益准则对可取值数目较多的属性有所偏好;

为减少这种偏好,著名的C4.5决策树算法并不直接使用信息增益,而是使用“增益率(gain ratio)”来进行最优划分属性的选择;

  • 增益率 即 增益收益/相应属性的固定值(intrinsic value) IV(a),暂且抛开公式,如果属性a的可能取值数目越多,固定值IV(a)通常也会越大;

需要注意的是,增益率准则对可取值数目较少的属性有所偏好;因此实际上C4.5算法并不是直接使用增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找到信息增益高于平均水平的属性,再从中选择增益率最高的;

基尼指数

  • CART决策树(Classification and Regression Tree,决策树算法,分类和回归任务都可用) 使用 基尼指数(Gini index)来选择划分属性;
  • 直观的,使用基尼值来度量数据集D的纯度,反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率;Gini(D)越小,数据集D的纯度越高;
  • 继续计算某候选划分属性的基尼指数,选择那个使得划分后基尼指数最小的属性作为最优划分属性;

4.3 剪枝处理

剪枝(pruning)是决策树学习算法 处理“过拟合”的主要手段;

为了尽可能正确分类训练样本,结点划分过程会不断重复,有时造成决策树分支过多;此时 可能因把训练样本学习的太好了,以致于训练集自身的一些特点被当做了所有数据都具有的一般性质而导致过拟合;

可以通过主动去掉一些分支来降低过拟合的风险;

剪枝策略:

  • 预剪枝(prepruning):在决策树生成过程中,对每个节点在划分前进行估计,若当前节点划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶结点;
  • 后剪枝(postpruning):对已经从训练集生成的一颗决策树,自底向上对叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化能力提升,则将该子树替换为叶结点;

如何评估泛化能力,可回顾第二章;

决策树桩(decision stump):一颗仅有一层划分的决策树;

预剪枝 基于“贪心”本质禁止降低泛化能力的分支展开(某些暂时降低泛化能力的结点,如果继续划分有可能导致性能显著提高),给预剪枝决策树带来了欠拟合的风险;

后剪枝 如果验证集精度并无提高(也没降低),更具“奥卡姆剃刀准则”,剪枝后的魔性更好,因此此情况通常也需要剪枝(也可以不剪);

后剪枝决策树通常比预剪枝决策树保留了更多的分支,它的欠拟合风险很小,泛化性能往往优于预剪枝决策树;但由于剪枝过程是在生成完决策树之后,并且要自底向上对树中所有结点进行逐一考察,其训练时间和开销都要更大;

4.4 连续与缺失值

之前讨论的是基于离散属性生成决策树,对于连续值,由于连续属性的可取值无限,需要使用属性离散化技术;

一种简单策略是采用二分法(bi-partition)对连续属性进行处理,这也是C4.5决策树算法所使用的机制;

将连续属性a出现的值按照从小到大排序,使用划分点t 可将样本集D划分为两个子集,一个包含那些在属性a上取值不大于t的样本,一个包含在属性a上取值大于t的样本;

t就是a属性值最大值和最小值之间的一个值,对于n个属性a的可能取值,可以有n-1中划分子集的方式,对于两个相邻的a属性值ai和a(i+1)来说,划分点t可以去两个值的中位点,现在就可以向离散属性值一样来考察这些划分点,选取最优的划分点进行样本集合的划分;

需要注意的是,与离散属性不同,若当前结点划分属性为连续属性,该属性还可以作为其后代结点的划分属性;

缺失值的处理:

  • 如果样本中出现了大量的缺失值,仅使用无缺失值的样本进行学习,显然是对数据信息的浪费;所以,有必要考虑利用缺失属性值的训练样例来学习;

需要解决的两个问题:

  • 如何在属性值缺失的情况下进行划分属性选择?
  • 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

此处描述的比较繁琐,直接按照示例进行说明:
首先,计算各个属性无缺失值的样例子集的信息熵、信息增益;
选择信息增益最大的属性作为划分属性,依照具体属性值划分分支的结点权重保持为1,属性缺失值的样例子集同时进入前一步所有划分好的分支中,但结点权重调整为分到各分支的属性无缺失值的样例子集大小/属性值的样例子集大小
后续每一层分支结点的划分属性均按此方法进行(注意这里计算信息增益的公式中包含了结点的权重);

4.5 多变量决策树

若把每个属性视为坐标空间中的一个坐标轴,则可描述一个d维空间中的一个数据点;

对样本分类意味着在这个坐标空间中寻找不同样本之间的分类边界;决策树所形成的分类边界有一个明显的特点:轴平行(axis-parallel),即它的分类边界由若干个与坐标轴平行的分段组成(二维的话,可以理解成坐标轴上的多个矩形);

这样的分类边界使得学习结果有比较好的可解释性,因为每一段划分都直接对应了某个属性取值;在学习任务的真实分类边界比较复杂时,要使用很多段划分才能获得比较好的近似;决策树越复杂,预测时间开销就越大;

以二分类为例,平行分段形成的矩形如果可以换成倾斜的(曲)线(使用斜的线划分边界),可以有效简化决策树;

多变量决策树(multivariate decision tree)是能够实现这样的斜划分甚至更多划分的决策树;

  • 非叶节点不再对应某种属性,而是属性的线性组合进行测试,即每个结点是一个w^i * a^i = t的线性分类器,权重w和阀值t可在所包含的样本集和属性集上学得;
  • “单变量决策树(univariate decision tree)”为每个结点寻找一个最优划分属性;而多変量决策树的学习过程则是视图建立一个合适的线性分类器;

4.6

  • 除了信息增益。信息率、基尼指数外,还有一些其他的准则用于决策树的划分选择,但是对泛化性能影响有限;
  • 剪枝方法和程度对决策树泛化性能的影响显著;
  • 多変量决策树还有一些扩展,如在叶节点上嵌入神经网络,或者在每个叶结点上训练一个感知机(感知机树),以便利用到多种学习机制的优势;

第5章 神经网络

这部分基础理论已经了解了很多,一些简单概念将会略过;

5.1 神经元模型

神经网络(neural networks)如今已经是一个相当大的、多学科交叉的学科领域;一种通用的解释是:神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的的交互反应;

机器学习中谈论的神经网络指的是“神经网络学习”,相当于机器学习与神经网络两个学科领域的交叉;

neural 亦称unit,亦称bias(并非阀值的概念);

神经网络:

  • 最基础成分是 神经元(neuron)模型;
  • 经典的M-P神经元模型:(M-P神经元也称 阈值逻辑单元 threshold logic unit)
    • 神经元接收来自其他n个神经元传递的输入信号,这些输入信号通过带权重的连接(connection)进行传递;
    • 神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数(activation function)处理以产生神经元的输出;

激活函数:

  • 阶跃函数:输入值映射为输出值0或1,1对应神经元兴奋,0对应神经元抑制;
    • 阶跃函数不具有连续性、不光滑等不太好的性质;
  • sigmoid函数:对数几率函数(应用于对数几率回归任务)是sigmoid函数的典型代表;
    • 可以吧较大范围内变化的输入值积压到0~1输出值范围内,因而也被称为“挤压函数(squashing function)”;

把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络;

神经网络其实可以被看做是包含许多参数的数学模型,这个模型是若干个函数相互嵌套、代入而得;

有效的神经网络学习算法大多以数学证明为支撑;

5.2 感知机与多层网络

感知机(Perceptron)由两层神经元组成

  • 感知机能够容易的实现逻辑运算;
  • 感知机的学习过程,会根据预测值的错误程度进行权重调整;
  • 感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元(functional neuron),学习能力非常有限;
  • 感知机实现的逻辑元素 与或非,都是线性可分(linearly separable)问题,可证:若两类模式是线性可分的,则存在一个线性超平面能将他们分开;
    • 存在一个线性超平面,对应简单逻辑问题,感知机学习过程会收敛(converge)
    • 存在多个线性超平面,对应复杂逻辑问题(异或运算是一个非线性可分问题),感知机学习过程会震荡(fluctuation);权重值难以稳定,不能求得合适解;

要解决非线性可分问题,需要考虑使用多层神经元,输出层与输入层之间的一层神经元,被称为隐层/隐含层(hidden layer);隐含层和输出层神经元都是拥有激活函数的功能神经元;

多层神经网络结构中,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接,这样的神经网络结构也叫多层前馈神经网络,前馈并不意味着网络中信号不能向后传,而是指网络拓扑结构上不存在环或回路;

  • 输入层神经元仅是接收输入,不进行函数处理,隐层和输出层包含功能神经元;
  • 输了输入层以外,有几层就被成为几层神经网络;
  • 神经网络学习过程,就是根据训练数据来调整神经网络之间的“连接权(connection weight)”,以及每个功能神经元的阈值;即,神经网络学到的东西,蕴含在连接权和阈值中;

5.3 误差逆传播算法

亦称“反向传播算法

多层网络的学习能力更强,但是要训练许多层的网络,仅依靠简单的学习规则是不够的,需要更强大的学习算法;

误差逆传播(error BackPropagation,即BP)

  • 迄今为止最成功的的神经网络学习算法;
  • 可用于多层前馈神经网络,也可用于其他类型神经网络,如递归神经网络;

通常的BP网络,指的是用BP算法训练的多层前馈神经网络;

线性回归任务中有提到:离散属性需要进行处理,若属性值间存在序关系则可进行连续化;否则通常转化为k维向量,k为属性值数;

  • BP算法是一个迭代学习算法,基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整;
  • 学习率(0~1)控制着算法每一轮迭代中的更新步长,若太大则容易震荡,太小收敛速度会过慢;

感知机更新 与 BP更新都是基于梯度下降的;

BP算法工作流程:

  • 将输入示例提供给输入层神经元;
  • 逐层将信号前传,直到产生输出层的结果;
  • 计算输出层的误差,在将误差逆向传播至隐层神经元;
  • 最后根据隐层神经元的误差来对连接权和阈值进行调整;
  • 该过程循环进行,直到达到某些停止条件为止;

注意,BP算法的目标是要最小化训练集上的累计误差;但是BP算法每次仅针对一个训练样例更新连接权和阈值,对于累积误差最小化,往往需要累积误差逆传播算法(accumulated error backpropagation)

累积BP算法 和 标准BP算法:

  • 标准BP算法每次更新只针对单个样例,参数更新频繁,对不同样例进行更新的效果可能出现抵消线性;
  • 为了达到同样的累积误差极小点,标准BP算法往往需要进行更多次迭代;
  • 累积BP算法直接针对累积误差最小化,在读取整个训练集一遍后才对参数进行更新,参数更新效率低得多;
  • 但在很多任务中,累积误差下降到一定程度之后,进一步下降会非常缓慢(此时标准BP则可以更快获得更好的解);

读取训练集一遍称为进行了一轮(one round,亦称 one epoch 注意这个单词的度音![ˈiːpɒk]

可以证明,只需要一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数;但如何设置隐藏层神经元个数仍是问题,实际应用通常靠试错法(trial-by-error)调整;

标准BP算法 和 累积BP算法的区别 类似于随机梯度下降(stochastic gradientdescent,即SGD)与标准梯度下降之间的区别;【?】

由于BP神经网络具有强大的标示能力,容易过拟合:训练误差持续降低,测试误差却可能上升;

缓解BP网络过拟合的策略:

  • 早停(early stopping):
    • 训练集上计算梯度、更新连接权和阈值
    • 验证机上评估误差;
    • 在训练集误差降低 但验证集误差升高时,停止训练;
    • 返回具有最小验证集误差的连接权和阈值(其实就是模型参数,也可以说是模型);
  • 正则化(regularization)
    • 基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分;
    • 比如 在误差目标函数中增加一项:连接权与阈值平方和(乘以一个权重值,该值一般通过交叉验证法来估计) 后,训练过程会偏好比较小的连接权和阈值,使得网络输出更加光滑,从而对过拟合有所缓解;

之前都用过,不过还是觉得dropout层效果最明显;

5.4 全局最小与局部极小

神经网络在训练集上的误差是关于连接权和阈值的函数;具体的训练过程可看做是一个参数寻优过程,即在参数空间中,寻找一组最优参数使得误差最小;

关于“最优”:

  • 局部极小(local minimum):参数空间某个点,其邻域点的误差函数值均不小于该点的函数值;
  • 全局最小(global minimum):参数空间中所有点的误差函数值均不小于该点的误差函数值;

基于梯度的搜索时使用最广泛的参数寻优方法:

  • 每次迭代,计算误差函数在当前点的梯度,根据梯度确定搜索方向;负梯度方向是函数值下降最快的方向,梯度下降算法就是沿着负梯度方向搜索最优解;
  • 梯度为零时,可能是局部最小 也可能是全局最小,如果不是全局最小而只是多个局部做小中的一个,则称参数寻优陷入局部极小

跳出局部最小,接近全局最小的策略:

  • 以多组不同参数数值初始化多个神经网络,相当于从多个不同的初始点开始搜索,这样就可能陷入不同局部最小,从中选择更接近全局最小的;
  • 使用“模拟退火(simulated annealing)”技术:在每一步都有一定概率接收比当前解更差的结果,有助于跳出局部极小;在每步迭代过程中,接受“次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定(但也有可能跳出全局最小);
  • 使用随机梯度下降:标准梯度下降法精确计算梯度,随机梯度下降法在计算梯度时则加入了随机因素;即便陷入局部极小,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索;

上述策略都是启发式,理论上尚缺乏保障;

5.5 其他常见神经网络

RBF(Radial Basis Function,径向基函数)网络:

  • 单隐层前馈神经网络;

  • 使用径向基函数作为隐层神经元激活函数;

  • 输出层是多隐层神经元输出的线性组合;

径向基函数:沿径向对称的标量函数,通常定义为样本x到数据中心c之间欧氏距离的单调函数;

已经证明:具有足够多隐层神经元的RBF网络能以任意精度逼近任意连续函数;

训练RBF网络的过程:

  • 需确定神经元中心c(使用随机采样、聚类的方式);
  • 利用BP算法来确定权重和偏执;

ART网络:

  • 竞争型学习(competitive learning)是神经网络中一种常用的无监督学习策略;该策略的网络的输出神经元相互竞争,竞争获胜的神经元被激活,其他被抑制;
  • ART(Adaptive Resonance Theory,自适应谐振理论)网络,是竞争型学习的代表;
  • 该网络由 比较层、识别层、识别阈值和重置模块构成;
    • 比较层:接收输入样本,传递给识别层;
    • 识别层:每个神经元对应一个模式类,神经元数目可在训练时动态增加,以增加新的模式类;
      • 接收到比较层输入信号后,识别层神经元间竞争以产生获胜神经元(简单的:计算输入向量与每个神经元所对应模式类的代表向量之间的距离,距离小的获胜);获胜神经元将其向其他识别层神经元发送;
      • 若输入向量与神经元对应的代表向量相似度 大于识别阈值,则输入样本归为该类别,并更新权值,这样之后再接收到相似输入样本,该模式类会计算出更大的相似度,从而使该神经元更易获胜;
      • 若不大于识别阈值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量;

ART比较好缓解了竞争型学习总的可塑性-稳定性窘境(stabilityplasticity dilemma),前者指神经网络要有学习新知识的能力,稳定性则是神经网络在学习新知识时要保持对旧知识的记忆;因而ART网络可以进行增量学习(incremental learning,只学习新的)在线学习(online learning,来一个更新一次)

现在ART已经发展为一个算法族;

SOM网络,自组织特征映射(self-origanizing Feature Map)

  • 竞争型 无监督 神经网络
  • 可将高位输入数据映射到低维空间(通常是2维),同时保持输入数据在高维空间的拓扑结构,即高维空间中相似样本点 映射到 网络输出层中的邻近神经元;
  • SOM的训练目标是为每个输出层神经元找到合适的权向量,以达到保持拓扑结构的目的;

SOM训练过程:

  • 接收一个样本,每个输出层神经元 计算 样本与自身携带权向量距离,距离近的竞争获胜,称为最佳匹配单元(best matching unit)
  • 最佳匹配单元 机器邻近神经元的权向量将被调整,使得这些权向量与当前输入样本距离缩小;
  • 这个过程不断迭代,直到收敛;

SOM网络在聚类、高维可视化、图像分割中应用广泛;

级联相关网络(Cascade Correlation):

  • 除了连接权值和阈值,网络结构非固定,且也是学习目标之一,级联相关网络是自适应网络的重要代表;
  • 与一般的前馈神经网络相比,级联相关网络无需设置网络层数、隐层神经元数,训练速度较快,但在数据较小时容易过拟合;

5.6 深度学习

理论上,参数越多的模型复杂度越高,“容量(capacity)”越大,往往可以完成更复杂的学习任务;

但,复杂模型训练效率低,易陷入过拟合,现如今,算力提升缓解了前者,大量训练数据降低了后者,因而以深度学习为代表的复杂模型开始受到关注;

梯度弥散现象:

  • 多隐层神经网络 难以直接用经典算法(如标准BP)进行训练,因为误差在多隐层内逆传播时,往往会“发散”(diverge)而不能收敛到稳定状态;

无监督逐层训练(unsupervised layerwise training):

  • 训练时,每一层隐层输出 作为 下一层隐层结点的输入(也称为 预训练(pre-training)),逐层训练;
  • 预训练全部完成后,再对整个网络进行微调(fine-tuning)训练;
  • 这个过程 可以看做是将大量参数分组,先找到局部不错的设置,再基于这些局部较优联合起来进行全局寻优,可以节省训练开销;

另一种节省训练开销的策略是“权共享”(weight sharing)

  • 即 让一组神经元使用相同的连接权;这在卷积神经网络(Convolutional NeuralNetwork,简称CNN)中发挥了重要作用;
  • CNN复合多个卷积层 和 采样层 对输入信号进行加工,在连接层实现与输出目标之间的映射;
  • 每个卷积层包含多个特征映射,每个映射是一个由多个神经元构成的平面;
  • 卷积滤波器用于提取局部特征;
  • 采样层亦称w为汇合(pooling)层,作用是基于局部相关性原理进行采样,从而在减少数据量的同时保留有用信息;
  • CNN可用BP算法,但在训练中,无论是卷积层还是采样层,每组神经元都使用相同的连接权,大幅减少训练参数数目;

近来,人们在使用CNN时,常将Sigmoid激活函数替换为 修正线性函数,这样的神经元称为Re-LU(Rectified Linear Unit)

修正线性函数: 小于0时为0,大于等于0则为x值;

以手写数字识别的任务来说,经过多层卷积层和采样层之后,接了几个全连接层来实现与输出层之间的映射;

换言之:

  • 通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类问题学习任务;
  • 由此可将深度学习理解为进行特征学习(feature learning)表示学习(representation learning)

以往机器学习的任务中,描述样本特征通常需要人类专家设计,称为特征工程(feature engineering);而特征的好坏对泛化性能至关重要,设计出好的特征也并非易事;特征学习通过机器学习技术自身来产生好特征,使得机器学习向“全自动化数据分析”更进一步;

神经网络是一种难解释的黑箱模型,但已有一些工作尝试改善神经网络的可解释性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值