梯度下降法

文章目录

  • 1. 什么是梯度
  • 2. 梯度下降
  • 3. 梯度下降算法

在机器学习中,我们通常会根据输入 x 来预测输出 y,预测值和真实值之间会有一定的误差,我们在训练的过程中会使用优化器(optimizer)来最小化这个误差,梯度下降法(Gradient Descent)就是一种常用的优化器

1. 什么是梯度

梯度是一个向量,具有大小和方向。想象我们在上山,从我所在的位置出发可以从很多方向上山,而最陡的那个方向就是梯度方向。对函数 f ( x 1 , x 2 , ⋯   , x n ) f(x_1, x_2, \cdots, x_n) f(x1,x2,,xn)来讲,对于函数上的每一个点 P ( η 1 , η 2 , ⋯   , η n ) P(\eta_1, \eta_2, \cdots, \eta_n) P(η1,η2,,ηn),我们都可以定义一个向量 { ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋯   , ∂ f ∂ x n } \displaystyle\left \{\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \cdots, \frac{\partial f}{\partial x_n}\right\} {x1f,x2f,,xnf},这个向量被称为函数 f f f在点 P P P的梯度(gradient),记为 ∇ f ( x 1 , x 2 , ⋯   , x n ) \nabla f(x_1, x_2, \cdots, x_n) f(x1,x2,,xn)。函数 f f f P P P点沿着梯度方向最陡,也就是变化速率最快。

2. 梯度下降

我们的目标是使损失函数最小化,所以我们要沿着梯度相反方向下降,这就是所谓的梯度下降。假设我们要求函数 f ( x 1 , x 2 ) f(x_1,x_2) f(x1,x2)的最小值,起始点为 x ( 1 ) = ( x 1 ( 1 ) , x 2 ( 2 ) ) \displaystyle x^{(1)}=(x^{(1)}_1, x^{(2)}_2) x(1)=(x1(1),x2(2)),则在 x ( 1 ) x^{(1)} x(1)点处的梯度为 ∇ f ( x ( 1 ) ) = ( ∂ f ∂ x 1 ( 1 ) , ∂ f ∂ x 2 ( 1 ) ) \displaystyle\nabla f(x^{(1)})=(\frac{\partial f}{\partial x_1^{(1)}}, \frac{\partial f}{\partial x^{(1)}_2}) f(x(1))=(x1(1)f,x2(1)f),我们可以进行第一次梯度下降来更新 x x x
x ( 2 ) = x ( 1 ) − α ∇ f ( x ( 1 ) ) x^{(2)} = x^{(1)} - \alpha \nabla{f(x^{(1)})} x(2)=x(1)αf(x(1))
其中, α \alpha α被称为步长,在机器学习中也被称为学习率。这样我们就得到了下一个点 x ( 2 ) x^{(2)} x(2),重复上面的步骤,直到函数收敛,此时可认为函数取得了最小值。

3. 梯度下降算法

在介绍实际使用的算法之前,有必要介绍下与之相关的三个概念:epoch,iteration,batch

名词 定义
Epoch 使用训练集的全部数据对模型进行一次完整训练,被称之为“一代训练”
Batch 使用训练集的一小部分样本对权重进行一次反向传播的参数更新,这一小部分样本被称为“一批数据”
Iteration 使用一个Batch数据对模型进行一次参数更新过程称为“一次训练”

一个Batch包含的样本数目称为Batch_size,一般设为 2 2 2 n n n次幂,常用的包括64,128,256。 网络较小时选用256,较大时选用64

梯度下降法算法一般有三种形式:

  • 随机梯度下降stochastic gradient descent
  • batch梯度下降batch gradient descent
  • mini-batch梯度下降mini-batch gradient descent

其实大体上都是一样的,差别就在于所用的batch_size大小不一样,由此影响了损失函数所采用的样本点的数量,从而实现不同速度和精度的梯度下降方式,随机梯度下降和batch梯度下降都是特殊的mini-batch梯度下降。

你可能感兴趣的:(机器学习,机器学习,神经网络,深度学习)