1、时序差分学习在非完备信息时序差分学习在非完备信息机器博弈中的应用机器博弈中的应用王轩 许朝阳哈尔滨工业大学深圳研究生院智能计算中心2007.10.3主要内容 非完备信息博弈简介非完备信息博弈简介12 时序差分在四国军旗中的应用时序差分在四国军旗中的应用3 时序差分学习算法介绍时序差分学习算法介绍非完备信息博弈 完备信息博弈(Perfect Information Game):中国象棋;围棋;非完备信息博弈(Imperfect Information Game):四国军棋;牌类游戏:红心大战,拱猪.非完备信息博弈树菱形表示随机节点四国军旗游戏蒙特卡罗抽样根据前面的走步来更新棋子的概率表;根据更新
2、后的棋子概率表,为棋盘上的 每个棋子随机选择棋子的种类,得到一个 完备信息棋局;对该完备信息棋局进行MaxMin博弈树搜索,找到一个最佳走步;多次重复上述过程,选择选中次数最多的走步 作为最终的最佳走步;概率表的建立根据112个经典布局来设定各个棋子的概率表;根据走步结果来修改棋子的概率表;为棋盘上的每个棋子都建立各自的概率表;主要内容 非完备信息博弈简介非完备信息博弈简介12 时序差分在四国军旗中的应用时序差分在四国军旗中的应用3 时序差分学习算法介绍时序差分学习算法介绍时序差分学习 最早由Sutton提出;他证明时序差分学习可以和有监督学习 获得同样的结果而且占用更少的内存,收敛更快;TD
3、最成功的应用是Tesauro 根据时序差分编制的西洋双陆棋 程序TDGammon,棋力可以和最好的人类棋手相媲美;TD Gammon时序差分学习场景时序差分学习基本概念 智能体(Agent)从外部环境(Environment)中读取输入(State),根据State来选择采取哪个行动(Action);外部环境根据action的结果提供给智能体一个回报值(reward);在一个阶段结束之后,智能体根据回报值,采用某个学习算法(例如时序差分学习算法)来调整自己的行为;时序差分调整算法基本概念步数 t=1,2,3,表示到了第几步;St 表示第t步时的棋盘状态;w是描述棋局状态的一个向量,里面是描述棋
4、局的各种参数(如各种棋子的基本值等);rst表示在状态St时采取某个走步所获得的回报值;在游戏结束时的 回报值rsn是确定的,比如1表示赢了,1表示输了,0表示和局;定义估值函数J(St,w)来模拟逼近第t步时采取某个走步时的回报值rst;假设从游戏开始到结束经历了n步,则估值函数序列为:J(S1,w),J(S2,w).J(Sn-1,w),rsn ;时序差分调整算法期望找到一个最佳向量w,使得估值函数 J(S,w)在棋局状态S下能够和真实回报值J*(S,w)之间的error最小:定义在第t步的时序差分dt如下:最后的dN-1是实际的最终结果rsn和第n-1步预测之间的差值。在一轮游戏结束时,T
5、D()利用下面的公式来更新和调整参数向量w:时序差分公式其中 是估值函数 J在状态St时关于参数向量w的偏导数,是一个0到1之间的一个正常数,控制了学习的速率;也是一个0到1之间的正常数,控制着时序差分更新时向前传播的 百分比;主要内容 非完备信息博弈简介非完备信息博弈简介12 时序差分在四国军旗中的应用时序差分在四国军旗中的应用3 时序差分学习算法介绍时序差分学习算法介绍系统运行界面系统基本架构四国军旗系统特点 搜索空间巨大;非完备信息博弈,这里采用了蒙特卡罗抽样技术来解决;搜索算法根据军棋游戏的特点,使用了历史启发搜索算法,History Heuristics;估值函数采用时序差分学习技术
6、进行优化估值函数的优化-时序差分 估值函数是博弈程序的核心;原来的估值函数结构简单,难以有效的描述棋局;时序差分定义了一系列的描述棋盘的参数,并通过不断调整这些参数来逼近棋局的真实状况;四国军旗系统场景设计Agent是人工智能玩家;Environment外部环境是所有可能的棋局构成的集合;State是当前棋局;Action集合是在当前棋局下所有合法的走步;回报值r在游戏结束时,有3个可能的值:1,1,0。1表示赢了,1表示输了,0表示和局;游戏中间使用估值函数J来模拟逼近回报值r;四国军旗中的时序差分在一局游戏结束时根据时序差分学习算法进行调整;希望对从游戏开始到游戏结束所经历的每个棋局S,由
7、估值函数 J(S,w)所算出来的回报值和真实值J*之间的 差值最小;例如,理想的回报值可能是这样的:S1 S2 SN-1 SN 0.90 0.92 0.98 1 估值函数J(S,w)得到的结果可能是:S1 S2 SN-1 0.3 0.5 0.8 这里期望通过调整w,可是使得在每个棋局状态S,估值函数得到的结果都能够非常接近理想回报值。时序差分调整过程对游戏过程中经历的每个状态Si,计算出 J(Si,w),利用J来作为估值函数计算博弈树搜索时博弈树的各个叶节点的估值;对游戏所经历的各步,t1,2,3,N-1,计算出时序差分:根据时序差分公式来更新参数向量w:参数向量w为了更准确有效的描述棋盘状态
8、S,定义了下面几组参数来构成参数向量w:棋子基本值数组:如司令的基本值为500,炸弹为300,军旗为1000等;棋子灵活性数组:如司令的灵活性为2.0,工兵的灵活性为0.8等;进攻位置加分数组:如在敌方军旗附近的位置加分,行营位置加分等;特殊组合得分:如炸弹师长对得分,三角雷得分等;威胁保护比例:棋子受到威胁(或受到保护)时的减分(或加分)比例等;估值函数J可以看作是一个1n的向量v和n1的参数向量w的内积;例如:N是(基本值数组的各个参数所对应的系数,灵活性数组的各个参数所对应的系数,),w是(基本值数组的各个参数,灵活性数组的各个参数,),则 J 基本值数组的各个参数基本值数组系数所对应的系数 灵活性数组的各个参数灵活性数组参数所对应的系数 .J对w是处处可导的,满足时序差分的条件;有待改进的地方学习过程较为缓慢;能够精确有效描述棋局的各种参数需要进一步的增加和完善;误差对于参数调整的影响;研究学习参数和参数对于学习过程的影响;估值函数举例 谢谢大家!