通过简单的强化学习实现井字棋(Tic-Tac-Toe)

一、强化学习简介

强化学习的过程可以理解为Agent与Environment的交互、学习、进步的过程,在井字棋中,可以简单的将其中的一方理解为Agent,另一方为Environment。交互的过程中主要有一下4个要素:

  • 状态(state):指可能出现的情况或局面,在井字棋中指局面上的落子情况与先后手。
  • 操作(action):指从一个状态(state)到另一个状态(state)的过程,在井字棋中指下一步的落子。
  • 价值(value):衡量每一个状态(state)的好坏程度,在井字棋中指在当前局面下取胜的可能性。价值与状态的对应关系又称价值函数(value function)
  • 增益(reward):指每一个操作所带来的价值(value)的变化,在井字棋中指这一步下的好不好。

强化学习实际是在模拟人类学习的过程。设想一个小孩在学习井字棋,一开始他完全不会下,只知道胜利局面的value是最高的,失败局面的value是最低的,只能随便下一个位置(explore),这样随便下几局之后,他会学习到,将要导致胜利的前几步的value是比较高的,将要导致失败的前几步的value是比较低的,这时通过explore使他对每个状态value的有了新的认识。当然他也会利用现有的知识(exploit),每当落子前,他会考虑落子后棋盘上可能的所有局面(state),然后选择一个对自己最有利的(max value)位置下棋。通过exploit,他可以利用他自己的知识使自己获胜的概率达到最大。

二、井字棋的算法

1、训练

强化学习井字棋训练的过程如下:

重复epochs次
    while true:
        if 分出胜负或平局
            返回结果,break
        随机的选择explore或exploit
        if 选择explore
            随机的选择落点下棋
        else 选择exploit
            从value_table中查找对应最大value状态的落点下棋
            根据新状态的value在value_table中更新原状态的value

其中“根据新状态的value在value_table中更新原状态的value” 是非常重要的一部分,决定了强化学习的学习方法,即能不能学到知识。由于井字棋状态逻辑非常简单,因此使用如下简单的表达式即可:

V(S)=V(S)+α(V(S)V(S)) V ( S ) = V ( S ) + α ( V ( S ′ ) − V (
  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值