Neural network 游戏2048的策略网络

Neural network 游戏2048的策略网络,neural-network,artificial-intelligence,pytorch,reinforcement-learning,game-ai,Neural Network,Artificial Intelligence,Pytorch,Reinforcement Learning,Game Ai,根据Karpath的说法,我正在尝试为2048游戏实现一个策略网络代理。我知道算法将需要玩一些游戏,记住输入和采取的行动,规范化和平均中心的结局分数。然而,我在损失函数的设计上陷入了困境。如何正确地鼓励最终得分较高的行为,并阻止最终得分较低的行为 在输出层使用softmax时,我设计了以下内容: 损失=总和(行动-净产出)*奖励) 其中,操作采用一种热格式。然而,这一损失似乎没有多大作用,网络没有学到什么。我在PyTorch中的完整代码(没有游戏环境)是。对于您代码中的策略网络,我认为您需要如下

根据Karpath的说法,我正在尝试为2048游戏实现一个策略网络代理。我知道算法将需要玩一些游戏,记住输入和采取的行动,规范化和平均中心的结局分数。然而,我在损失函数的设计上陷入了困境。如何正确地鼓励最终得分较高的行为,并阻止最终得分较低的行为

在输出层使用softmax时,我设计了以下内容:

损失=总和(行动-净产出)*奖励)


其中,操作采用一种热格式。然而,这一损失似乎没有多大作用,网络没有学到什么。我在PyTorch中的完整代码(没有游戏环境)是。

对于您代码中的策略网络,我认为您需要如下内容:

损失=-(日志(行动概率)*奖励)

其中,action_probability是网络在该时间步中执行的操作的输出

例如,如果您的网络输出了10%的执行该操作的机会,但它提供了10的奖励,那么您的损失将是:
-(log(0.1)*10)
,等于10

但是,如果您的网络已经认为这是一个好的举动,并且输出了90%的采取该行动的机会,那么您的
-log(0.9)*10)
大约等于0.45,对网络的影响较小

值得注意的是,PyTorch的
log
功能在数值上并不稳定,您最好在网络的最后一层使用
logsoftmax