纪念我第一个博客的碎碎念
先前我花了四五个月的业余时间学习了Ng的机器学习公开课,学习的过程中我就在想,如果我能把这个课程啃完,就开始写一些博客,把自己的所得记录下来,现在是实现的时候了。也如刘未鹏的《暗时间》里所说,哪怕更新频率很低,也应该坚持(从现在开始)写博客,记录有价值的东西(思考的产物),好处多多。我没有大神的气场,只是觉得,就算没人看,作为自己的备忘也不错,侥幸能坚持很久的话,日积月累下也会非常赏心悦目。
为了完成这个课程,我捡回了概率和线代以及统计学的知识,英语对我而言也从一门符号学真正地变成了一门语言,虽然我现在的英语水平还是不怎么样,但是我真正意识到了它的重要性,现在英语对我是有吸引力的,我想要接触和学习它,而不是先前那样我对它有一种先入为主的排斥感。
对我来说学习过程中仅有讲义和授课视频还是不够的,为了寻找更多的资料,我先是找到张雨石的公开课笔记,在惊叹与佩服中学习着,然后在一次无意中点开了他的其他文章,阅读着他平稳中带着精彩的经历,发现这么厉害一个人也在佩服着其他人,也在不断地学习、思考、进步着,那可真是一山更比一山高,这或许也正是他们出色的原因。
在开始这个课程的学习的同时,我也开始在阅读一些使心智变成熟与时间管理这样的书,而在张雨石一年又一年的书单中,我记下了我打算看的书的名字并标上了星级,其中我对《暗时间》这本书的名字十分感兴趣,立刻就下载来看了,结果确实不失所望,作者刘未鹏也是一个非常棒的人,他的个人经历、一些方法论以及后面的对一些实在的算法的分析解读,都让我看得非常开心和佩服,而看完这本《暗时间》之后,我的书单又加长了一些…并且不出所料,他也有比较推崇的人,是一位博客名前缀为g9的大大,而在搜到g9大大的博客,看到“负暄琐话”4个字和他给出的需要解码的email,以及他数量众多的博客之后,我再次窃喜:又是一位牛大啊…
这个课程的意义于我而言不仅仅是获得了课程中的知识那么简单。我仿佛因此打开了许多大门:我不再排斥英语,我开始阅读,我开始思考自身,我主动地学习,我透过博客与书籍接触到了很棒很有趣的人,并为之感到欢喜。我希望自己能够走近他们,最终成为他们之中的一员。
前言
首先是CS229这个课程的安排:http://cs229.stanford.edu/schedule.html
课程分为4个部分,分别是监督学习、学习理论、无监督学习、强化学习与控制。
以及课程资料:http://cs229.stanford.edu/materials.html
资料中包含了课程讲义(相当于课本),作业及解答,复习资料(这里的复习资料指的是此课程所需要的预备知识,包括贯穿全部的线性代数、概率论,SVM部分需要的凸优化知识,还有高斯进程,隐马尔科夫模型),与一些追加材料,大概是一些算法应用的例子和一些要注意的东西。
其中我想在一开始就说明的是,强化学习与控制部分是最后5个教学视频里的内容,但奇怪的是这个部分的讲义却只有一份,对应着第16个视频的内容,仅是马尔科夫过程的简介,往后4个视频里讲解的内容都没有讲义了,我在网上没找到这部分的讲义,后来我小心翼翼地写了一份邮件想要发到上面网页中提供的邮箱请他们把后面的讲义发给我,奈何在翻了墙和换了邮箱的情况下,邮件还是被退回,只好作罢。(求后面的讲义啊…)
接下来是网易公开课的视频:/special/opencourse/machinelearning.html
这个课程有中文字幕,等于在听老师讲课。这个网页里打包好的课件中讲义、作业与解答是全的,复习资料少了三个,没有追加材料,如果要下载,建议把这个资料包下了,缺的又觉得有必要看的,再到CS229官网去下。
除了课本与授课老师之外,支撑着我完成已有讲义的学习的,还有这两份参考书,两份笔记都与讲义与授课内容高度统一,各有特点
张雨石的机器学习笔记专栏:/column/details/ml-ng-record.html
这份笔记注重授课内容的复述,可以看成是授课内容的文字版
还有这位JerryLead:/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)=∑i=0nθixi=θTx(2)
最后边的公式里参数θ和输入x都被视为向量,即
下面引出要优化的目标函数,同时它也是最小二乘法(Least squears)的成本函数(Cost function):
J(θ)=12∑i=1m(hθ(x(i))−y(i))2(3)
在上式中,12会在求导的过程中被消去,只是为了让式子变得好看点,对直线的拟合工作不产生实际影响。
x与
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是样本的数量:
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和
在这个表达下,X和
举个例子:有两个箱子,甲箱里有99个白球1个黑球,乙箱里有1个白球99个黑球。参数θ是箱子里黑白球的配置比例,X是摸球这件事,
概率的问法是:从箱子里摸出白球的概率是多少?
答:p(y⃗∣X;θ甲)=0.99,p(y⃗∣X;θ乙)=0.01
用似然性的问法是:摸出来一个白球,猜是从哪个箱子里摸出来的?
答:甲箱。为什么?因为甲箱里摸到白球的概率更大。
现在,在X和
所以接下来的工作是对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,有
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是预测点,这两个点离得越近,
原式中
整个算法有点微分的意思,x轴上的每个点都根据附近的样本点画出了一条尽可能小的曲线,当这些曲线连接起来的时候,就达到了上面右图中的效果。
但是相应的,每次预测时都需要调用所有的样本来拟合那段曲线,否则它是不知道哪些点会对它的拟合产生实质性影响的,所以在数据量巨大的时候,它的代价会非常高。
2、logistic回归(Logistic regression)
2.1、logistic回归模型
logistic回归也称为逻辑回归,与线性回归这样输出是连续的、具体的值(如具体房价123万元)不同,逻辑回归的输出是0~1之间的概率,但可以把它理解成回答“是”或者“否”(即离散的二分类)的问题。回答“是”可以用标签“1”表示,回答“否”可以用标签“0”表示。
比如,逻辑回归的输出是“某人生病的概率是多少”,我们可以进一步理解成“某人是否生病了”。设置一个阈值如0.5,如果输出的是“某人生病的概率是0.2”,那么我们可以判断“此人没有生病”(贴上标签“0”)。
下面直接给出其假设:
其中:
g(z)=11+e−z(23)
这个函数被称为逻辑函数(Logistic function)或者是S形函数(Sigmoid function),它是由伯努利分布通过广义线性模型求解得到的,不是凭空捏造的。下面是它的函数图像:
可以看到z在0附近比较敏感,当
同时直接给出其求导结果:
g′(z)=g(z)(1−g(z))(24)
2.2、logistic回归解决方案
到了这里,怎么才能得到参数θ?
其实这跟求解上面的线性回归问题是同样的套路,前后改变了的地方只有P不同,而概率
线性回归中用概率解释了最小二乘成本函数的由来,这里也用概率来得出我们要优化的目标函数,然后通过最大似然估计来求解θ。
让我们做出如下假设,这实际上是一个伯努利分布(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轴相交,令该切线与
下面推导其迭代规则:令Δ=θ(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是函数
Hij=∂2l(θ)∂θi∂θj(34)
H是一个
牛顿法相比起梯度往往法收敛速度更快,特别是迭代值距离收敛值比较近的时候,每次迭代都能使误差变成原来的平方,但是在高维时矩阵H的逆计算会非常耗时。
3、广义线性模型(Generalized Linear Models)
3.1、构造广义线性模型
上面我们已经看到了一个线性回归的例子,和一个逻辑回归分类的例子,这两个例子都是由广义线性模型推导出来的。接下来我们就从广义线性模型的假设开始,把这两个模型推导出来。下面是GLM的三个假设:
其中,所有可以表示成如下形式的概率分布,都属于指数分布族:
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−ϕ))(40)
相应的参数为:
ηT(y)a(η)b(y)=logϕ1−ϕ⟹ϕ=11+e−η=y=−log(1−ϕ)=log((1−ϕ)−1)=log(1+eη)=1(41)
接下来执行第二点与第三点,令假设函数hθ(x)等于伯努利函数的期望,并且令η=θTx:
hθ(x)=E[T(y)∣x;θ]=E[y∣x;θ]=ϕ=11+e−η=11+e−θTx(42)
这就是逻辑回归的假设函数式(22)的由来了。
除了高斯分布与伯努利分布,大多数的概率分布都能表示成指数分布族的形式,如多项式分布(Multinomial),对有K个离散结果的事件建模;泊松分布(Poisson),对计数过程进行建模,如网站访问量的计数问题;指数分布(Exponential),对有间隔的证书进行建模,如预测公交车的到站时间的问题;等等,然后通过进一步的推导,就能得到各自的线性模型,这大大扩展了线性模型可解决问题的范围。
3.4、多分类回归模型(Softmax regression)在广义线性模型下的推导
3.4.1、多项式分布
接下来再来利用多项式分布进行建模,得到解决多分类问题的模型,它是逻辑回归二分类模型的扩展。
首先我们给出多项式分布的一些公式:
p(y=i)∑i=1kϕi=ϕi=1(43)
其中y∈{1,2,3,⋯,k},又因为ϕi累加为1,我们可以只保留k−1个参数:
ϕk=1−∑i=1k−1ϕi(44)
3.4.2、从两点分布出发
为了有个直观的理解,我们先来看k=2时的情况。
此时p(y=1)=ϕ1,p(y=2)=ϕ2,并且ϕ1+ϕ2=1,于是有ϕ2=1−ϕ1
p(y=1)p(y=2)ϕ1+ϕ2p(y∣ϕ1)=ϕ1=ϕ2=1⟹ϕ2=1−ϕ1=ϕ2−y1ϕy−12=ϕ2−y1(1−ϕ1)y−1⟹p(y∣ϕ)=ϕ2−y(1−ϕ)y−1(45)
当y=1时,只取ϕ1;当y=2时,只取ϕ2,即1−ϕ1,又因为只有一个参数ϕ1了,干脆就直接令ϕ1=ϕ。这与两点分布所要表达的意义是一模一样的,只不过两点分布只做二分类,就采取了取0和1的方式,使得整个式子更简洁(参考式(40)的第一行)。
3.4.3、多项式概率分布
那么在更一般的多分类问题中,其概率分布为:
p(y;ϕ)=ϕI(y=1)1ϕI(y=2)2⋯ϕI(y=k)k(46)
这个式子所要表达的意思是,当y的值取到
为了更方便的表达,引入了上面的指示器函数(Indicator function),如果判断条件为真,输出1,反之输出0:
I{Ture}I{False}=1=0(47)
如I{3=3}=1,I{3=2}=0。
所以,当y=1时,式(47)的第一个乘子ϕ1的指数为1,其他所有的乘子的指数全部为0,进一步推广到所有取值的情况,就起到了当y的值取到i的时候,只取相应的ϕi的值的作用。
但是这个指示器函数是一个抽象的东西,如何才能确实地实现这个作用呢?我们给出如下所示的T(y):
T(1)=⎡⎣⎢⎢⎢⎢⎢⎢⎢100⋮0⎤⎦⎥⎥⎥⎥⎥⎥⎥,T(2)=⎡⎣⎢⎢⎢⎢⎢⎢⎢010⋮0⎤⎦⎥⎥⎥⎥⎥⎥⎥,⋯,T(k−1)=⎡⎣⎢⎢⎢⎢⎢⎢⎢000⋮1⎤⎦⎥⎥⎥⎥⎥⎥⎥,T(k)=⎡⎣⎢⎢⎢⎢⎢⎢⎢000⋮0⎤⎦⎥⎥⎥⎥⎥⎥⎥(48)
这样T(y)中的某个元素可以表示成:
T(y)i=I{y=i}(49)
举例来说,当y=2时,T(2)中的第一个元素为:T(2)1=I{2=1}=0;T(2)中的第二个元素为:T(2)2=I{2=2}=1,这就解决了指数上标什么时候取0什么时候取1的问题。
于是我们从式(46)中进一步得到具体的多项式分布的概率分布:
p(y;ϕ)=ϕI{y=1}1ϕI{y=2}2⋯ϕI{y=k}k=ϕI{y=1}1ϕI{y=2}2⋯ϕ1−∑k−1i=1I{y=i}k=ϕT(y)11ϕT(y)22⋯ϕ1−∑k−1i=1T(y)ik(50)
3.4.4、在广义线性模型下的推导
还是从广义线性模型的第一点开始做起,将式(50)的概率分布表示成指数分布族的形式:
p(y;ϕ)=ϕT(y)11ϕT(y)22⋯ϕ1−∑k−1i=1T(y)ik=exp(T(y)1logϕ1+T(y)2logϕ2+⋯+((1−∑i=1k−1T(y)i)logϕk)=exp(T(y)1logϕ1ϕk+T(y)2logϕ2ϕk+⋯+T(y)k−1logϕk−1ϕk+logϕk)=b(y)exp(ηTT(y)−a(η))(51)
我们有:
ηT(y)a(η)b(y)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢logϕ1ϕklogϕ2ϕk⋮logϕk−1ϕk⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=式(48)=−logϕk=1(52)
观察式(52)我们可以发现,向量η的第i个元素为:
令其累加,得到:
∑i=1keηi=∑ki=1ϕiϕk=1ϕk⟹ϕk=1∑ki=1eηi(54)
把ϕk带入式(53),即可得到多项式分布的期望:
ϕi=eηi∑ki=1eηi(55)
那么接下来的第二步与第三步,令假设函数hθ(x)等于多项式分布的期望,并且令η=θTx,就显得非常地顺理成章了:
hθ(x)=E[T(y)∣x;θ]=E⎡⎣⎢⎢⎢⎢⎢p(y=1∣x;θ)p(y=2∣x;θ)⋮p(y=k−1∣x;θ)⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢ϕ1ϕ2⋮ϕk−1⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢eη1∑ki=1eηieη2∑ki=1eηi⋮eηk−1∑ki=1eηi⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢eθT1x∑ki=1eθTixeθT2x∑ki=1eθTix⋮eθTk−1x∑ki=1eθTix⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(56)
这就是softmax回归的模型了。
如果要求取参数θ,还是和线性回归与逻辑回归一样,取其log似然函数做最大似然估计,具体方法可以选择梯度法或者牛顿法。
如果觉得《线性回归 logistic回归 广义线性模型——斯坦福CS229机器学习个人总结(一)》对你有帮助,请点赞、收藏,并留下你的观点哦!