我在一个简单的赛车游戏中使用神经网络作为代理。我的目标是训练网络模仿蛮力树搜索到任意深度。
我的算法如下所示:
- 代理从深度 0 开始
- 生成一堆测试状态
- 对于每个测试状态
s
:- 对于每个动作
a
:s' = env.step(s, a)
for x in range(agent.depth): s' = env.step(s', agent.predict(s'))
- 计算状态奖励
s'
- 将测试状态的标签设置为产生最高奖励的
s
任何操作a
- 对于每个动作
- 使用测试状态和标签训练代理,并递增
agent.depth
- 循环直到所需深度
这个想法是,以这种方式训练到深度 N 的代理应该产生接近深度 N 的蛮力树搜索的输出......所以通过使用它来播放 N 个动作,它应该能够找到我最好的最终结果在那个深度状态。在实践中,我发现它的性能介于 N 和 N-1 之间(当然它永远不会达到 100% 的准确度)。
我的问题是:这个算法的名称是什么?当我搜索带有播放的树搜索时,一切都在谈论 MCTS。但是由于这里没有随机性(第一步是尝试所有操作),所以这会被称为什么?