Pin*_*niu 3 artificial-intelligence reinforcement-learning neural-network
我想问一下在棋盘游戏中使用标准的反向传播神经网络和TD学习方法是否有意义?
我的方法看起来像:
对于每个存储的游戏位置(从终端1开始并移动到起始位置),计算估计的位置值和期望的位置值,例如
boards_values[i]['desired_value'] = boards_values[i]['estimated_value'] + 0.4 * ( boards_values[i+1]['estimated_value'] - boards_values[i]['estimated_value'] )
Run Code Online (Sandbox Code Playgroud)使用标准反向传播算法,从整个游戏结束列车创建网络训练模式,每个训练模式具有1个时期的小学习率.
NN.train([pattern], iterations=1, N=0.001, M=0.000001)
Run Code Online (Sandbox Code Playgroud)我在我的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仅测试沙盒,当我成功完成它时,我将转向更复杂的纸牌游戏("失落的城市").
是的,这是相对标准的.这是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(λ).但是你需要小心 - 现在还有另一个适合的参数,这意味着在训练模型时要小心谨慎.使用测试集!
| 归档时间: |
|
| 查看次数: |
1276 次 |
| 最近记录: |