Gradient Descent

梯度下降与梯度上升

在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。

梯度下降法和梯度上升法是可以互相转化的。比如我们需要求解损失函数f(θ)的最小值,这时我们需要用梯度下降法来迭代求解。但是实际上,我们可以反过来求解损失函数 -f(θ)的最大值,这时梯度上升法就派上用场了。


批量梯度下降法(Batch Gradient Descent)

批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新。 
θ i = θ i − α ( h θ ( x 0 ( j ) , x 1 ( j ) , . . . x n ( j ) ) − y j ) x i ( j ) \theta_i = \theta_i - \alpha (h_\theta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)} θi=θiα(hθ(x0(j),x1(j),...xn(j))yj)xi(j)
由于我们有m个样本,这里求梯度的时候就用了所有m个样本的梯度数据。准确率高,但训练速度慢,收敛慢。

随机梯度下降法(Stochastic Gradient Descent)

随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。对应的更新公式是:
    
θ i = θ i − α ( h θ ( x 0 ( j ) , x 1 ( j ) , . . . x n ( j ) ) − y j ) x i ( j ) \theta_i = \theta_i - \alpha (h_\theta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)} θi=θiα(hθ(x0(j),x1(j),...xn(j))yj)xi(j)

每次只使用一个样本训练,故训练速度快,但准确率较低,收敛慢。

小批量梯度下降法(Mini-batch Gradient Descent)

小批量梯度下降法是批量梯度下降法和随机梯度下降法的折中,也就是对于m个样本,我们采用x个样本来迭代,1< x < m。对应的更新公式是:
θ i = θ i − α ∑ j = t t + x − 1 ( h θ ( x 0 ( j ) , x 1 ( j ) , . . . x n ( j ) ) − y j ) x i ( j ) \theta_i = \theta_i - \alpha \sum\limits_{j=t}^{t+x-1}(h_\theta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)} θi=θiαj=tt+x1(hθ(x0(j),x1(j),...xn(j))yj)xi(j)


梯度下降法和其他无约束优化算法的比较

在机器学习中的无约束优化算法,除了梯度下降以外,还有前面提到的最小二乘法,此外还有牛顿法和拟牛顿法。

与最小二乘法相比:

  1. 梯度下降法需要选择步长,而最小二乘法不需要。
  2. 梯度下降法是迭代求解,最小二乘法是计算解析解。
  3. 样本较多时采用梯度下降法,较少时采用最小二乘法

与牛顿法/拟牛顿法相比:

  1. 两者都是迭代求解
  2. 梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。
  3. 使用牛顿法/拟牛顿法收敛更快,但每次迭代的时间比梯度下降法长。

转载地址

https://www.cnblogs.com/pinard/p/5970503.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值