开启成长之旅!这是我参加「日新方案 2 月更文应战」的第 6 天,点击查看活动详情。

本文大部分内容参阅《深度学习》第五章机器学习基础,但从中抽取重要的常识点,并对部分概念和原理加以自己的总结,适合当作原书的补充资料阅读,也可当作快速阅读机器学习原理基础常识的参阅资料。

前言

深度学习是机器学习的一个特定分支。咱们要想充沛了解深度学习,有必要对机器学习的基本原理有深入的了解。

大部分机器学习算法都有超参数(有必要在学习算法外手动设定)。机器学习本质上归于应用核算学,其更加着重运用核算机对杂乱函数进行核算估量,而较少着重环绕这些函数证明置信区间;因而咱们会评论两种核算学的首要办法: 频率派估量和贝叶斯揣度。同时,大部分机器学习算法又能够分红监督学习无监督学习两类;本文会介绍这两类算法界说,并给出每个类别中一些算法示例。

本章内容还会介绍怎么组合不同的算法部分,例如优化算法、价值函数、模型和数据 集,来建立一个机器学习算法。最终,在 5.11 节中,咱们描绘了一些限制传统机器学习泛化才能的要素。正是这些应战推动了克服这些妨碍的深度学习算法的发展。

大部分深度学习算法都是依据随机梯度下降算法进行求解的。

5.1 学习算法

机器学习算法是一种能够从数据中学习的算法。这儿所谓的“学习“是指:“假如核算机程序在使命 TT 中的功能(以 PP 衡量)跟着经历 EE 而进步,则能够说核算机程序从经历 EE 中学习某类使命 TT 和功能衡量 PP。”-来自 Mitchell (1997)

经历 EE,使命 TT 和功能衡量 PP 的界说规划十分广大,本文不做具体解释。

5.1.1 使命 T

从 “使命” 的相对正式的界说上说,学习进程自身不能算是使命。学习是咱们所谓的获取完成使命的才能。机器学习能够处理许多类型的使命,一些十分常见的机器学习使命列举如下:

  1. 分类:在这类使命中,核算机程序需求指定某些输入归于 kk 类中的哪一类,例如图画分类中的二分类问题,多分类、单标签问题、多分类多标签问题。
  2. 回归:在这类使命中,核算机程序需求对给定输入猜测数值。为了处理这个使命,学习算法需求输出函数 f:Rn→Rf : \mathbb{R}^n \to \mathbb{R}。除了返回成果的方式不相同外,这类 问题和分类问题是很像的。
  3. 机器翻译
  4. 结构化输出
  5. 异常检测
  6. 组成和采样
  7. 去噪
  8. 密度估量或概率质量函数估量
  9. 输入缺失分类
  10. 转录
  11. 缺失值添补

5.1.2 功能衡量 P

为了评价机器学习算法的才能,咱们有必要规划其功能的定量衡量,即算法的精度指标。一般,功能衡量 PP 特定于体系正在执行的使命 TT

能够了解为不同的使命有不同的功能衡量。

关于诸如分类、缺失输入分类和转录使命,咱们一般衡量模型的准确率(accu- racy)。准确率是指该模型输出正确成果的样本比率。咱们也能够经过错误率(error rate)得到相同的信息。错误率是指该模型输出错误成果的样本比率。

咱们运用测验集(test set)数据来评价体系功能,将其与练习机器学习体系的练习集数据分开。

值得留意的是,功能衡量的挑选或许看上去简略且客观,可是挑选一个与体系抱负体现能对应上的功能衡量一般是很难的。

5.1.3 经历 E

依据学习进程中的不同经历,机器学习算法能够大致分类为两类

  • 无监督(unsuper-vised)算法
  • 监督(supervised)算法

无监督学习算法(unsupervised learning algorithm)练习含有许多特征的数据集,然后学习出这个数据集上有用的结构性质。在深度学习中,咱们一般要学习生成数据集的整个概率散布,显式地,比方密度估量,或是隐式地,比方组成或去噪。 还有一些其他类型的无监督学习使命,例如聚类,将数据集分红类似样本的调集。

