【问题标题】:Tensorflow loss is already lowTensorflow 损失已经很低
【发布时间】:2018-06-07 04:38:37
【问题描述】:

我正在做一个带有强化学习的 AI,我得到了奇怪的结果,损失显示如下: 张量流损失:https://imgur.com/a/Twacm

在训练期间,每场比赛结束后,它都会与一名随机球员比赛,并在一个带有加权矩阵的球员之后进行比赛,但它会上下波动: 结果:https://imgur.com/a/iGuu2

基本上,我正在做一个强化学习代理来学习玩奥赛罗。在 Tensorflow 上使用 Keras 使用 E-greedy、体验回放和深度网络。尝试了不同的架构,如 sigmoid、relu 和上图中的 tanh。他们都有类似的损失,但结果有点不同。 在此示例中,代理正在从 100k 专业游戏中学习。 这是架构,默认学习率为 0.005:

model.add(Dense(units=200,activation='tanh',input_shape=(64,)))
model.add(Dense(units=150,activation='tanh'))
model.add(Dense(units=100,activation='tanh'))
model.add(Dense(units=64,activation='tanh'))
optimizer = Adam(lr=lr, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss=LOSS,optimizer=optimizer)

原码:https://github.com/JordiMD92/thellia/tree/keras

那么,为什么我会得到这些结果? 现在我的输入是 64 个神经元(8*8 矩阵),有 0 个空方格、1 个黑色方格和 -1 个白色方格。使用负输入不好吗?

【问题讨论】:

    标签: python tensorflow keras reinforcement-learning othello


    【解决方案1】:

    这可能是您的激活功能的问题。尝试使用 relu 而不是 tanh,如果您使用的是深度 q 学习,您可能不需要任何激活函数或关心重置权重的优化器。

    【讨论】:

    • 我会试试的。你认为这个问题的层数和神经元数似乎正确吗?
    • @user2335427 我认为这取决于你的模型和你的设计。因为,神经元将存储每个输入数据的信息用于深度 q 学习,因此您可能会考虑所有可能的状态。我总是在不同的层次中分离不同类型的信息。例如,您可以将状态存储在一个层中,并将动作存储在另一个层中。
    • 我摆脱了 keras,现在我只使用 Tensorflow。实现了双 DQN 并尝试了不同的激活功能,现在 relu 做得很好。谢谢。关于最后一个问题:¿使用负输入是否不好?
    • @user2335427 np。对于你的最后一个问题,实际上,如果你的输入是 neg,你只是使用它,或者 neg 输入是异常输入,你需要使用其他方法来减少对模型的影响。在我看来,负面输入只会影响模型的性能。
    • @user2335427 对于深度 q 学习或强化学习,负输入只是意味着在这个状态下通过动作会导致整个奖励会减少,所以当你的模型会发生相同的状态和动作时在马尔可夫链中描述,模型会选择其他动作导致奖励更大。因此,如果你将负输入输入到模型中并想要得到你输入负的动作,你可能需要花更多的时间让模型学会找到一个好的过程,这将减少负输入对状态奖励的影响.
    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 2017-10-19
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2021-03-09
    • 2021-07-18
    • 1970-01-01
    相关资源
    最近更新 更多