本篇继续上篇的未完部分。前面介绍完了控制台版本和MFC对话框版本下的所有例子,几乎涵盖了训练的所有方面,本篇继续介绍训练的测试和分析,供人工智能、神经网络(包括深度学习)方面的兴趣爱好者、从业人员、科研人员参考。
7. 测试与分析
本文所做的测试是使用控制台版本下的反复迭代训练进行的,五连子(五子棋)使用了13487条数据,即13487局有效对弈棋局,而六连子使用了6800条数据。通过本次测试以及之前数据量较少时的不断训练,我们发现了以下的一些“确定性神经网络”的特性,其中部分已通过理论推导进行了确认。
(1)训练时间及结果
五连子的13487条数据从空模型开始训练一次,我们花了116小时,最短也需要18小时,这其中的差异将在后续详细说明,如果大家按照前面文章介绍的方法开发了训练软件并打算使用一万多条数据进行训练的话,大家可以把训练消耗的预计时长定在一天(即24小时)左右。我们训练出的模型有11层深度,模型文件大小为2.13MB。
六连子的6800条数据从空模型开始训练一次,我们花了27小时,最短也需要4小时。我们训练出的模型也有11层深度,模型文件大小为1.6MB。
(2)模型深度
确定性神经网络的模型深度是在训练中自然增长的,具体深度未在算法和编码中限定,即未对深度进行硬编码。训练用的高质量数据越多,则模型的深度越大,反之,低质量的数据对模型的增长及深度的增长贡献甚微。而模型的深度越大的话,训练出来的模型越聪明,智能程度越高。这就像人类从小开始学习一样,读过的好书越多就越聪明(能解决的问题越多的意思),而低质量的书籍(包括低质量的视频、网文等其它信息源)对能力的提升则比较有限,从这一点来看,确定性神经网络与人工智能更契合,与人类的思维更接近,正如之前的一篇文章中所描述的那样。
当然了,这里必须要提到的关于模型的另一点是,确定性神经网络的模型深度在有效数据充足的情况下,可能会学得很深,对应的,很深的模型在预测时将会需要较长的时间,但是,确定性神经网络在工作时(即预测时)却不必用到所有的深度,即可以只用浅层的模型,换句话说,确定性神经网络模型的深度决定着它的极限智能程度,但却不必时刻使用极限智能去工作。这一点更接近人类思维,一个科学家解决一个学术问题可能需要花一年时间来进行计算,但去买水果的时候也能像普通人一样只需要几秒钟就计算出找零多少。
(3)训练方式
前面几篇文章所介绍的是一种常用的训练方式——自然尽力增长方式,即对于每个训练数据,物尽其用,尽量充分的挖掘该数据的价值,等到该数据产生不了模型增长的时候,就换下一个训练数据,依此类推,直到所有数据训练结束,然后重头再迭代一次,直到所有数据都不再能让模型产生增长为止,整个训练工作才算结束,而且,对于确定性神经网络的训练来说,不会产生发散和不收敛的情形,必然会达到训练结束的条件。
在多次的训练和数据不断增长的过程中,我们发现,分层训练和上述的训练方式会产生差异。分层训练指的是每次迭代只增长一层,即用所有的训练数据训练一遍最多只允许增长一层,等下一次迭代的时候再允许增长一层,依此类推,这种方式即分层训练的方式。该方式会导致整体的训练时间变长很多,第一点里提到的五子棋模型训练一遍花了116个小时就是用这种分层方式训练的,而用自然尽力增长方式训练的话,仅需18小时即可完成训练。
这两种训练方式产生的差异是在我们从较少训练数据到较多数据的过程中发现的,训练数据变多之后,训练出的模型中某些信息却丢失了,而这些信息在使用较少数据训练出的模型中是存在的。不过,在训练数据越来越多之后,这种差异又在逐渐变小,甚至等数据量达到一定程度之后,这种差异就消失了。因而,究竟哪种训练方式更好、分层训练方式是否能给同行提供一个研究和改进方向、训练数据的数量在达到多少时最佳等问题便产生了,这些发现和疑问尚需要时间和数据进行测试和验证,有兴趣的相关人员可以一起讨论,看看是否有必要分层训练,以及这种训练方式会对神经网络模型产生多大的影响,尤其是对目前正在广泛应用的神经网络相关模型。
(4)训练数据
训练数据的差异越大,对模型训练的贡献越大,反之,即便相似的训练数据再多也只能产生微乎其微的贡献。因此,我们建议训练数据最好有多样化的来源,或者由大量的不同的人提供,毕竟一个人的下棋思路是有一定的模式的(即便表面上看不出来,在神经网络中也会体现出来),同一个人能提供的有效数据不会太多。
棋盘越大时产生有效数据的概率越大,反之,棋盘越小时产生相似数据的概率越大。所以,为了得到尽量好的训练数据,可以在保障数据来源的前提下增大对弈棋盘的大小,比如说,在100x100的棋盘上进行对弈。尤其是在训练高连子的模型时更有必要,这一点从我们使用和提供的训练数据就能看出一二,同样的15x15的棋盘上,训练六连子的有效数据比训练五连子的有效数据少得多。
(5)文中所提的模型和部分训练数据可在如下地址下载
我们提供了1000组五连子的训练数据混合500组六连子的训练数据,这些数据可直接用于前面几篇介绍的训练之中。另外,还提供了五连子和六连子已经训练出的模型,其中六连子的模型有滞后,最新的模型将优先应用于官网的挑战赛和挑战活动中。
官网下载:www.gnxxkj.com
github下载:https://github.com/wangdechang119
gitlab下载:https://gitlab.com/wangdechang119
gitee下载:https://gitee.com/wangdechang119