1. 梯度下降(Gradient Descent)
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降是最常采用的方法之一
对多元函数的各个分量求偏导数,把求得的各个分量的偏导数以向量的形式写出来,就是梯度。
例: 二元函数
z=f(x,y)
z
=
f
(
x
,
y
)
向量的梯度
矩阵的梯度
http://www.junnanzhu.com/?p=141
几何意义: 函数在该点处沿着梯度的方向变化最快,变化率最大(为该梯度的模)。
梯度下降 最小化;梯度上升 最大化
2. 无处不在的梯度下降
2.1 感知机
训练数据集
D=(x1,y1),(x2,y2),..,(xm,ym)
D
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
,
(
x
m
,
y
m
)
最小化损失函数
损失函数的梯度
采用随机梯度下降,不是一次使用M中的所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。
随机选取一个误分类点 (xi,yi) ( x i , y i ) ,对 w,b w , b 更新
2.2 线性回归
损失函数
更新公式
2.3 逻辑回归
参考这里:第六章逻辑回归
损失函数
更新公式
2.4 神经网络
写不动了
3. 梯度下降家族(BGD,SGD,MBGD)
3.1 批量梯度下降法(Batch Gradient Descent)
梯度下降法最常用的形式,具体做法:在更新参数时使用所有的样本来进行更新。
例:上面逻辑回归的更新公式,有m个样本,求梯度的时候就用了所有m个样本的梯度数据。
3.2 随机梯度下降法(Stochastic Gradient Descent)
区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。
例:上面感知机的更新公式。
训练速度:SGD每次仅采用一个样本来迭代,训练速度很快,而BGD在样本量很大的时候,训练速度不能让人满意
??准确度:SGD仅用一个样本决定梯度方向,导致解很有可能不是最优
每次迭代并不是沿着最陡的方向走,故宏观上看最后是沿着最小值点附近徘徊
收敛速度:由于SGD一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。
3.3 小批量梯度下降法(Mini-batch Gradient Descent)
小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷
也就是对于m个样本,我们采用x个样子来迭代,
1<x<m
1
<
x
<
m