【机器学习】CS229课程笔记notes1翻译-Part I线性回归

CS229课程笔记

吴恩达

监督学习

      让我们开始谈论一些监督学习的例子。假定我们有一个数据集,给出俄勒冈州波特兰地区47套房屋的居住面积和价格:

      我们可以在图上画出这些点:

      根据这些数据,我们怎么学习预测波特兰地区其他房屋的价格,看作房屋居住面积大小的函数?

      下面定义几个后面使用的符号,我们使用x(i)表示输入变量(例子中的居住面积),也叫做输入特征,y(i)表示输出变量或目标变量,例中为我们试图预测的价格。一对(x(i),y(i))叫做训练样本,我们用来学习的数据集(包含m个训练样本,(x(i),y(i)),i=1,2,…,m)叫做训练集。注意,符号中的上标(i)仅仅是训练集的索引,与指数无关。我们也使用X代表输入空间,Y代表输出空间,在该例中,X=Y=R。

      为了更加正式地描述监督学习问题,我们的目标是,给定一个训练集,学习函数:XàY,因此h(x)是相应值y的一个好的预测。出于历史原因,函数h叫做假设。我们把这个过程更形象地表示如下:

      当我们试图预测的目标变量是连续的,比如在我们的房屋例子中,我们叫该学习问题是一个回归问题。当y仅取一些离散值时(比如说,给定居住面积,我们想要预测该住宅是一套住宅还是一个公寓),我们称该问题为分类问题。

Part I 线性回归

      为了使我们的房屋例子更加有趣,让我们考虑一个更加丰富的数据集,数据集中还包括每个房屋中卧室的数量:

      这里,输入变量是R2中两维的向量。例如,x1(i)是训练集中第i套房屋的居住面积,x2(i)是房屋中卧室的数量。(一般地,当设计学习问题,由你来决定选取哪个特征,因此如果你在波特兰地区收集住房数据,你也会考虑包括其他特征,比如是否有壁炉,卫生间的数量等等。我们之后将讨论更多关于特征选择的话题,但是现在我们采用已经给定的特征。)

      为了实现监督学习,我们必须决定怎么在计算机中表示函数/假设h。作为初始选择,我们估计y为x的线性函数:

      这里,θi是参数(也叫做权重),参数化线性函数的空间,该线性函数从X映射到Y。当不会导致混乱时,我们将丢掉hθ(x)中的θ下标,简单地写为h(x)。为了简化我们的符号,我们使得x0=1(这是截距项),因此

      上式右边我们将θ和x都看作向量,n是输入变量的个数(不包括x0)。

      现在,给定一个训练集,我们怎么挑选,或者学习参数θ?一个合理的方法似乎是使得h(x)靠近y,至少对于我们拥有的训练样本是这样。为了对此形式化,我们将定义一个函数,对于每一个θ值,计算h(x(i))对相应的y(i)的靠近程度,我们定义代价函数:

      如果你之前见过线性回归,你可能意识到这是熟悉的最小平方代价函数(least-squares cost function),即一般最小平方回归模型(ordinaryleast squares regression model)。不论你之前是否见过,让我们继续,我们将最终显示这是一个更广泛的算法家族的特殊例子。

1 LMS算法

      我们想要选择θ来最小化J(θ)。我们使用一个搜索算法,以θ的某个初始值开始,重复改变θ,使得J(θ)更小,直到我们收敛到一个使得J(θ)最小的θ值。特别地,让我们考虑梯度下降算法,以某个初始的θ开始,重复执行更新:

      (对j=0,…,n的所有的值同时执行更新)这里,α叫做学习率,该算法重复地向着J的最陡下降方向走一步。

为了实现该算法,我们必须计算出右边的偏导数。如果我们只有一个训练样本(x,y),让我们计算偏导数,以便我们可以忽略J的定义中的和。我们有:

      对于一个单独的训练样本,我们给出下面的更新规则:

      该规则叫做LMS更新规则(LMS代表“least meansquares”,最小均方),也叫做Widrow-Hoff学习规则。该规则有一些自然和直观的特性,例如,更新的大小与错误项(y(i)-hθ(x(i)))成比例。因此,如果我们在训练样本上的预测特别接近真实值y(i),那么我们就不太需要改变参数;相反,如果我们的预测hθ(x(i))离y(i)很远,我们就需要很大幅度地改变参数。

      我们为仅有一个样本的时候推导LMS规则。有两种方式可以修改超过一个样本的训练集。第一个是用下面算法替代它:

      读者可以容易地验证在上面的更新规则中的和正好是

