爱小说

第267章 数据增广和集成学习

小说:重生学神有系统 作者:一碗酸梅汤 更新时间:2020-01-29 23:16
爱小说(www.ixs.cc)开通手机站了,手机用户可以登录 m.ixs.cc 进行阅读,效果更好哦!
  经过仔细斟酌,江寒确定了“优胜者”模型。
  随后,他就开始考虑,如何进一步优化这个网络的性能。
  像是网络的主体结构、权重初始化方案、数据正则化的方法、激活函数的选择……
  这类关键因素,在之前的第一轮训练中,就已经确定了下来,无需再做调整。
  但除此之外,可以优化的地方依然不少。
  比如稍微改变一点学习率,少量增加或减少隐藏神经元的个数,微调一下MiniBatch的大小……
  这些都有可能对网络的性能,产生微妙的影响。
  而且,每一点细微的调整,会产生什么样的效果,不实际训练、测试一番,是无法预估的。
  所以接下来,江寒将“优胜者”代码复制了100份。
  这样一来,这个“优胜者”就拥有了100多个“双胞胎兄弟”,或者说:分身。
  随后,他就采用不同的方案,对这100多份代码,逐一进行了微调。
  等到进行完第二轮训练后,从中再次选出唯一优胜者。
  有点类似“养蛊”。
  策略已经定下了,但江寒并没有马上开启第二轮训练。
  他还打算再做一个比较重要的实验,那就是增广数据。
  KAGGLE官方提供了20万条训练数据,理论上说,对于绝大多数机器学习模型,这个数据量已经足够使用了。
  但谁会嫌弃数据太多呢?
  能提供的数据越多,神经网络的学习效果就越好,训练得越充足,性能自然也就越强。
  反正一般来说,不会变得更糟。
  所以,何乐而不为?
  所谓数据增广,就是在不改变图像类别的前提下,人为地扩充数据。
  这样做,常常可以有效地提高模型的泛化能力。
  常用的数据增广方式,包括水平翻转、旋转、缩放、平移、裁剪、颜色抖动……
  当然,也可以将多种操作组合起来,从而获得更多的数据。
  例如,同时做小角度的旋转和随机尺度变换,再微调一下像素在HSV颜色空间中的饱和度、亮度、色调……
  江寒很快用Python编写了一份代码,对训练数据集进行了扩充。
  原本的18万条训练数据,经过各种运算,足足演变出了将近200万条数据。
  这样,第二轮训练终于可以开始了。
  江寒将100个“优胜者”分身依次启动。
  随后,他琢磨了一下,又将刚才排名前15的模型,全都拉了过来。
  包括上次排名第一的“书呆子”、排名第三的“黑马中等生”,以及排位在4~15名的“其他学生”。
  反正算力够用,索性再给这些准“优秀生”一次机会,看看它们在增广数据集上,又会有怎样的表现。
  当然,在开启第二轮训练之前,第一轮训练出来的权重数据,必须先备份一下……
  将这里的事情全部处理利索,时间已经接近中午11点。
  江寒当下锁门离开。
  先去接夏雨菲放学,再顺便做一顿丰盛的午饭。
  除了正常的两菜一汤,他还额外加了一道“红烧冰岛红极参”,以慰劳自己操劳过度的大脑。
  ……
  下午和晚上,江寒没有出门。
  主要在家看书、找资料,学习各种逆向、破解、黑客知识。
  想要继续领悟《数字混淆技术》,比较依赖数学水平和逆向技术。
  江寒的数学水平已经很不弱了,知识储备不比一般的数学系本科毕业生少,解决问题的能力犹有过之。
  但在逆向和黑客技术上,他距离真正的顶级高手,还有不小的差距。
  所以,江寒就决定抓紧时间,尽快补上这一课。
  学习之余,当然有了闲暇,就远程登录一下服务器,关注一下神经网络的训练情况。
  13日清晨,第二批个模型,全部训练完成。
  江寒又去了一次车库,翻阅了一下训练记录,并对这个神经网络模型,加载验证集进行测试。
  “优胜者”的那100个分身,表现都很不错,其中成绩最好的一个,在训练集和验证集上的准确率,都超过了98%。
  说实话,如果不经过特别的训练,一般的人类在这个项目上的表现,差不多也就这样了。
  毕竟KAGGLE提供的这些数据里,有一些笔迹实在太潦草了。
  比如,有好几个图片,江寒怎么看怎么像7,标签上却硬说是1,这怎么破?
  此外,江寒还有一个令人欣喜的发现。
  使用了扩充数据集,并进行了更高强度的训练之后,“书呆子”在训练集上,成绩再次提高了少许,识别准确率达到了惊人的99.9%;
  而且在验证集上的表现,也有了较大幅度的提高,达到了95%的及格线。
  “黑马中等生”和原本排名4~15的“普通学生”,这次也有了长足的进步,成绩不比原本的“优胜者”差到哪里去。
  所以说,要想提高神经网络的性能,扩充数据规模才是第一秘诀。
  不管是人工收集更多数据,还是用数据增广的办法来伪造数据……
  接下来就简单了,只要从“优胜者”的100个分身里,挑选出最强的一个,强化训练一番,再稍微打磨一下,就可以提交上去了。
  接近99%的识别正确率,说高不高,说低不低。
  去年在imagenet举办的世界机器学习大师赛中,冠军是KNN算法的一个变种。
  别看那种算法极其简单,一点也不智能,但作者通过巧妙的构思,赫然将识别失误率压缩到了惊人的0.63%!
  但那是顶级大能们的竞技场,这次KAGGLE举办的,只是一场业余级别的比赛,参与的大多是民间爱好者。
  所以自己手里的这个“最终优胜者”,多了不敢说,前三还是比较稳的。
  至于想要夺得冠军,那就需要拼一点运气了,除非能进一步提高在陌生数据上的准确率。
  毕竟真正的测试集,谁也没见过,会变态到什么程度,谁也没法预估。
  江寒反复分析、测试着已经训练好的几个模型。
  第二轮的“唯一优胜者”,以及进化后的“书呆子”、“中等生”……
  忽然,他又有了一个巧妙的发现。
  对于那些容易误测的图片,优胜者、书呆子、中等生……它们的判断往往不尽相同。
  同样一个图片,比如数字“5”,由于书写不规范,导致极难识别。
  有点像6,又有点像s,甚至就算将其当成0,也不会多么违和。
  这种无法妥善处理的数据,一般的做法是当做“噪声”,在训练时加以排除。
  免得对网络的训练产生干扰,让网络学到错误的“知识”,导致“越学越懵”。
  江寒在分析这类疑难图片时,却忽然有了一个奇妙的发现。
  对于这样的图片,优胜者偶尔也会识别错误,但神奇的是,书呆子偶尔却可以识别正确。
  有些图片书呆子和优胜者都不认识,中等生或者普通学生,反而往往有独到的见解……
  然后,这些结构不同的神经网络,它们识别错误的那部分图片,很少出现交集。
  也就是说,这些疑难图片之中,绝大多数都会被部分“学生”正确识别。
  这就很有趣了。
  如果能把这十几个神经网络的识别能力结合到一起,岂不是可以进一步提高准确率?
  江寒经过仔细思考、认真分析,最后做出了一个大胆的决定。
  那就是:集成学习。
爱小说WWW.IXS.CC努力创造无弹窗阅读环境,大家喜欢就按 Ctrl+D 加下收藏吧,有你们的支持,让我们走得更远!
可以使用回车、←→快捷键阅读