用一盘残局带你了解人工神经网络算法~文末送书!

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

大家好,我是志斌~


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


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


01规则介绍


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

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


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


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


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


02解决方法


01

读取训练集


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


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


读取结果展示:


21.png


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


22.png


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


02 开始训练


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


pip install numpy
pip install sklearn
pip install matplotlib


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


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


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

scaler.transform(xTraining)
scaler.transform(xTexting)
scaler.transform(xValidation)



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


23.png


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


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


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


24.png

代码如下:


25.png


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


03小结


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

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

3. 后台回复 周末快乐 ,即可获得本文全部源码和数据集。


相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
25 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
21天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
23天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
本项目展示了基于贝叶斯优化(BO)的CNN-LSTM网络在数据分类中的应用。通过MATLAB 2022a实现,优化前后效果对比明显。核心代码附带中文注释和操作视频,涵盖BO、CNN、LSTM理论,特别是BO优化CNN-LSTM网络的batchsize和学习率,显著提升模型性能。
|
1月前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了基于分组卷积神经网络(GroupCNN)和灰狼优化(GWO)的时间序列回归预测算法。算法运行效果良好,无水印展示。使用Matlab2022a开发,提供完整代码及详细中文注释。GroupCNN通过分组卷积减少计算成本,GWO则优化超参数,提高预测性能。项目包含操作步骤视频,方便用户快速上手。
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种基于WOA优化的GroupCNN分组卷积网络时间序列预测算法。使用Matlab2022a开发,提供无水印运行效果预览及核心代码(含中文注释)。算法通过WOA优化网络结构与超参数,结合分组卷积技术,有效提升预测精度与效率。分组卷积减少了计算成本,而WOA则模拟鲸鱼捕食行为进行优化,适用于多种连续优化问题。
|
1月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
55 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
27天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化卷积神经网络(Bayes-CNN)的多因子数据分类识别算法matlab仿真
本项目展示了贝叶斯优化在CNN中的应用,包括优化过程、训练与识别效果对比,以及标准CNN的识别结果。使用Matlab2022a开发,提供完整代码及视频教程。贝叶斯优化通过构建代理模型指导超参数优化,显著提升模型性能,适用于复杂数据分类任务。
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch代码实现神经网络
这段代码示例展示了如何在PyTorch中构建一个基础的卷积神经网络(CNN)。该网络包括两个卷积层,分别用于提取图像特征,每个卷积层后跟一个池化层以降低空间维度;之后是三个全连接层,用于分类输出。此结构适用于图像识别任务,并可根据具体应用调整参数与层数。