监督学习算法(supervised learning algorithm)也练习含有许多特征的数据集,但与无监督学习算法不同的是数据会集的样本都有一个标签(label)或方针(target)。例如,Iris 数据集注明晰每个鸢尾花卉样本归于什么种类。监督学习算法经过研讨 Iris 数据集,学习怎么依据测量成果将样本区分为三个不同种类。

半监督学习算法中,一部分样本有监督方针,别的一部分样本则没有。在多实例学习中,样本的整个调集被标记为含有或许不含有该类的样本,可是调集中独自的样本是没有标记的。

大致说来,无监督学习涉及到观察随机向量 xx 的好几个样本,试图显式或隐式地学习出概率散布 p(x)p(x),或许是该散布一些有意思的性质; 而监督学习包括观察随机向量 xx 及其相关联的值或向量 yy,然后从 xx 猜测 yy,一般是估量 p(y∣x)p(y | x)。术语监督学习(supervised learning)源自这样一个视角,教员或许教师供给方针 yy 给机器学习体系,辅导其应该做什么。在无监督学习中,没有教员或许教师,算法有必要学会在没有辅导的情况下了解数据。

无监督学习和监督学习并不是严厉界说的术语。它们之间界限一般是模糊的。许多机器学习技能能够用于这两个使命。

尽管无监督学习和监督学习并非彻底没有交集的正式概念,它们确实有助于粗略分类咱们研讨机器学习算法时遇到的问题。传统地,人们将回归、分类或许结构化输出问题称为监督学习。支持其他使命的密度估量一般被称为无监督学习。

表明数据集的常用办法是规划矩阵(design matrix)。

5.1.4 示例: 线性回归

咱们将机器学习算法界说为,经过经历以进步核算机程序在某些使命上功能的算法。这个界说有点笼统。为了使这个界说更具体点,咱们展现一个简略的机器学习示例: 线性回归(linear regression)。

望文生义,线性回归处理回归问题。 换句话说,方针是构建一个体系,该体系能够将向量 x∈Rx \in \mathbb{R} 作为输入,并猜测标量 y∈Ry \in \mathbb{R} 作为输出。在线性回归的情况下,输出是输入的线性函数。令 y\hat{y} 表明模型猜测值。咱们界说输出为

y=w⊤x(5.3)\hat{y} = w^{⊤}x \tag{5.3}

其间 w∈Rnw \in \mathbb{R}^{n}参数(parameter)向量。

参数是操控体系行为的值。在这种情况下,wiw_i 是系数,会和特征 xix_i 相乘之 后悉数相加起来。咱们能够将 ww 看作是一组决议每个特征怎么影响猜测的权重 (weight)。

经过上述描绘,咱们能够界说使命 TT : 经过输出 y=w⊤x\hat{y} = w^{⊤}xxx 猜测 yy

咱们运用测验集test set)来评价模型功能怎么,将输入的规划矩 阵记作 X\textit{X}(test),回归方针向量记作 yy(test)。

回归使命常用的一种模型功能衡量办法是核算模型在测验集上的 均方差错(mean squared error)。假如 y\hat{y}(test) 表明模型在测验集上的猜测值,那么均方差错表明为:

MSEtest=1m∑i(y(test)−y(test))i2(5.4)MSE_{test} = \frac{1}{m} \sum_{i}(\hat{y}^{(test)}-y^{(test)})_{i}^{2} \tag{5.4}

直观上,当 y(test)\hat{y}^{(test)} = y(test)y^{(test)} 时,咱们会发现差错降为 0。

图 5.1 展现了线性回归算法的运用示例。

深度学习基础-机器学习基本原理

5.2 容量、过拟合和欠拟合

机器学习的应战首要在于算法怎么在测验集(先前未观测的新输入数据)上体现杰出,而不只是在练习集上体现杰出,即练习差错和泛化差错读比较小,也可了解为算法泛化性比较好。所谓泛化性(generalized)好指的是,算法在在测验集(曾经未观察到的输入)上体现杰出。

