gpt4 book ai didi

python - 如何用分类神经网络训练不良奖励?

转载 作者:行者123 更新时间:2023-11-30 21:53:37 25 4
gpt4 key购买 nike

我正在尝试使用 KerasPython 通过强化学习来训练神经网络玩 Tic Tac Toe。目前网络获取当前板的输入:

    array([0,1,0,-1,0,1,0,0,0])
1 = X 
-1 = O
0 = an empty field

如果网络赢得了一场比赛,它所做的每一个 Action (输出)都会得到奖励。 [0,0,0,0,1,0,0,0,0]如果网队输了,我想用不好的奖励来训练它。 [0,0,0,0,-1,0,0,0,0]

但目前我获得了很多 0.000e-000 精度。

我可以训练“不良奖励”吗?或者,如果无法使用 -1 做到这一点,我应该怎么做?

提前致谢。

最佳答案

您需要反向传播游戏结束时赢得的奖励。看看this教程。

简而言之,从本教程来看:

# at the end of game, backpropagate and update states value
def feedReward(self, reward):
for st in reversed(self.states):
if self.states_value.get(st) is None:
self.states_value[st] = 0
self.states_value[st] += self.lr * (self.decay_gamma * reward
- self.states_value[st])
reward = self.states_value[st]

正如您所看到的,假设第 5 步(游戏结束)中的奖励以衰减率反向传播(不是导数意义上的)通过 (4,3,2,1) 之前的所有步骤。这是正确的方法,因为井字棋是一种具有延迟奖励的游戏,这与经典的强化学习环境相反,在经典的强化学习环境中,我们通常在每一步都会获得奖励(正或负)。这里,T 处行动的奖励取决于 T+某事处的最终行动。如果最后一个 Action 以胜利结束游戏,则奖励为 1;如果对手执行了最后一个 Action 并获胜,则奖励为 -1。

至于准确性,我们不将其用作强化学习中的指标。一个好的指标是观察平均累积奖励(如果你的智能体赢了一半时间,则为 0;如果它学到了一些东西,则为 > 0;否则为 < 0)。

关于python - 如何用分类神经网络训练不良奖励?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59592009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com