基于神经网络与深度学习的五子棋算法研究毕业论文
2021-11-07 21:06:30
摘 要
本文基于蒙特卡洛树搜索法、残差神经网络以及深度学习技术设计了一个五子棋算法。并基于该算法设计并实现了一个具有自我训练、自我学习能力的五子棋人工智能。该五子棋人工智能几乎不依赖任何人类经验,能够无师自通地从零开始学习五子棋。同时本文还在计算资源有限的情况下,运用各种优化手段成功将五子棋人工智能训练至一定水平。
关键词:五子棋;蒙特卡洛树搜索法;残差神经网络;机器学习;深度学习;自我学习;Windows;Python;Tensorflow
Abstract
This paper designs a gomoku algorithm based on monte carlo tree search, residual neural network and deep learning. Based on the algorithm, a gomoku artificial intelligence with self-training and self-learning ability is designed and realized. The gomoku ai relies on almost no human experience and can learn gomoku from scratch. At the same time, in the case of limited computing resources, this paper successfully trained the gomoku artificial intelligence to a certain level by various optimization means.
Key Words:MCTS;ResNet;machine learning;deep learning;self-taught;Windows;Python;Tensorflow
目录
摘 要 I
Abstract II
第1章 绪论 1
1.1 研究背景 1
1.2 研究意义 2
1.3 国内外研究现状及存在的问题 3
1.4 本文工作 4
1.5 文章的组织结构 5
第2章 五子棋的搜索算法及相关程序设计 6
2.1 五子棋的博弈形式 6
2.2 从博弈论角度描述五子棋博弈 6
2.3 从黑盒优化角度描述五子棋博弈 7
2.4 蒙特卡洛方法 8
2.5 蒙特卡洛树搜索法 8
2.6 蒙特卡洛树搜索的算法步骤 9
2.7 针对五子棋博弈问题设计蒙特卡洛树搜索算法 10
2.8 蒙特卡洛树搜索法的实际应用 15
2.9 一些蒙特卡洛树搜索法的改进 17
2.10 五子棋相关程序设计 20
第3章 神经网络 21
3.1 神经网络的基本结构 21
3.2 神经网络的分类 22
3.3 神经网络中的重要算法依据 23
3.4 卷积神经网络 24
3.5 构建深层神经网络的一些问题 25
3.6 残差神经网络 26
3.7 针对五子棋设计的神经网络结构 27
3.7.1 神经网络的结构 27
3.7.2 神经网络的损失函数 29
3.7.3 神经网络的优化器 30
3.7.4 神经网络的输入 30
3.7.5 神经网络的输出 31
第4章 深度学习 32
4.1 五子棋博弈问题的强化学习 33
4.2 五子棋特征提取 34
4.3 五子棋人工智能的训练过程 35
4.4 针对五子棋深度学习的优化 36
第5章 训练结果 42
5.1 预训练 42
5.1.1 第一次预训练 42
5.1.2 第二次预训练 45
5.1.3 第三次预训练 48
5.1.4 预训练总结 50
5.2 正式训练 51
5.2.1 第一次正式训练 51
5.2.2 第二次正式训练 52
5.2.3 第三次正式训练 53
5.2.4 正式训练总结 57
5.3 最终成果 57
第6章 总结与展望 59
参考文献 60
致谢 61
- 绪论
- 研究背景
自计算机诞生以来,人类一直未停下探索人工智能的脚步。所谓人工智能是一种与人类智能具有相同本质特征的复杂机器。计算机为人类提供强大的计算能力,科学家希望以此制造出人工智能。而机器学习是实现人工智能的一种重要方法。机器学习使用各种算法从有限或无限的数据中分析并学习,使得计算机可以模拟人类的思维行为,对现实世界中的已经发生或即将发生的事件做出决策和预测。目前,深度学习是机器学习领域的最新研究方向,它是一种基于深度神经网络实现机器学习的技术。近年来,深度学习技术的突破给人工智能领域带来了长足的发展。可以说,深度学习是传统机器学习和神经网络技术的再发展。
在人工智能诞生之初,科学家首先将其尝试应用在博弈类问题。在博弈类问题中,博弈的参与者根据获得的信息,在一定的规则下,运用逻辑思维或抽象思维做出决策或预测,力图在博弈中取得优胜地位。其中棋类博弈问题,如象棋、围棋、五子棋等,正是博弈类问题的典型代表。作为对现实生活或是古代战争的模拟,棋类博弈问题具有规则简单,容易被计算机实现的特点,因此常作为人工智能的常见研究对象。
五子棋是一种历史悠久的双人策略棋盘游戏。五子棋的棋子分为黑白两色,棋盘大小为15×15路。对弈过程中,棋子被放置在棋盘的垂直线和水平线的交叉点上。对弈双方各持一种颜色,执黑先行,轮流下子。双方中首先将五个或五个以上相同颜色的横、竖或斜的棋子排成连续的一排的为获胜者。根据博弈论,五子棋先行的一方优势之大,几乎达到了先手必胜的地步。因此如今五子棋的规则包括了许多限制黑方的规则,如RIF规则。RIF规则包括五手两打、双手交换、禁手等规则,是目前国际和全国大型比赛的官方规则,也是目前被广大棋手广泛认可的规则。RIF规则的加入使得五子棋真正成为了一项公平的棋类游戏。
目前主流五子棋博弈算法是利用Alpha-Beta剪枝以及Min-Max算法来缩减可能的计算范围,在一定的评估函数下,利用暴力搜索法来找出最佳策略[1]。其算法的准确性受棋型和评估函数的影响较大,算法的水平高度依赖于程序设计者,容易受到个人经验的影响。
- 研究意义
在人工智能的研究中,科学家长期以来棋类博弈问题作为研究对象,孕育出了大量的学术成果和研究成果。与此同时,人类一直致力于创造一个尽可能不依赖人类知识,具有自我学习能力的强人工智能。
尽管五子棋的计算复杂度相对较小,传统暴力搜索算法足以应对五子棋的计算规模并且也能取得较好的效果,但暴力搜索法终究有其“不智能”的一面。其“不智能”一方面体现在算法对棋着的评分机制的准确性有着极高的要求,而评分机制的准确性受限于程序设计者对五子棋理解,实际上程序设计者往往无法设计出完全准确的评分机制。另一方面其“不智能”体现在其不具有持续学习能力与持续进步能力。人类在进行各种棋类博弈时,弈棋水平会随着对弈次数的增加而提升。并且人类往往在掌握简单的游戏规则后,便可以通过不断对弈来提升自身的水平。可见人类在学习棋类博弈问题时,是不断学习与进步的。而使用传统暴力算法的五子棋程序的棋力是相对固定的,不会随着不断的训练而有所提升。因而从人工智能的角度来说,传统暴力搜索算法下的五子棋程序离真正的人工智能相去甚远。
机器学习技术的诞生,使得程序可以在训练中自主学习。具体到棋类博弈问题上,机器学习技术使得棋类博弈程序可以在训练中不断完善自身的评分机制,从而不断精进。而深度学习技术的运用则进一步提高训练效率与训练结果的准确性。