该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动!
time: 2021-12-21
学习目标:我需要了解神经网络除了工程化部分之外的更多内容,以便于在实际有效数据中可以获得抽象模型的能力;
给定训练样本集,分类学习是在样本空间中找到一个划分超平面,将不同类分开;但是这样的划分超平面可能有多个,寻找的话,直观上应该找所有划分超平面“最中间的”,因为它对训练样本局部扰动的容忍性最好;
由于训练集的局限性或噪声的因素,训练集外的样本可能有很多分布在这些划分超平面周围,这使许多划分超平面出现错误,而最中间的受影响最小(最鲁棒的),泛化能力最强;
使用线性方程w^T * x +b = y
描述划分超平面:
w^T * x +b >= 1
,对负样本w^T * x +b <= -1
;支持向量(support vector)
”;每个样本对应的是一个特征向量;
两个异类支持向量到超平面的距离和为2/||w||
,被称为间隔(margin)
理解:
- 正负支持向量就是到超平面的距离为
1/||w||
的若干个样本点;- 如果超平面是一条分隔线的话,那么间隔就是一个“分隔带”,这个分隔带的宽度就是2*
1/||w||
;
所谓的最中间超平面,实际就是具有最大间隔的划分超平面;
要找到最大间隔,即2/||w||
最大化,等价于||w||^2
最小化,于是相当于找到一组(w,b)
使得1/2 * ||w||^2
值最小,这就是支持向量机(support vector machine,简称SVM)
的基本型;
划分超平面对应的模型为f(x)= w^T * x +b
,w和b是模型参数;寻找最大间隔的划分超平面的问题是一个凸二次规划(convex qeadratic programming)
问题;
对于找到一组(w,b)
使得1/2 * ||w||^2
值最小,可以使用拉格朗日乘子法得到其“对偶问题(dual problem)”
这是一段计算,我们任然略过,重点放在对核心问题、概念上的理解;
SMO(sequential minimal optimization)算法:
在求取b上:选择任意的支持向量都可以在等号成立
的方程中求解获得b,一般使用所有支持向量求解的平均值,以增加鲁棒性;
前面以样本空间线性可分,即存在一个划分超平面能将训练样本正确分类;而实际任务中,原始样本空间可能不存在一个能正确划分两类样本的超平面(如异或问题就不是线性可分的);
处理方式:
如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使得样本可分;
令ø(x)
表示x映射后的特征向量,那么在新的特征空间中划分超平面所对应的模型可表示为f(x)=w^T * ø(x) + b
;其中w和b是模型参数;
核函数(kernel function)
支持向量展式(support vector expansion)
;对于现实任务,映射ø
、核函数 是否存在,有如下定理:
核矩阵
”(kernel matrix)K总是半正定的;K=[[k(x1,x1),k(x1,xj),...,k(x1,xm)],[k(xi,x1),k(xi,xj),...,k(xi,xm)],...,[k(xm,x1),k(xm,xj),...,k(xm,xm)]]
;关于正定和半正定:
- 计算A的各阶顺序主子式。若A的各阶顺序主子式均大于零,则A是正定的;
- 对于半正定矩阵来说,相应的条件应改为所有的主子式非负;顺序主子式非负并不能推出矩阵是半正定的
正定矩阵性质:
- 正定矩阵的行列式恒为正;
- 实对称矩阵AA正定当且仅当AA与单位矩阵合同;
- 两个正定矩阵的和是正定矩阵;
- 正实数与正定矩阵的乘积是正定矩阵;
半正定矩阵性质:
- 半正定矩阵的行列式是非负的;
- 两个半正定矩阵的和是半正定的;
- 非负实数与半正定矩阵的数乘矩阵是半正定的;
各阶顺序主子式计算:(以三阶顺序主子式为例)
- 矩阵
X = [[a,b,c],[d,e,f],[g,h,i]]
- 计算公式:
|X|=a * (e*i - h*f) - b * (d*i - g*f) + c * (d*h - g*e)
(计算方式不唯一);
事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射ø
(即,任何一个核函数都隐式地定义了一个成为“再生核希尔伯特空间”(Reproducing Kernel Hilbert Space,RKHS)的特征空间);
我们希望样本的特征空间线性可分,因为这对支持向量机的性能至关重要;但是在不知道原始样本的特征映射时,也就不知道什么样的核函数是合适的,核函数也仅仅是隐式的定义了特征空间;因此核函数的选择成了支持向量机的核心问题,如果选择的核函数不合适,意味着可能会将样本映射到一个不合适的特征空间,最终导致性能不佳;
常用核函数:
k(xi,xj) = xi^T * xj
经验:对文本数据通常采用线性核,情况不明可先尝试高斯核;
此外还可以通过函数组合得到新的核函数:
训练样本在其样本空间 或 (映射后高维的)特征空间中如果是线性可分的,即存在一个超平面将不同类的样本完全分开;
现实任务中找到合适的核函数让训练样本在特征空间中线性可分,并不容易;即便恰好找到某个核函数使得训练集在其特征空间中线性可分,也很难断定这个貌似线性可分的结果是不是由过拟合造成的;
缓解该问题的一个办法是:允许支持向量机在一些样本上出错,即引入了软间隔(soft margin)
;
间隔中 会出现一些不满足约束的样本;
之前我们所说的间隔是硬间隔(hard margin)
,即所有样本都必须划分正确;
现在的软间隔,允许某些样本不满足约束;
在最大化间隔的同时,不满足约束的样本要尽可能的少,这一步也是可以用公式表示出来,只不过求解过程中处理的0/1损失函数
非凸、非连续、数学性质不好,一般会使用替代损失(surrogate loss)
函数代替,替换损失函数一般具有较好的数学性质、连续的凸函数;这就是常用的软间隔支持向量机
;
三种常用的替代损失函数:
软间隔支持向量机的最终模型仅与支持向量有关,即采用hinge损失函数仍保持了稀疏性;这是由于hinge损失有一部分值为0的x区域,这使得支持向量机的解具有稀疏性;
如果使用 对率损失函数 作为替代函数,几乎得到了 对率回归模型;(对率回归的输出具有自然概率意义,但是支持向量机的输出不具有);
对率损失 与 hinge损失不同,它是光滑的单调递减函数,不能导出类似支持向量的概念,因此对率回归的解依赖于更多的训练样本,其预测开销更大;
使用不同的替待损失函数学得的模型,其模型性质与所用的替代函直接相关,但都有一个共性:
结构风险(structural risk)
,描述模型性质;经验风险(empirical risk)
,描述模型与训练数据的契合程度;一般希望获得经验风险最小化,而结构复杂度又很低的模型:
正则化(regularization)
”问题,结构风险项被称为正则化项
,经验风险项前有一个常数C,被称为正则化常数,Lp范数(norm)是常用的正则化项,其中L2范数倾向于w的分量取值尽量均衡,即非零分量个数尽量稠密;正则化可理解为一种“罚函数法”,即对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标;
前面针对分类任务,现在考虑回归问题;
支持向量回归
(Support Vector Regression,简称SVR)假设我们能容忍f(x)与y之间有一个上限偏差,f(x)与y差别的绝对值大于这个偏差才计算损失;这相当于以f(x)为中心,构造了一个宽度为偏差的间隔带,训练样本落入此间隔带,则被认为是预测正确的;SVR问题最终寻找到的支持向量,必落在间隔带之外;SVR的支持向量仅是训练样本的一部分,其解仍具有稀疏性;
特征映射形式的SVR同样需要核函数;
给定训练样本,若不考虑偏移项,无论是SVM还是SVR,学的的模型总是能表示成核函数k(x,xi)
的线性组合;
更一般的,有“表示定理(representer theorem)
”:对于一般的损失函数(对损失函数无限制)和正则化项(仅要求单调递增,不一定是凸函数),优化问题(求解SVM或SVR的方程)的最优解 都可以表示为核函数k(x,xi)
的线性组合;
基于核函数的学习方法,统称为核方法
(kernel methods);
常见的是通过“核化”(即引入核函数)来将线性学习器拓展为非线性学习器(核线性判别分析,Kernelized Linear Discriminant Analysis,KLDA);
线性核SVM迄今仍是文本分类的首选技术;
支持向量机是针对二分类任务设计的,对多分类任务要进行专门的推广;
如何选择合适的核函数,任然是一个问题;
SVM已有很多软件包,比较著名的如LIBSVM
和LIBLINEAR
;
SVM的确与神经网络有密切联系:若将隐层神经元设置为训练样本数,且每个训练样本对应一个神经元中心,则以高斯径向基函数为激活函数的RBF网络,恰与高斯核SVM的预测函数相同;
贝叶斯决策论(Bayesian decision theory)是概率框架下实施决策的基本方法;
决策论中将“期望损失”称为风险(risk);
对于分类问题,贝叶斯决策论考虑如何基于概率和误判损失来选择最优类别标记;
以多分类问题举例:
y={c1,c2,...,cn}
λij
是将一个真实标记为cj错误分类为ci所产生的的损失;P(ci|x)
可获得将样本x分类为ci所产生的的期望损失(expected loss);R(ci|x) = ∑ λij * P(ci|x)
,j从1到N;任务是寻找一个判定准则h,使得将样本x分类到y时,最小化总体风险;
对于每个样本x,若h能最小化条件风险R(h(x)|x)
,则总体风险R(h)
也将被最小化;
由此产生了贝叶斯判定准则(Bayes decision rule)
:
R(c|x)
最小的类别标记;贝叶斯最优分类器(Bayes optimal classifier)
,与之对应的总体风险称为贝叶斯风险(Bayes risk)
;这章读起来,对笔者有些难,这里只着重关注对重点概念的理解;
估计类条件概率的一种常用策略是先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计;
极大似然估计:根据数据采样来估计概率分布参数的经典方法;
离散的情形,也可以通过类似的方式估计 类条件概率;
需要注意的是,这种参数化的方法虽然能使类条件概率估计变得相对简单,但估计结果的准确性严重依赖于所假设的概率分布形式是否符合潜在的真实数据分布;
实际任务中,往往需要一定程度的经验知识,才能做出较好接近潜在真实分布的假设;
基于有限训练样本直接估计联合概率,在计算上将会遭遇组合爆炸问题,在数据上将会遭遇样本稀疏问题:属性数越多,问题越严重;
朴素贝叶斯分类器(vaive Bayes classifier)
:
当样本数量足够时才能进行有意义的概率估计;这里“独立同分布”的概念又一次被用到;
若某个属性值在训练集中没有与某个类同时出现过,则进行概率估计进行的分类判别,将出现问题,因为连乘计算概率为0(其中有一项为0),导致无论样本其他属性如何,哪怕数据上已经体现其明显的分类,结构仍将是错误的;
为了避免其他属性携带的信息被训练集中未出现的属性值“抹去”,在估计概率时通常要进行“平滑
”(smoothing),常用“拉普拉斯修正”(Laplacian correction);(第i个属性取值和类别数分别在类条件概率P(xi|c)和类先验概率P(c)中用于修正计算
)
类条件概率是一种后验概率;
半朴素贝叶斯分类器(semi-vaive Bayes classifier)
:
独依赖估计
(one-dependent estimator,ODE)是半朴素贝叶斯分类器最常用的策略;将属性条件独立性假设放松为独依赖假设可能获得泛化性能的提升;如果继续放松,则所需训练样本数量将以指数级增长;
贝叶斯网(Bayesian network)是一种经典的概率图模型,亦称信念网(belief network);它借助有向无环图(Derected acyclic graph,DAG)来刻画属性间依赖关系,并使用概率表(Conditional Probability Table,CPT)来描述属性的联合概率分布;
若网络结构已知,即属性间的依赖关系已知,则贝叶斯网的学习过程,只需通过训练样本计数,估计出每个节点的条件概率即可;
现实应用的网络结构是未知的,因此贝叶斯网的首要任务是根据训练数据集找出结构最恰当的贝叶斯网;评分搜索是求解这一过程的常用方法;
贝叶斯网就是模型;训练好后可以用来回答查询:通过一些属性变量的观测值来推测其他属性变量的取值;此过程称为推断(inference),已知变量观测值称为证据(evidence);
之前的讨论,训练集的样本属性变量的值都是被观测到的,即训练样本完整;对于不完整的训练样本,其中未观测变量称为隐变量(latent variable)
,EM(Expectation-Maximization)算法是常用的估计参数隐变量的一种迭代式方法;
EM算法可看做坐标下降(coordinate descent)法来最大化对数似然下界的过程;
贝叶斯决策论,在数据分析中很重要;
对贝叶斯定理进行近似求解,是机器学习算法的一种设计方式;
为避免求解贝叶斯定理时的组合爆炸、样本稀疏问题,出现了引入属性条件独立性假设的朴素贝叶斯分类器
;虽然这个假设现实中很难成立,但是朴素贝叶斯分类器在很多场景都能获得不错的性能;
继续考虑属性间的相互依赖,出现了贝叶斯网来表示属性间的依赖性:
介于两者之间的则是一系列半朴素贝叶斯分类器:基于各种假设和约束来对属性间的部分依赖性进行建模;
贝叶斯分类器 与 一般意义上的贝叶斯学习 有显著区别:前者通过最大后验概率进行单点估计,后者则是进行分布估计;
贝叶斯网为不确定学习和推断提供了框架,表示能力强、可解释性好,可分为 结构学习和参数学习两部分:
EM算法
是最常见的隐变量估计方法,用途极为广泛,常被用来学习高斯混合模型(Gaussian mixture model,GMM)的参数,如k均值聚类算法
;
集成学习
(ensemble learning):通过构建并结合多个学习器来完成学习任务,也被称为 多分类器系统;
结构:基于某种策略结合一组“个体学习器”(individual learner)
同质(homogeneous)集成:
基学习器(base learner)
,相应的学习算法称为基学习算法(base learning algorithm)
;异质(heterogenous)集成:
组件学习器(component learner)
;集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能;
弱学习器(weak learner):泛化性能略高于随机猜测,比如二分类问题精度(accuracy)略高于50%;
那么该如何结合呢?
准确性
(不太坏),还要有多样性(diversity)
(有差异);投票法(voting)
产生,即少数服从多数,比如二分类,10个基学习器,有超过半数的正确,则可认为分类正确;基学习器相互独立!
;在现实任务中,个体学习器是为解决同一个问题训练出来的,他们显然不可能相互独立;更一般的,个体学习器的准确度和多样性本身就存在冲突(在具有较高的准确性后,继续增加多样性往往就要牺牲准确性);
如何结合“好而不同”的个体学习器,是集成学习的研究核心,目前有两大类:
Boosting
;Bagging
和随机森林(Random Forest)
;Boosting 是一个 可将弱学习器提升为强学习器的 算法族;
工作机制类似于:
调整后的样本
分布训练下一个基学习器(估计误差、确认权重),如此往复,直到获取T个基学习器;最著名的代表算法是AdaBoost,其一种易理解的推到方式是 基于“加性模型(additive model)”,即基学习器的线性组合,来最小化指数损失函数(exponential loss function);
指数损失函数最小化,则分类错误率也将最小化;
这说明:指数损失函数是分类任务原本0/1损失函数 一致的替代损失函数;而且它还具有更好的数学性质,如连续可微;
Boosting算法在每一轮都要检查当前生成的基学习器是否满足基本条件(比随机猜测好),不满足则停止(这会导致最终无法获得T个基学习器,使用重采样法可以重启);
我们已经知道,欲得到泛化性能强的集成,集成中的个体学习器应尽量独立;虽然独立无法做到,却可以设法使基学习器具有较大差异;
给定一个数据集,一种方法是对训练样本进行采样,产生若干个不同的子集,再从中训练出不同的基学习器;但是由于训练数据不同,获得的基学习器可能具有较大差异;
然而,为了获得好的集成,我们还希望个体学习器不能太差;如果子集太小,用于训练的数据不足以进行有效学习,也就无法确保产生比较好的基学习器;
为解决这个问题,可以考虑使用相互有交叠的采样子集;
Bagging
:
基本流程:
Bagging是一个高效的集成学习方法,与直接使用基学习算法训练一个学习器的复杂度同阶;与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改地应用于多分类、回归等任务;
自主采样过程中,每个基学习器只使用了初始训练集的(如约63.2%)部分样本,剩余的可以用作验证集进行泛化性能的“包外估计”;比如当基学习器是神经网络时,可使用包外样本来辅助早期停止以减少过拟合的风险;
随机深林(Random Forest,RF)
:
k=log2 d
;由于引入了属性扰动,RF中个体学习器性能一开始会很低;随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差(相比Bagging);
结合的好处:
结合的策略——平均法:
加权值一般从训练数据中学得,但训练样本不充分或存在噪声,这使得学出的权重不完全可靠,对于较大数据集而言,过多的权重学习较容易导致过拟合;实验表明,加权平均法未必一定优于简单平均法;一般而言在个体学习器性能差异较大时,宜使用加权平均法,性能相近则使用简单平均法;
结合的策略——投票法:
在不允许拒绝预测的任务中,绝对多数、相对多数投票法统称为“多数投票法”;
需要注意的是,若基学习器的类型不同,其类概率值不能直接进行比较,通常将类概率输出转化为类标记输出;对于为规范化的输出值,如支持向量机的分类间隔值,必须使用一些技术,如Platt缩放、等分回归等进行校准(calibration)后才能作为类概率使用;
结合的策略——学习法:
初级学习器
(即从初始数据集训练出的初级学习器);次级学习器
(指用于结合的学习器,也叫元学习器(meta-learner));初级学习器可以使用不同学习算法产生(异质的);
原始数据集中,除了用于训练初级学习器的训练集,其他的作为产生次级训练集的样本,用初级学习器产生次级训练集(如果直接使用训练初级学习器的训练集,产生次级训练集,过拟合的风险会很大);因此,一般是通过使用交叉验证(如k折交叉验证)或留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本;
误差-分歧分解(error-ambiguity decomposition):个体学习器准确性越高、多样性越大,则集成越好;
多样性度量diversity measure(亦称“差异化度量”):是用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度;典型做法是考虑个体分类器的两两相似/不相似性;
二分类分类器hi和hj的预测结果列联表
(contingency table):
hi = 1 | hi = -1 | |
---|---|---|
hj = 1 | a | c |
hj = -1 | b | d |
(b + c)/m
,该值域为[0,1]
,值越大多样性越大;(ad-bc/((a+b)(a+c)(c+d){b+d})^(1/2))
,该值域[-1,1]
,若hi和hj无关这值为0,正相关为正,负相关为负;(ad-bc)/(ad+bc)
,与相关系数同符号,Q绝对值<=
p绝对值;(p1-p2)/(1-p2)
,其中:
(a+d)/m
((a+b)(a+c)+(c+d)(b+d))/m^2
多样性增强:
输入属性
、输出表示、算法参数进行扰动;数据样本扰动
:
不稳定基学习器
,数据扰动法很有效;稳定基学习器(stable base learner)
,往往需要使用输入属性扰动等机制;输入属性扰动
:
输出表示扰动:
算法参数扰动:
负相关法
(negative correlation)显示通过正则化
项来强制个体神经网络使用不同参数;使用单一学习器时,通常需使用交叉验证等方法来确定参数值,事实上这已使用了不同参数训练出多个学习器,只不过最终仅选择其中一个学习器进行使用,而集成学习则相当于把这些学习器都利用起来
;不同多样性增强机制可同时使用,如随机森林 就同时使用了 数据样本扰动和输入属性扰动;
本章介绍的最基本结合方法,此外还有基于D-S证据理论的方法、动态分类器选择、混合专家等;
集成学习已经被广泛应用于几乎所有学习任务中;由于集成包含多个学习器,即便个体学习器具有较好的可解释性,集成仍是黑箱模型;