目次 — 知りたいところから読む
前提と読み方
前提知識 確率と機械学習の基礎。
入門 · 原理・構成・判断のための解説です。
Q学習は、状態と行動の組ごとに「将来どれだけ得をするか」を表すQ値を更新する、強化学習の代表的なオフポリシー手法である。小さな迷路なら表(Q-table)だけで動くが、カメラ画像や多数の関節を扱うと表の大きさが破綻する。DQN(Deep Q-Network)は、その表をニューラルネットワークで近似し、経験再生とターゲットネットワークで学習の相関と自己参照による不安定さを抑える。
30秒で分かる結論
- Q値Q(s,a)は、状態sで行動aを選んだときの将来リターンの期待値。最大Q値の行動を選ぶと貪欲方策になる。
- Q学習は実際に従った方策とは別に、次状態の最大Q値を使って更新できる(オフポリシー)。探索用のε-greedyと、学習対象の貪欲方策を分けられる。
- DQNは画像など高次元の観測をネットワークへ入力し、全離散行動のQ値を一度に出力する。連続トルクはそのままでは扱えず、離散化またはActor-Criticが必要になる。
- 経験再生は過去の遷移をシャッフルして学習データの相関を弱め、ターゲットネットワークは更新目標を数ステップ固定して発散を防ぐ。
- ロボットでは、学習器の外側に速度・力・電流制限と非常停止を置く。高い報酬やゲームの成功率だけでは、実機の安全性を示せない。
1. Q値を表にする
前回の強化学習の基礎で扱ったMDPでは、状態sと行動aを選ぶと報酬rと次状態s'が得られる。Q学習は、未知の環境モデルPを明示的に持たず、経験(s,a,r,s')だけからQ値を更新する。
角括弧のTD誤差が正なら、その行動を以前より高く評価し、負なら低く評価する。\alphaは学習率、\gammaは将来報酬の割引率である。終端状態では次状態の価値を0とする。
図1 — Q学習は、実際に得た報酬と次状態の最大Q値からTDターゲットを作り、直前のQ値を少しだけ動かす。
5×5迷路なら、状態25個×行動4個の100要素の表で十分である。初期値をゼロにしても、ε-greedyで探索すればゴールまでの経験が蓄積される。学習率を1にして一度の経験を完全に信じると環境ノイズへ弱くなるため、通常は0と1の間の値で平均化する。
2. オフポリシーとε-greedy
Q学習の更新で使う\max_{a'}Q(s',a')は、次に実際に選んだ行動ではなく「最善と推定する行動」の価値である。そのため、探索を含む行動方策(behavior policy)と、評価したい貪欲方策(target policy)を分離できる。これがオフポリシーの意味である。
ε-greedyは確率εでランダム行動、それ以外は最大Q値を選ぶ。学習の序盤はεを大きくし、訪問範囲を広げる。終盤は徐々に小さくして、得た知識を活用する。ただし実機で完全なランダム行動を許してはいけない。ランダムにする対象を候補経路や速度上限内の離散コマンドに限定し、衝突監視は常に優先する。
3. 表が壊れる理由:画像と連続値
状態が「カメラ画像の全画素」、行動が「左右モータの8ビット速度」のように増えると、表は現実的なメモリに収まらない。似た画像(照明が少し違うだけ)を別状態として扱うため、同じ知識を何度も学習する問題もある。そこで、状態を特徴量へ変換し、ニューラルネットワークQ_\theta(s,a)でQ値を近似する。
DQNでは、ネットワークへ状態画像を入力し、離散行動ごとのQ値をベクトルで出力する。例えば上下左右の4行動なら、出力は(Q(s,\mathrm{up}),Q(s,\mathrm{down}),Q(s,\mathrm{left}),Q(s,\mathrm{right}))である。損失は
と書ける。Dは経験再生バッファ、\theta^-はターゲットネットワークのパラメータである。終端ならy=rとする。
4. 経験再生:相関したログをシャッフルする
ロボットのログは連続している。時刻tとt+1の画像はほぼ同じで、隣り合うデータをそのままミニバッチにすると勾配が偏る。DQNは遷移(s_t,a_t,r_{t+1},s_{t+1},done)をリプレイバッファへ蓄積し、そこからランダムにサンプルする。
| バッファ設計 | 効果 | 代償 |
|---|---|---|
| 一様サンプリング | 実装が簡単、相関を弱める | 稀な重要経験を引きにくい |
| 優先度付き再生 | TD誤差の大きい経験を多く使う | 重要度補正と計算量が必要 |
| 固定容量のFIFO | 最新の環境へ追従 | 古い稀な失敗を忘れる |
| エピソード単位の保存 | 成功/失敗の文脈を保てる | バッチの相関が戻りやすい |
バッファへ保存する前に報酬や画像を正規化し過ぎると、後から監査できなくなる。生のセンサ時刻、行動、制限器が実際に出した値、衝突フラグを別ログへ保存し、学習用の変換と分ける。
5. ターゲットネットワーク:教師を少し遅らせる
現在更新しているネットワークで、目標yと予測Q_\thetaを同時に計算すると、目標が毎回動く。誤差を小さくしようとした更新が次の目標も動かし、発散や振動につながる。DQNはコピーをQ_{\theta^-}として保持し、数百〜数万回の更新ごとに\theta^-\leftarrow\thetaと同期する。
同期間隔を長くすると目標が安定する反面、古い評価を使う。Polyak平均で
と少しずつ追従させる設計もある。どちらを選んだか、同期間隔、損失、Q値の分布を設定ファイルとログへ残す。
6. 過大評価とDouble DQN
同じノイズを含むQ値から最大値を取ると、偶然高く見えた行動を選びやすい。これがmax演算による過大評価である。Double DQNは行動の選択をオンラインネットワーク、評価をターゲットネットワークに分ける。
過大評価を完全に消す魔法ではないが、学習の振動や不自然なQ値の増大を診断しやすくする。報酬のスケール、終端フラグ、行動マスクの誤りも同じ症状を作るため、アルゴリズムを変える前にデータを確認する。
7. 連続制御の限界とロボットへの置き場所
DQNは有限個の離散行動を前提にする。車輪速度を細かく離散化すれば近似できるが、行動数が指数的に増え、ギクシャクした操作になりやすい。操舵角・関節トルク・油圧弁開度のような連続値は、DDPG、TD3、SACなどActor-Critic系で方策を直接出す方が自然なことが多い。
それでもDQNは、ロボットの上位判断に向く。例えば「左レーンを選ぶ/右レーンを選ぶ」「把持候補A/B/C」「速度モードを低/中/高」のような離散意思決定をDQNで行い、実際の速度・電流はPIDやMPCへ任せる。制御器の役割分担はPID制御とMPCの実装例を参照できる。
8. 評価:報酬以外の曲線を描く
学習曲線には平均エピソード報酬だけでなく、成功率、衝突率、エピソード長、Q値の平均と最大、TD誤差、行動ごとの選択比率を重ねる。報酬が上がっても衝突率が上がるなら、報酬重みか終端処理が誤っている。Q値が急増し、損失だけが下がる場合は、終端フラグの欠落やスケール不整合を疑う。
評価環境は訓練環境と分ける。照明、床摩擦、荷重、障害物配置、通信遅延を変え、未知条件での性能を測る。シミュレーションで成功しても、カメラ露光、ローリングシャッタ、モータのデッドゾーン、バッテリー電圧低下が実機で再現されなければ、DQNの性能とは言えない。
実装チェックリスト
- 状態、離散行動、報酬、終端フラグ、時刻を1遷移として保存したか。
- ε、学習率、割引率、バッファ容量、バッチサイズ、ターゲット同期間隔を固定・記録したか。
- Q値、TD誤差、損失、成功/衝突率、行動比率を同じ実験IDで追跡できるか。
- 経験再生の前処理と、生の監査ログを分離したか。
- 行動マスク、終端状態、タイムアウト、無効なセンサ値を単体テストしたか。
- 実機の制限器・watchdog・非常停止がDQNより上位にあり、ネットワーク断でも働くか。
- 未知条件と失敗例を含む評価セットを訓練から分離したか。
まとめ
Q学習は、ベルマン最適方程式を表の更新へ落とし込むことで、モデルを明示せずに行動価値を学べる。DQNはその表をネットワークで近似するが、経験再生とターゲットネットワークなしでは自己参照の誤差が増幅しやすい。離散的な上位判断には強く、連続トルクの低位制御には別の手法と安全監視が必要だ。学習曲線を報酬だけで評価せず、TD誤差、衝突、遅延、Q値の分布まで記録することが、研究コードを動くロボットへ近づける。
Q値が大きい行動は実際の報酬も必ず大きい?
Q値は学習した期待収益の推定である。未経験の状態や分布外の行動では誤差が大きく、値の大きさ自体は保証にならない。
参考資料
現在の項目 · 2 / 8 · 強化学習入門
コメント
コメントの投稿にはログインが必要です
まだコメントはありません。