3 梯度下降
3.1 一维梯度下降
对连续可微实函数f利用泰勒展开:
$$ f ( x + \epsilon ) = f ( x ) + \epsilon f ‘ ( x ) + O ( \epsilon ^ 2 ) $$在一阶近似中, $f ( x + \epsilon ) $可用f(x)和f’(x)来近似.
令$\epsilon = - \eta f ‘ ( x )$,其中$\eta$是学习率,那么有:
$$ f ( x - \eta f ‘ ( x ) ) = f ( x ) - \eta f^ {‘2} ( x ) + O ( \eta ^ 2 ) $$
$$ f ( x - \eta f ‘ ( x ) ) \leq f ( x ) $$用$x - \eta f ‘ ( x )$来代替$x$,可以使得函数值下降:
$$ f ( x ) \geq f ( x - \eta f ‘ ( x ) ) \geq f ( x - 2 \eta f ‘ ( x ) ) \geq f ( x - 3 \eta f ‘ ( x ) ) \geq \cdots $$
1 | %matplotlib inline |
epoch 10, x: 0.06046617599999997
3.1.1 学习率
- 如果学习率太小,x更新缓慢
- 如果学习率太大,$ | \eta f ‘ ( x ) | $可能对于一阶泰勒展开式太大,即式子中的$O ( \eta ^ 2 f^ {‘2} ( x ) )$项不能忽略不计.
1 | show_trace(gd(1.1, f_grad), f) |
epoch 10, x: 61.917364224000096
3.1.2 局部最小值
对于非凸函数,例如$f ( x ) = x \cdot \cos ( cx )$,可能会有多个局部最小值.
高学习率导致较差的局部最小值:
1 | c = torch.tensor(0.5 * np.pi) |
epoch 10, x: tensor(-620.5891)