赞
踩
我们知道,深度学习过程的本质,实际上是在网络构建好、以及loss计算方式确认的情况下。用loss对模型总可学习参数求梯度值乘以学习率来更新模型里面的相关学习参数。那么学习率我们应该如何设定呢?
最朴素的思路是,学习率要先大后慢慢变小。因为一开始参数初始化后距离他的最优解距离通常来说是比较远的。我们要一开始以较大的学习率把参数更新到离最优值比较近的位置,然后在减小学习率来进行微调,达到使学习参数尽可能的接近最优值的目的。如下图所示红线是我们想要的最佳效果。
已知的学习率调整策略也是多样的,但是其本质都会有从大到小的一个过程。大概可以归纳为以下三种模式:
损失函数。本质其实就是我们期望预测值和我们标定目标值的距离表现。大概有以下几种形式:
torch.nn.
CrossEntropyLoss
(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean')交叉熵损失函数。一般用于分类。
binary crossentropyloss,可以认为是交叉熵损失函数的一种特殊形式,认为普通交叉熵分了两类。
balance binary crossentropyloss。这种也是二分类的情况,我们知道很多时候正样本和负样本的比例是不均衡的。这个损失函数的目的是让比例小的样本损失系数大一些,比例大的样本损失系数小一些。
focal loss。这种是针对于难训练样本。公式如下,我们发现其实形式和balance有点像。但是focalloss又增加了一个系数(1-p)的指数,比如说我这个样本应该是正的,但是我这边预测出来是正的概率比较底,这个时候(1-p)就会比较大前面的系数也就比较大,相对来说突出了损失值。(虽然我认为crossentropy本身就有这个效果了,在加这个系数应该是为了让损失更突出一些优化的时候应该可以更快一些)
dice loss。其本质应该是建立在iou的基础上的。图像分割时候用到的一种损失函数。可以参考下这个地址https://zhuanlan.zhihu.com/p/86704421
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。