什么是Caffe中的`weight_decay`元参数?

Sha*_*hai 24 machine-learning neural-network gradient-descent deep-learning caffe

看一个'solver.prototxt'在BVLC/caffe git上发布的例子,有一个训练元参数

weight_decay: 0.04
Run Code Online (Sandbox Code Playgroud)

这个元参数是什么意思?我应该赋予它什么价值?

Sha*_*hai 44

weight_decay元参数支配神经网络的调整项.

在训练期间,将正则化项添加到网络的损失中以计算后向梯度.该weight_decay值决定了该正则化项在梯度计算中的主导地位.

根据经验,你拥有的训练样本越多,这个术语就越弱.您拥有的参数越多(即,更深的网络,更大的过滤器,更大的InnerProduct层等),该术语应该越高.

Caffe还允许您通过设置在L2正则化(默认)和L1正则化之间进行选择

regularization_type: "L1"
Run Code Online (Sandbox Code Playgroud)

然而,由于在大多数情况下权重是小数(即-1<w<1),L2权重的范数明显小于它们的L1范数.因此,如果您选择使用,则regularization_type: "L1"可能需要调整weight_decay到更小的值.

虽然在训练期间学习率可能(并且通常确实)发生变化,但正则化权重始终是固定的.

  • @Janosch通常需要在数值问题的参数多于约束时使用正则化.在学习中,训练样例代表"约束".因此,如果你有(更多)训练样例而不是自由参数,你需要更少担心过度拟合,你可以减少正则化项.但是,如果您只有很少的训练样例(与参数数量相比),那么您的模型很容易过度拟合,您需要强大的正则化术语来防止这种情况发生 (11认同)

Tal*_*rom 14

体重衰减是一个惩罚大重量的正则化术语.当重量衰减系数大时,大重量的惩罚也很大,当小重量可以自由增长时.

看看这个答案(不是特定于caffe)以获得更好的解释: 神经网络"体重衰减""学习率"之间的差异.