上一节,我们使用基于蒙特卡洛树搜索的机器人来自我对弈,同时我们把机器人落子方式和落子时的棋盘编码记录下来,本节我们就使用上一节数据来训练神经网络,让网络学会如何在给定棋盘下进行精确落子。
神经网络的运行原理如下:
当网络训练好后,我们把棋盘编码对应的二维矩阵转换为一维矩阵输入网络,网络给出大小与棋盘对应的一维向量,每个向量对弈一个0到1之间的值,该值表示落子在对应位置上的赢率,我们只要从输出的一维矩阵中选择值最大那个分量对应的位置落子即可。
一开始我们会构造一个简单的双层全连接网络,第一层有1000个神经元,第二层有500个神经元,最后一层有81个神经元,它对应9*9棋盘上的每个落子位置,最后一层输出结果中,值最大的节点就对应网络预测应该落子之处,我们将要开发的第一个网络层次结构如下:
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 1000) 82000
_________________________________________________________________
dense_2 (Dense) (None, 500) 500500
_________________________________________________________________
dense_3 (Dense) (None, 81) 40581
=================================================================
Total para