MellowMax 运算符返回 +INF

问题描述 投票:0回答:0

MellowMax 是一个 softmax 运算符,可以在深度 Q 学习的上下文中代替 Max 使用。使用 Mellow Max 已被证明可以消除对目标网络的需求。论文链接:https://arxiv.org/abs/1612.05628

要估计目标 Q 值,您可以对下一个状态的 Q 值执行 mellow max。 mellow max 函数看起来像这样:

其中x是Q值的张量,w是温度参数。

我的实现是:

def mellow_max(q_values):
    q_values = tf.cast(q_values, tf.float64)
    powers = tf.multiply(q_values, DEEP_MELLOW_TEMPERATURE_VALUE)
    summation_values = tf.math.exp(powers)
    summation = tf.math.reduce_sum(summation_values, axis=1)
    val_for_log = tf.multiply(summation,(1/NUM_ACTIONS))
    numerator = tf.math.log(val_for_log)
    mellow_val = tf.math.divide(numerator, DEEP_MELLOW_TEMPERATURE_VALUE).numpy()
    return mellow_val

我的问题是,当使用 1000 的温度值“w”时,此函数的第三行返回值 +inf。我使用的温度值“w”为 1,000,因为这在上面显示为最佳申请 Atari Breakout 测试平台时的论文。

关于如何防止第三行干扰计算的任何建议,我们将不胜感激。也许,将函数的限制设置为“w”达到 1,000 会奏效。关于我如何在 tensorflow 中做到这一点有什么建议吗?

tensorflow deep-learning q-learning
© www.soinside.com 2019 - 2024. All rights reserved.