图像语义分割实践(五)优化器与学习率

概述

在数据制作环节中,提到minibatch思想用于数据批次量获取,是一种优化器思想,而该文则是对各种优化器进行介绍。
优化器:最小化损失函数算法,把深度学习当炼丹的话,优化器就是炉子,决定火候大小,炉子属性等,在深度学习监督学习的模型中,常用梯度下降法求解最优参数;
学习率:在优化器中,决定着梯度下降的速度,炉子调整火候的时间点;

Pytorch中,torch.optim 提供优化器类型选择,torch.optim.lr_scheduler 提供学习率调整策略;

优化器策略

优化器(“炉子”)的属性分析

1.根据每次更新使用的样本数量产生的梯度下降方法

梯度下降方法(Gradient Descent)变体如图所示,BGD全样本训练,计算量太大,计算速度慢;SGD太过震荡,容易陷入鞍点找不到最优点;MBGD训练稳定,计算速度快;
在这里插入图片描述
SGD 公式
v t = η ∇ θ J ( θ t − 1 ) θ t = θ t − 1 − v t v_t=η∇_θJ(θ_{t−1}) \\θ_t=θ_{t-1}−v_t vt=ηθJ(θt1)θt=θt1vt
即使采用MBGD的方法仍然有很大难题,还不能保证良好的收敛性。

  • 学习率选择和设计问题;
  • 参数更新都在同一个学习率下更新的,实际训练特征出现频率少的需要更大的学习率;

2.根据局部历史梯度对当前梯度进行平滑方法

由 SGD -> Momentum
v t = γ v t − 1 + η ∇ θ J ( θ t − 1 ) θ t = θ t − 1 − v t v_t = γ v_{t−1} + η \nabla_θ J(θ_{t−1}) \\ θ_t = θ_{t-1} − v_t vt=γvt1+ηθJ(θt1)θt=θt1vt
Momentum,动量法, 除了保留 ∇ θ J ( θ t − 1 ) ∇_θJ(θ_{t−1}) θJ(θt1)该位置的梯度向量,同时加入 v t − 1 v_{t−1} vt1考虑上一次梯度向量,保证更新的梯度方向不会过分偏离上一次梯度,从而方向抖动不会很明显,前进方向由惯性动量决定,因此, γ γ γ称为动量超参。可以看出,缺陷还是很明显的,所有参数还是无法逃离共享同一个学习率的命运。

由 Momentum -> Nesterov Accelerated Gradient
v t = γ v t − 1 + η ∇ θ J ( θ t − 1 − γ v t − 1 ) θ t = θ t − 1 − v t v_t = \gamma v_{t−1} + \eta \nabla_θ J(θ_{t−1} - \gamma v_{t−1}) \\ θ_t = θ_{t-1} − v_t vt=γvt1+ηθJ(θt1γvt1)θt=θt1vt
Nesterov Accelerated Gradient,NAG加速动量法,当前位置梯度加入 − γ v t − 1 -γv_{t−1} γvt1近似预测未来的权重,部分RNN网络上表现良好,比Momentum震荡幅度会小,“冲坡”不至于太快 。

# NAG加速动量法
optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=0.9, nesterov=True)

3.根据自动调整梯度下降方法

Adagrad(Adaptive Gradient 自适学习率应梯度下降)
n t = n t − 1 + g t 2 , [ 其 中 , g t 为 当 前 梯 度 ] Δ θ t = − η n t + ϵ . g t , [ ϵ 防 止 分 母 为 0 而 已 ] n_t = n_{t-1} + g_t^2, \quad \quad [ 其中,g_t为当前梯度] \\ \Delta θ_t = - \frac{\eta}{\sqrt{n_t + \epsilon }} . g_t , \quad \quad [\epsilon防止分母为0而已] nt=nt1+gt2,[gt]Δθt=nt+ϵ η.gt,[ϵ0]
其中, Δ θ t \Delta θ_t Δθt项是 θ t θ_t θt 的差值,更新较频繁的 θ t θ_t θt累计的 n t n_t nt越大,分母越大,学习率变小,从而 θ i θ_i θi的学习率就调小。因此, A d a g r a d Adagrad Adagrad对于更新频率较低的参数用较大的学习率,对于更新频率较高的参数用较小的学习率。

