3

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

我的方法看起来像:

  1. 玩 1 场比赛。网络有时扮演贪婪策略和随机动作的玩家。
  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 个 epoch 内具有较小的学习率。

    NN.train([pattern], iterations=1, N=0.001, M=0.000001)
    

我在井字游戏中尝试了上述的一些组合(不是从一个示例中学习,而是从 30-40 种模式中学习,降低/提高学习速度等),但从未训练过理想的玩家(它永远不会输给随机玩家)。NN 代理与随机玩家对战的最佳示例之一是:

(第一局:赢,平,输),(第二局:赢,平,输),(总和:赢,平,输)
(191,34,275),(159,102,239),( 350, 136, 514) - 新鲜网
(427, 21, 52), (312, 16, 172), (739, 37, 224) - +50k 游戏后

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

Tic tac toe 只是测试沙盒,当我成功完成它时,我将转向更复杂的纸牌游戏('Lost Cities')。

4

1 回答 1

5

是的,这是相对标准的。这是 Tesauro 在他的TDGammon 2.1程序中采用的方法,该方法训练了一个人工神经网络,使其在玩西洋双陆棋时比最好的人类玩家更好(在 150 万场比赛中自举后)。

但是,有很多警告:

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

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

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

  • 资格跟踪是加速强化学习算法学习的有效方式。使用资格迹的算法包括 TD(λ)、SARSA(λ) 和 Q(λ)。不过,您需要小心 - 现在有另一个参数需要拟合,这意味着在训练模型时要小心谨慎。使用测试集!

于 2012-07-04T12:20:14.213 回答