在学习paddle的手写数字识别Demo时发现一个有趣的现象
首先是网络结构

一层卷积, 一层池化
第二层卷积, 第二层池化
全连接.
前向计算部分:

我期间把这个网络结构的softmax去掉了, 发现准确率上升的非常快, 很快会达到0.99, 并且已经使用验证集与测试集分别测试过了, 应该并不是过拟合

这是有softmax的准确率:

有softmax的结构准确率一直在0.7-0.85之间徘徊, 大量训练上升效果有限, 非常好奇为嘛少了softmax反而快了这么多. 我就把训练过程中的包含softmax和不包含softmax的训练中前向计算的结果打印出来:
softmax:

无softmax:

根据数值对比发现相对于softmax的结果, 非softmax的正确与错误结果差距更大, softmax基本区间0-1, 而非softmax的差距有时能达到30. 所以我推测是训练途中softmax导致数据的区分特征(数值差异)不够明显导致训练效果低下, 我尝试在softmax情况下拉大正确与错误结果的距离来复现非softmax的效果:

用来扩大正确答案与错误答案的距离.
其实softmax最终的训练结果也是能达到0.99甚至1.0, 但是需要时间很长. 我这种方法相当于把每次训练的步子拉大. 也算一种优化过程中的一种
本文探讨了在Paddle的手写数字识别模型中去除softmax层后准确率显著提升的现象。通过对比有无softmax层的训练结果,发现去掉softmax层能够增大正确与错误预测之间的差距,从而加速训练过程。
2644

被折叠的 条评论
为什么被折叠?



