这篇博客接上一篇博客Make Your Own Neural Network之代码详解中。本文也是出自Make your own Neural NetWork这本书。上一篇博客讲了如何对这个神经网络类进行训练和测试,本文将介绍对神经网络做一些改进并测试效果。
声明:
- 代码用的Python编写
- 红字部分为后面要讲的内容的中心句
一些改进:调整学习率
使用我们之前用到的MNIST数据集,仅使用简单的算法和简单的Python,得到95%的性能得分并不是很糟糕,如果你想到此为止,非常合理~~但是让我们看看能否做一些简单的改进。
我们可以尝试的第一个改进就是调整学习率。现在让我们尝试将其倍增到0.6,看看实际上对整体网络学习是有所帮助或有害。测试结果是,我们的性能得分:0.9047。这比以前更糟,所以看起来像较大的学习率会导致一些弹跳和梯度下降过度。我们再来一次,学习率为0.1。这一次的表现是0.9523的改善,它的性能与该网站上列出的具有1000个隐藏节点的性能相似。很好!如果我们继续努力,设定一个更小的0.01的学习率会发生什么?表现不是很好,准确率为0.9241,所以似乎学习速度太小是有害的。这是有道理的,因为我们限制了梯度下降的速度,我们使步长太小了。以下绘制了这些结果的图表:
PS:这不是一个非常科学的方法,因为我们应该多次做这些实验,以减少随机性和“奇异的地形”在渐变下降中的影响,但是学习率仍然有一个比较好的建议值。

本文介绍了如何通过调整学习率、增加迭代次数和更改神经网络的隐藏层节点数量来改进神经网络性能。实验结果显示,学习率在0.1和0.3之间,200个隐藏节点,以及6个迭代次数可以获得最佳的MNIST数据集识别效果。
最低0.47元/天 解锁文章
1247

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



