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

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

大家好,我是志斌~


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


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


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. 后台回复 周末快乐 ,即可获得本文全部源码和数据集。


相关文章
|
3月前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
137 0
|
2月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
232 4
|
2月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
340 5
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
258 2
|
2月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
165 0
|
3月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
3月前
|
算法 数据挖掘 区块链
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
131 2
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
285 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
236 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。