机器学习算法的两个首要应战是: 欠拟合underfitting)和过拟合overfitting)。

  • 欠拟合是指模型不能在练习集上获得满足低的差错。
  • 而过拟合是指练习差错和和测验差错之间的间隔太大。

经过调整模型的容量capacity),咱们能够操控模型是否倾向于过拟合或许欠拟合。浅显地讲,模型的容量是指其拟合各种函数的才能。容量低的模型或许很难拟合练习集,容量高的模型或许会过拟合,由于记住了不适用于测验集的练习集性质。

一种操控练习算法容量的办法是挑选假定空间(hypothesis space),即学习算法能够挑选作为处理方案的函数集。例如,线性回归算法将其输入的一切线性函数的调集作为其假定空间。咱们能够推行线性回归以在其假定空间中包括多项式,而不仅仅是线性函数。这样做就增加模型的容量。

留意,学习算法的作用不仅很大程度上受影响于假定空间的函数数量,也取决于这些函数的具体方式。

当机器学习算法的容量适合于所执行使命的杂乱度和所供给练习数据的数量时,算法作用一般会最佳。容量缺乏的模型不能处理杂乱使命。容量高的模型能够处理杂乱的使命,可是当其容量高于使命所需时,有或许会过拟合。

图 5.2 展现了上述原理的运用情况。咱们比较了线性,二次和 9 次猜测器拟合实在二次函数的作用。

深度学习基础-机器学习基本原理

进步机器学习模型泛化性的前期思想是奥卡姆剃刀准则,即挑选“最简略”的那一个模型。

核算学习理论供给了量化模型容量的不同办法。在这些中,最有名的是 Vapnik- Chervonenkis 维度(Vapnik-Chervonenkis dimension, VC)。VC 维衡量二元分类 器的容量。VC 维界说为该分类器能够分类的练习样本的最大数目。假定存在 mm 个 不同 xx 点的练习集,分类器能够恣意地标记该 mm 个不同的 xx 点,VC 维被界说为 mm 的最大或许值。

由于能够量化模型的容量,所以使得核算学习理论能够进行量化猜测。核算学习理论中最重要的定论论述了练习差错和泛化差错之间差异的上界跟着模型容量增加而增加,但跟着练习样本增多而下降 (Vapnik and Chervonenkis, 1971; Vapnik, 1982; Blumer et al., 1989; Vapnik, 1995)。这些边界为机器学习算法能够有用处理问题供给了理论 验证,可是它们很少应用于实践中的深度学习算法。一部分原因是边界太松,另一部分原因是很难确认深度学习算法的容量。由于有用容量受限于优化算法的才能,所以确认深度学习模型容量的问题特别困难。而且咱们对深度学习中涉及的十分遍及的非凸优化问题的理论了解很少。

尽管更简略的函数更或许泛化(练习差错和测验差错的间隔小),但咱们仍然有必要挑选一个满足杂乱的假定来完成低练习差错。一般,跟着模型容量的增加,练习差错会减小,直到它逐步挨近最小或许的差错值(假定差错衡量具有最小值)。一般,泛化差错是一个关于模型容量的 U 形曲线函数。如下图 5.3 所示。

深度学习基础-机器学习基本原理

5.2.1 没有免费午饭定理

机器学习的没有免费午饭定理Wolpert,1996)指出,对一切或许的数据生成散布进行平均,每个分类算法在对曾经未观察到的点进行分类时具有相同的错误率。换句话说,在某种意义上,没有任何机器学习算法遍及优于其他任何算法

上述这个定论听着真的让人伤感,但幸亏的是,这些定论仅在咱们考虑一切或许的数据生成散布时才成立。假如咱们对实践应用中遇到的概率散布类型做出假定,那么咱们能够规划出在这些散布上体现杰出的学习算法

