CNN 训练中的最佳权重更新
Optimum Weight update in CNN training
我有两个网络。 D->C1,R1->P1->C2,R2->loss and D->C1,R1,C2,R2->P1->C3,R3->loss
。
D是数据,C是Conv,R是Relu,P是Pool。
我从头开始训练第一个网络,因为两个网络只有 C2,R2 层不同,所以我使用了第一个网络的所有权重,只训练 C2。 C1 和 C3 设置为 lr_mult=0.So 它们的权重不会更新。
我的问题是我如何知道 C2 具有停止训练的最佳权重。
假设网络 1 在 5 个时期后 mAP=0.85。当我训练网络 2 时,它在 1 个纪元之后具有 mAP=0.86。
这种情况应该什么时候停止训练?
不幸的是,神经网络优化一般is non-convex, so it is impossible to know if a particular local minima is a global minima [*] The fact that you have pretrained weights isn't particularly relevant [**] . The type of solver has an effect
也就是说,有些标准偶尔会被试探性地使用。重要的是: 用于评估(然后在检查性能时使用单独的验证集)。
- 测试集平台MSE的变化
- 交叉验证[***]
- 学习率消失(depends on your solver)
- 固定的迭代次数
这是一个 slightly older survey,尽管结果往往是经验性的
此外,Goodfellow 提出以下重要建议,以确保您的参数尽可能最佳,无论您的标准如何:
Every time the error on the validation set improves, we store a copy
of the model parameters. When the training algorithm terminates, we
return these parameters, rather than the latest parameters. The
algorithm terminates when no parameters have improved over the best
recorded validation error for some pre-specified number of iterations
脚注
[*] 还有其他条件 (e.g) 可能会提供此信息,但其中 none 适用
[**] 我不知道有这样或那样的研究,但我怀疑它实际上会使问题 更难 ,因为你'重新从可能难以爬出的非常好的局部最小值开始
[***] 这与使用交叉验证来衡量测试集的准确性或模型选择不同,请参阅 here
我有两个网络。 D->C1,R1->P1->C2,R2->loss and D->C1,R1,C2,R2->P1->C3,R3->loss
。
D是数据,C是Conv,R是Relu,P是Pool。
我从头开始训练第一个网络,因为两个网络只有 C2,R2 层不同,所以我使用了第一个网络的所有权重,只训练 C2。 C1 和 C3 设置为 lr_mult=0.So 它们的权重不会更新。
我的问题是我如何知道 C2 具有停止训练的最佳权重。
假设网络 1 在 5 个时期后 mAP=0.85。当我训练网络 2 时,它在 1 个纪元之后具有 mAP=0.86。
这种情况应该什么时候停止训练?
不幸的是,神经网络优化一般is non-convex, so it is impossible to know if a particular local minima is a global minima [*] The fact that you have pretrained weights isn't particularly relevant [**] . The type of solver has an effect
也就是说,有些标准偶尔会被试探性地使用。重要的是:
- 测试集平台MSE的变化
- 交叉验证[***]
- 学习率消失(depends on your solver)
- 固定的迭代次数
这是一个 slightly older survey,尽管结果往往是经验性的
此外,Goodfellow 提出以下重要建议,以确保您的参数尽可能最佳,无论您的标准如何:
Every time the error on the validation set improves, we store a copy of the model parameters. When the training algorithm terminates, we return these parameters, rather than the latest parameters. The algorithm terminates when no parameters have improved over the best recorded validation error for some pre-specified number of iterations
脚注
[*] 还有其他条件 (e.g) 可能会提供此信息,但其中 none 适用
[**] 我不知道有这样或那样的研究,但我怀疑它实际上会使问题 更难 ,因为你'重新从可能难以爬出的非常好的局部最小值开始
[***] 这与使用交叉验证来衡量测试集的准确性或模型选择不同,请参阅 here