1 梯度下降介绍

我们首先随机一个点,然后沿着梯度方向的反方向寻找最低点

梯度下降取得局部最优的例子 梯度下降 局部最优_梯度下降取得局部最优的例子

 迭代多次,直到找到局部最优(也有可能是全局最优)【线性回归问题里面,局部最优就是全局最优了】

梯度下降取得局部最优的例子 梯度下降 局部最优_python_02

多个参数同理,分别进行梯度下降

梯度下降取得局部最优的例子 梯度下降 局部最优_python_03

梯度下降取得局部最优的例子 梯度下降 局部最优_梯度下降_04

2.1 梯度与Hessian矩阵

 梯度为0的时候,不一定是local minimum。他还可能是local maxinum 和鞍点,那么,怎么判断是不是local minimum呢?

我们类比一元二次方程a的正负和上下开口的问题,考虑二阶导(hessian矩阵)

local min

hessian矩阵半正定

梯度下降取得局部最优的例子 梯度下降 局部最优_python_05

local max

hessian矩阵半负定

梯度下降取得局部最优的例子 梯度下降 局部最优_python_06

鞍点

hessian矩阵既不半正定也不半负定

梯度下降取得局部最优的例子 梯度下降 局部最优_迭代_07

2  梯度下降可能存在的问题

        我们可能会找到鞍点,可能会找到局部最优,而且从不同位置出发,可能最终梯度下降的结果会有很大的区别

        

梯度下降取得局部最优的例子 梯度下降 局部最优_python_08

3 梯度下降小tips

3.1 合理调整学习率

梯度下降取得局部最优的例子 梯度下降 局部最优_机器学习_09

pytorch笔记:调整学习率(torch.optim.lr_scheduler)_UQI-LIUWJ的博客-CSDN博客

梯度下降取得局部最优的例子 梯度下降 局部最优_迭代_10

 3.2 特征缩放

        当我们面对多维度特征问题的时候,我们需要保证这些特征都有相近的尺度,这样会帮助梯度下降更快地收敛。

        

梯度下降取得局部最优的例子 梯度下降 局部最优_梯度下降_11

        以上图为例,图像非常扁平,梯度下降算法需要非常多次的迭代才能够收敛



        为了更快地收敛,我们将所有特征的尺度放缩到-1~1之间:

 

梯度下降取得局部最优的例子 梯度下降 局部最优_python_12



4 梯度下降原理

4.1 泰勒级数

我们可以用这种方式来近似函数f(x)

梯度下降取得局部最优的例子 梯度下降 局部最优_梯度下降_13

用求和的方式来写,有:

梯度下降取得局部最优的例子 梯度下降 局部最优_梯度下降取得局部最优的例子_14

4.1.1 用于函数近似的泰勒级数

梯度下降取得局部最优的例子 梯度下降 局部最优_迭代_15

 换言之,泰勒级数越靠后的项,越小。

因此,出于近似考虑,我们可以只考虑最初的两项:

梯度下降取得局部最优的例子 梯度下降 局部最优_梯度下降取得局部最优的例子_16

 4.1.2 多变量的泰勒近似

梯度下降取得局部最优的例子 梯度下降 局部最优_python_17

 4.2 梯度下降的理论,

梯度下降取得局部最优的例子 梯度下降 局部最优_梯度下降_18

 ||v||是一样的,所以我们的目标就是找

梯度下降取得局部最优的例子 梯度下降 局部最优_梯度下降取得局部最优的例子_19

的最小值        

梯度下降取得局部最优的例子 梯度下降 局部最优_机器学习_20

可以看成是向量

梯度下降取得局部最优的例子 梯度下降 局部最优_机器学习_21

和向量v的内积。那么什么时候内积的结果最小呢?就是v=

梯度下降取得局部最优的例子 梯度下降 局部最优_python_22

的时候