(如J最初的定义)。因此,这仅仅是梯度下降关于最初的代价函数J。该方法在每一步关注整个训练集的每一个样本,叫做批梯度下降。注意到,梯度下降有时会陷入局部极小值,对于线性回归,我们提出的优化方法仅有一个全局最小值,没有其他的局部极小值;因此梯度下降总是收敛(假定学习率α不太大)到全局最小值。实际上,J是一个二次凸函数。下面是一个梯度下降的例子,使得二次函数最小。

      上面的椭圆是二次函数的轮廓。上图也示出了梯度下降的轨迹,初始点在(48,30),图中的×(由直线连起来)标识梯度下降经过的θ的连续值。

      当我们运行批梯度下降算法在之前的数据集上拟合θ,来学习预测房价,作为居住面积的函数,我们获得θ0=71.27,θ1=0.1345,。如果我们描述

作为x(面积)的函数,将训练数据描点,会得到下面的图:

      如果卧室的数量也作为一个输入特征,我们得到θ0=89.60,θ1=0.1392,θ2=-8.738。

      上面的结果是通过批梯度下降获得的。有一个批梯度下降算法的替代算法也工作的很好。考虑下面的算法:

      在该算法中,我们重复遍历训练集,每次我们使用一个训练样本更新参数,依据单个训练样本错误梯度。该算法叫做随机梯度下降(也叫做增量梯度下降)。而批梯度下降在走一步之前必须遍历整个训练集——如果m很大,将是一个代价很大的操作——随机梯度下降可以马上行动,并对于它看到的每一个样本持续行动。经常,随机梯度下降得到θ,比批梯度下降更快地靠近最小值。(注意,随机梯度下降算法可能永远不会收敛到最小值,参数θ将一直在最小值J(θ)周围摆动,但实际上绝大多数靠近最小值的值已经十分接近真实的最小值。)因此,当训练集特别大时,随机梯度下降的性能通常超过批梯度下降。

2  等式

      梯度下降给出了一种方式最小化J,我们来讨论第二种方式来最小化J,这次我们明确地进行最小化,而不采用迭代算法。在该方法中,我们将通过明确地对θ求导来最小化J,并将导数设置为0。为了不写数组和满页的导数矩阵的计算方法,我们引进一些符号来做矩阵的计算。

2.1  矩阵求导

      对于函数f:Rm×n-->R,从m×n的矩阵映射到实数,我们定义f关于A的导数如下:

      因此,梯度

是一个m×n的矩阵,其(i,j)元是

,例如,假设

是一个2×2的矩阵,函数f:R2×2-->R如下给定:

      这里,Aij代表矩阵A的(i,j)项,那么,我们有

      我们引进trace操作(求迹),写作“tr”。对于一个n×n的方阵A,A的迹定义为其对角线的和:

      如果a是一个实数(例如,一个1×1的矩阵),那么tra=a。(如果你之前没有见过该操作符,你可以把A的迹看作tr(A),或者将trace函数应用到矩阵A。然而,我们通常的写法是没有括号。)

      求迹操作有如下特性,对于两个矩阵A和B,AB是方阵,我们有trAB=trBA。其有如下推论:

      trABC = trCAB = trBCA,

      trABCD = trDABC = trCDAB = trBCDA

      下面关于求迹操作的特性容易验证。这里,A和B是方阵,a是一个实数:

      trA = trAT

      tr(A+B) = trA + trB

      traA = atrA

      我们现在陈述但不证明一些关于矩阵求导的事实。等式(4)仅应用到非奇异方阵A,|A|代表A的行列式。我们有:

      为了使我们的矩阵符号更加具体,我们现在详细解释等式(1)的意义。假定我们有某个给定矩阵B∈Rn×m。我们定义函数f:Rm×n-->R,依据f(A) = trAB。注意该定义是有意义的,因为如果A∈Rm×n,那么AB是一个方阵,我们可以对其应用求迹操作;因此,f实际上从Rm×n映射到R。我们可以应用我们矩阵求导的定义来得到

