首页 > 解决方案 > 强化学习的超参数调整

问题描述

我有几种强化学习算法的实现。所有实现都使用 tensorflow 2,以及使用tf.GradientTape包装在tf.function. 每个代理都有一组 5-10 个超参数 + 优化器超参数(学习率、epsilon、beta1、beta2,...)。因此,可以说平均而言,我一次至少有 9 个超参数需要调整。下面是一个示例来说明使用 A2C 代理类:

hparams = {
    'learning_rate': 3e-4,
    'epsilon': 1e-5,
    'beta_1': 0.9,
    'beta_2': 0.99,
    'entropy_coefficient': 0.01,
    'value_loss_coefficient': 0.5,
    'clip_norm': 0.5,
    'n_steps': 5,
}
agent = A2C(**hparams)

典型的 train step 方法如下所示:

@tf.function
def train_step(self):
    batch = states, actions, rewards, dones = self.get_batch()
    with tf.GradientTape() as tape:
        model_outputs = self.model(states)
        loss = self.calculate_loss(batch, model_outputs)
    self.model.optimizer.minimize(loss, self.model.trainable_variables, tape=tape)

我检查了HParams api, keras tuner,它们仅在我使用功能性 api 进行训练时才兼容,而tf.keras.Model.fit()这里不是这种情况。通过检查 tensorflow 文档,我没有找到任何有用的信息。

问题是

标签: pythontensorflowreinforcement-learninghyperparameterstensorflow2.x

解决方案


推荐阅读