在棋盘游戏中使用经典的反向传播神经网络和TD学习

时间:2012-07-04 11:11:32

标签: artificial-intelligence neural-network reinforcement-learning

我想问一下在棋盘游戏中使用标准的反向传播神经网络和TD学习方法是否有意义?

我的方法如下:

  1. 玩1场比赛。 Net有时会扮演贪婪的政策和随机动作。
  2. 对于每个存储的游戏位置(从终端1开始并移动到起始位置)计算估计的位置值和所需的位置值,例如

    boards_values[i]['desired_value'] = boards_values[i]['estimated_value'] + 0.4 * ( boards_values[i+1]['estimated_value'] - boards_values[i]['estimated_value'] )
    
  3. 使用标准的反向传播算法,为整个游戏结束列车创建网络训练模式,每个训练模式的学习速度较短,为1个时期。

    NN.train([pattern], iterations=1, N=0.001, M=0.000001)
    
  4. 我在我的tic tac toe游戏中尝试了上述的一些组合(不是从一个例子学习,而是学习30-40个模式,降低/提高学习速度等等)并且从未训练过理想的玩家(它永远不会丢失与随机相比) 。 NN代理对抗随机播放器的最好例子之一是:

    (第一场比赛:胜利,平局,输球),(第二场比赛:胜利,平局,输球),(总和:胜利,平局,失败)
    (191,34,275),(159,102,239),(350,136,514) - 新鲜净
    (427,21,52),(312,16,172),(739,37,224) - 经过+ 50k比赛后

    输入是18个神经元格式:
    对于每个电路板单元组(1,0)表示x,(0,0)表示空单元,(0,1)表示o。输出是在-1,1范围内的一个单位赢/输概率估计。

    Tic tac toe仅测试沙盒,当我成功完成它时,我将转向更复杂的纸牌游戏(“失落的城市”)。

1 个答案:

答案 0 :(得分:5)

是的,这是相对标准的。这是Tesauro在他的计划TDGammon 2.1中采用的方法,它训练人工神经网络比最好的人类玩家更好地玩步步高(在引导150万场比赛之后)。

但有许多警告:

  • 众所周知,人工神经网络难以正确使用。通过对一些简单的监督学习问题进行测试,您是否确保您的实施按预期执行?

  • TDGammon使用神经网络为每个游戏状态提供启发式实用程序,并将其与2层alpha / beta修剪算法相结合。使用现代计算机,可以使用更深入的前瞻(例如,我最近编写了一个alpha/beta search algorithm,可以轻松管理分支因子为7的游戏上的10层搜索,解释(非编译) )代码和考虑启发式之前)。

  • TD Learning不是唯一的强化学习算法。我过去在申请SARSA和Q-Learning方面取得了成功,通过优先探索看似有希望的策略并忽略看起来不好的策略来加速搜索。您需要将它们与exploration policy结合起来,以确保它们有时会探索看起来很糟糕的策略,以避免陷入局部最小值。一个简单的政策,例如epsilon-greedy,ε= 0.1,通常效果很好。

  • Eligibility traces是加强强化学习算法学习的有效方法。使用合格迹线的算法包括TD(λ),SARSA(λ)和Q(λ)。但是你需要小心 - 现在还有另一个适合的参数,这意味着在训练模型时要小心谨慎。使用测试集!