自学笔记-------梯度下降

自学笔记

梯度下降

梯度下降的可视化

自学笔记-------梯度下降

算法解析

假设函数
一个简单的线性回归拟合函数可以表示为:hθ(x) = θ0 + θ1·x
当然Xi 可以有很多通常也用矩阵来表示,但为了方便理解后面均用简单的线性函数
损失函数
又称为代价函数,对于线性回归的损失函数可以表示为:
J(θ) = 1/(2 *n) * ∑ ( hθ(xi) − yi )2 (其中n表示样本数量)
梯度
损失函数的梯度,即对 θi 求偏导
下降过程
(1) 学习得到损失函数 J(θ) 及样本点xi 的损失:
例如,对于线性回归模型的假设函数为: hθ(x) = θ0 + θ1·x1 + θ2·x2 ,则损失函数为:J(θ) = 1/(2 *n) * Σ(θ0 + θ1·x1 + θ2·x2 - y)2;我们为样本添加一个维度x0 ,x0 恒等于 1。则,我们可以变损失函数表示为:J(θ) = 1/(2 *n) * Σ(θ0·x0 + θ1·x1 + θ2·x2 - y)2

为了便于自己理解,我只取一个样本点进行计算。对于样本点 x1 = (x0 = 1,x1 = 1,x2 = 2),对应的目标变量 y1 = 10,的损失为:J(θ)1 = 1/2 (θ0 + θ1+ 2θ2 - 10)
(2) 求出样本点 xi 损失函数的梯度向量:(求偏导)
根据 J(θ)1 ,求出样本点 x1 对应的梯度▽J(θ) = <(θ0+ θ1 + 2θ2 - 10),(θ0+ θ1 + 2θ2 - 10),(θ0+ θ1 + 2*θ2 - 10)*2 >
(3) 初始化假设函数的参

对 θ 进行随机取值,假设θi 第一次全部取0,θ = < 0,0,0>;
    将θ0 带入 J(θ)1 ,得到 取 θ0 时的损失为 J(θ) = 1/2 (0 + 0+ 20 - 10)2 = 50
    将θ0 带入▽J(θ)1 ,得到 θ0 处的梯度向量为 ▽J(θ) = < -10,-10,-20 >
(4)设置学习率,其实根据上面的可视图,可以理解为步长:
设立步长 α = 0.1 ,对 θ 进行梯度下降,得到 θ1
第一次梯度下降:
θ1 = θ0 - α * ▽J(θ)01 = < 0,0,0 > - 0.1 * < -10,-10,-20 > = < 1,1,2 >
将θ1 带入 J(θ)1 ,得到 取 θ0 时的损失为 J(θ)01 = 1/2 (1 + 1+ 22 - 10)2 = 8
将θ1 带入▽J(θ)1 ,得到 θ0 处的梯度向量为 ▽J(θ)01 = < -4,-4,-8 > ;
第二次梯度下降:
θ2 = < 1,1,2 > - 0.1 * < -4,-4,-8 > = < 0.4,0.4,1.2 >    
J(θ)01 = 1/2 (0.4 + 0.4+ 21.2 - 10)2 = 23.12  
此时我们发现,θ2 处的损失为23.12,大于 θ1 处的损失8,说明,我们可能步子迈的大了,跨过了最低点,我们重新设定α = 0.05,重复上述过程:
    重新设立步长 α = 0.05
    通过重复这个过程,会将步长逐渐变小,取出最合适的学习率

注意:运用梯度下降这种方法,此学习率是很难找到最佳的,所有才会和上述过程一样通过递归去找到最佳学习率,此方法适合n较大的时候选用

特征缩放

特征缩放使得运用梯度下降时,能更快找到最低点