这意味着机器学习研讨的方针不是找一个通用学习算法或是肯定最好的学习算法。反之,咱们的方针是了解什么样的散布与人工智能获取经历的 “实在国际” 相关,什么样的学习算法在咱们关注的数据生成散布上作用最好

总结:没有免费午饭定理清楚地论述了没有最优的学习算法,即暗示咱们有必要在特定使命上规划功能杰出的机器学习算法。

5.2.2 正则化

所谓正则化,是指咱们经过修改学习算法,使其下降泛化差错而非练习差错的办法。

正则化是一种思想(策略),它是机器学习范畴的中心问题之一,其重要性只要优化能与其相媲美。

一般地,正则化一个学习函数 f(x;)f(x;\theta) 的模型,咱们能够给价值函数增加被称为正则化项(regularizer)的赏罚。假如正则化项是 (w)=w⊤w\Omega(w) = w^{\top}w,则称为权重衰减(weight decay)。

例如,咱们能够加入权重衰减(weight decay)来修改线性回归的方针函数,如偏好于平方 L2L^2 范数较小权重的方针函数方式:

J(w)=MSEtrain+w⊤w(5.18)J(w) = MSE_{train} + \lambda w^{⊤}w \tag{5.18}

其间 J(w)J(w) 是方针函数,ww 是权重参数。\lambda 是超参数,需提早设置,其操控咱们对较小权重的偏好强度。当 =0\lambda = 0,咱们没有任何偏好。\lambda 越大,则权重越小。最小化 J(w)J(w) 会导致权重的挑选在拟合练习数据和较小权重之间进行权衡

和上一节没有最优的学习算法相同,相同的,也没有最优的正则化方式。反之,咱们有必要挑选一个十分适合于咱们所要处理的使命的正则方式。

5.3 超参数和验证集

超参数的值不是经过学习算法自身学习出来的,而是需求算法界说者手动指定的

5.3.1 验证集的作用

一般,80% 的练习数据用于练习,20% 用于验证。验证集是用于估量练习中或练习后的泛化差错,从而更新超参数

5.3.2 穿插验证

一个小规划的测验集意味着平均测验差错估量的核算不确认性,使得很难判别算法 A 是否比算法 B 在给定的使命上做得更好。处理办法是依据在原始数据上随机采样或别离出的不同数据集上重复练习和测验,最常见的便是 kk-折穿插验证,行将数据集分红 kk 个 不重合的子集。测验差错能够估量为 kk 次核算后的平均测验差错。在第 ii 次测验时, 数据的第 ii 个子集用于测验集,其他的数据用于练习集。算法进程如下所示。

k 折穿插验证尽管一定程度上能够处理小数据集上测验差错的不确认性问题,但价值则是增加了核算量。

深度学习基础-机器学习基本原理

5.4 估量、差错和方差

核算范畴为咱们供给了许多工具来完成机器学习方针,不仅能够处理练习集上 的使命,还能够泛化。基本的概念,例如参数估量、差错和方差,关于正式地刻画泛化、欠拟合和过拟合都十分有帮助。

5.4.1 点估量

这儿的点估量、估量量实质上便是模型参数最优猜测值。

点估量试图为一些感兴趣的量供给单个 ‘‘最优’’ 猜测。一般地,感兴趣的量能够是单个参数也能够是一个向量参数,例如第 5.1.4 节线性回归中的权重,可是也有或许是整个函数。

为了差异参数估量和实在值,咱们习惯将参数 \theta 的点估量表明为 \hat{\theta}

x(1),…,x(m){x^{(1)}, . . . , x^{(m)}}mm 个独立同散布(i.i.d.)的数据点。 点估量(point esti-mator)或核算量(statistics)是这些数据的恣意函数:

m=g(x(1),…,x(m)).(5.19)\hat{\theta_m} =g(x^{(1)},…,x^{(m)}). \tag{5.19}

5.4.2 差错

估量的差错界说如下:

bias(m)=E(m)−,(5.19)bias(\hat{\theta_m}) = E(\hat{\theta_m}) − \theta, \tag{5.19}

