Gradient Descent
梯度下降(Gradient Descent)对整个ML都是很重要的。梯度下降的作用是得出是代价函数的值最小的参数 θj .
REVIEW –about cost function:
The Cost function is like:
J(θ0,θ1,θ2,...,θn)=12m∑i=1m(hθ(x(i)j)−y(i))2(1)
The variable m is the number of training set. (Why times 1/2?->for the convenience of computing the Gradient Descent)
其中,
hθ(x(i))=θ0+θ1xi1+θ2xi2+...+θnxin(2)
( i 表示第i组数据)。这是我们要求的最佳回归线。
关于梯度下降:
梯度下降用于不断更新参数
θ0,θ1,...,θn
来让代价函数最小,其方法是:
θj:=θj−α∂∂θjJ(θ0,θ1,...,θn)(3)
(
α
->learning rate)最终等于:
θj:=θj−α1m∑i=1m(∑j=0nhθ(x(i)j)−y(i))xj(4)
or:
θj:=θj−α1m∑i=1m(XθT)X=⎡⎣⎢⎢⎢⎢x10x20⋮xm,0x11x22⋮xm,1x12x22⋮xm,2⋯⋯⋱⋯x1,nx2n⋮xm,n⎤⎦⎥⎥⎥⎥θ=[θ0θ1theta2⋯θn](5)
其中,定义: x(i)0=1 .
梯度下降的思路:
好比说一个二次函数:
y=ax2+bx+c (a!=0)
先任意取一个值 x ,然后测它的导数,若大于零,那么要使 y 的值变小,必须要让 x 变小,若小于零,则是 x 变大。当 x 正好处于函数的对称位置(函数值最小),那么有导数等于零。
Learning Rate:
α 就是所说的 Learning Rate。Learning Rate 的用处,在于让ML更有效。当 α 过大,那么可能在某一步时越过最低点,甚至会让代价函数越变越大。在ML过程中,根据Cost Function 的变化来检测梯度下降是否正确,也根据此来更正 α 。
Features Scaling:
除了Learning Rate 外,不标准的参数也会导致ML的梯度下降过程出错。因此,有必要放缩各个变量数据,让它们的变量域相接近。基本保持在
[−1,1]
之间。方法是:
x(i)j=x(i)j−xj¯RangeOf xj
另一种求参数 θ0,θ1,⋯θn 的方法
简单说,就是:
θ=(XXT)−1XTy
不知道为什么。