深度学习笔记:什么是学习算法

本网站仅为记录自己的学习笔记,若有理解错误还请多多指教

《深度学习》第五章 机器学习基础

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

机器学习算法是一种能够从数据中学习的算法,可以将学习定义为:“对于某类任务T和性能度量P,一个计算机程序被认为可以从经验E中学习是指,通过经验E改进后,它在任务T上由性能度量P衡量的性能有所提升。”

总的来说,就是我们所定义的学习算法可以从经验E中进行学习,从而在进行任务T的时候,采用性能度量指标P对结果进行评估,可以具有更好的性能。

从“任务’的相对正式的定义上说,学习过程本身不能算是任务,可以将学习任务定义为如何处理样本(example),样本指的是已经量化的特征(feature)集合,通常会将样本表示成一个向量\(\mathbf{x}\in\mathbb{R}\),其中每一个元素\(x_i\)是一个特征。

为了评估机器学习算法的能力,我们需要设计其性能的定量度量,通常该指标是针对前文中系统执行的任务T的。对于分类、缺失输入分类和转录任务来说,我们通常度量模型的准确率(accuracy),准确率指的是该模型输出正确结果的样本比率。同时我们也可以通过错误率(errorrate)得到相同的信息,错误率指的是该模型输出错误结果的样本比率。我们通常把错误率成为0-1损失的期望:如果结果正确,损失是0;否则是1。但是对于密度估计这类任务而言,上述指标是没有意义的,反之,我们必须使用不同的性能度量,使模型对每一个样本都输出一个连续数值的得分,比如输出模型在一些样本上概率对数的平均值。

通常,我们比较关注机器学习算法在未观测数据上的性能如何,因此我们采用测试集(test set)数据来评估系统性能,该数据集通常与训练集分开。

根据深度学习过程中的不同经验,机器学习算法可大致分为无监督(unsupevised)算法和监督(supervised)算法,《深度学习》书中所介绍的大部分学习算法都可以理解为从整个数据集(dataset)或数据点(data point)上获取经验。无监督学习算法(unsupervised learning algorithm)训练含有很多特征的数据集,并从中学习得到其有用的结构性质,而监督学习算法(supervised learning algorithm)则是根据每一个样本的标签(label)或目标(target)进行学习。

大致来说,无监督学习会观察随机向量x的多个样本,并学习出概率分布\(p(x)\),或者某些性质;监督学习不仅需要对随机向量进行观察,还需要观察与其相关联的值或者向量\(y\),并从\(x\)来预测\(y\)的值。二者之间的差别可以理解为学习过程中是否需要提供目标\(y\)。

监督学习和无监督学习并不是严格定义的术语,很多机器学习技术都可以用于到这两个人物上,但是这一概念有助于我们来粗略分类研究机器学习算法时遇到的问题。传统上,人们将回归、分类或者结构化输出问题称为监督学习,将支持其他任务的密度估计称为无监督学习。

上述两种学习方式都依赖于一个固定的数据集,而强化学习(reinforcement learning)则不依赖于数据集。该算法会和环境进行交互,存在一个反馈回路,但是强化学习并不属于《深度学习》书中所探讨的范围。

表示数据集的常用方法时设计矩阵(design matrix),设计矩阵的每一行包含一个不同的样本,每一列对应样本不同的特征。例如对包含了150个样本的Iris数据里来说,每个样本有4个特征,那么数据集可以表示为设计矩阵\(\mathbf{X}\in\mathbb{R}^{150\times4}\),其中\(x_{i,1}\)表示第\(i\)个植物的萼片长度,\(x_{i,2}\)表示第\(i\)个植物的萼片宽度等等。

在监督学习中,样本中除了特征,还会包含标签或者目标,例如我们希望使用深度学习识别照片中的对象,我们需要确定照片中包含哪些对象。可以使用数字编号来表示对象,比如0表示尺子、1表示铅笔等等。通常在处理上述包含观测特征的设计矩阵\(\mathbf{X}\)时,我们也会提供一个标签向量\(\mathbf{y}\),其中\(y_i\)表示样本\(i\)的标签。

文章的最后,我们展示一个简单的机器学习示例:线性回归(linear regression)。我们的目标时建立一个系统,将向量\(\mathbf{x}\in\mathbb{R}^n\)作为输入,将预测标量\(y\in\mathbb{R}^n\)作为输出。在线性回归模型中,系统的输出时其输入的线性函数,令\(\hat{y}\)表示模型预测\(y\)的取值,定义输出为:

\(\hat{y}=\mathbf{w}^T\mathbf{x}\)

其中\(\mathbf{w}\in\mathbb{R}^n\)是参数(parameter)向量。

参数是控制系统行为的值,我们可以将\(\mathbf{w}\)看作一组决定每个特征如何影响预测的权重(weight),因此我们有了任务T的定义,接下来需要定义得到是性能度量P。

假设我们有m个输入样本所组成的设计矩阵,不用他来训练模型,而是对性能进行评估,同时我们也有每个样本的正确值\(y\)所组成的回归目标向量,该数据集称作测试集(test set)。我们将输入的设计矩阵记作\(\mathbf{X}^{(test)}\),回归目标向量记作\(\mathbf{y}^{(test)}\),度量模型性能的一种方法是计算模型在测试集上的均方误差(mean squared error)。如果\({\hat{\mathbf{y}}}^{(test)}\)表示模型在测试集上的预测值,那么均方误差的表达式可以写为

\(MSE_{test}=\frac{1}{m}\sum\limits_{i}({\hat{\mathbf{y}}}^{(test)}-\mathbf{y}^{(test)})^2_i\)

当预测值和正确值相等时,误差会降为0,随着预测值和标准值之间的欧几里得距离增加时,误差也会增加。

接下来我们需要设计一个机器学习算法,该算法可以通过观察训练集\((\mathbf{X}^{(train)}, \mathbf{y}^{(train)})\)来获得经验,改进权重\(\mathbf{w}\)以减少\(MSE_{test}\)。最直观的方式时最小化训练集上的均方误差,即\(MSE_{train}\)。

我们可以将最小化\(MSE_{test}\)任务转化为求导并计算导数为0的情况,即\(MSE_{train}\)关于\(\mathbf{w}\)的偏导数为0

\(\Delta_wMSE_{train}=0\)

最终可求得

\(\mathbf{w}={({\mathbf{X}^{(train)}}^T\mathbf{X}^{(train)})}^{-1}{{\mathbf{X}^{(train)}}^T\mathbf{X}^{(train)}}\)

上述公式所解出的系统方程被称为正规方程(normal equation),该算式构成了一个简单的机器学习算法。值得注意的时,术语线性回归(linear regression)通常用来指稍微复杂一些的、需要额外参数b的模型,在该模型中,

\(\hat{y}=\mathbf{w}^T\mathbf{x}+b\)

截距项b通常被称为仿射变换的偏置(bias)参数,这个属于的命名源自该变量的输出在没有任何输入的情况下会偏移b,他和统计偏差中指代统计估计算法的某个量的期望估计偏离真实值的意思是不一样的。

线性回归是一个简单的、有局限性的学习算法,但是可以通过这一算法来说明学习算法是如何工作的。后续的文章将关注设计学习算法的基本原则,并说明如何使用这些原则来构建更复杂的学习算法。


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注