梯度下降

定义

所谓梯度 (Gradient Descent)的概念,通常出现在损失函数优化中。而我们常说的梯度,通常会和函数偏导数联系在一起,我们定义一个函数 J ( θ 0 , θ 1 , . . . . . . , θ n ) J(\theta_0, \theta_1,......, \theta_n) J(θ0,θ1,......,θn)关于参数 θ j \theta_j θj的梯度为:
∂ J ( θ 0 , θ 1 , . . . . . . , θ n ) ∂ θ j \frac{\partial J(\theta_0, \theta_1,......, \theta_n)}{\partial \theta_j} θjJ(θ0,θ1,......,θn)

梯度方向

沿着梯度方向,函数值增长最快。注意这里是增长最快,所以我们通常所说的梯度下降法,都是沿着梯度反方向更新参数,也就是说:
θ j : = θ j − α ∂ J ( θ 0 , θ 1 , . . . . . . , θ n ) ∂ θ j . \theta_j := \theta_j - \alpha\frac{\partial J(\theta_0, \theta_1,......, \theta_n)}{\partial \theta_j}. θj:=θjαθjJ(θ0,θ1,......,θn).
这里, α \alpha α通常叫做步长或者学习率,用于控制参数变动的幅度。这是一个需要调整的参数, α \alpha α设置过大,会使得参数一下子变化太大,可能会让函数跳过局部最小点,从而永远找不到(局部)极小点; α \alpha α设置过小,会使得参数变化太小,每次更新只变化一点点,学习太慢,需要很长时间才能找到极小点。

梯度更新

上式中给出了一个参数的更新公式。那么在实际算法中,我们需要对多个参数进行更新。
那么正确的更新顺序为:
1. t e m p 0 : = ∂ J ( θ 0 , θ 1 , . . . . . . , θ n ) ∂ θ j . 1. temp0 := \frac{\partial J(\theta_0, \theta_1,......, \theta_n)}{\partial \theta_j}. 1.temp0:=θjJ(θ0,θ1,......,θn).
2. t e m p 1 : = ∂ J ( θ 0 , θ 1 , . . . . . . , θ n ) ∂ θ i . 2. temp1 := \frac{\partial J(\theta_0, \theta_1,......, \theta_n)}{\partial \theta_i}. 2.temp1:=θiJ(θ0,θ1,......,θn).
3. θ j : = θ j − α t e m p 0. 3. \theta_j := \theta_j-\alpha temp0. 3.θj:=θjαtemp0.
4. θ i : = θ i − α t e m p 1. 4. \theta_i := \theta_i-\alpha temp1. 4.θi:=θiαtemp1.
也就是说,我们需要先计算好当前状态下每个参数的梯度,再进行参数更新。而不能根据顺序1,3,2,4,计算一个梯度就更新一个梯度。这就是所谓的同步更新

缺点

  • 局部最小点:梯度下降可能得到函数的某一个极小值,而不是整个函数的最小值。如下图所示,如果初始点为 x 0 x_0 x0,那么最终得到的最优点可能为与 x 0 ∗ x^*_0 x0,我们可以明显发现这是一个局部最优点,整个函数的最小值应当位于 x 1 ∗ x^*_1 x1;当初始点为 x 1 x_1 x1时,我们可能最终收敛到 x 1 ∗ x^*_1 x1的位置。所以初始值的设置可能会影响算法最终的效果。
    在这里插入图片描述
  • ​​​​​​​​​​鞍点:saddle point,一个方向上梯度大于0,一个方向上梯度小于0。在高维数据上容易发生。这种情况下,虽然梯度为0,但其实并不是极小值点。
    在这里插入图片描述
    特征缩放比例:如果特征的取值范围不在相似范围的话,学习起来收敛速度回很慢,走很多弯路。这也是特征需要归一化的原因。
    在这里插入图片描述
    (图片截图自吴恩达机器学习课件)

特征缩放

最简单的特征缩放为 x i / s x_i/s xi/s s s s为某个值,能够把 x i x_i xi缩放至一个较为合理的范围。

常用的缩放还有:

  • mean normalization 均值归一化
    x i = x i − μ s i , x_i = \frac{x_i-\mu}{s_i}, xi=sixiμ,
    其中 μ \mu μ是特征 x i x_i xi的均值, s i s_i si是特征 x i x_i xi的取值范围,也就是最大值减去最小值。有时候 s i s_i si取为特征 x i x_i xi的标准差也是可以的。

批量梯度下降 Batch Gradient Descent

我们刚才讨论的都是批量梯度下降,也就是说在每一步的梯度下降中都使用所有的训练样本。因为我们通常所用的损失函数 J θ ( x 0 , x 1 , x 2 , . . . . . . , x n ) J_\theta(x_0, x_1, x_2,......,x_n) Jθ(x0,x1,x2,......,xn)包含了所有训练样本 ( x 0 , x 1 , x 2 , . . . . . . , x n ) (x_0,x_1,x_2,......,x_n) (x0,x1,x2,......,xn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值