21 |
Pongと強化学習 (100) |
コードの続きの説明です。
このコードブロックは、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