第五章机器学习基础

第五章主要介绍了一些机器学习的基础原理,并举出实际例子进行讲解。

简单来讲机器学习算法是一种能够从数据中学习经验后性能有所提升的算法。

5.1 学习算法

         样本是指我们从某些希望机器学习系统处理的对象或事件中收集到的已经量化的特征。

设计机器学习任务

·         定义任务T

·         定义性能度量P(选择误差…MSE训练误差是要除以样本量的,在某些情况下很难确定应该度量什么)

常见的机器学习任务:分类、输入缺失分类、回归、转录、机器翻译、结构化输出、异常检测、合成和采样、缺失值填补、去噪、密度估计或概率质量函数估计。

有监督学习和无监督学习(经验)

有监督学习估计后验概率:训练含有很多特征的数据集,不过数据集中的样本都有一个标签或目标。

无监督学习学习样本分布:训练含有很多特征的数据集,然后学习出这个数据集上有用的结构性质。

训练集和测试集应遵循独立同分布假设,独立表示每个数据集中的样本是相互独立的,同分布表示两个数据集应该采样自同样的分布,这个共享的同样的分布称为数据生成分布

5.2 容量,欠拟合,过拟合

训练误差:在训练集上度量误差

测试误差:在测试集上度量误差,也叫泛化误差

欠拟合:在训练集上不能获得足够低的误差

过拟合:训练和测试间差距太大

通过调整模型容量可以控制模型在欠拟合和过拟合之间的平衡,控制模型的容量方法很多,包括:

l  控制模型的假设空间,比如对数据分布进行5次多项式的假设,就比2次多项式的假设空间大

l  选择学习算法,实际上就是限制了一套函数族,所限制的理论容量称为表示容量,但是实际上因为算法实现的不完美,可能只能达到学习算法的有效容量

l  控制特征的维度

VC

VC维可以衡量模型的复杂性

统计学习指出,训练误差和泛化误差的差异上界随着模型容量增长,随着样本数量争夺而下降,但是深度学习的VC维度难以计算,因为:

l  边界太松

l  因为模型容量受制于优化算法

参数模型和非参数模型

参数模型的参数量是确定的,在更多样本的情况下,测试误差会逼近贝叶斯误差(从先验分布推算出的最优误差)。但是模型容量不足以描绘模型的时候,训练误差会增大,尽管测试误差仍然会下降逼近一个贝叶斯误差稍微大的误差

非参数没有参数量的限制,如KNN回归,使用样本而不是参数来记住模型,在更多样本的情况下,会逼近可能的最优泛化误差

