电脑棋手的思维 王金一
你可曾听说过“深蓝”? 1997年5月11日,IBM开发的“深蓝”击败了国际象棋冠军卡斯帕罗夫。 卡氏何许人也? 1980年他获得世界少年组冠军 1982年他并列夺得苏联冠军 1985年22岁的卡斯帕罗夫成为历史上最年轻的国 际象棋冠军 现在的积分是2849,这一分数是有史以来最高分。 远远领先于第二位的克拉姆尼克的2770
电脑棋手:永不停歇的挑战! 1988年“深思”击败了丹麦特级大师拉森。 1993年“深思”第二代击败了丹麦世界优秀女棋手小波尔加。
电脑棋手:永不停歇的挑战! 2001年“更弗里茨” 击败了除了克拉姆尼克之外的所有排名世界前十位的棋手。 2002年10月“更弗里茨”与世界棋王克拉姆尼克在巴林交手,双方以4比4战平。 2003年1至2月“更年少者”与卡斯帕罗夫在纽约较量,3比3战平。
领域在延伸 Checkers Sokoban Chinese chess Go Poker Othello Lines of action Hex Awari Amatons Shogi Rosambo Domineering …… ……
许多人在努力
他们来自于何方? Canada、America、England、China、Japan、Holland、Mexico…… University of Alberta、University of Wisconsin、University of Maryland、 MIT、University of Tokyo、University of Albama、University of California、 Erasmus University、Cambrige University……
解谜:电脑是怎样下棋的 ——人机博弈程序的一般设计方法 解谜:电脑是怎样下棋的 ——人机博弈程序的一般设计方法 以中国 棋为例
(1)第一步该做什么? 数据结构的选取 ——棋盘表示 在机器中表示棋局,让程序知道 博弈状态。 占用空间-〉少 操作速度-〉快 是否方便-〉方便
九列十行 十四种不同的棋子 三十二个棋子
几种棋盘表示的方式 二维数组——直观 紧凑的数据结构——省空间,不直 观,速度? 比特棋盘——用于8*8棋盘(国际象 棋),64位主机
(2)接下来怎么办? 产生合法走步的规则,使博弈能公正的进行,并且能够判断对手是否乱走。依赖于具体棋类特征。 是一段将局面所有可能的正确走法罗列出来的程序。称之为走法产生。
几种走法产生的实现方式 一般做法 建立小型数据库 位运算
位运算走法产生之例 寻找象的可走步
位运算走法产生之要求 一个基于比特棋盘的完善的数据库 该数据库应位于内存中
(3)终于到核心了 从所有的走法中找出最佳的走法, 也就是—— 搜索
搜索的基本方法 极大极小值 负极大值 Alpha-Beta搜索
极大极小值搜索 对抗性搜索 静态估值 有限深度 深度优先
负极大值算法 重点在于:父节点的值是各子节点的值的负数的极大值。 红走 黑走
Alpha-Beta剪枝
在奇数层进行Alpha剪枝,偶数层Beta剪枝。 和极大极小搜索结合 在奇数层进行Alpha剪枝,偶数层Beta剪枝。 和负极大值搜索结合 在每一层都进行Beta剪枝。
优化的搜索算法 渴望搜索 极小窗口搜索 置换表 哈希表 Zobrist哈希技术
优化的搜索算法 迭代深化 历史启发 杀手启发 SSS*/DUAL*算法 MTD(f)算法
(4)最后 评估局面优劣,配合搜索技术做出智能的选择——估值技术 棋子价值评估 SideValue=Sum(piecenumber*piecevalue) 棋子灵活性 Mobility=Sum(movenumber*movevalue) 棋盘控制 棋子关系的评估(威胁、保护、形、定势。并且要考虑到谁走棋)
估值的几种形式 终点估值 思路清晰,容易设计,模块独立性高, 同搜索算法耦合程度低 速度慢 棋子价值表 T[pieceType][boardWidth][boardHeight] 二者结合 动态棋子价值表
估值函数的内容及其调试 Score=aX+bY+cZ+dK+…… X=车+马+炮+……
参数确定的方法 手工调整 爬山法 蒙特卡罗 模拟退火 遗传算法
爬山法的缺陷——初值依赖
蒙特卡罗 使用多种初始参数,从不同的地方开始多次爬山 有足够多次的爬山,出现频率最高的结果是最优解的概率就会足够大 不同初值的大量采样,使运算效率低
模拟退火 MetroPolis重要性采样的基本思想:在寻优的开始使用较高的概率进行随机突跳,随着寻优过程的深入逐步降低这一接受不佳参数概率。并且随着搜索的深入,可接受的参数的不佳程度也越来越小。
模拟退火 一次对参数改变一点,测试。 提高,保留 不提高,在一定概率上继续 由粗到细,逼近最优参数
遗传算法 随机产生一组初始个体构成初始种群,并评价每一个体的适配值。 判断算法收敛准则是否满足,若满足则输出搜索结果,否则执行以下步骤。 根据适配值大小以一定方式执行复制操作。 按交叉概率pc之行交叉操作。 按变异概率pm执行变异操作。 返回上面第二步骤。
遗传算法 适配值:对个体进行评价的指标,算法优化的主要信息,与个体的目标值对应 复制:复制概率正比于适配值 交叉:交换父代个体中的部分信息产生后代,继承 变异:随机改变个体中的某些信息产生新个体,增加种群多样性
标准遗传算法优化框图
使用遗传算法优化参数估值的过程
Genetic Algorithms 优越性 全空间并行搜索,重点集中在高性能部分,防止陷入局部最优
孰优孰劣? 名局测试 和其他博弈程序对弈 选不同的参数,自相对弈 同向下几层的搜索结果比较
OK啦!