我正在尝试根据 Karpathy 的RL 教程为游戏 2048 实施策略网络代理。我知道算法需要玩一些游戏,记住输入和采取的行动,标准化和平均中心结束分数。但是,我陷入了损失函数的设计。如何正确地鼓励那些导致更好的最终分数的行为并阻止那些导致更差分数的行为?
在输出层使用 softmax 时,我设计了一些东西:
loss = sum((action - net_output) * reward)
其中动作是一种热门格式。但是,这种损失似乎没有多大作用,网络没有学习。我在 PyTorch 中的完整代码(没有游戏环境)在这里。