1. 学ぶ
  2. /
  3. コース
  4. /
  5. Pythonで学ぶDeep Reinforcement Learning

Connected

演習

優先度付き経験再生バッファ

この演習では、後で Prioritized Experience Replay を用いた DQN を実装する際に使うデータ構造 PrioritizedExperienceReplay クラスを導入します。

PrioritizedExperienceReplay は、これまで DQN エージェントの学習に使ってきた ExperienceReplay クラスを改良したものです。優先度付きの経験再生バッファでは、そこからサンプリングされる遷移が一様サンプリングよりも学習に有益になるようにされています。

まずは、.__init__(), .push(), .update_priorities(), .increase_beta(), .__len__() を実装してください。最後のメソッド .sample() は、次の演習で扱います。

指示

100 XP
  • .push() では、その遷移の優先度をバッファ内の最大優先度(バッファが空なら 1)で初期化します。
  • .update_priorities() では、対応する TD 誤差の絶対値を優先度に設定し、エッジケースに備えて self.epsilon を加えます。
  • .increase_beta() では、self.beta_increment だけ beta を増やし、beta が 1 を超えないようにします。