【深度学习】pytorch 炼丹过程各元素深度解析(持续更新)

文章目录

  • 梯度
  • 优化器(optimizer)
    • 作用
    • 参数
    • 常用方法/类
  • 学习率调度器(lr_scheduler)
    • 作用
  • 评价指标
    • 准确率
    • 召回率
    • 精确度
  • 引用

梯度

导数-损失值(y)与 特征值(x) 的导数,这里是特征值还是权值和偏置我也在推敲,根据求导原理,是对x求导,那么x不管为多少都不会影响导数值,所以肯定不是权值和偏置。
梯度越小,求出的损失值便越小,真实值与预测值的差距便越小,妙啊!

  • 为什么loss.backward() 可以获取当前梯度?
    计算损失会传递两个值:预测值tensor,真实值tensor,而预测值tensor会包含整个计算过程,由哪些特征值、权值、偏置计算而来,从而求得梯度,(optimizer.step())再通过当前学习率的梯度下降算法,降低各梯度,求得新的权值和偏置。

优化器(optimizer)

为了优化我们的神经网络,使它在我们的训练过程中快起来,节省社交网络训练的时间,基于计算梯度(常用梯度下降)更新参数,深度学习里很多思想源于生活,优化参数通过主要通过梯度下降,而这个意相类似与人类生活中的下坡,如何让这个人合理、快速地走到正确位置,提出针对势能这些因素地方案思考

作用

通过学习率优化梯度。

参数

要更新的网络参数,学习率(lr),权重衰减等

  • learning rate(学习率)
    学习率较小时,收敛到极值的速度较慢。
    学习率较大时,容易在搜索过程中发生震荡。
  • weight decay(权重衰减)
    有效限制模型中的自由参数数量以避免过度拟合,在实践中,这会惩罚较大的权重,并有效地限制模型中的自由度
  • learning rate decay (学习率衰减)
    简而言之,控制学习率
    decay越小,学习率衰减地越慢,当decay = 0时,学习率保持不变。
    decay越大,学习率衰减地越快,当decay = 1时,学习率衰减最快。
  • momentum
    “冲量”这个概念源自于物理中的力学,表示力对时间的积累效应。
    每次x的更新量v为v=−dx∗lr,dx为目标函数func(x)对x的一阶导数,当使用冲量时,则把每次x的更新量v考虑为本次的梯度下降量−dx∗lr与上次x的更新量v乘上一个介于[0,1]的因子momentum的和即:v=−dx∗lr+v∗momemtum
    简而言之,
    当本次梯度下降- dx * lr的方向与上次更新量v的方向相同时,上次的更新量能够对本次的搜索起到一个正向加速的作用。
    当本次梯度下降- dx * lr的方向与上次更新量v的方向相反时,上次的更新量能够对本次的搜索起到一个减速的作用。

常用方法/类

  • SGD(梯度下降)
    寻常训练方法:重复不断的把整套数据放入神经网络NN中训练,相比寻常方法,SGD会把数据拆分后再分批不断放入 NN 中计算,缺点是:不能反映整体数据的情况,优点是加速了 NN 的训练过程, 而且也不会丢失太多准确率
  • Momentum
    我们把一个人从平地上放到了一个斜坡上, 只要他往下坡的方向走一点点, 由于向下的惯性, 他不自觉地就一直往下走, 走的弯路也变少了. 这就是 Momentum 参数更新
  • AdaGrad
    不是给喝醉酒的人安排另一个下坡, 而是给他一双不好走路的鞋子, 使得他一摇晃着走路就脚疼, 鞋子成为了走弯路的阻力, 逼着他往前直着走
  • RMSProp
    遵循momentum 的惯性原则,加上 adagrad 的对错误方向的阻力
  • Adam
    计算m 时有 momentum 下坡的属性, 计算 v 时有 adagrad 阻力的属性, 然后再更新参数时 把 m 和 V 都考虑进去

学习率调度器(lr_scheduler)

在将optimizer传给scheduler后,在shcduler类的__init__方法中会给optimizer.param_groups列表中的那个元素(字典)增加一个key = "initial_lr"的元素表示初始学习率,等于optimizer.defaults[‘lr’]。

作用

提供了一些根据epoch训练次数来调整学习率(learning rate)的方法。与optimizer的区别是一个是通过学习率用冲量等算法调整梯度,一个是通过epoch等调整调整学习率

评价指标

准确率

预测正确值占比

召回率

不漏掉罪人的能力

精确度

不错怪好人的能力

引用

感谢以下博客提供的资料!

https://blog.csdn.net/qq_34690929/article/details/79932416

你可能感兴趣的:(人工智能,python,深度学习,深度学习,pytorch,人工智能)