梯度下降
高数里面有提到梯度的概念,重温一下。
梯度:设函数z=f(x,y)在平面区域D内有一街连续偏导数,则函数在D内的每一个点P(x,y)处的梯度为
梯度下降:利用负梯度方向决定每次迭代的方向,从而使目标函数逐步减小。梯度下降法又称为最速下降法。
简单形式:x(k+1)=x(k)-a*g(k),a为学习速率,可以使较小的常数,g(k)是x(k)的梯度。
eg:给一组输入数据,算法会得到一个估计函数,估计函数可对没见过的数据给出估计。
用(x1,x2,…xn)去表示特征向量,假设该向量为2维。则可得到估计函数:
θ为参数,调整feature中每个分量的影响力。令x0 = 1,可用向量表示:
程序需要一个机制去评估θ是否合适,从而需要对h函数进行评估,称其为损失函数(loss function),用J表示,共有m个训练样本,x(i) 是一个n维的向量,第i个训练样本
通过这个损失函数用估计值与真实值差的平方和作为衡量标准,乘1/2是为了求导时系数为1。
梯度下降法流程:
1).对θ赋值,这个值可以是随机的,也可以让θ是一个零向量。
2).改变θ的值,使J(θ)按照梯度方向减少
上图表示θ与损失函数J(θ)的关系,θ是二维。
首先给θ给一个初值,假设随机给的初值对应图中十字点。
然后将θ按照梯度下降的方向调整,使得J(θ)往更低的方向变化,算法结束的标志是在θ无法继续下降。
梯度下降的最终点可能不是全局最小点,而是局部最小点。
因此,初始点位置的选择对该算法有影响。
则J(θ)对θ的偏导数为:
//几个公式写的都有点问题,下班了,回宿舍改。。。 这里应该是对θi求偏导