深層強化学習の実装と実験
個人的な学習として、深層強化学習の理論を学んだあとに、古典的なタスクで実装と実験をするためのリポジトリです。研究開発そのものではなく、環境、アルゴリズム、学習の進み方を手を動かして理解することが目的です。
環境には Gymnasium、モデルの記述には PyTorch を使い、DQN と PPO を実装しました。強化学習の高級ライブラリには頼らず、アルゴリズムの処理を追える範囲で書いています。
次の3タスクをもって完了としました。いずれも Gymnasium の環境です。タスクの説明は note.md、実験の記録と動画は report/report.md に残しています。
CartPole(DQN)
台車の上で棒を立て続けるタスクです。more_large_model の 200000 step で、台車が動きながら棒が立ったままになる様子を動画で確認しました。
Pendulum(PPO)
振子を直立させるタスクです。baseline の環境ステップ 65536 付近で、16エピソードを並べました。このとき、可視化した環境のすべてで振子が直立しました。
LunarLander(PPO)
着陸船をパッドへ降ろすタスクです。seed 42 の best 方策について、連続行動、6点テーブル、ビニングを、2種類の初期条件で並べて動画にしました。
学習の一次出力(TensorBoard のイベント、チェックポイント、学習中の動画)は runs/ に置き、Git では管理していません。再実行の正本は各タスクの configs/ にある YAML です。レポートで見せる図と動画だけを report/ に置き、本文はそのパスを参照しています。
実装には AI コーディングエージェントを使いました。コードを自分で追えるように、指示した範囲の外は変えないこと、一度の変更は1ファイルまでにすることを AGENTS.md に書いています。環境は Python 3.12 と uv で管理しています。
実装、設定、レポートは GitHub にあります。
技術スタック
- 言語: Python 3.12
- 環境: Gymnasium、uv
- 深層学習: PyTorch
- アルゴリズム: DQN、PPO