机器学习课堂笔记6
1,机器什么时候可以学习
2,为什么机器可以学习
3,机器怎么学习
4,机器怎么样才能学得更好
逻辑回归参数求解:梯度下降法
使用最大似然估计法后,逻辑回归参数求解可以变成最小化对数之和的问题:
Ein是一个连续、可微、二次可微的凸函数,因此求Ein函数最小化,就是需要Ein(w)的梯度为0. 对Ein中的每个w求偏微分,并使用求导中的链式法则,最后得到Ein的梯度公式为:
其中theta=exp(-yn*w*xn)/(1+exp(-yn*w*xn))
需要找出一组W使得梯度为0。但是上述公式没有公式解,因此使用梯度下降法:
梯度下降法是一种局部的,循环优化的方法,其基本思想是基于上一步的结果,在这一步优化中,在一个局部的范围内找到一个最优解。在logistic回归中,参数W的更新步骤是:
Wt+1=Wt+yita*v 其中Wt是上一步(已知的)结果,yita是本次更新的步长(局部范围的概念),v是本次更新的方向。将W理解为向量,每次更新就是朝一个最优的方向v偏移长度yita
因为v是方向,假设它的长度为1(理解为单位向量)。yita是步长,假设其是一个正数(若为负数,可以理解为向v的反方向移动正数的步长)。在第t+1步的时候,最优化问题可以表示为:
当yita足够小时,局部近似可用泰勒展开表示:
由于yita是给定一小段步长,Ein(Wt)的梯度在第t+1步是已知的,因此第t+1步就是需要方向v使得上面的展开式最小。显然当v和Ein(Wt)的梯度反方方向的时候,两者相乘最小,展开式的值也就最小。同时因为V是单位长度向量,所以第t+1步的方向v应该是:
参数W的更新公式为:
梯度下降法的步长yita:
yita的选择对梯度下降法的效果影响很大。它不能太小,否则可能循环T次数非常多也无法达到最佳解(Ein的梯度为0)。也不能太大,因为上述公式使用泰勒展开,是假设在很小的范围内可以用线性公式代替非线性公式。太大的yita会导致每次跨过的步数过长,导致Ein不停振荡,在迭代的过程中Ein不是稳定下降的。
合适的yita应该随着Ein梯度的大小变化。在梯度很大时,说明距离最佳点(最低的Ein)还有很长的路要走,可以相应的在更大的范围内(yita值)搜索下降的方向。当Ein的梯度变小时,说明已经接近了最佳点,需要缩小yita,一小步一小步地尝试靠近Ein梯度为0的谷底:
因此,在logistic regression中,yita是一个固定学习比率,它和Ein梯度大小成正比:
总结梯度下降法:
1,设定某一步长比率yita,yita和梯度大小成正比,
2,从初始值W0开始(W0可以任意设置,例如W0=0),循环更新W
3,在第t+1步的时候,Wt+1更新的方式是上一步的结果Wt往其梯度的反方向移动步长yita。可以理解为在长度yita的范围内,向量W往可以让它下降最多的方向移动一小步:
计算Ein梯度:
更新Wt+1:
不断循环,知道Ein梯度为0,或者达到循环上相T,返回最后的Wt+1作为逻辑回归的参数(相应的也就确定了逻辑回归的假设g)