其间希望作用在一切数据(看作是从随机变量采样得到的)上,\hat{\theta} 是用于界说数据生成散布的 \theta 的实在值。假如 bias(m)=0bias(\hat{\theta_m}) = 0,那么估量量 m\hat{\theta_m} 则被称为是无偏 (unbiased),同时意味着 E(m)=E(\hat{\theta_m}) = \theta

5.4.3 方差和标准差

方差记为 Var()Var(\hat{\theta})2\sigma^{2},方差的平方根被称为标准差。

5.4.4 权衡差错和方差以最小化均方差错

差错和方差衡量着估量量的两个不同差错来源。差错衡量着违背实在函数或参数的差错希望。而方差衡量着数据上恣意特定采样或许导致的估量希望的差错。

差错和方差的关系和机器学习容量、欠拟合和过拟合的概念紧密相联。用 MSE 衡量泛化差错(差错和方差关于泛化差错都是有意义的)时,增加容量会增加方差,下降差错。如图 5.6 所示,咱们再次在关于容量的函数中,看到泛化差错的 U 形曲线。

深度学习基础-机器学习基本原理

5.5,最大似然估量

与其猜测某个函数或许是一个好的估量器,然后剖析它的差错和方差,咱们更希望有一些准则,咱们能够从中推导出特定的函数,这些函数是不同模型的杰出估量器。最大似然估量便是其间最为常用的准则。

5.6 贝叶斯核算

到目前为止,咱们现已描绘了频率核算(frequentist statistics)和依据估量单一 \theta 值的办法,然后依据该估量作一切的猜测。 另一种办法是在进行猜测时考虑一切或许的 \theta 值。 后者归于贝叶斯核算(Bayesian statistics)的范畴。

如 5.4.1 节中评论的,频率派的视角是实在参数 \theta 是不知道的定值,而点估量 \hat{\theta} 是考虑数据集上函数(能够看作是随机的)的随机变量。

贝叶斯核算的视角彻底不同。贝叶斯用概率反映常识状态确实认性程度。数据集能够被直接观测到,因而不是随机的。另一方面,实在参数 \theta 是不知道或不确认的, 因而能够表明成随机变量。

5.7 监督学习算法

回忆 5.1.3 节内容,简略来说,监督学习算法是给定一组输入 xx 和输出 yy 的练习 集,学习怎么关联输入和输出。在许多情况下,输出 yy 或许难以自动搜集,有必要由人类“监督者”供给,但即使练习集方针是自动搜集的,该术语仍然适用。

5.8 无监督学习算法

回忆第5.1.3节,无监督算法只处理 “特征’’,不操作监督信号。监督和无监督算法之间的差异没有标准严厉的界说,由于没有客观的测验来差异一个值是特征还是监督者供给的方针。浅显地说,无监督学习的大多数测验是指从不需求人为注释的样本的散布中提取信息。该术语一般与密度估量相关,学习从散布中采样、学习从散布中去噪、寻找数据散布的流形或是将数据中相关的样本聚类。

5.8.1 PCA 降维

PCA(Principal Component Analysis)是学习数据表明的无监督学习算法,常用于高维数据的降维,可用于提取数据的首要特征重量。

PCA 的数学推导能够从最大可分型和最近重构性两方面进行,前者的优化条件为区分后方差最大,后者的优化条件为点到区分平面间隔最小。

5.8.2 k-均值聚类

别的一个简略的表明学习算法是 kk-均值聚类。kk-均值聚类算法将练习集分红 kk 个接近互相的不同样本聚类。因而咱们能够以为该算法供给了 kk-维的 one-hot 编码向量 hh 以表明输入 xx。当 xx 归于聚类 ii 时,有 hi=1h_i = 1hh 的其他项为零。

kk-均值聚类初始化 k 个不同的中心点 (1),…,(k){^{(1)}, . . . , ^{(k)}},然后迭代交换以下两个不同的进程直到算法收敛。

  1. 进程一,每个练习样本分配到最近的中心点 (i)^{(i) } 所代表的聚类 ii
  2. 进程二,每一个中心点 (i)^{(i) } 更新为聚类 ii 中一切练习样本 x(j)x^{(j)} 的均值。