,它是一个m×n矩阵。上面的等式(1)陈述了该矩阵的(i,j)项将如下计算:(i,j)-BT的相应项,或者相当于,Bji。

等式(1-3)的证明相当简单,留作给读者的练习。等式(4)可以使用矩阵逆的伴随来推导。

2.2  再说最小平方

      拥有矩阵求导工具,我们现在找出最小的J(θ)中的θ,我们开始在矩阵-向量符号中重写J。

      给出一个训练集,定义矩阵X为m×n矩阵(实际是m×n+1,如果我们包括截距项),在行中包含训练样本的输入值:

为m维的向量,包含所有来自训练集的目标值:

      现在,由于

,我们可以容易地验证

      因此,对于向量z,我们有

      最后,为了求J的最小值,我们求J关于θ的导数,结合等式(2)和(3),我们得到,

      因此,

      在第三步,我们运用实数的迹仍然是一个实数的事实;第四步运用trA = trAT的事实,第五步使用等式(5),其中,AT=θ, B=BT=XTX, C=I,和等式(1)。为了最小化J,我们设置其导数为0,获得了等式:

      因此,最小的J(θ)中θ的值表示如下:

3  概率解释

      对于回归问题,为什么线性回归,特别为什么最小平方代价函数J,是一个合理的选择?在这一部分,我们将给出一系列概率假设,在这些假设下,可以非常自然地推导出最小平方回归算法。

      让我们假设目标变量和输入通过下面的等式相关:

      其中ε(i)是错误项,包括或者未建模的因素(比如是否存在一些特征与预测房价非常相关,但是我们在回归中并没有使用),或者随机噪声。让我们进一步假设ε(i)是独立同分布的,依据均值为0、方差为σ2的高斯分布(也叫做正态分布)。我们将该假设写为“ε(i)~N(0, σ2)”,ε(i)的密度通过下式给出:

      这意味着,

      符号“p(y(i)|x(i);θ)”意味着这是给定x(i)的y(i)的分布,参数为θ。注意,我们不应该以θ为条件(“p(y(i)|x(i),θ)”),由于θ不是随机变量。我们也可以将y(i)的分布写为y(i)|x(i);θ~N(θTx(i),σ2)。

      给定X(包含所有的x(i))和θ,那么y(i)的分布是什么?数据的概率通过

给出。该值被看作

(或许X)的函数,对于固定值θ。当我们希望明确地将其视为θ的函数时,我们将其叫做似然函数:

      注意,ε(i)的独立假设(因此也是给定x(i)的y(i)的独立假设),这也可以被写为

      现在,给定与y(i)和x(i)相关的概率模型,我们对参数θ的最好选择采用什么方式是合理的呢?最大似然原则说的是我们应该选择使得似然函数概率尽可能高的θ,例如,我们应该选择使得L(θ)最大的θ。

      代替最大化L(θ),我们也可以最大化L(θ)的任何严格递增的函数。特别地,如果我们将最大化L(θ)代替为最大化log似然函数l(θ),推导将会简单一点:

      因此,最大化l(θ)与下式最小化相同:

      我们可以看出它就是J(θ),我们最初的最小平方代价函数。

      总结:在前面的概率假设下,最小平方回归相当于寻找θ的最大似然估计。因此这是一个假设集合,在该假设下,最小平方回归可以认为是一个自然的方法,仅仅做的是最大似然估计。(注意,概率假设对于最小平方回归不是必需的过程,也存在其他的自然假设。)

      在我们之前的讨论中,我们最终对θ的选择不依赖于σ2的值,即使σ2的值未知,我们也会得到相同的结果。我们后面会再次用到这个事实,当我们谈论指数家族和生成线性模型。

4  局部加权线性回归

      考虑从x∈R到y的预测问题,下面的最左图显示了拟合y=θ0+θ1x到一个数据集的结果。我们看到数据并不真正靠近一条直线,因此拟合不是非常好。

      如果我们增加了一个额外的特征x2,用y=θ0+θ1x+θ2x2作拟合,我们将获得该数据一个更好的拟合(见中图)。似乎我们添加越多的特征越好,然而,添加太多的特征未必是一件好事:最右图是拟合5阶多项式

