返回信息流如下图,在训练34层resnet时,在训练进行到一定程度时,训练集上的loss总是在每个epoch上下降,而第二个eopch开始时又会重新开始断崖式下降,从实验现象看似乎是越接近过拟合这种现象越明显,why?
附 test loss
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #25708同步于 2017/9/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
训练CNN时的一个现象,为什么?
icybee
2017/9/12镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
看看训练的时候有没有shuffle,60000iter有明显的过拟合,可以尝试增加L2的weight decay或者多做一些数据增强,当然也可以换个模型,不一定非要换更轻量级的也许inception其他结构会有更好的效果
tensorflow,每轮后是会去shuffle的
【 在 moonfighting 的大作中提到: 】
: 不知道你用的什么框架,如果可以的话可以尝试在每个epoch后shuffle一遍全部训练集
6W iter的时候比较特殊,是在6W iter左右把learning rate剑到原来的十分之一,所以会loss有一个较大下降,然后每轮训练之后是有去shuffle train set的,inception-resnet-v1 我也试过,各种原因没有resnet效果好,差一两个点,当然也可能是我训练的有问题
现在有点理解不能的就是为什么train loss下降曲线会是这样的
【 在 soeaver 的大作中提到: 】
: 看看训练的时候有没有shuffle,60000iter有明显的过拟合,可以尝试增加L2的weight decay或者多做一些数据增强,当然也可以换个模型,不一定非要换更轻量级的也许inception其他结构会有更好的效果
【 在 icybee 的大作中提到: 】
: 6W iter的时候比较特殊,是在6W iter左右把learning rate剑到原来的十分之一,所以会loss有一个较大下降,然后每轮训练之后是有去shuffle train set的,inception-resnet-v1 我也试过,各种原因没有resnet效果好,差一两个点,当然也可能是我训练的有问题
: 现在有点理解不能的就是为什么train loss下降曲线会是这样的
逐步调试下你的训练过程吧:
换个别的数据集,比如原论文中的 CIFAR10。要是换个数据集症状消失,那问题可能出在数据层面上。
换个小点的模型,做个简单核查,比如 5 层的 CNN;
用别的优化算法,比如 adadelta 自适学习率;
要是这些都没用,可能代码有 BUG。
还有个问题是学习率的设置。60000 迭代之前, training loss 和 test loss 都在一直下降,这时候你突然把学习率给降了,test loss 就开始上升,而 training loss 继续保持下降。这个过拟合的发生看起来更像是你降学习率而直接导致的。与其这样,那为什么不等 training loss 平了之后再降学习率?那说不定 60000 迭代之后 test loss 还能继续降呢,而不是上升。
谢谢你的建议~ &&train 和 test的loss我画图的时候没有对齐,对齐看是在学习率变化后train 和test loss 都明显下降,然后才过拟合
【 在 coldmoon (冷月无痕) 的大作中提到: 】
: 逐步调试下你的训练过程吧:
: 换个别的数据集,比如原论文中的 CIFAR10。要是换个数据集症状消失,那问题可能出在数据层面上。
: 换个小点的模型,做个简单核查,比如 5 层的 CNN;
: ...................
【 在 icybee 的大作中提到: 】
: 谢谢你的建议~ &&train 和 test的loss我画图的时候没有对齐,对齐看是在学习率变化后train 和test loss 都明显下降,然后才过拟合
你可以画 test error 曲线,test loss 一般不用。因为有的人写代码计算 test loss 是对一个 batch 做的,在整个数据集上计算 loss 没什么意义;而 test error 才是对整个测试集遍历一次,不是 batch。所以显然 test error 更有意义。
评估分类模型性能的时候,一般画 training loss 和 test error,把这俩画在同一张图里。
评估分类模型是否发生性能退化现象 (the degradation problem, 见 resnet 原论文),一般画 training error 和 test error。