没有免费的午餐定理(NFL指出没有一个算法能在任何分布上最好

正则化:为了控制模型容量,可以通过增加假设空间的函数数量,或者增加假设空间的函数类型数。

由此对假设空间的子空间进行选择,一般地,可以通过正则化进行假设空间的选择,以提供偏好这个假设空间的先验偏好,给偏好的假设空间一个加权,并在后面优化的时候,如果不被选择的优化空间明显好于这个偏好的,就接受不被偏好那个,从而保持有可能接受其他的不同假设空间

没有最优的算法,也没有最优的正则化形式,普遍的认知是对大多数任务,都应当有一款通用的正则化方法

5.3 超参数和验证集

验证集——调整容量超参数

经常,在训练的时候要调整超参数,但是超参数又不能直接从训练集中获取(可能会过拟合)所以需要另外一个集合公平地评价各组超参数的性能,于是要分割训练集(20%用于验证集,80%用作训练集)以获得验证集。

验证和测试的方式

有两种方案:

1. 经典验证(用于数据量大的时候)

训练集——用于训练

验证集——用于作为超参数调整的基准,搜索超参数

测试集——最后只用一次,用于输出算法的最终性能

2. 交叉验证(用于数据量小的情况)

进行K-fold分割,获得训练集和测试集

在训练集上训练,在测试集上测试

以所有测试集合性能的平均作为整个数据集上性能的无偏估计

用以上无偏估计作为验证,调整超参数

5.4 估计、偏差和方差

实现机器学习目标的一些统计工具

点估计:要知道,参数是总体的,并不能真正可见,所以需要根据某一个函数,对数据集的某个参数进行估计,对θ

估计量的方差定义为: Var(θ)

l  当从样本中独立重采样的时候,我们也希望方差尽可能地小

l  但是标准差的估计量的定义并不是方差估计量的根号

l  样本方差的平方根跟方差无偏估计的平方根都低估了真实的标准差,相对而言,方差无偏估计的平方根会好一些

l  我们常用均值的标准差来给出测试结果的误差(根据原则),这种情况下,一般说算法A比算法B好,表示在95%置信区间上,A的上界比B的下界小

权衡偏差和方差以最小化均方误差

我们希望偏差和方差都比较小,但是实际上几乎都做不到,一种最常用的方法是交叉验证,另一种是计算均方误差MSE

MSE度量了估计和真实参数θ之间平方误差的总体期望偏差,最低的MSE会落在偏差和方差的交点附近

一致性保证了估计量的偏差会随数据样本数目的增多而减少。然而,反过来是不正确的——渐进无偏并不意味着一致性。(渐进无偏是一个对bias大小的定义,一致性是对估计的真实性的定义)

5.5 最大似然估计

最常用的准则是最大似然估计

Pmodel(x, theta)是一组由theta确定在相同空间上的概率分布,则theta的最大后验估计(在贝叶斯统计学中,最大后验(Maximum A PosterioriMAP)估计可以利用经验数据获得对未观测量的点态估计。它与Fisher的最大似然估计方法相近,不同的是它扩充了优化的目标函数,其中融合了预估计量的先验分布信息,所以最大后验估计可以看作是正则化(regularized)的最大似然估计。)被定义为


MLE的一种解释就是将其看做为最小化经验分布与模型真实分布之间的差异,这种差异可以使用KL散度来度量(其实就是分布之间的交叉熵),其中KL散度的定义如下所示


l  等价于最小化训练集上的经验分布和模型分布上的交叉熵,也就是让模型上建模的分布(模型分布)拟合训练集上已有的数据分布(经验分布)

 一般地,任何一个由负对数使然组成的损失定义的都是在上述两个分布上的交叉熵

MLE的性质

l  在满足一定条件的情况下,MLE具有一致性:

l  真实分布pdata必须刚好对应一个θ值,否则恢复后不知道应该采用哪一个θ

而且就收敛速率来说是最好的渐进估计:

Cramer-Rao下界表明:不存在均方误差低于最大似然估计的一致估计

5.6 贝叶斯统计

真实的θ是不能观测的,但贝叶斯认为样本是可观测的,所以给出先验的假设,并通过观测样本修正假设,修正的过程就是条件概率相乘的过程:

贝叶斯跟频率派的两点不同:

l  频率派评估方差以度量不确定性,贝叶斯通过积分

l  贝叶斯引进了贝叶斯先验分布使得模型参数向偏好的方向偏移

在数据有限的时候贝叶斯经常更好,但数据量大的时候会有较大计算代价

最大后验估计MAP

大多数情况下,计算贝叶斯后验是棘手的,所以应该对频率派和贝叶斯的方法结合,让点估计估计可行的近似解,先验进行选择:
前一项是标准的对数似然点估计,后一项是先验分布

进行这样的推断可以使用来自先验的信息降低方差,但是也引入了偏差,很多正则化都是通过MAP进行引入的。

MAP贝叶斯推断提供了一个直观的方法来设计复杂但可解释的正则化项。

5.7 监督学习算法

常见监督学习算法

概率监督学习

对于线性回归,我们会对用一个均值描述其正态分布。

但是对于二元分类任务,输出是一个概率,这个均值就必须在(0,1)区间内。

所以可以使用Logistic Sigmoid函数把实数样本值压缩到这个区间内,然后在这个区间内执行线性分类。

此时,这个区间内表示的p(y|x)

就变成对应样本的概率:

p(y=1|x;θ)=σ(θTx)
这样就可以对这个区间内概率均值进行正态分布初始化

LR于是就对log-odds进行线性回归预测

SVM与核方法

SVM输出的不是概率,而是类别标签
SVM
通过定义一些经过设计的核函数,从而高效地在高维空间计算内积,打个比方,有一个这样的核函数:

k(a,b)=min(a,b)
这个核函数其实对应于高维空间中的某个内积,但是实现和计算起来却很简单,更复杂和常用的核函数包括RBF核。

高斯核实际上近似与一种模板匹配,假设训练样本(x1,y1),高斯核会把x1作为y1的模板。当来了一个待测试样本x2,高斯核会计算x1x2之间的欧几里得距离,如果距离很近,那么高斯核响应(核的输出)就会很大,那么样本x2属于标签y1的对应权重就会变大。

许多线性模型都可以用核方法加强算法优化

其他监督学习方法

KNN

作为一种非参数学习方法,具有极大的模型容量。

l  在样本无限多的时候能取得较高的精度,收敛于贝叶斯误差。

l  但是,计算成本很高

l  训练集小的时候泛化能力很差(因为把所有特征看成等权重的)

DCT如果学习任意大小的决策树,那么可以被视为非参数算法

5.8 无监督学习算法

无监督学习的最经典的任务就是获得数据的最佳表示

- 低维表示

- 稀疏表示

- 独立表示

聚类问题有一个重要问题,就是我们不知道聚类的效果在真实世界中对应着什么,比如,我们希望对所有的小汽车进行聚类,却聚类出了所有红色的东西——我们只能知道他们是不同的

所以我们应该希望能对数据的聚类结果进行分布式表示(用一个向量存储每个样本的聚类标签),这样可以让每一个属性聚类到这个聚类标签的一个维度上,从而我们可以通过观察这些属性的组合来选择我们想要的标签。

PCA将输入x通过矩阵W投影到其最大方差的方向跟坐标轴对齐的方向,学习数据的正交线性变换,消除输入数据维度的相关性,从而消除数据中未知的变化因素

协方差矩阵的求解可以通过SVD实现

k-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。

5.9 随机梯度下降

因为总的损失是每个样本的损失的期望,所以以mini-batch进行更新可以收敛到总体的ε

SGD之前,都是通过核函数构建计算矩阵完成的,开销很大。

深度学习受关注一方面是因为在学术界,在中等数据集上获得很好的泛化性能。在工业界,也因为SGD带来了可以扩展的,在大型数据集上训练非线性模型的方式。

5.10 构建机器学习算法

深度学习算法根据以下4项组成:

l  特定的数据集

l  代价函数(经常含有一项进行统计估计的成分,很多时候还会有正则化)

l  优化过程(对于线性的优化过程,有闭式解,对于非线性的,可能需要用梯度下降等方法)

l  模型(算法选定的模型空间称为模型,也就是说,对数据可能的分布的假设(比如正态))

5.11 促使深度学习发展的挑战

真正的挑战是:传统机器学习在类人工智能上泛化能力不足(语音识别,图像识别),而实际上这个困难有三个方面:

维度灾难

维度很大的时候,每一个维度上的特征数量可能很稀疏,对于一个需要被预测的样本,可能其某一维是在很稀疏的地方的,任何训练样本都不很接近或者甚至那个维度上没有训练样本,那么怎样给出一个合理的值?

局部不变性和平滑正则化

很多机器学习算法通过先验信念进行泛化,几乎所有的算法都基于平滑先验,也就是,在小区域内不会产生很大的变化,或者一个样本的输出跟它的邻居是相似的。包括核机器也是这样。

只要在需要学习的真实函数中的峰值和谷值处有足够的样本,那么平滑性假设能工作的很好。

一种方法就是做样本扩增,通过额外引入对数据假设增加样本量,可以描绘大量的区间。

深度学习的假设则是:数据由因素或者特征组合产生,而这些因素来自于一个层次结构的多个层级。这样的假设比较温和。

流形学习

流形是很多机器学习算法内部的重要理念。

对于在高维空间中的流型,要刻画整个流型其实是困难的,但是流型假设认为整个高维空间中大多数是无意义的点,有意义的概率质量是高度集中的,于是只要刻画高度集中的部分就可以。

一般涉及到图像,文本或者语音的任务时,流型假设近似是对的。有两个证据:

l  关于概率密度集中性:观察现实生活中的图像语音等,有意义的概率分布是高度集中的。

l  关于流型的连续性:我们大多数能想象到这些变换的形式,包括光照如何影响图像等。

当数据位于低维流行中时,使用流行中的坐标而非Rn中的坐标表示机器学习数据更为自然。

#机器学习##春招#
全部评论

相关推荐

10-29 15:38
门头沟学院 Java
榕城小榕树:难道你简历里写了配送路径优化算法?
点赞 评论 收藏
分享
安静的垂耳兔在泡澡:ks已经第八次投递了,它起码挂了还让你再投,不错了
点赞 评论 收藏
分享
11-28 17:48
中山大学 C++
点赞 评论 收藏
分享
评论
点赞
25
分享
牛客网
牛客企业服务