如何找到最优权重衰减值
论文A DISCIPLINED APPROACH TO NEURAL NETWORK HYPER-PARAMETERS: PART 1 – LEARNING RATE, BATCH SIZE, MOMENTUM, AND WEIGHT DECAY给出了关于学习率、批量大小、动量和权重衰减的训练方法。下面学习如何找到最优权重衰减值
论文A DISCIPLINED APPROACH TO NEURAL NETWORK HYPER-PARAMETERS: PART 1 – LEARNING RATE, BATCH SIZE, MOMENTUM, AND WEIGHT DECAY给出了关于学习率、批量大小、动量和权重衰减的训练方法。下面学习如何找到最优权重衰减值
如何寻找最优学习率?
论文Cyclical Learning Rates for Training Neural Networks提出了周期学习率调度方法,让学习率在合理的边界值之间循环变化(不再单调递减)
论文Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour使用warmup
进行学习率的调整,能够帮助模型的训练
余弦退火(Cosine Annealing
)方法来自于论文SGDR: STOCHASTIC GRADIENT DESCENT WITH WARM RESTARTS
在分类任务中,通常使用交叉熵损失进行梯度训练。交叉熵损失的作用就是最大化正确标签的对数似然概率。其损失值计算如下:
\[ H(y, p) =-1\times \sum_{k=1}^{K} y_{k}log(p_{k}) \]
当\(y_{k}\)属于正确类时\(=1\),否则\(=0\)。这会导致两个问题:
logit
和所有其他logit
之间的差异变大,这与有界梯度\(\frac {∂l}{∂z_{k}}\)相结合,降低了模型的迁移能力标签平滑正则化的目的是防止最大逻辑变得比所有其他逻辑大得多。其实现方式:在交叉熵损失中加入一个独立于训练样本的基于标签的分布\(u(k)\)
\[ y(k) = (1 - \epsilon)δ_{k,y} + \epsilon u(k) \]
从实现上看,LSR鼓励神经网络选择正确的类,并且正确类和其余错误类之间的差别是一致的。这样能够鼓励梯度向正确类靠近的同时远离错误类
在论文中将\(u(k)\)设置为均匀分布\(u(k) = 1/K\),所以
\[ y(k) = (1 - \epsilon)δ_{k,y} + \frac {\epsilon}{K} \]
\(\epsilon可设置为0.1\)
对于目标检测算法而言,mAP(mean average precision)
是最常用的评价指标了。关于如何计算mAP
,不同的数据集提供了不同的实现方式,其中最常用的就是PASCAL VOC
数据集的mAP
计算,网上有很多相关的资料,看了很多还是感觉不理解,所以打算好好记录一下
相关实现:zjykzj/vocdev