有的时候学习速率收敛的过快会导致模型在训练到局部最优解前就停止参数更新。为了解决这个问题,人们提出了RMS Prop梯度下降法
Adadelta & Rmsprop
θ t = θ t − 1 − η R M S [ g ] t − 1 . g t − 1 θ_t=θ_{t−1}−\eta RMS[g]_{t−1} . g_{t−1} θt=θt1ηRMS[g]t1.gt1
优点是不需要指定学习率

Adaptive Moment Estimation(Adam)
本质是带 Momentum 的 RMSProp 方法,新手推荐该方法,万金油。

# Adam
optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=0.9, nesterov=True)

几个优化器的梯度下降过程如图所示

各种优化器的梯度下降过程

学习率策略

PyTorch提供的学习率调整策略分为三大类,分别是

  • 有序调整:等间隔调整(Step),按需调整学习率(MultiStep),指数衰减调整(Exponential)和余弦退火(CosineAnnealing)。
  • 自适应调整:自适应调整学习率 ReduceLROnPlateau。
  • 自定义调整:自定义调整学习率 LambdaLR。
    注:PyTorch提供的学习率调整策略, 学习率调整策略接在优化器后头即可,torch.optim.lr_scheduler为代码接口。
# 对构建的模型选择 optimizer       :: torch.optim
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
# 对optimizer选择 learning_rate   :: torch.optim.lr_scheduler
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=500, gamma=0.9)

各类 optimizer 的原理
自适应学习率优化器伪代码
优化器推导公式
优化器文字描述推荐
优化器方法
pythorch优化器学习率写法
md符号
【Pytorch 】笔记七:优化器源码解析和学习率调整策略
【Pytorch 】笔记六:初始化与18种损失函数的源码解析
kaggle学习率示例:https://www.kaggle.com/code/isbhargav/guide-to-pytorch-learning-rate-scheduling/notebook

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
图像语义分割是指对图像中的每个像素进行语义信息标注的任务。它广泛应用于自动驾驶、肝癌检测等领域。语义分割的难点主要来自物体层次、类别层次和背景层次。这意味着语义分割任务需要在复杂多变的背景下正确标记出语义信息,并区分具有高度相似外观的不同类别物体。\[1\] 在图像语义分割中,有传统方法和基于神经网络的方法。传统方法包括显式特征方法、基于概率图模型的方法和无监督学习方法。而基于神经网络的方法则隐式地建立了像素到语义的映射,不需要后期人工参与即可完成整个分割过程。\[2\] 深度学习模型在图像语义分割中起到关键作用。其中,全卷积网络(FCN)是语义分割深度学习模型的开山之作,它建立了一种用于图像语义分割的通用模型框架。FCN通过有效推理和学习,可以输入任意尺寸的图像,并生成相应尺寸的输出,实现像素到像素的映射。此外,FCN还提出了多项参数用于衡量模型的性能表现,如像素正确率、平均像素正确率、平均交叠率和平均加权交叠率。\[3\] 除了FCN,还有其他深度学习模型如PNPNet,它通过空间池模块和空间场景解析网络,利用不同区域的上下文聚合全局上下文信息的能力,为像素级预测任务提供了优越的框架。\[3\] 总之,深度学习模型在图像语义分割中发挥着重要作用,通过训练优化参数,可以实现对图像中每个像素的语义信息标注。 #### 引用[.reference_title] - *1* *2* *3* [【论文阅读笔记】图像语义分割深度学习模型综述(张新明等)](https://blog.csdn.net/box0115/article/details/113395028)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能之心

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值