梯度下降、反向传播、学习率 α 、优化器

反向传播学习连接:前向传播、反向传播——通俗易懂_马鹏森的博客-CSDN博客_前向传播 反向传播


梯度下降与反向传播

1、反向传播求解损失函数关于各个参数的梯度的一种方法。(求梯度【偏导数】)

2、梯度下降根据反向传播计算得到的梯度(偏导)来更新各个权重W,使损失函数极小值的一种方法(使权重W更好)

学习率 α 与梯度下降的关系?

学习率  α 是梯度下降中权重更新公式的一部分

梯度下降中的权重更新公式:

利用,权重更新公式 更新权重W,其中  α  是学习率

备注:我认为:学习率  == 步长

优化器与梯度下降的关系?

梯度下降属于优化器的一种,优化器就是使使损失函数极小值的一种方法,它里面也包含学习率

在机器学习、深度学习中使用的优化算法除了常见的梯度下降,还有 Adam,Adagrad,RMSProp 等几种优化器

实战代码:

理解了上面的内容后,我们便知道了整个神经网络的实现过程分为5步:(Pytorch实现神经网络_马鹏森的博客-CSDN博客

前向传播得到预测值 --> 求预测值与真实值的损失 --> 优化器梯度清零(可选操作) --> 利用反向传播求所有参数的梯度(导数) --> 优化器更新权重W

# Gradient Descent
for epoch in range(50):
   # Forward pass: Compute predicted y by passing x to the model
   y_pred = model(x)
 
   # Compute and print loss
   loss = criterion(y_pred, y)
   print('epoch: ', epoch,' loss: ', loss.item())
 
   # Zero gradients, perform a backward pass, and update the weights.
   optimizer.zero_grad()
 
   # perform a backward pass (backpropagation)
   loss.backward()
 
   # Update the parameters
   optimizer.step()

备注:这里的  optimizer.zero_grad()  是梯度清零操作,需要的内存较大,如果使用“梯度累加”操作的话:在内存大小不够的情况下叠加多个batch的grad作为一个大batch进行迭代,因为这个和大batch_size得到的梯度是等价的,但是效果自然是差一些,这个可以说是“增大batch-size减少内存”的一个小trick吧

PyTorch中在反向传播前为什么要手动将梯度清零? - 知乎

损失函数与优化器理解+【PyTorch】在反向传播前为什么要手动将梯度清零?optimizer.zero_grad()_马鹏森的博客-CSDN博客

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马鹏森

太谢谢了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值