1

我有 2 个神经网络:

  1. 使用离策略强化学习预测动作值 Q(s, a) - 估计对对手平均行为的最佳响应。
  2. 使用监督分类模仿自己的平均最佳响应行为。

这是我的模型(Keras):

# the best response network:
def _build_best_response_model(self):
    input_ = Input(shape=self.s_dim, name='input')
    hidden = Dense(self.n_hidden, activation='relu')(input_)
    out = Dense(3, activation='relu')(hidden)

    model = Model(inputs=input_, outputs=out, name="br-model")
    model.compile(loss='mean_squared_error', optimizer=Adam(lr=self.lr_br), metrics=['accuracy'])
    return model

# Average response network:
def _build_avg_response_model(self):
    input_ = Input(shape=self.s_dim, name='input')
    hidden = Dense(self.n_hidden, activation='relu')(input_)
    out = Dense(3, activation='softmax')(hidden)

    model = Model(inputs=input_, outputs=out, name="ar-model")
    model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=self.lr_ar), metrics=['accuracy'])
    return model

正如 Heinrich 和 Silver 的论文“不完美信息游戏中的自我游戏的深度强化学习”中所述 - 网络必须更新如下:

更新日志损失和均方误差

我不确定我是否正确实施了它 - 我确定categorical_crossentropy并且mean_squared_error是正确的损失函数。但我不确定是否softmax并且relu是正确的激活函数。

如论文所述:

为了在 Leduc Hold'em 中学习,我们手动校准了 NFSP,用于具有 64 个神经元的 1 个隐藏层和校正线性激活的全连接神经网络。

他们relu用作激活函数,但我猜他们认为是best response network因为在监督分类中使用它没有意义relu,我想获得可能动作的概率分布。

我无法重现论文中的实验,只是想确保网络设置正确。

干杯

4

0 回答 0