SGD原理及Pytorch实现

目录

    1 SGD
      1.1 原理
      1.2 构造
      1.3 参数详解——momentum

✨1 SGD

损失函数是用来度量模型输出和真实值的偏差,损失函数越小,说明我们的模型效果越好,所以我们需要不停的最小化这个函数。如果损失函数是一个凸函数,求得最小值还是比较简单的,直接求导就可以。但是复杂的深度学习网络一般是一个非凸函数,很难直接求导,所以优化算法就是在这种情况下用来最小化损失函数。SGD是随机梯度下降,优化算法的一种。

2.1 原理

SGD为随机梯度下降,原理可看刘建平老师博客。

2.2 构造

构造:

class torch.optim.SGD(
	params, 
	lr, 
	momentum=0, 
	dampening=0, 
	weight_decay=0, 
	nesterov=False
)

参数:

  1. params:需要优化的参数
  2. lr:float, 学习率
  3. momentum:float,动量因子
  4. dampening:float,动量的抑制因子
  5. weight_decay:float,权重衰减
  6. nesterov:bool,是否使用Nesterov动量

2.3 参数详解——momentum

一般随机梯度下降时,每次更新公式都是:
SGD原理及Pytorch实现_第1张图片
而增加动量后,公式是:
在这里插入图片描述
即在原值乘一个动量因子momentum(0

以一个例子说明,假设现梯度为5,经历两次梯度变化分别是-2和+3,momuntu=0.9。
传统下经历两次梯度变化,最终梯度应该是5=》3=》6
使用momentum后本次梯度应该是5=》3=》0.9*3+3=5.7。局部上第二次梯度变化虽然仍是+3,但是由于使用了momuntu,整体上看是+2.7,起到一个减速作用。

你可能感兴趣的:(Pytorch使用,pytorch,人工智能,python)