Gradient-bandit agent性能异常低下,请求问题排查与优化指导
Gradient Bandit Agent 性能异常排查求助
我正在研读萨顿与巴托所著的《Reinforcement Learning: An Introduction》,测试第2.7章的Gradient-bandit agent时发现性能极低。已尝试以下调整:
- 使用平均奖励基线/不使用基线
- 设置alpha为0.1、0.2、0.3、0.4
- 初始偏好H设为0、1、10、100
但均无改善。
以下是agent生命周期步骤(动作选择+参数更新)的Python代码(self代表agent):
# for probabilities calculation: pref_exps = np.exp(self.params["preferences"]) pref_exps_sum = sum(pref_exps) # choosing a bandit: choice_dice = np.random.uniform() * pref_exps_sum accum_pref_exp = 0 for i, pref_exp in enumerate(pref_exps): accum_pref_exp += pref_exp if accum_pref_exp >= choice_dice: self.chosen_bandit_i = i break # self.reward is filled here: self.perform_bandit(self.chosen_bandit_i) # updating baseline: self.params["lifetime"] += 1 self.params["average_reward"] += 1 / self.params["lifetime"] * (self.reward - self.params["average_reward"]) # updating preferences: for i, pref_exp in enumerate(pref_exps): probability = pref_exp / pref_exps_sum if i == self.chosen_bandit_i: self.params["preferences"][i] += self.params["alpha"] * (self.reward - self.params["average_reward"]) * (1 - probability) else: self.params["preferences"][i] -= self.params["alpha"] * (self.reward - self.params["average_reward"]) * probability
该代码测试结果性能极差:100个agent各自访问10个单臂老虎机,测试2000步,性能表现如下图表:
我参考了相关帖子的修正代码,其逻辑与我的代码基本一致,但对方代码能正常工作。我无法定位错误,恳请协助排查,以让Gradient-bandit agent发挥正常性能。
内容的提问来源于stack exchange,提问作者Daniil
相关产品推荐
相关产品推荐

