版权声明:本文为博主原创文章,转载请注明出处,商业转载请联系作者(huxingfei097@163.com),谢谢合作!
-
何为学习
对机器学习中的“学习”比较正式的定义是:对于某类任务 P 和性能度量 T,一个计算机程序被认为可以从经验 E 中学习是指,通过经验 E 改进后,它在 T 上有性能度量 P 衡量的性能会有所提升。更通俗一些的解释是,对于一个人脸检测任务(任务T),我们可以以识别准确率(性能度量P)来衡量学习算法的好坏,在利用 n 张有标注的图片(已有经验E)进行训练后,可以提高算法最终的识别准确率。 -
常见的机器学习任务
分类:确定输入的数据属于 k 类中的哪一类。如对象识别等。
回归:对于给定的输入预测输出结果,如预测房屋价格等。
转录:将观测到的相对非结构化表示的数据,转换为离散的文本形式。如现在流行的OCR技术、语音识别技术等。
机器翻译:将输入的一种语言符号序列转换为另外一种语言的符号序列,中文←→英语等。
异常监测:计算机程序在一组事件或者对象中进行筛选,并标记处不正常或非典型的个体,如通过对用户购买习惯建模,当信用卡被盗刷而买了不一样的东西时,信用卡公司可以检测出消费发生异常,从而增加手机验证等相关安全步骤。 -
容量、过拟合和欠拟合
机器学习的主要挑战是所设计的算法能否在先前未观察到的新的输入数据上具有良好的表现,即泛化能力。
通常,会将给定的数据集分为训练集、验证集、测试集。在训练集上,真实值与预测结果之间的差异称为训练误差,训练的目标是尽可能降低训练误差。同时,也希望泛化误差(也称为测试误差,即在测试集上真实值与预测结果之间的差异)很低。
欠拟合:算法在训练集上的训练误差很大(测试集上的泛化误差通常也会很大)。
过拟合:算法在训练集上表现的很好,训练误差很小,但是在测试集上反而表现很差,泛化误差很大。
容量:模型的容量一般是指其拟合各种函数的能力。可以认为是一个函数集合,可以选择其中的函数来对模型进行训练。容量大的模型,可选函数多,但是容易导致过拟合;容量小,可选函数少,容易导致欠拟合。
量化模型容量的方法中最著名的是Vapnik-Chervonenkis维度,简称VC维。VC维定义为分类器能够分类的训练样本的最大数目,即,对于一个函数集,如果存在 H 个样本能够被函数集中的函数按所有可能的(共 2H种)形式分开,则称函数集能够将 H 个样本打散,函数集的VC维就是它能够打散的最大样本数目 Hmax。如果对任意数目的样本,在该函数集中都能找到函数将它们打散,则称该函数集的VC维是无穷大。 -
没有免费午餐定理(no free linch theorem)
在所有可能的数据生成分布上平均之后,每一个分类算法在未事先观测的点上都有的错误率,换句话说,没有一个机器学习算法总是比其他的要好。我们能够设想的最先进的算法和简单地将所有点归为一类的简单算法有着相同的平均性能(在所有可能的任务上)。但是,通常不需要考虑所有的可能。 -
正则化
在机器学习算法中,增加训练参数的数量往往会降低训练误差,但同时很可能会带来过拟合的问题,为了平衡训练误差与泛化误差,通常可以给代价函数加入称为正则化项的惩罚。例如在线性回归中,可以加入权重衰减系数来防止模型过于复杂:
J(w) = MSEtrain + λ wTw MSEtrain,表示训练集上的误差
其中 w 是线性回归中权重参数矩阵, λ 是提前挑选的值,当 λ = 0时,即不考虑权重,当 λ 偏大时,权重的影响较大,会使我们倾向于选择更加简单的模型。 -
超参数和验证集
超参数是指在开始学习过程之前设置好的参数,而不是通过训练得到的。因为有些参数很难优化,并且不适合在训练集上学习,例如线性回归中多项式的次数,因此往往需要在学习过程开始之前依据经验设置。
超参数的选取在很大程度上影响着训练结果的好坏,通常选取会先选取多个超参数进行训练,然后使用验证集来评估每个模型的好坏并选择最终要使用的超参数。 -
交叉验证
将数据集分为训练集、验证集、测试集时,由于某些数据集很难收集到足够多的数据(如一些医学上的数据),会导每个数据集的数据很少。小规模数据集训练出来的模型可能在训练集上表现的很好,但是测试集表现的很差,甚至有可能在测试集上也表现的很好,但是这无法让我们合理地评价一个模型的好坏,因为测试集的数据很少,仅在少部分数据上表现优异,不能充分的证明在数据足够多时也能表现很好。
为了解决数据集过小的问题,可以使用交叉验证的方法。即,将数据集随机分成 k 个不重合的子集,在第 i 次测试时,数据的第 i 个子集用于测试集,其他的数据作为训练集,最后计算平均测试误差。 -
估计、偏差和方差
点估计是为一些感兴趣的量提供单个“最优”预测,令{x(1),...,x(m)}是 m 个独立同分布(i.i.d)的数据点,则参数 θ的点估计θ^为:
θ^m = g(x(1),...,x(m))
函数估计是对输入变量 x 和输出结果 y之间关系的预测,即近似得到 y = f(x) + ε中的 f(x)。 -
偏差
估计的偏差被定义为:
bias(θ^m) = E(θ^m) - θ
如果bias(θ^m) = 0,则称 θ^m 是无偏的,如果 limm→∞ bias(θ^m) = 0,则称 θ^m 是渐进无偏的,否则称其为有偏的。 -
方差和标准差
方差衡量每次估计与之前估计的差距的大小,描述的是估计值的稳定性
Var(θ) = E[ (θ - E(θ))2]
标准差是方差的平方根。 -
方差与偏差的权衡
通常采用交叉验证的方法来判断权衡。也可以比较这些估计的均方误差(MSE):
MSE = E[(θ^m - θ)2] -
一致性
一致性定义为:
plimm→∞θ^m = θ
plim称为依概率收敛,即对于任意的 ε > 0,当 m → ∞时,有 P(|θ^m - θ| > ε) → 0.
一致性保证了估计量的偏差会随数据样本数目的增多而减少。 -
最大(极大)似然估计
在机器学习中,我们会希望有些准则可以让我们从不同的模型中得到特定函数作为好的估计,而不是猜测某些函数可能是好的估计,然后分析其偏差和方差。最常用的准则是最大似然估计。
简单来说,最大似然估计就是在已知结果的情况下,推测最可能导致发生该结果的原因。一个很经典的案例如下图所示:
L( x(1),...,x(m),θ) = P(x(1),...,x(m) | θ)
= ∏ P(x(i) | θ) 其中∏表示连乘
其中 θ 是对分布中某一个参数的估计(如估计高斯分布的均值或者方差时,θ 可以表示要求的均值或者方差)。由于乘法在求导过程中比较难处理,通常会两边取对数,即:
ln L( x(1),...,x(m),θ) = ln ∏ P(x(i) | θ)
通常情况下再对 θ 求导后,令求导后的结果等于0,即可求出 θ 的值,表示在 θ 取得该值时出现数据分布{x(1),...,x(m)}的概率最大。 -
贝叶斯统计
在概率论中有频率派和贝叶斯派。前者认为事物是有分布的,且分布的参数是固定的,通过无限次的抽样可以得到(计算出)真正的参数值,而后者认为我们无法预知事物的分布,只能依据经验做出一些假设(先验分布),然后通过不断地实验进行调整假设,最终得出结果(后验分布)。
在贝叶斯统计中,在观察到数据之前会将 θ(同最大似然估计中的 θ)的已知知识表示成先验概率分布,p(θ),同时会普遍选择高熵的分布(均匀分布、高斯分布等),以表示在观测到数据之前参数 θ 的高度不确定性。
假设有数据分布{x(1),...,x(m)},结合贝叶斯规则和先验,可以得出: -
最大似然估计与贝叶斯统计的区别
首先,最大似然估计使用的是点估计,而贝叶斯统计使用的是 θ 的全分布,和之前的数据都有关系,因此在观测到 m 个样本后,第 m+1个样本预测的分布如下:
当训练数据很有限时,贝叶斯方法通常泛化得更好,但是当训练样本数目很大时,通常会有很大的计算代价。 -
机器学习的一些挑战
维数灾难:当数据的维数很高时,很多机器学习问题变得相当困难,一组变量不同的可能配置数量会随着变量数目的增加而指数级增长。
局部不变性和平滑正则性:为了更好的泛化,我们假设了一些先验分布,通常会考虑平滑先验或者局部不变性先验,很多简单算法依赖于此得到良好的泛化,然而不能推广去解决人工智能级别任务中的统计挑战。
接下来会正式开始更新深度网络相关的文章,同时也会穿插一些机器学习算法,如SVM、决策树、隐马尔可夫模型等相关文章。
参考资料
《深度学习》
本系列相关文章
深度学习(六):前向传播算法和后向传播算法
深度学习(四):数值计算基础
深度学习(三):概率与信息论基础
深度学习(二):主成分分析算法
深度学习(一):线性代数基础
深度学习新手,文章若有疏漏,欢迎及时指正!