Article #977

既に発行済みのブログであっても適宜修正・追加することがあります。
We may make changes and additions to blogs already published.

Pongと強化学習 (100)

posted by sakurai on May 21, 2025 #977

コードの続きの説明です。


このコードブロックは、Deep Q-Network (DQN) を用いた強化学習のトレーニングプロセスを実行するループの一部です。エージェントはこのループを通じて、環境と相互作用しながら最適な行動方針を学習していきます。以下、コードの各部分の詳細説明です:

1. ループの開始:
        for global_step in range(args.total_timesteps):

この行は、エージェントが環境と相互作用する合計ステップ数を定義します。args.total_timestepsは、全体の学習プロセス中の総ステップ数を指します。

2. ε-greedy アルゴリズムの実装:
        epsilon = linear_schedule(args.start_e, args.end_e, args.exploration_fraction * args.total_timesteps, global_step)
        if random.random() < epsilon:
            actions = np.array([envs.single_action_space.sample() for _ in range(envs.num_envs)])
        else:
            q_values = q_network(torch.Tensor(obs).to(device))
            actions = torch.argmax(q_values, dim=1).cpu().numpy()
  • εの設定: ε (イプシロン)は探索率を制御します。linear_schedule関数を使って、イプシロンが初期値から最終値まで線形に減少するように設定されています。これにより、学習の初期段階ではランダムな探索を多く行い、後期にはより貪欲な方策(greedy policy)に移行していきます。
  • ランダムアクションの選択: 確率 epsilon 以下の場合、環境のアクションスペースからランダムにアクションを選択します。これにより探索が促進されます。
  • Q値に基づくアクションの選択: それ以外の場合、Qネットワークを用いて現在の観測からQ値を計算し、それぞれの行動の中で最も高いQ値を持つ行動を選択します。
3. 環境のステップ関数の実行:
        next_obs, rewards, terminated, truncated, infos = envs.step(actions)
  • アクションの実行: 選択したアクションを環境に適用し、次の状態 (next_obs)、報酬 (rewards)、エピソードの終了フラグ (terminated)、切断フラグ (truncated)、追加情報 (infos) を取得します。
  • terminatedは通常、エピソードが目標の達成などで自然に終了したことを示します。
  • truncatedはエピソードが最大ステップ数など外部の制約で中断されたことを示します。

このループは、エージェントが環境との相互作用を通じて学習を進めるメインのプロセスです。探索と活用のバランスを取りながら、エージェントは最適なポリシーに収束していくことを目指します。このプロセスを繰り返すことで、エージェントは報酬を最大化する行動を学習します。


左矢前のブログ 次のブログ右矢

Leave a Comment

Your email address will not be published.

You may use Markdown syntax. If you include an ad such as http://, it will be invalidated by our AI system.

Please enter the numbers as they are shown in the image above.