我做了一个简单的曲线发烧,也被称为“艾奇通死库尔德人”。我希望这台机器能找到最优的游戏方式。我复制并稍微修改了一个现有的DQN从一些Atari游戏的例子,是由谷歌的Tensorflow。
我想找出一个合适的奖励函数。目前,我使用此奖励设置:
这样做对吗?我需要调整值吗?还是我需要一个完全不同的方法?
发布于 2017-05-05 19:24:29
奖励-500可以摧毁你的网络。你应该按1到-1之间的值来衡量奖励。(还将输入图像缩放到-1和1或0和1之间)。
只要给你的网络一个奖励-1的崩溃和奖励+1一旦敌人崩溃。没有敌人的话,一击就能得到-1的奖励。在某些情况下,拥有一个小的、持续的、积极的生活回报是有益的(比如网络必须在两个不可避免的崩溃之间做出决定,其中一个会比另一个更快地发生),但它也会使q函数的学习更加复杂。你可以在没有固定报酬的情况下试一试,看看什么是最有效的。
这个不可避免的崩溃的例子也说明了为什么你不应该使用一个小的负面的生活回报。在这种情况下,网络将选择最快的崩溃路径,而在这种情况下,尽可能推迟崩溃将是更好的策略。
发布于 2017-05-05 15:23:10
当奖励函数准确地编码了你希望代理人追求的目标时,这才是最好的。在曲线热中,目标是成为最后一个活着的球员。如果你使用奖励函数来奖励留在游戏中的人,最好的策略就是无限期地把游戏画出来。你可能希望经纪人尽快获胜,所以你应该给出一个小的负面奖励,每一个时间步骤和一些积极的奖励赢得一轮。这是一个快速赢得奖励的功能。
https://stackoverflow.com/questions/43804248
复制相似问题