cs229 笔记 1:线性回归

俗话说好记性不如烂笔头,看过的东西很快就会忘了,记录下来一方面会增强记忆,另一方面也方便查阅。这里根据 css229 视频和讲义简单做下笔记。

监督学习

本节定义了一些符号。x(i) 表示输入变量,也可以叫做特征。y(i) 表示输出变量,也可以叫做目标变量。(x(i),y(i)) 表示一个训练样本,上标中的 (**i) ** 表示这是第 i 个样本。因此,对于一个包含 m 个训练样本的训练集,可以表示为如下形式

(1)(x(i),y(i));i=1,,m

所谓监督学习,可以简单描述为:给定一个训练集,通过训练学习到函数 h(x),使得它能够对新的输入 x 得到 “好的” 预测结果 y。这里的 h(x) 叫做 hypothesis

若预测结果是连续的,把这种学习问题称为 回归问题。若预测结果只有少数几个值,则称为 分类问题

线性回归

对于监督学习,首先要考虑的是 hypothesis 的形式,线性回归自然用到的是线性函数。例如预测房价问题,x 是二维向量,其中 x1(i) 表示第 i 个样本的房间面积,x2(i) 表示第 i 个样本的卧室数量,则 h(x) 可表示为如下形式

(2)hθ(x)=θ0+θ1x1+θ2x2

其中 θ 是参数,又叫做权重,它通过线性函数将输入空间 X 映射到输出空间 Y。为方便表示,可引入常量 x0=1

(3)h(x)=i=0nθixi=θTx

这里 θx 均为向量,准确来说是列向量,θT 则是对应的行向量,根据向量乘法将上述公式展开可得到第一个公式

如何求 θ 的值呢?我们的目标是使得预测值尽可能接近实际值,也就是让预测值和实际值之间的距离 |hθ(x)y| 尽可能小,为了方便计算可对其取平方从而去掉绝对值符号,得到 (hθ(x(i))y(i))2。考虑训练集中所有样本,对结果求和。通常为方便计算将上述值除以 2,最终得到如下 损失函数

(4)J(θ)=12i=1m(hθ(x(i))y(i))2

LMS 算法

为了最小化 J(θ),考虑 ** 梯度下降 ** 算法。所谓梯度,其实质是向量,表示函数在该点处的方向导数沿此方向取最大值。梯度下降可以理解为沿梯度的相反方向移动,使得函数值逐渐减小,这样最终可以找到一组参数值,使得函数值取最小值或接近最小值。对于每一个参数 θj,可通过求偏导数 θjJ(θ) 得到其梯度,进而可得到如下更新规则

(5)θj:=θjαθjJ(θ)

其中 α 称为 学习速率,它决定了函数值减小的速度。速率设置较大下降的速度会比较快,但也可能错过最小值;速率设置较小可能会需要比较多的迭代次数下降到最小值

(6)θjJ(θ)=θj12(hθ(x)y)2(7)=212(hθ(x)y)θj(hθ(x)y)(8)=(hθ(x)y)θj(i=0nθixiy)(9)=(hθ(x)y)xj

只考虑一个样本,更新规则如下

(10)θj:=θj+α(y(i)hθ(x(i)))xj(i)

此更新规则叫做 **LMS **(least mean squares) 更新规则,或 Widrow-Hoff learning rule。其中 (y(i)hθ(x(i))) 称为误差项。该规则可以理解为:如果预测值 hθ(x(i)) 接近实际值 y(i),则仅需要对参数做较小的更新,否则需要较大的更新

稍作修改可应用于整个训练集。对于每一个参数 θj,均需要使用 m 个样本数据进行计算。此方法称为 ** 批梯度下降 ** 法 (batch gradient descent)

(11)θj:=θj+αi=1m(y(i)hθ(x(i)))xj(i)

批梯度下降每次迭代需要对样本集中的所有样本进行计算,当样本集比较大时,计算量也会相应的变得比较大,甚至难以实现。此时可使用 ** 随机梯度下降 **(stochastic gradient descent),每次迭代随机选取一个样本进行训练。使用随机梯度下降可以快速收敛到接近最小值,通常是在最小值附近波动。当样本集非常大时通常选用随机梯度下降法

概率解释

为什么选用 least-squares 损失函数作为线性回归的损失函数?实际上,在做出几个概率假设的条件下,可以很容易推导出该损失函数

假设输出变量和输入变量之间的关系可以用如下公式表示

(12)y(i)=θTx(i)+ϵ(i)

其中 ϵ(i) 表示误差项。假定它符合独立同分布,即 IID(independently and identically distributed),进一步假设其服从高斯分布 (正态分布),即 ϵ(i)N(0,σ2),则它的概率密度可表示为

(13)p(ϵ(i))=12πσexp((ϵ(i))22σ2)

可以得到

(14)p(y(i)|x(i);θ)=12πσexp((y(i)θTx(i))22σ2)

其中 p(y(i)|x(i);θ) 表示在条件 x(i)y(i) 的概率分布,它以 θ 为参数,注意公式里面是分号

似然函数 likelihood function

(15)L(θ)=L(θ;X,y)=p(y|X;θ)

根据独立同分布假设

(16)L(θ)=i=1mp(y(i)|x(i);θ)(17)=i=1m12πσexp((y(i)θTx(i))22σ2)

根据最大似然法,求出使 L(θ) 最大化时的 θ。为方便计算,可改为使对数似然函数最大化

(18)l(θ)=logL(θ)(19)=logi=1m12πσexp((y(i)θTx(i))22σ2)(20)=i=1mlog12πσexp((y(i)θTx(i))22σ2)(21)=mlog12πσ1σ212i=1m(y(i)θTx(i))2

若要使其最大化,只需要使第二项最小化,也就是使下式最小化。这就是 J(θ),即最小二乘损失函数 (least-squares cost function)。需要注意的是, θ 的取值不依赖于 σ2,更进一步,即使 σ2 是未知的我们也可以得到相同的结果

(22)12i=1m(y(i)θTx(i))2

局部加权线性回归

在原始的线性回归算法中,我们的目标是找到 θ 的取值,使得 (y(i)θTx(i))2 最小化。

LWR (Locally weighted linear regression) 算法中,目标是使如下式子最小化

(23)w(i)(y(i)θTx(i))2

其中 w(i) 是非负的,叫做权重。如果它的取值比较小,则误差项对结果的影响也会比较小,否则会有较大影响。一个比较通用的权重公式是

(24)w(i)=exp((x(i)x)22τ2)

这里权重的大小依赖于 x 的选择,如果 |x(i)x| 的值非常小,那么权重 w(i) 的取值就接近 1,否则权重的值就非常小 (接近 0)。注意 w(i) 不是随机变量

参数 τ 叫做 bandwidth 参数,可以理解为有效值的范围,超出一定范围后误差项对结果的影响大小下降的很快

LWR 是非参数化学习算法。所谓参数化 (parametric) 学习算法,即训练出算法的参数后,可以使用算法对新的输入进行结果预测,不需要保留训练集,比如原始的线性回归算法。非参数化 (non-parametric) 学习算法刚好相反,需始终保留训练集