关于聚类的一个问题是聚类问题自身是病态的。这是说没有单一的标准去衡量聚类的数据在实在国际中作用怎么。咱们能够衡量聚类的性质,例如类中元素到类中心点的欧几里得间隔的均值。这使咱们能够判别从聚类分配中重建练习数据的作用怎么。可是咱们不知道聚类的性质是否很好地对应到实在国际的性质。此外,或许有许多不同的聚类都能很好地对应到现实国际的某些特点。咱们或许希望找到和 一个特征相关的聚类,可是得到了一个和使命无关的,同样是合理的不同聚类。

例如,假定咱们在包括赤色货车图片、赤色轿车图片、灰色货车图片和灰色轿车图片的数据集上运行两个聚类算法。假如每个聚类算法聚两类,那么或许一个算法将轿车和货车各聚一类,另一个依据赤色和灰色各聚一类。假定咱们还运行了第三个聚类算法,用来决议类别的数目。这有或许聚成了四类,赤色货车、赤色轿车、灰色卡 车和灰色轿车。现在这个新的聚类至少抓住了特点的信息,可是丢失了类似性信息。 赤色轿车和灰色轿车在不同的类中,正如赤色轿车和灰色货车也在不同的类中。该聚类算法没有告诉咱们灰色轿车和赤色轿车的类似度比灰色货车和赤色轿车的类似度更高,咱们只知道它们是不同的。

5.9 随机梯度下降

简直一切的深度学习算法都用到了一个十分重要的优化算法: 随机梯度下降 (stochastic gradient descent, SGD)。

机器学习中反复出现的一个问题是好的泛化需求大的练习集,但大的练习集的 核算价值也更大。

机器学习算法中的价值函数一般能够分解成每个样本的价值函数的总和。

深度学习基础-机器学习基本原理

随机梯度下降的中心是,梯度是希望,而希望可运用小规划的样本近似估量。具体来说,在算法的每一步,咱们从练习会集均匀抽出一小批量(minibatch)样本 B=x(1),…,x(m′)B={x^{(1)},…,x^{(m′)}}。小批量的数目 m′m′ 一般是一个相对较小的数,一般为 2n2^n(取决于显卡显卡)。重要的是,当练习集巨细 m 增加时,m′m′ 一般是固定的。咱们或许在拟合几十亿的样本时,但每次更新核算只用到几百个样本。

深度学习基础-机器学习基本原理

梯度下降往往被以为很慢或不可靠。曾经,将梯度下降应用到非凸优化问题被以为很莽撞或没有准则。但现在,咱们知道梯度下降用于深度神经网络模型的练习时作用是不错的。优化算法不一定能确保在合理的时间内到达一个部分最小值,但它一般能及时地找到价值函数一个很小的值,并且是有用的。

随机梯度下降在深度学习之外有许多重要的应用。它是在大规划数据上练习大型线性模型的首要办法。关于固定巨细的模型,每一步随机梯度下降更新的核算量 不取决于练习集的巨细 m。在实践中,当练习集巨细增加时,咱们一般会运用一个更大的模型,但这并非是有必要的。到达收敛所需的更新次数一般会随练习集规划增大而增加。可是,当 m 趋向于无穷大时,该模型最终会在随机梯度下降抽样完练习 集上的一切样本之前收敛到或许的最优测验差错。继续增加 m 不会延伸到达模型或许的最优测验差错的时间。从这点来看,咱们能够以为用 SGD 练习模型的渐近价值是关于 m 的函数的 O(1)O(1) 等级。

5.10 构建机器学习算法 pipeline

简直一切的深度学习算法都能够被描绘为一个相当简略的 pipeline:

  1. 特定的数据集
  2. 价值函数
  3. 优化进程
  4. 神经网络模型。

参阅资料

  • 《深度学习》
  • 【机器学习】降维——PCA(十分具体)