1.在线性回归问题中,我们通常使用下面公式来拟合训练集:

梯度下降 python 梯度下降法计算题_最小值

其中

梯度下降 python 梯度下降法计算题_梯度下降算法_02

,为特征向量的个数;

2.如图假设x是二维的,则有

梯度下降 python 梯度下降法计算题_梯度下降 python_03

梯度下降 python 梯度下降法计算题_最小值_04

3.  我们可以将损失函数表示为:



梯度下降 python 梯度下降法计算题_线性回归 梯度下降 随机梯度下降_05





4.  我们将目标函数转成求损失函

梯度下降 python 梯度下降法计算题_最小值_06

的最小值,该问题已经转换成了最小二乘问题,因此我们可以使用梯度下降法对

梯度下降 python 梯度下降法计算题_最小值_06

求最小值。      1) 首先,为了简化问题,我们假设只有一组样本,即m=1,对

梯度下降 python 梯度下降法计算题_梯度下降_08

求偏导有:

梯度下降 python 梯度下降法计算题_梯度下降 python_09

2).其梯度下降的迭代公式可表示为:

梯度下降 python 梯度下降法计算题_梯度下降_10

其中,a表示学习率,这里做一个不严谨的类比,假设你在爬山,这会儿正在下山的图中,那么你朝着哪个方向下降速度会最快呢?答案显然是,梯度方向(本例为

梯度下降 python 梯度下降法计算题_梯度下降_11

),a就是你要迈的步子长度。注意:通常a是手动设置的,若a值设的太小,会导致步子迈的太小,你将花较长的时间下山,也就是函数要花很长的时间才能收敛;若a值设的过大,你的算法可能会迈过最小值,因为你的步子太大了。


5. 我们将3中所求的梯度下降算法推广到n维,则其可以写成:

梯度下降 python 梯度下降法计算题_梯度下降算法_12

6.注意:当你使用梯度下降的时候,当你接近局部最小值的时候,步子会越来越小,最终直到收敛,原因是你在更新的时候,

你会减去乘以梯度,当你达到局部最小值的时候,梯度也减为0,当你接近局部最小值的时候,在局部最小值处梯度是0,

也就是当你梯度下降的每一步都会自动的变得越来越小。

以上所讲述的算法称为批梯度下降算法

7.该算法的缺陷:每次计算都需要遍历整个训练集合 ,因为你需要对你的m个训练样本进行求和,当我们遇到非常大的 训练集

合的时候,这种算法就显得的不合适了。所以当你有一个很大的训练集合的时候,那么你应该使用另外一个称之为随机梯度下降的算法,

亦称为增量梯度算法,可表示为:


梯度下降 python 梯度下降法计算题_线性回归 梯度下降 随机梯度下降_13


随机梯度下降算法的优点:你不需要在遍历所有的样本,提升了收敛速度。所以对大规模的训练集合,建议使用随机梯度下降算法。

随机梯度下降算法的缺点:随机梯度下降算法,不会精确的收敛到全局的最小值,但是会逼近最小值,通常达到这个精度就可以了。

8.

8.1  回顾下几个概念:

梯度下降 python 梯度下降法计算题_最小值_14


所以,可以将梯度下降表示为:


梯度下降 python 梯度下降法计算题_梯度下降 python_15


若f表示矩阵到实数的映射,则有:

梯度下降 python 梯度下降法计算题_梯度下降_16

8.2矩阵迹的性质:

1)     设A是n*n方阵,则A的迹为对角阵之和:

梯度下降 python 梯度下降法计算题_梯度下降_17



梯度下降 python 梯度下降法计算题_梯度下降算法_18


8.2.定义一个设计矩阵x,将其定义成包含了训练集中所有输入的矩阵:


梯度下降 python 梯度下降法计算题_梯度下降算法_19


1.1  定义 

梯度下降 python 梯度下降法计算题_梯度下降算法_20

代表所有的训练集合中数据的目标值

梯度下降 python 梯度下降法计算题_梯度下降 python_21

梯度下降 python 梯度下降法计算题_梯度下降算法_22