分享好友 最新动态首页 最新动态分类 切换频道
提高模型性能,你可以尝试这几招...
2024-12-19 07:01

在EZDL到底怎样,试试看…一文中,我尝试了百度推出的在线人工智能设计平台EZDL,其愿景是任何人不用编写一行代码就可以轻松地构建、设计和部署人工智能(AI)模型。从试用效果上看,确实不需要编写一行代码,也不需要什么人工智能知识。但对于一名程序员而言,将人工智能包装到一个黑盒子中,而自己毫无掌控感,总有那么一点不踏实。

提高模型性能,你可以尝试这几招...

如果是自己动手构建模型、训练、预测,哪些地方是我们可以掌控的呢?本文延续EZDL到底怎样,试试看…一文中最后提出的一个问题模型的准确率为88.82%,我要提高准确率该怎么做,来谈谈提高模型性能,我们能够采取哪些措施。在一步步提高手写数字的识别率系列文章中,我有简单的谈到如何优化模型,这篇文章将更进一步探讨优化模型的方法。

我们还是以手写数字识别为例,代码改为使用keras框架实现,这里不贴代码,有兴趣的话请至我的github: https://github.com/mogoweb/aiexamples 查看,本文的示例代码位于keras/multi_layer_perceptron目录下。

手写数字识别最简单的实现算法是采用逻辑回归,因为是多分类问题,最后的输出使用softmax代替sigmoid。当然,你也可以把它看做仅有一层的简单神经网络,代码请查看如下链接

https://github.com/mogoweb/aiexamples/blob/master/keras/multi_layer_perceptron/mlp.py

经过200次迭代,训练结束后,模型在训练集上的准确率为92.36%,验证集上的准确率为92.27%,测试集上的准确率为92.22%。这意味着10个手写数字中只有不到一个没有被正确识别,一个不错的起点。

下面以此作为基线精度,比较不同的优化方法对性能提升的效果。

增加隐藏层

很自然的,我们可以想到第一个改进方法,为模型添加更多的层:

完整代码请参阅

https://github.com/mogoweb/aiexamples/blob/master/keras/multi_layer_perceptron/mlp_v2.py

增加的中间层称为隐藏层(hidden layer),这里只添加了一个具有N_HIDDEN个神经元并使用ReLU激活函数的全连接层(Dense)。增加隐藏层,迭代20次之后,训练集上的准确率即可达到94.50%,验证集上为94.63%,测试集上为94.41%。虽然从准确率上看只提高了2.2%,但迭代次数可以大大减少。实际上如果同样迭代200次,准确率还可以提升。

那是不是我们增加更多的层,得到的准确率就会更高呢?事实上并非如此,经过尝试,比如在隐藏层数为5时,在训练集、验证集和测试集上的准确率分别为96.5%、95.99%、96.05%,而隐藏层数增加到10时的准确率依次为95.41%、95.47%、95.14%,准确率反而有所下降。所以神经网络的层数并非越多越好,层数过多,对提升准确率并没有什么帮助,由此还有可能带来模型复杂、训练时间增加等不良后果。

增加神经元的数量

从上面可以知道,适当增加隐藏层可以提升准确率,那增加神经元的数量,是否可以提升准确率?让我们以数据说话

从图中可以看出,神经元数量从32增加到128,准确率有非常明显的提升,但再往上增加神经元的数量,对准确率的提升就不那么明显了。与此同时,我们也需要了解到,增加模型的复杂性,运行时间也显著增加,因为有更多的参数需要优化。

这幅图显示了神经元数量与训练参数数量之间的关系。

从上图可以看到,随着神经元的增多,每次迭代所需的时间大幅增长。

小结一下,适当增加神经元的数量,对准确率提升有帮助,但也不是越大越好。

使用dropout策略

简单说,dropout策略就是随机丢弃一些神经元节点,不参与计算,为什么这种策略能够奏效,在Andrew NG的改善深层神经网络:超参数调试、正则化以及优化课程中有很清晰的讲解

在keras中实现dropout策略非常简单,只需在隐藏层后面增加一个Dropout层:

进行20次迭代,训练集上的准确率91.54%,验证集上为94.48%,测试集上为94.25%。注意这里训练集上的准确率低于测试集上的,说明训练的轮次不够。将训练轮次增加至250,准确率数据依次为98.1%、97.73%和97.7%。

由于引入了dropout策略,需要增加训练轮次,当然我们不能无限增加训练轮次,因为训练轮次增加,意味着训练时间的增加,还是用数据说话

从图中可以看到,两条曲线在约250轮时相交,而这一点之后就有必要进一步训练了。

选择不同的优化器

在上面的代码中,我们使用了SGD优化器,SGD称为随机梯度下降(Stochastic Gradient Descent,SGD)。除了SGD,还有RMSprop和Adam这两种更先进的优化技术,它们引入了动量(速度分量)的概念,当然实现上更加复杂。不过在keras中,只是一行代码的事情

这是使用RMSprop优化器的曲线图,可以看到RMSprop比SGD快,在20次迭代后,在训练集上达到97.97%的准确率,验证集上97.59%,测试集上为97.84%。

这是使用Adam优化器的曲线图,效果更好一些,训练20轮之后,在训练集上的准确率达到了98.28%,验证集上达到了98.03%,测试集上达到了97.93%。

