纪念我第一个博客的碎碎念
先前我花了四五个月的业余时间学习了Ng的机器学习公开课,学习的过程中我就在想,如果我能把这个课程啃完,就开始写一些博客,把自己的所得记录下来,现在是实现的时候了。也如刘未鹏的《暗时间》里所说,哪怕更新频率很低,也应该坚持(从现在开始)写博客,记录有价值的东西(思考的产物),好处多多。我没有大神的气场,只是觉得,就算没人看,作为自己的备忘也不错,侥幸能坚持很久的话,日积月累下也会非常赏心悦目。
为了完成这个课程,我捡回了概率和线代以及统计学的知识,英语对我而言也从一门符号学真正地变成了一门语言,虽然我现在的英语水平还是不怎么样,但是我真正意识到了它的重要性,现在英语对我是有吸引力的,我想要接触和学习它,而不是先前那样我对它有一种先入为主的排斥感。
对我来说学习过程中仅有讲义和授课视频还是不够的,为了寻找更多的资料,我先是找到张雨石的公开课笔记,在惊叹与佩服中学习着,然后在一次无意中点开了他的其他文章,阅读着他平稳中带着精彩的经历,发现这么厉害一个人也在佩服着其他人,也在不断地学习、思考、进步着,那可真是一山更比一山高,这或许也正是他们出色的原因。
在开始这个课程的学习的同时,我也开始在阅读一些使心智变成熟与时间管理这样的书,而在张雨石一年又一年的书单中,我记下了我打算看的书的名字并标上了星级,其中我对《暗时间》这本书的名字十分感兴趣,立刻就下载来看了,结果确实不失所望,作者刘未鹏也是一个非常棒的人,他的个人经历、一些方法论以及后面的对一些实在的算法的分析解读,都让我看得非常开心和佩服,而看完这本《暗时间》之后,我的书单又加长了一些…并且不出所料,他也有比较推崇的人,是一位博客名前缀为g9的大大,而在搜到g9大大的博客,看到“负暄琐话”4个字和他给出的需要解码的email,以及他数量众多的博客之后,我再次窃喜:又是一位牛大啊…
这个课程的意义于我而言不仅仅是获得了课程中的知识那么简单。我仿佛因此打开了许多大门:我不再排斥英语,我开始阅读,我开始思考自身,我主动地学习,我透过博客与书籍接触到了很棒很有趣的人,并为之感到欢喜。我希望自己能够走近他们,最终成为他们之中的一员。
前言
首先是CS229这个课程的安排:http://cs229.stanford.edu/schedule.html
课程分为4个部分,分别是监督学习、学习理论、无监督学习、强化学习与控制。
以及课程资料:http://cs229.stanford.edu/materials.html
资料中包含了课程讲义(相当于课本),作业及解答,复习资料(这里的复习资料指的是此课程所需要的预备知识,包括贯穿全部的线性代数、概率论,SVM部分需要的凸优化知识,还有高斯进程,隐马尔科夫模型),与一些追加材料,大概是一些算法应用的例子和一些要注意的东西。
其中我想在一开始就说明的是,强化学习与控制部分是最后5个教学视频里的内容,但奇怪的是这个部分的讲义却只有一份,对应着第16个视频的内容,仅是马尔科夫过程的简介,往后4个视频里讲解的内容都没有讲义了,我在网上没找到这部分的讲义,后来我小心翼翼地写了一份邮件想要发到上面网页中提供的邮箱请他们把后面的讲义发给我,奈何在翻了墙和换了邮箱的情况下,邮件还是被退回,只好作罢。(求后面的讲义啊…)
接下来是网易公开课的视频:http://open.163.com/special/opencourse/machinelearning.html
这个课程有中文字幕,等于在听老师讲课。这个网页里打包好的课件中讲义、作业与解答是全的,复习资料少了三个,没有追加材料,如果要下载,建议把这个资料包下了,缺的又觉得有必要看的,再到CS229官网去下。
除了课本与授课老师之外,支撑着我完成已有讲义的学习的,还有这两份参考书,两份笔记都与讲义与授课内容高度统一,各有特点
张雨石的机器学习笔记专栏:http://blog.csdn.net/column/details/ml-ng-record.html
这份笔记注重授课内容的复述,可以看成是授课内容的文字版
还有这位JerryLead:http://www.cnblogs.com/jerrylead/default.html?page=3
这份笔记的突出之处在于这里有笔者自己的思考(比如对一些看似很自然的地方提出疑问或者把一些微妙的断点补上)与更高的完成度(Ng有时候会因为时间原因或者课程安排而没有把一些内容说满,这里完成了不少这样的内容)
他们都是我难望项背的人,这两份笔记也都给了我很大的帮助,放在这里没用对比优劣的意思,只是想把这些都记录下来。
1、线性回归(Linear Regression)
1.1、线性回归模型与解决方案
考虑下面的情况,这里给了一个房屋面积和价格的数据表:
并画出其数据:
这时候我们如何预测其他不同面积的房屋的价格?
方案是利用图中的点集拟合出一条合理的曲线(这个问题里拟合一条直线),然后用这条曲线预测新来的房屋的价格。
使用线性回归解决的话,h(Hypothesis)假设函数如下:
hθ(x)=θ0+θ1x1=∑i=01θixi(1)
hθ(x) 表示函数
h 以
θ 为参数,有时候为了简略也会写成
h(x) 。对于一般的问题,如特征不只有房屋面积,还有卧室个数、卫生间个数、大厅个数等n个特征的情况下,有如下公式:
hθ(x)=∑i=0nθixi=θTx(2)
最后边的公式里参数
θ 和输入
x 都被视为向量,即
θT=[θ0θ1⋯θn] ,
x=⎡⎣⎢⎢⎢⎢x0x1⋮xn⎤⎦⎥⎥⎥⎥
下面引出要优化的目标函数,同时它也是最小二乘法(Least squears)的成本函数(Cost function):
J(θ)=12∑i=1m(hθ(x(i))−y(i))2(3)
在上式中,
12 会在求导的过程中被消去,只是为了让式子变得好看点,对直线的拟合工作不产生实际影响。
x 与
y 括号里的上标
(i) 表示数据集里的第
i 个样本里的数据,如果把数据集里第一行的数据视为第一个样本,第二行数据视为第二个样本,以此类推,则
x(1)=2104 ,
y(1)=400 ,
x(2)=1600 ,
y(2)=330 ,……
hθ(x) 表示利用拟合出来的直线得到的房屋价格的预测值,
y 表示房屋价格的实际值,对这个成本函数的直观理解就是——每个房屋的预测值与实际值之差的平方和。
我们的目标 ⟹ 找到一条直线预测新来的房屋价格
怎么画这条直线 ⟹ 参数 θ 决定
怎么对 θ 取值使预测结果尽量准确 ⟹ 最小化 J(θ) ,使每一个房屋的预测值与实际值之差的平方和最小,即误差最小
这样我们的目标就已经转移到了 minJ(θ) 。
1.2、方案可靠性研究——最小二乘的概率解释
这里有个问题,既然是要让误差最小,为什么不是计算预测值与实际值之差的绝对值 ∣∣hθ(x(i))−y(i)∣∣ 之和呢?
一个是因为比较难算,还有一个就是因为这里有个对 J(θ) 的概率解释。
首先,让我们承认误差的存在,当预测值加上一个误差时,才能得到实际值:
y(i)=hθ(x(i))+ϵ(i)=θTx(i)+ϵ(i)(4)
第二,我们假设误差
ϵ 服从正态分布(Normal distribution),也称为高斯分布(Gaussian distribution):
ϵ(i) ~
N(0,σ2)
误差服从正态分布这个假设有两个原因,一个是影响误差的因素有很多,这些因素都是随机分布的,但是它们在整体上会趋向于正态分布,另一个是因为在把误差假设为服从正态分布后,相应的工作一般都能取得比较好的效果,虽然它们还是没有非常精确,但是已经足够了。
通过这个假设以及正态分布的公式
f(x)=12π√σexp(−(x−μ)22σ2) ,我们可以得到
ϵ(i) 的概率密度:
p(ϵ(i))=12π−−√σexp(−(ϵ(i)−0)22σ2)=12π−−√σexp(−(ϵ(i))22σ2)(5)
再把(4)式代进来,我们可以得到:
p(y(i)∣x(i);θ)=12π−−√σexp(−(y(i)−θTx(i))22σ2)(6)
p(y(i)∣x(i);θ) 可以读作“给定参数
θ 时,在
x(i) 发生了的情况下,
y(i) 发生的概率是多少”。注意里面的分号,分号是用来区别条件与参数的,如果把分号改成了逗号,如
p(y(i)∣x(i),θ) ,此时就应该读作“在
θ 与
x(i) 同时发生的情况下,
y(i) 发生的概率是多少”
第三,假设
ϵ(i) 是独立同分布(Independent and identical distribution)随机变量,这样我们就可以引出似然函数(Likelihood function):
L(θ)=L(θ;X,y⃗ )=p(y⃗ ∣X;θ)=∏i=1mp(y(i)∣x(i);θ)=∏i=1m12π−−√σexp(−(y(i)−θTx(i))22σ2)(7)
y⃗ 是实际值集合的向量,
X 是特征的集合,m是样本的数量:
y⃗ =[y(1)y(2)⋯y(m)](8)
X=⎡⎣⎢⎢⎢⎢⎢⎢⎢x(1)0x(2)0⋮x(m)0x(1)1x(2)1⋮x(m)1⋯⋯⋱⋯x(1)nx(2)n⋮x(m)n⎤⎦⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢—(x(1))T——(x(2))T—⋮—(x(m))T—⎤⎦⎥⎥⎥⎥⎥(9)
我们回过头来看
L(θ)=L(θ;X,y⃗ ) 这个式子的含义,我读作“
X 和
y⃗ 被观测到时,参数为
θ 的概率是多少“,它与
p(y⃗ ∣X;θ) 所描述的是同一件事情,只是换了个角度来描述而已。
在这个表达下,
X 和
y⃗ 都是常量,表示被观测到的值,比如一开始就提供的房屋面积与相应价格的数据表,同时参数
θ 成为了变量,即在观测到
X 和
y⃗ 的前提下,每一个
θ 都有一个相对应的概率值。
举个例子:有两个箱子,甲箱里有99个白球1个黑球,乙箱里有1个白球99个黑球。参数 θ 是箱子里黑白球的配置比例, X 是摸球这件事, y⃗ 是指摸到白球。
概率的问法是:从箱子里摸出白球的概率是多少?
答: p(y⃗ ∣X;θ甲)=0.99 , p(y⃗ ∣X;θ乙)=0.01
用似然性的问法是:摸出来一个白球,猜是从哪个箱子里摸出来的?
答:甲箱。为什么?因为甲箱里摸到白球的概率更大。
现在,在 X 和 y⃗ 被观测到的情况下(摸到白球),猜是从哪条由 θ 画出来的直线上观测到的(哪个箱子)?选择使 X 和 y⃗ 出现的概率最大的那个 θ ,这也是最大似然估计(Maximum likelihood)的原则。
所以接下来的工作是对 L(θ) 求最大值,同时为了计算方便,我们选择最大化单调递增的 logL(θ) :
l(θ)=logL(θ)=log∏i=1m12π−−√σexp(−(y(i)−θTx(i))22σ2)=∑i=1mlog12π−−√σexp(−(y(i)−θTx(i))22σ2)=∑i=1m[log12π−−√σ+logexp(−(y(i)−θTx(i))22σ2)]=mlog12π−−√σ−1σ2⋅12∑i=1m(y(i)−θTx(i))2(10)
因为(10)式左边是常数,右边有负号的关系,最大化 l(θ) 就是最小化 12(y(i)−θTx(i))2 ,也就是第一节中提到的 minJ(θ) 。当 J(θ) 最小时, L(θ) 的概率最大,即我们观测到的数据出现的概率最大,取这个时候的参数 θ ,即可画出一条最合理的直线用于预测。
下面提供两种求解最小二乘参数 θ 的方法,一种是梯度下降,另一种是最小二乘的正规方程。
1.3、最小二乘解法一——梯度下降(Gradient descent)
对于梯度下降,Ng在课上给了一个比喻:想象你正站在一个山坡上,你环顾四周,找到一个坡度最陡的方向,往那个方向走一步,然后再往坡度最陡的方向走出相同长度的一步,当你用同样的方式走了很多步的时候,你最终会到达一个最低点。
这里有两个地方需要注意,第一,这个方法让你走到的不一定是整座山的最低点,可能是某个山洼,即局部最小,对初始值敏感;第二,因为步长的关系,你可能会在最低点附近徘徊,注意调整步长。
所以梯度下降是一个需要进行迭代的,求局部最小值的一个算法。下面直接给出迭代规则:
θj:=θj−α∂∂θjJ(θ)(11)
把
J(θ) 带入并求
θj 的偏导数即可得到更新规则,
:= 在这里表示赋值,当只有一个样本的时候,更新规则如下:
∂∂θjJ(θ)=∂∂θj12(hθ(x)−y)2=2⋅12(hθ(x)−y)⋅∂∂θj(hθ(x)−y)=(hθ(x)−y)⋅∂∂θj(∑i=0nθixi−y)=(hθ(x)−y)⋅∂∂θj(θ0x0+θ1x1+⋯+θjxj+⋯−y)=(hθ(x)−y)xj(12)
带入(11),得到:
θj:=θj−α(hθ(x(i))−y(i))xj=θj+α(y(i)−hθ(x(i)))xj(13)
每做一次求导都表示找到了当前位置梯度最陡的方向,
α 代表学习速率,即步长,下山的时候每一步跨出的长度。下面提供两种具体的实施方式。
一种叫做批量梯度下降(Batch gradient descent),重复如下操作直至收敛:
θj:=θj+α∑i=1m(y(i)−hθ(x(i)))xj(14)
每一次迭代都需要把所有的样本(共m个)取到,把每一个样本的真实值减去预测值,再把这个差值乘上该样本的第i个特征。重复迭代p次之后收敛了(当两次迭代的值几乎不发生变化时,可判断收敛),获得了参数之一(如
θ0 ),然后又重复如上步骤获得
θ1 、
θ2 、……
θn ,最后取得最终的参数向量
θ ,去画出我们的预测直线。
还有一种方法叫做随机梯度下降(Stochastic gradient descent),不断地随机取值,使其一直循环:
θj:=θj+α(y(i)−hθ(x(i)))xj(15)
没错这跟公式(13)是同个公式。随机梯度下降会很快接近最小值但是很难真正收敛,会在最小值附近震荡,它在实际应用中效果不错,在数据量很大的时候,比起批量梯度下降,更喜欢用到它。
1.4、最小二乘解法二——正规方程组(The normal equations)
上面提到梯度下降是一个需要进行迭代的,求局部最小值的一个算法。
相反的,正规方程组是一个不需要进行迭代的,利用观测到的全部数据直接计算出全局最小值的方法。
由公式(8)和公式(9)(这是被观测到的所有数据)可以得到:
XTθ−y⃗ =⎡⎣⎢⎢⎢(x(1))Tθ⋮(x(m))Tθ⎤⎦⎥⎥⎥−⎡⎣⎢⎢y(1)⋮y(m)⎤⎦⎥⎥=⎡⎣⎢⎢⎢(x(1))Tθ−y(1)⋮(x(m))Tθ−y(m)⎤⎦⎥⎥⎥(16)
这里有一个公理,对于向量
z ,有
zTz=∑iz2i ,又因为上式是一个向量,有:
12(Xθ−y⃗ )T(Xθ−y⃗ )=12∑i=1m(hθ(x(i))−y(i))2=J(θ)(17)
由上面可知
J(θ) 是一个常量,同时
∇θ 表示对
θ 求偏导数,
trA=∑ni=1Aii ,下面开始对正规方程组求解:
∇θJ(θ)=∇θtrJ(θ)=∇θtr12(Xθ−y⃗ )T(Xθ−y⃗ )=∇θtr12(θTXT−y⃗ T)(Xθ−y⃗ )=12∇θtr(θTXTXθ−θTXTy⃗ −y⃗ Xθ+y⃗ Ty⃗ )=12∇θtr[(θTXTXθ−(θTXTy⃗ )T−y⃗ Xθ]=12∇θtr(θTXTXθ)−∇θtry⃗ Xθ=12(XTXθ+XTXθ)−XTy⃗ =XTXθ−XTy⃗ (18)
第一行
tra=a ;第二行带入;第三行求括号内转置;第四行打开;第五行去掉与
θ 无关的
y⃗ Ty⃗ ,并因为
θTXTy⃗ 是常数,有
aT=a ;第六行把
12∇θtr 乘进去;第七行左边多项式利用公
∇ATtrABATC=BTATCT+BATC ,并令
AT=θ ,
B=BT=XTX ,
C=I ;第七行右边多项式利用
trAB=trBA 与
∇AtrAB=BT ;第八步结束。
得到结果后另倒数为0,有:
XTXθ=XTy⃗ ⟹θ=(XTX)−1XTy⃗ (19)
这样,我们就利用所有的数据计算出了参数
θ 。这就是最小二乘正规方程组的解法。
顺便给出一个拟合完成的图:
1.5、局部加权线性回归(Locally weighted linear regression)
局部加权线性回归是线性模型的扩展,目的是解决对不规则函数进行回归时容易出现的欠拟合与过拟合问题,如下图所示:
如果仍然直接使用线性模型,如左图,可以看到会出现较大的误差,称为欠拟合;如果直接拟合一条高次曲线,如右图,尽管能做到非常好的拟合,但是却因为模型太复杂而很容易出现过拟合的情况。
局部加权线性回归选择和预测点相近的点来做线性回归,通过加权的方式来忽略远处的点对预测的影响,一点一点地画直线的方式,近似地达到右图的效果。它的目标函数是加权的最小二乘:
J(θ)=12∑i=1mw(i)(hθ(x(i))−y(i))2(20)
权值
w(i) 要达到的效果是,离预测点越近的点权重越大,离预测点越远的点权重越小。下面是一个常用的函数:
w(i)=exp(−(x(i)−x)22τ2)(21)
在这里,它是这么一个指数函数:
w(i)=e−t ,其中
t=(x(i)−x)2 ,该指数函数图像如下图:
x(i) 是样本点,
x 是预测点,这两个点离得越近,
t=(x(i)−x)2 越小,
w 的值就越大(因为
t=(x(i)−x)2≥0 ,故
w 满权重为1);两个点离得越远,
t=(x(i)−x)2 越大,
w 的值就会越逼近0,那么这个样本点在拟合直线时几乎就不起作用,乃至被忽略。
原式中 τ 是衰减速率, τ 越大衰减越慢, τ 越小衰减越快。式(21)跟正态分布长的很像,但是两者之间没有关系,只要能达到越远的点越被忽略这个效果, w 也可以是另外的式子。
整个算法有点微分的意思,x轴上的每个点都根据附近的样本点画出了一条尽可能小的曲线,当这些曲线连接起来的时候,就达到了上面右图中的效果。
但是相应的,每次预测时都需要调用所有的样本来拟合那段曲线,否则它是不知道哪些点会对它的拟合产生实质性影响的,所以在数据量巨大的时候,它的代价会非常高。
2、logistic回归(Logistic regression)
2.1、logistic回归模型
logistic回归也称为逻辑回归,与线性回归这样输出是连续的、具体的值(如具体房价123万元)不同,逻辑回归的输出是0~1之间的概率,但可以把它理解成回答“是”或者“否”(即离散的二分类)的问题。回答“是”可以用标签“1”表示,回答“否”可以用标签“0”表示。
比如,逻辑回归的输出是“某人生病的概率是多少”,我们可以进一步理解成“某人是否生病了”。设置一个阈值如0.5,如果输出的是“某人生病的概率是0.2”,那么我们可以判断“此人没有生病”(贴上标签“0”)。
下面直接给出其假设:
hθ(x)=g(θTx)=11+e−θTx(22)
其中:
g(z)=11+e−z(23)
这个函数被称为逻辑函数(Logistic function)或者是S形函数(Sigmoid function),它是由伯努利分布通过广义线性模型求解得到的,不是凭空捏造的。下面是它的函数图像:
可以看到
z 在0附近比较敏感,当
z>>0 s时它的输出很接近1,当
z<<0 s时它的输出很接近0。这样我们在确定参数
θ 之后,就可以对新到来的数据进行预测(分类)了。
同时直接给出其求导结果:
g′(z)=g(z)(1−g(z))(24)
2.2、logistic回归解决方案
到了这里,怎么才能得到参数 θ ?
其实这跟求解上面的线性回归问题是同样的套路,前后改变了的地方只有 P 不同,而概率 P 不一样是因为模型不一样(一个高斯分布一个两点分布),所以计算概率的方式也不一样,前后求解的思路都是一样的。就连具体处理方式都是类似的梯度法,就像线性回归是让你计算 29+36 ,逻辑回归是让你计算 57+28 ,同样是计算一个加法算式,区别只在具体相加的数字的变化,没有本质的不同。
线性回归中用概率解释了最小二乘成本函数的由来,这里也用概率来得出我们要优化的目标函数,然后通过最大似然估计来求解 θ 。
让我们做出如下假设,这实际上是一个伯努利分布(Bernoulli distribution),也称为两点分布:
P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1−hθ(x)(25)
这两个式子可以写在一起:
p(y∣x;θ)=(hθ(x))y(1−hθ(x))1−y(26)
当
y=1 ,式(26)是式(25)的第一个式子;当
y=0 ,式(26)是式(25)的第二个式子。
有了概率我们就能得到似然函数,并且为了计算方便这里同样取log:
l(θ)=logL(θ)=logp(y⃗ ∣X;θ)=log∏i=1mp(y(i)∣x(i);θ)=log∏i=1m(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)=∑i=1my(i)loghθ(x(i))+(1−y(i))(1−hθ(x(i)))(27)
这里,我们就有了目标函数
l(θ) 即
J(θ) ,当它的概率最大的时候,其对应的
θ 就是我们所寻求的参数。
2.3、具体求解方法:梯度上升(Gradient ascent)
在上面线性回归中,我们对 J(θ) 提出了两种解法,一种是梯度下降,另一种是正规方程组。类似地,我们这里使用梯度上升,迭代规则为 θ:=θ+α∇θl(θ) 。注意这里是加号不是减号。
为什么上面用梯度下降这里用梯度上升?因为线性回归中式(10)它最大化的目标项 12 之前有一个负号,为了把这个负号去掉,转而去求没有负号的目标项的最小值,故而采用了梯度下降,在式(27)中没有负号的问题,就使用了梯度上升。它们的本质都是在使似然函数 l(θ) 最大化。
下面直接给出一个样本下求导后的结果:
∇θl(θ)=(y−hθ(x))xj(28)
相应的迭代规则就是:
θj:=θj+α(y(i)−hθ(x(i)))xj(29)
没错它跟式(13)长得一模一样,但是要注意的是,因为
hθ(x) 不一样,所以实际上它们是两个不同的算法,只是迭代规则一样而已,这几乎是一种通用的规则。同样的,我想在真正训练的时候,也是可以使用批量或随机梯度法的。
2.4、感知器算法(The perceptron learning algorithm)
逻辑回归通过输出0~1的概率值,拐了个弯来做分类,感知器算法则直接输出0或1的离散值,下面是其假设:
hθ(x)=g(θTx)={01if(θT>0)otherwish(30)
通过式(29)同样的迭代,即可得到感知器算法。感知器算法是神经网络的基础,它会被作为分析的起点。
2.5、牛顿方法(Newton’s method)
在这里提出牛顿方法是因为它跟梯度法一样,可以用来求解最大化似然函数 l(θ) 的问题,而且往往牛顿法的收敛速度更快。
牛顿方法本身是一个求解多项式实根的迭代法,如 f(x)=4x3+2x2+x+1 是一个难解的高次多项式,如果要求其 f(x)=0 的实根,牛顿法是一个不错的选择。下面配图以说明牛顿法的思想:
随机初始化一个值,此处令
θ(0)=4.5 为初始值,在
f(θ(0)) 处做一条切线与
x 轴相交,令该切线与
x 轴的交点为
θ(0) 的迭代值,此处为
θ(1)=2.8 ,在
f(θ(1)) 处再做切线,再取该切线与
x 轴的交点做迭代,直到
f(θ(n))=0 ,该
θ(n) 即为
f(θ) 的实根。
下面推导其迭代规则:令 Δ=θ(0)−θ(1) ,我们可以得到 f(θ) 在 θ(0) 处切线的斜率为 f′(θ(0))=f(θ(0))Δ ,由此可以得到 Δ=f(θ(0))f′(θ(0)) ,从而有 θ(1)=θ(0)−Δ=θ(0)−f(θ(0))f′(θ(0)) ,化为更一般的情况我们就有了迭代规则:
θ(n+1)=θ(n)−f(θ(n))f′(θ(n))(31)
那么我们如何把牛顿法应用在最大化
l(θ) 的问题上呢?
上面我们说到,牛顿法是用来求解
f(θ)=0 的解的,相对应的,我们原来是如何使
l(θ) 最大化的?
之前的方法都是对
l(θ) 求导并使其导数为0,即“
l′(θ)=0 ”。
所以我们只要令
f(θ)=l′(θ) ,并求解出
θ ,即可使
l′(θ) 最大化。此时的迭代规则为:
θ(n+1)=θ(n)−l′(θ)(n)l′′(θ)(n)(32)
上面是
θ 是实数的情况,当
θ 是向量时,迭代规则如下:
θ(n+1)=θ(n)−H−1∇θl(θ)(33)
其中
H 是函数
l(θ) 的二次导数矩阵,被称为
Hessian 矩阵,矩阵中每一个元素的值为:
Hij=∂2l(θ)∂θi∂θj(34)
H 是一个
n∗n 矩阵,
n 是向量参数
θ 的长度。
牛顿法相比起梯度往往法收敛速度更快,特别是迭代值距离收敛值比较近的时候,每次迭代都能使误差变成原来的平方,但是在高维时矩阵
H 的逆计算会非常耗时。
3、广义线性模型(Generalized Linear Models)
3.1、构造广义线性模型
上面我们已经看到了一个线性回归的例子,和一个逻辑回归分类的例子,这两个例子都是由广义线性模型推导出来的。接下来我们就从广义线性模型的假设开始,把这两个模型推导出来。下面是GLM的三个假设:
- y∣x;θ ~ ExponentialFamily(η) :固定参数 θ ,在给定 x 的情况下, y 服从指数分布族(The exponential family)中以 η 为参数的某个分布。
- 给定一个 x ,我们需要的目标函数为 hθ(x)=E[T(y)∣x;θ] ,后者为该分布的期望。
- 令 η=θTx 。
其中,所有可以表示成如下形式的概率分布,都属于指数分布族:
p(y;η)=b(y)exp(ηTT(y)−a(η))(35)
在式(35)中,
η 成为分布的自然参数(Nature parameter);
T(y) 是充分统计量(Sufficient statistic),通常情况下
T(y)=y 。当参数a、b、T都固定的时候,久定义了一个以
η 为参数的函数族。
3.2、线性回归模型在广义线性模型下的推导
在上文中我们是通过对高斯分布的概率解释来获得确信的 J(θ) 的,那我们就尝试着将高斯分布放在广义线性模型下推导,看看能做出来什么模型。
首先我们看向第1点,将高斯分布表示成式(35)的形式:
p(y;μ)=12π−−√σexp(−(y−μ)22σ2)=12π−−√σexp(−12y2)⋅exp(μy−12μ2)(36)
其中:
ηT(y)a(η)b(y)=ηT=μ=y=12μ2=12η2=12π−−√σexp(−12y2)(37)
这就正好表示成了式(35)的形式,符合了第1点假设的要求,接下来我们看向第2点,使我们的假设函数等于高斯分布的期望:
hθ(x)=E[T(y)∣x;θ]=E[y∣x;θ]=μ(38)
最后我们看向第3点,令
η=θTx ,又因为我们在式(37)中有
η=μ ,则:
hθ(x)=μ=η=θTx(39)
这就是最开始的式(2)的由来,惊不惊喜,刺不刺激。
3.3、逻辑回归模型在广义线性模型下的推导
逻辑回归的假设里是用到了伯努利分布的,我们同样地将伯努利分布放在广义线性模型下进行推导,看看是不是能得到逻辑回归的 hθ(x) ,如式(22)。
还是从第一点看起,把伯努利分布表示成指数分布族的形式:
p(y;ϕ)=ϕy(1−ϕ)1−y=(elogϕ)y(elog(1−ϕ))1−y=exp(ylogϕ+(1−y)log(1−ϕ))=exp((logϕ1−ϕ)y+log(1−ϕ))