台湾大学机器学习基石Lecture10

10-1:Logistic Regression Problem

Logistic回归问题
我们举一个心脏病预测的例子 ,我们根据患者的年龄,性别,体重,血压这些特征来预测这个人是否有心脏病,很显然这是一个二分类的例子,其输出结果为{+1,-1},算法流程如下图所示:
这里写图片描述
具体流程图的介绍在第八节已经详细介绍了,这里就不再赘述了。
那么我们如何根据这些特征判定是否该患者患心脏病呢?类似PLA,我们一般可以取一个阈值threshold=0.5,然后计算目标分布 p(y|x) 的大小,当 p(+1|x)>0.5 时就认为患有心脏病,否则就认为没有心脏病,即目标函数:
f(x)=sign(p(+1|x)12) {-1,1}
但是如果我们考虑的不是该患者患病与否,而是考虑这个患者患心脏病的几率是多大的?因为我们通常告诉患者的是他患病的概率是多大,那么我们就需要重新定义一个目标函数了,如下式所示:
f(x)=p(+1|x)[0,1]
上面通常称为软二元分类(soft Binary classification),那么对于这种分类,我们想要的理想数据格式应该是如下所示(即我们想要的是确切的概率 p):
这里写图片描述
但是实际的数据,比如医院给你病例数据之类的,肯定不会是上面这种完美的数据,因为医院肯定只会记录该患者是否患病,实际的数据应该像下面这样:
这里写图片描述
比如上面第一条记录了O,表示是患病的,第二条记录了 × ,表示没有患病。并没有直观的给出我们想要的目标函数分布(即患病概率)。我们将这种数据可以作为理想的数据+noise共同生成的。
那么我们接下来就应该寻找一个好的hypothesis来尽可能的接近目标函数 f(x)
例如,输入 X=(x0,x1,x2,xd) 个病人的输入特征,我们可以根据PLA的思想,构建一个风险分数(risk score)S来对该患者患病的程度进行量化,即:
S=di=0wixi ,但是我们知道概率是有上界的,不会超过1,如果单单使用S来进行评判,并不能达到我们想要的结果,我们应该将S进行转换,最常用的转换方式就是sigmoid函数了,即:
θ(S)=11+es ,该函数对应的函数图像如下图所示:
这里写图片描述
从函数图像可以看出sigmoid函数是平滑的S形曲线,并且是递增的,那么我们可以将上面的 S=di=0wixi=wTx 带入sigmoid函数,就可以将S映射到[0,1]区间,也就得到了我们想要的概率p,这一结果可以定义为Logistic Hypothesis即:
h(x)=θ(wTx)=11+ewTx
然后我们就可以用h(x)来近似目标函数分 f(x)=p(y|x) 了。


10-2:Logistic Regression Error

Logistic回归错误衡量
回想一下我们学过的线性分类(Linear classification)、线性回归(Linear Regression),以及今天学到的Logistic Regression。我们将他们进行对比如下图所示:
这里写图片描述
我们很容易能够得到图中的 S=wTx ,即三种假设h都有着共同的得分函数。如何衡量他们的误差呢?线性分类用的是0/1 error,线性回归用的是Squared error(平方错误),那么问题来了,对于Logistic Regression,我们该如何量化它的误差(即 Ein(w) )。
我们的目标函数 f(x)=p(+1|x) ,我们可以将其等价为公式(1):
这里写图片描述(1)
我们考虑一组数据 D=(x1,O),(x2,X)(xN,X) (O代表+1,X代表-1),那么实际能产生这一组数据的概率是多大呢,其计算过程如下:
p=p(x1)p(O|x1)×p(x2)p(X|x2)××p(xN)p(X|xN) (将公式(1)带入)
=p(x1)f(x1)×p(x2)[1f(x2)]××p(xN)[1f(xN)]
我们考虑以下两个问题:
1. 我们的目的是找到一个最好的Hypothesis近似等于f(x),那么上面的p理论上由f(x)产生的和h(x)产生的是差不多大的概率(不然就是不好的hypothesis)
2. 上面的数据D是一个正常的数据,那么f(x)产生D的概率p应该是足够大的
综合2条规则,我们可以得到下面g:
g=argmaxh  likelihood(h)
f=h ,并且最大化g。
由于 h(x)=θ(wTx) ,或者从sigmoid函数我们可以看出 h(x)=1h(x) ,这样子就能代替掉p中的( 1h(x) ),计算过程如下:
likelihood(h)=p(x1)h(x1)×p(x2)h(x2)××p(xN)h(xN)

实际中我们假设先验概率p(x)是相等的,进一步推出:
这里写图片描述

在Lecture 9中我们就用w替换掉了h,这里一样如此,并且将 h(x)=θ(wTx) 带入:进一步推出:
这里写图片描述

两边取对数 ln ,进一步推出:
maxhNi=1lnθ(ynwTxn)
=minw1NNn=1[lnθ(ynwTxn)]

θ(S)=11+exp(S) ,进一步推出:
=minw1NNn=1[ln(1+exp(ynwTxn))]

