零基础实战机器学习
黄佳
新加坡科研局首席研究员
19489 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 24 讲
零基础实战机器学习
15
15
1.0x
00:00/00:00
登录|注册

13|深度学习(下):3招提升神经网络预测准确率

你好,我是黄佳。欢迎来到零基础实战机器学习。
在前面两讲中,我们创建了 CNN 和 RNN 两个常用的深度神经网络模型。今天,我们来专门谈一谈神经网络的优化,让前两讲中所创建的网络模型拥有更好的性能。
关于性能优化,我们不是第一次讲了,在第 8 讲第 10 讲中,我们对应普通的机器学习模型,讲了三个阶段的性能调优:
在数据处理阶段,我们介绍了特征工程对于模型性能的重要性;
在模型训练阶段,我们介绍了过拟合的危害以及如何避免过拟合;
在测试评估阶段,我们介绍了交叉验证以及参数调优的方法。
其实,深度学习的性能优化和其它普通的机器学习模型类似,我们也可以从数据处理、网络模型本身,以及如何对神经网络进行参数调优这三个主要方面去考虑。

数据方面的考量:图像数据增广

我们已经知道,要提高模型的性能,数据方面的考量就是提升数据的“质”和“量”。那么,提升“质”,就是做好特征工程。不过你知道,神经网络对特征工程的要求是比较低的,因为神经网络本身就可以完成特征提取。
那怎么增加数据的“量”呢?我们都清楚,有标签的数据搜集起来真是太困难了,尤其是带标签的图片数据。那有没有什么方法能够在只有这么多图片的情况下,来提升我们第 11 讲中那个鲜花图片分类网络的性能呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了神经网络模型性能优化的方法,包括数据增广、Dropout层的添加以及不同类型的神经网络优化器的选择和应用。数据增广通过对图像进行水平翻转、位移、颜色抖动等操作来增加数据量,提高模型的泛化能力;Dropout层的添加可以防止过拟合,提高神经网络的泛化能力;而选择合适的神经网络优化器可以优化模型的训练效果。文章还提供了在Keras中使用ImageDataGenerator工具定义数据增广器的示例代码,并展示了数据增广对卷积神经网络模型性能的显著提升。此外,文章还提出了三个思考题,鼓励读者在实际项目中尝试不同的优化方法,以提升模型性能。整体而言,本文为读者提供了丰富的技术内容,涵盖了数据增广和神经网络模型优化的多个方面,对于希望提升模型性能的读者具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《零基础实战机器学习》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 在路上
    佳哥好,听完这讲我有两个问题。第一,从“神经网络中的局部最低点”这张图来看,很容易看出哪个点是全局最低点,在任意时刻模型的数据都是确定的,也就是这张图代表的函数是确定的,为什么神经网络的参数不能直接根据函数找到全局最低点呢?第二,如果我在事后都不能解释Adam优化器为什么比RMSProp更优,那指不定那天我又要调整参数了,这个过程听着怎么一点都不智能。

    作者回复: 嗯,神经网络存在着解释性比较差这个问题。这也是公认的,它就是一个黑盒子,解决了问题,但是很难说清如何解决的。而全局最低点,在整个网络中非常难找,因为网络的拟合空间远远比那张图显示处理的复杂的多得多,而且多维空间是根本展示不出来的。Andrew Ng在它的斯坦福机器学习课里面说:找到一个不错的局部最低点就挺好的了。因此不必纠结于全局最低点。😝😝 也因此,“迁移学习”的概念在神经网络这儿有很多的应用,也就是,使用大量的已经调好了的,参数都定下来了的大型神经网络来解决工业级别的问题。 比如: 牛津 VGG 模型(http://www.robots.ox.ac.uk/~vgg/research/very_deep/) 谷歌 inception 模型(https://github.com/tensorflow/models/tree/master/inception) 微软 ResNet 模型(https://github.com/KaimingHe/deep-residual-networks) 谷歌 Word2vec 模型(https://code.google.com/archive/p/word2vec/) 然后,我们直接就在这些大型网络模型的基础上,进行很少的微调即可。这种预训练好了的大型网络的迁移,在Keras中也很容易实现的。(可以参考《Python深度学习》一书) 我们这里,就只是简单的介绍有这些参数可调,也就只是这样,那么进一步利用深度网络解决大型问题。那就需要用到这些预训练好了的网络。 当然,也有神经网络自动调参的方法,可以搜索AutoML(自动化机器学习)的一些文章。这些,都需要时间和精力进一步研究。

    2021-09-27
    3
    5
  • Matthew
    在看这个专栏前,我把李沐大神的《动手学深度学习》啃了一段时间,再来看专栏的11-13讲,还是有点感觉得。李沐大神的课程有从零实现的部分,而这个专栏侧重于调用API,相得益彰。

    作者回复: 哎呀,实在不敢与大神比较🤯。我希望能够从纯实践的角度提供一点点思路。

    2023-06-01归属地:江苏
  • iff
    老师,您好,LSTM预测某一数据时(时间序列数据),发现训练集和测试集中预测值和真实值之间均存在延迟现象,请问一下,这是什么原因,怎么解决?

    作者回复: 你好,试一试反复运行,调整轮次,调整网络层数,加入一些Dropout层,之后,还都有这个问题吗?在我调试的过程中,并没有发现明显的滞后现象。可以试着调一下网络结构。 不过,在这里,我这个例子其实重点不是为了展示预测有多准,这个数据集信息量也很小。我觉得预测未来的数字其实是很难做到的,更多的是去理解RNN网络的应用场景,初步掌握神经网络的训练、调参过程。

    2021-09-28
    2
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部