调整批次大小(BATCH_SIZE)

让我们修改一下BATCH_SIZE的大小,然后看看对准确率有和影响

如图所示,BATCH_SIZE需要选择一个合适的值,对于本例而言,最优的准确率在BATCH_SIZE=128时取得。

采用更合适的模型结构

在一步步提高手写数字的识别率(3)中,我们提到了一种提升手写数字识别率的模型:卷积神经网络CNN。对于图像相关的神经网络,通常卷积神经网络可以取得比全连接网络更好的效果,而对于文本处理、语音识别等,则循环神经网络RNN更加有效。

总结

本文仅仅从工程的角度探讨了如何提高模型性能,并给出了示例代码,在实际项目中,关于模型调优是一个很复杂的工程,需要从很多方面考量。本文也没有对其中涉及的理论有过多的深入,有兴趣的朋友推荐大家看一看Andrew NG的深度学习课程改善深层神经网络:超参数调试、正则化以及优化,在网易云课堂上是免费的课程。

参考
  1. Keras深度学习实战,Antonio Gulli/Sujit Pal,人民邮电出版社
  2. 改善深层神经网络:超参数调试、正则化以及优化,Andrew NG
往期回顾

一步步提高手写数字的识别率(1)
keras中的数据集
理解keras中的sequential模型
百度推出EZDL,编程小白也可训练AI
EZDL到底怎样,试试看…

最新文章
揭秘 SEO 按天扣费模式的猫腻,你知道多少?
关键词每日扣费一定靠谱吗?近年来,SEO行业形势不断发生变化,各种新的SEO计费方式和营销模式不断涌现。如今,大多数SEO公司都采用每日扣费的模式来吸引客户。事实上,每日抵扣模式还有很多技巧。今天,就带大家了解一下一家公司的日常扣
专业SEO关键词优化:提升网站排名,打造互联网流量利器
为了让您的网站在激烈的市场竞争中占据有利位置,进行精准的关键词优化是必不可少的。如何才能进行高效且专业的SEO关键词优化呢?我们将为您介绍几个关键的优化步骤。关键词研究是SEO优化的第一步,也是最为基础和重要的一步。通过关键词研
Copilot插件:时时陪伴的AI助手 | Obsidian实践
这段时间,有点儿沉迷于AIGC实践不可自拔,也因此懈怠了Obsidian实践。回过头来猛然发觉,其实Obsidian也“上架”了很多与ChatGPT有关的插件。赶紧体验下,看看有没有什么,是一下子就能用起来的。不得不说,自从我安装了Copilot插件,就再
seo优化推广如何 SEO优化推广效果与策略解析
SEO优化推广如何:掌握数字时代的营销利器在当今数字化迅猛发展的时代,企业的在线可见性和品牌影响力变得至关重要SEO(搜索引擎优化)作为一种有效的数字营销策略,不仅能够帮助企业在竞争激烈的市场中脱颖而出,还能带来持续、稳定的流量
宁波SEO服务热线汇总,助力网站快速提升排名抢占市场优势
宁波SEO厂商电话一览,为您提供专业SEO服务,助您快速提升网站排名,抢占市场先机。涵盖多家知名SEO公司,详尽联系方式,让您轻松选择,高效优化网站,助力企业发展。随着互联网的快速发展,企业对网络营销的需求日益增长,SEO(搜索引擎优
Python开发QQ聊天机器人——Yes酱的部署与调教
Yes酱是一个会发s图的群管理机器人,基于 go-cqhttp,使用OneBot标准的插件开发的一个机器人,支持以下功能:发送setu/猫猫图返回一张涩图/猫猫图检测关键字禁言私聊调教对话本文主要参考了其官方博客,结合Yes酱的github和go-cqhttp的gith
2024 (图文)Yoast SEO插件使用教程,详细设置步骤
  Yoast SEO是著排名第一的。插件有Yoast SEO(免费)和Yoast SEO Premium(付费)有两个版本  Yoast SEO可以完美地在所有类型的网站或上实现SEO相关的设置。可帮助您编写更好的且经过优化的内容让搜索引擎收录。该插件的免费版本还具
EyouCms(易优企业建站系统) 官网版 v3.5.6
EyouCms(易优企业建站系统)官方版是一款十分受欢迎的企业内容管理软件。EyouCms(易优企业建站系统)最新版支持文章的「发布、删除、移动、复制、排序、推荐、置顶、隐藏、显示」操作。EyouCms(易优企业建站系统)官方版支持设置每篇文章的「
【技术】全站仪测量使用方法及坐标计算,一步一步讲解!
全站仪常规注意事项:在使用本仪器之前, 要把各种注意事项烂熟于心,务必检查并确认该仪器各项功能运行正常。1、不要将仪器直接对准太阳将仪器直接对准太阳会严重伤害眼睛。若仪器的物镜直接对准太阳, 也会损坏仪器。2、将仪器架设到脚架
宅家新姿势—威联通NAS安装套件版Emby搭建家庭影音服务器
创作立场声明:最近一直在折腾威联通的NAS,也折腾出了一些小心得,网上关于威联通系统的相关教程较少,所以新的一年,准备开一个新系列,写写威联通系统的介绍、配置技巧等,是分享也是记录。在阿文菌等各位大佬的影响下开始研究Emby这款
相关文章
推荐文章
发表评论
0评