我想问一下在棋盘游戏中使用带有 TD-learning 方法的标准反向传播神经网络是否有意义?
我的方法看起来像:
- 玩 1 场比赛。网络有时扮演贪婪策略和随机动作的玩家。
对于每个存储的游戏位置(从终端 1 开始并移动到起始位置)计算估计的位置值和期望的位置值,例如
boards_values[i]['desired_value'] = boards_values[i]['estimated_value'] + 0.4 * ( boards_values[i+1]['estimated_value'] - boards_values[i]['estimated_value'] )
使用标准反向传播算法从整个游戏结束训练中为网络创建训练模式,每个训练模式在 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')。