的结果。我们看到即使拟合的曲线完美地穿过了数据,我们仍然不认为这是一个非常好的预测,例如,对于不同居住面积(x)的房价的预测(y)。还没有正式定义这些项的意义,我们说左边的图是欠拟合的例子,右边的图是过拟合的例子。(之后的课上,我们将讨论学习理论,我们将规范化这些概念,并更加详细地定义假设好或坏意味着什么)。

      像前面讨论的,像上例中所示,特征的选择对于确保学习算法的好性能十分重要。(当我们谈论模型选择,我们也将看到自动选择一系列特征的算法。)在这一部分,让我们简要谈论局部加权线性回归(LWR, locally weighted linear regression)算法,假设我们有足够的训练数据,使得特征的选择不太严格。这个做法很简单,你可以在作业中探索LWR算法的一些特性。

      在最初的线性回归算法中,为了在一个查询点x做出预测(例如,为了计算h(x)),我们将:

      1.      拟合θ来最小化

      2.      输出θTx

      相反,局部加权线性回归算法这样做:

      1.      拟合θ来最小化

      2.      输出θTx

      这里,w(i)是非负权重。直观地,如果对于i的特定值,w(i)很大,那么我们挑选θ,试图使得(y(i)-θTx(i))2较小,如果w(i)较小,在拟合的时候,(y(i)-θTx(i))2错误项可以忽略。

      对于权重,一个比较标准的选择是:

      注意,权重依赖于特殊点x,此外,如果|x(i)-x|很小,那么w(i)接近1;如果|x(i)-x|很大,那么w(i)很小。因此,θ被选择给出一个更高的权重对靠近查询点x的训练样本。(注意,尽管该权重公式的形式类似于高斯分布的密度函数公式,w(i)与高斯公式没有直接的关系,w(i)不是随机变量,不是服从正态分布的变量。)参数τ控制着一个训练样本的权重多快从x(i)下降x距离;τ叫做带宽参数,你可以在作业中做实验。

      局部加权线性回归是我们看到的第一个非参数算法的例子。我们前面看到的非加权线性回归算法是一个参数的学习算法,因为它有一些固定的有限数量的参数(θi)进行数据拟合。一旦我们拟合了θi并存储,我们不再需要保存训练数据来做出未来的预测。相反,为了使用局部加权线性回归做出预测,我们需要保存整个的训练集。非参数项指的是我们需要保存大量的数据以便假设h随着训练集的大小线性增长。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏marsggbo

使用numpy解决图像维度变换问题

在机器学习中经常会碰到各种图像数据集,有的是按照num*height*width*channel来存储的,而有的则是num*channel*height*wid...

401
来自专栏大学生计算机视觉学习DeepLearning

基于tensorflow实现简单卷积神经网络Lenet5

1173
来自专栏YG小书屋

深度学习之Logistic Regression

2046
来自专栏大学生计算机视觉学习DeepLearning

基于tensorflow实现简单卷积神经网络Lenet5

3347
来自专栏人工智能

第四课反向传播算法与神经网络(一)

Stanford深度学习课程第四课反向传播算法与神经网络(一) 预备知识 我们不直接介绍课程内容,首先介绍一些预备知识,这样可以更好的理解课程内容。下面我们介绍...

1796
来自专栏决胜机器学习

神经网络和深度学习(四) ——浅层神经网络的激活函数与反向传播

神经网络和深度学习(四)——浅层神经网络的激活函数与反向传播 (原创内容,转载请注明来源,谢谢) 一、神经网络的表示 复习一下神经网络的表示,其主要是将单层...

4094
来自专栏YG小书屋

tensorflow cnn常用函数解析

tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None) ...

702
来自专栏量化投资与机器学习

深度学习Matlab工具箱代码注释之cnntrain.m

%%========================================================================= %...

1868
来自专栏ml

关于BP网络的一些总结

背景      前段时间,用过一些模型如vgg,lexnet,用于做监督学习训练,顺带深入的学习了一下相关模型的结构&原理,对于它的反向传播算法记忆比较深刻, ...

3297
来自专栏顶级程序员

从熵概念到决策树算法

信息熵是将熵的理论应用于信息混乱度的描述,在随机变量中可以描述随机变量不确定性的程度,在机器学习的样本集合中,可以用于描述样本集合的纯度。

883

扫码关注云+社区