用一盘残局带你了解人工神经网络算法

人工智能 深度学习 算法
志斌现在手头上有一个国际象棋的残局,它是黑方只剩下一个王,白方剩一个兵和一个王。现在志斌已知它有两种可能的结局,即白方将死黑方获胜,或者和棋。那么结局到底是什么呢?

[[431963]]

本文转载自微信公众号「志斌的python笔记」,作者安可 。转载本文请联系志斌的python笔记公众号。

大家好,我是志斌~

志斌现在手头上有一个国际象棋的残局,它是黑方只剩下一个王,白方剩一个兵和一个王。现在志斌已知它有两种可能的结局,即白方将死黑方获胜,或者和棋。

那么结局到底是什么呢?接下来让我们用深度学习的人工神经网络算法,来给大家一个答案~

一.规则介绍

在进行程序编译之前,我们需要先简单的了解一下国际象棋的下棋规则,规则如下:

棋盘大小为8*8,各有黑色和白色棋子16个,分别是王:1个,后:1个,车:2个,象:2个,马:2个,兵:8个。

兵:只能向前直走(不能后退,这点和中国象棋类似),每次行棋只能走一格。但是,国际象棋的兵走第一步时,可以走一格或走两格。兵的吃子方法与行棋方向不一样,它是直走斜吃,即如果兵的前斜进一格内有对方棋子,就可以吃掉它,从而占据该格位置。

王:则是横、直、斜都可以走,但每次限走一步。不过,和中国象棋相比,王是不可以送吃的,即任何被敌方控制的格子,己方王都不能走进去。否则,算“送王”犯规。累计三次犯规就要判负。

胜负:当吃掉对方的最高统帅 王 时则胜,当逼对方不能走棋了,则算和。

二.解决方法

1读取训练集

对krkopt.data训练集进行读取,代码如下:

  1. with open('krkopt.data','r'as f: 
  2.     lines = f.readlines() 
  3.     data = np.zeros((28056,6),dtype=float
  4.     label = np.zeros((28056,2),dtype=float

读取结果展示:

上面每一行数据都是一个训练样本,我们以第一行的数据为例来进行分析,如下图:

a1,b3,c2给出了三个棋子的坐标,黑方的王在如图a1的位置,白方的王在如图b3的位置,白方的兵在如图c2 的位置。这时黑方的王处于无路可走的状态,是和棋,因此,最后draw意为和棋。假设数据中最后标签为six,意为白方最多走6步可将死黑方。

2开始训练

首先安装训练所需要调用的Python库,

  1. pip install numpy 
  2. pip install sklearn 
  3. pip install matplotlib 

然后将整个数据集分为三份,代码如下:

  1. ratioTraining = 0.4 #训练数据集40%:利用训练数据集调整神经网路的参数 
  2. ratioValidation = 0.1 #验证数据集10%:用于验证调整是好是坏,从而决定程序是否退出 
  3. ratioTesting = 0.5 #测试数据集50%:训练结束后,用于总体测出神经网络的训练效果 

接下来使用Scikit-learn中的Scaler类,采用减掉均值除以方差的方法对标准进行归一化,代码如下:

  1. scaler.transform(xTraining) 
  2. scaler.transform(xTexting) 
  3. scaler.transform(xValidation) 

创建神经网络,代码如下:

其中:layer=[6, 20, 20, 20, 2]输入是6个维度,输出是2个维度,共3层神经网络,每层20个神经元

  1. active_function='relu'神经网络的激活函数 
  2. learning_rate=0.01学习率α 
  3. batch_normalization=1归一化操作 
  4. objective_function='Cross Entropy'目标函数 

训练开始后,我们发现COST损失函数是在持续下降,同时识别率Accuracy,在慢慢上升,无限接近于1。

代码如下:

经过上面的分析,我们发现白棋胜的几率很高,几乎接近1了。

三.小结

1. 本文利用一局国际象棋残局胜负为例,带大家实操人工神经网络算法,希望大家回去多多练习。

2. 本文仅供学习参考,不做它用。

专栏作者:安可,一名在读研究生,研究领域为强化学习,多智能体协同。喜欢钻研,热爱学习,乐于分享,最重要的还是一位漂亮小姐姐哦~

 

责任编辑:武晓燕 来源: 志斌的python笔记
相关推荐

2020-08-20 07:00:00

深度学习人工智能技术

2021-12-15 07:24:57

人工神经网络翻译

2018-07-03 16:10:04

神经网络生物神经网络人工神经网络

2020-12-08 20:20:15

神经网络深度学习机器学习

2017-11-29 14:41:48

神经网络递归神经网络RNN

2020-08-14 10:20:49

神经网络人工智能池化层

2020-05-11 13:44:38

神经网络人工智能深度学习

2020-09-09 10:20:48

GraphSAGE神经网络人工智能

2021-06-29 09:53:06

神经网络数据图形

2020-06-05 15:48:26

网络安全技术漏洞

2017-07-18 10:38:27

人工神经网络矩阵模型

2020-12-21 08:00:00

人工智能深度学习神经网络

2024-04-09 14:04:38

人工智能机器学习

2022-03-25 13:45:37

黑客网络攻击数据泄露

2017-04-06 18:34:16

人工智能

2018-11-28 15:39:21

人工神经嵌入式SDK

2021-08-25 13:13:58

神经网络AI算法

2015-05-11 10:58:04

神经网络人工智能忆阻器

2017-11-30 18:05:18

点赞
收藏

51CTO技术栈公众号