将上式和经常使用的误差公式对比一下:
误差公式 minw1NNn=1err(h(xn),yn)
我们最终得到Logistic Regression交叉熵错误(cross_entropy error):
err(w,x,y)=ln(1+exp(ynwTxn))


10-3:Gradient of Logistic Regression Error

Logistic回归误差的梯度
上一节我们已经求出来了 Ein(w) 的表达式:
minwEin(w)=1NNn=1[ln(1+exp(ynwTxn))]
那么我们接下来的目的便是最小化这个函数来得到权值向量w。我们考虑 Ein(w) 的函数图像:
这里写图片描述
我们发现, Ein(w) 具有可微分、连续、二阶可微、并且还是凸函数。由于 Ein(w) 是凸函数,我们可以直接可以求 Ein(w)=0 ,然后得到w的解。
因为 Ein(w) 的表达式还是有点复杂的,我们首先进行如下替换:
这里写图片描述

我们进行如下求微分的计算过程(由于太复杂,就直接盗用图片,然后在下面进行解释。)
这里写图片描述
这里求微分的计算是分布计算的,可以类似于:
Ew=Et1t1t2tnw (其实,你类似于乘法相乘是很容易理解的)。
为了简便,这里我们将得到的 xn,i xn 表示,得到最终的梯度公式如下:
Ein(w)=1NNn=1θ(ynwTxn)(ynxn)
Lecture9中,介绍了何时能使得 Ein(w) 最小,即梯度为0的时候(因为这是凸函数),我们考虑两种情况:
1. 所有的 θ(ynwTxn)=0 ,这个条件可以满足梯度为0,但是当且仅当 ynwTxn>>0 ,换个角度想也就是数据是Linear Separable(线性可分)的。
2. 当数据线性不可分的时候,我们又不能像LinReg(线性回归)一样使用闭式解,那么这种问题怎么解呢?其实可以用迭代的方法。
回顾一下之前PLA的算法过程:
这里写图片描述
我们找到一个错误记为 (xn(t),yn(t)) ,并且用这个错误点来对w进行修正,具体细节在Lecture2中有详细介绍。
上面的修正错误的过程,我们如果换一个角度看呢?
wt+1wt+1[sign(wTxyn)]ynxn
这个式子和上面算法的修正是一样的,只是做了一些小小的改变:
这里写图片描述
如图中 ηv 所示, η 一般称之为学习的步长,v称为学习的方向。上面的这种方法我们称为iterative optimization approach(迭代优化算法)


10-4:Gradient Descent

梯度下降
我们回顾一下 Ein(w) 的函数图像:
这里写图片描述
我们将 Ein(w) 比作一个山谷,那么假定我们现在处于小球的位置,那么如何才能最快的到谷底呢?我们需要考虑走的方向v和每次走的步长 η ,有一个贪婪的方法是在 η 给定的情况下,条件限制为 ||v||=1 ,即:
min||v||=1Ein(wt+ηv)
其中 wt+1=wt+ηv ,我们接下来简化这个过程,利用taylor展开式:可以得到:
min||v||=1Ein(wt+ηv)Ein(wt)+ηvTEin(wt)
(这里有一个想法就是:我觉得这就相当于求直线斜率的表达式把即:
min||v||=1Ein(wt+ηv)Ein(wt)ηvT=Ein(wt) ,将步长限制的比较小的时候,那么直线可以等价于曲线的)。
那么经过上面的简化之后,我们发现 Ein(wt) 是常数, η 是给定的正数,那么现在就只剩下一个变量v了,那么上式就转化为:
min||v||=1vTEin(wt)
要使这个表达式值最小,因为这是内积,那么v的方向和 Ein(wt) 的方向相反的话就会得到最小值,即:
v=Ein(wt)||Ein(wt)||
得到方向v之后,利用我们上一节课得到iterative optimization approach(迭代优化算法),即 wt+1wt+ηv ,当 η 很小的时候,带入式子可得:
wt+1wtηEin(wt)||Ein(wt)||
上面的式子就是经典的Gradient Descent (梯度下降)算法。
从上面式子可以看出,现在只剩下如何选择 η 了。下面观察一下 η 对GD(梯度下降)的影响:
这里写图片描述
1. 我们发现,小的 η 能够收敛到最小值,但是收敛速度太慢了
2. 大的 η 下降非常不稳定,甚至还可能出现越下降越高的情形
3. 最右边的是比较好的 η ,它在梯度比较大(即坡比较陡)的时候, η 比较大,在梯度比较小(即坡比较缓)的时候, η 比较小,很完美的收敛,即 η 和梯度的大小成正比。
我们下面重新定义一下梯度下降公式:
这里写图片描述
图中红色的 η 和紫色的 η 是不一样的,它们之间存在的关系为:
紫色 η=(η)1||Ein(wt)||
我们将最终得到的紫色 η 称为固定的学习速率。
综上,我们对Logistic回归算法进行小结:
这里写图片描述
1. 先初始化w_0
2. 计算每依次迭代过程中梯度 Ein(wt) 的值
3. 用梯度下降算法对 wt+1 进行更新
直到 Ein(wt+1)0 或者足够的迭代次数后使得循环结束,返回最后的 wt+1 作为g。

注明:

文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值