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

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

大家好,我是志斌~


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


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


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


相关文章
|
6月前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
178 0
|
5月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
289 4
|
5月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
449 5
|
6月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
421 2
|
5月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
245 0
|
6月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
158 8
|
6月前
|
算法 数据挖掘 区块链
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
180 2
|
6月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
498 0
|
5月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
866 0
|
6月前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
584 1

热门文章

最新文章