学习率的调整策略以及loss函数的设定总结

我们知道,深度学习过程的本质,实际上是在网络构建好、以及loss计算方式确认的情况下。用loss对模型总可学习参数求梯度值乘以学习率来更新模型里面的相关学习参数。那么学习率我们应该如何设定呢?

最朴素的思路是,学习率要先大后慢慢变小。因为一开始参数初始化后距离他的最优解距离通常来说是比较远的。我们要一开始以较大的学习率把参数更新到离最优值比较近的位置,然后在减小学习率来进行微调,达到使学习参数尽可能的接近最优值的目的。如下图所示红线是我们想要的最佳效果。

已知的学习率调整策略也是多样的,但是其本质都会有从大到小的一个过程。大概可以归纳为以下三种模式:

  1. 衰减式。学习率单纯的从大到小进行调整。
  2. 循环式。学习率从高到底,在从底到高,在从高到底。。。以此循环。这样做的好处就是,我们往往不知道何时应该降低学习率应该降低多少。所以采用循环的方式,万一我这次学习率降快了,下一次循环的时候也能把学习率在拉回来。
  3. 自适应形式。reduceonplateau方式是允许通过一些验证测量来动态的调整学习率。当指标停止改进时,降低学习率。一旦学习停滞,模型通常会从降低2-10倍的学习速率中获益。这个调度器读取一个度量数量,如果在一个“耐心的”epoch数量上没有看到任何改进,那么学习率就会降低。

损失函数。本质其实就是我们期望预测值和我们标定目标值的距离表现。大概有以下几种形式:

torch.nn.CrossEntropyLoss(weight=Nonesize_average=Noneignore_index=-100reduce=Nonereduction='mean')交叉熵损失函数。一般用于分类。

binary crossentropyloss,可以认为是交叉熵损失函数的一种特殊形式,认为普通交叉熵分了两类。

balance binary crossentropyloss。这种也是二分类的情况,我们知道很多时候正样本和负样本的比例是不均衡的。这个损失函数的目的是让比例小的样本损失系数大一些,比例大的样本损失系数小一些。

focal loss。这种是针对于难训练样本。公式如下,我们发现其实形式和balance有点像。但是focalloss又增加了一个系数(1-p)的指数,比如说我这个样本应该是正的,但是我这边预测出来是正的概率比较底,这个时候(1-p)就会比较大前面的系数也就比较大,相对来说突出了损失值。(虽然我认为crossentropy本身就有这个效果了,在加这个系数应该是为了让损失更突出一些优化的时候应该可以更快一些)

dice loss。其本质应该是建立在iou的基础上的。图像分割时候用到的一种损失函数。可以参考下这个地址https://zhuanlan.zhihu.com/p/86704421

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值