強化学習(Reinforcement Learning, RL)は、ロボットが環境と相互作用しながら「どの行動を選ぶと、長い目で得をするか」を学ぶ方法である。画像分類のように入力と正解ラベルを一度に与えるのではない。ロボットは観測を受け、モーターを動かし、少し遅れて返る報酬を手掛かりに、次の行動を更新する。この試す→結果を受け取る→方策を変えるという閉ループが、強化学習を理解する出発点になる。
30秒で分かる結論
- 強化学習の最小単位は、時刻tの状態(または観測)s_t、行動a_t、報酬r_{t+1}、次状態s_{t+1}である。
- MDP(マルコフ決定過程)は、現在の状態と行動から次の状態と報酬が決まる確率モデル。過去の履歴を状態に要約できることが前提になる。
- 方策\pi(a\mid s)は「この状態でどの行動を選ぶか」、価値関数V^\pi(s)は「その方策を続けたときの将来報酬の期待値」を表す。
- 報酬は一回の成功だけでなく、割引率\gammaを使って将来の報酬まで合計する。遅延が長すぎると学習が不安定になり、近視眼的すぎると危険を見落とす。
- 未知の行動を試す探索(exploration)と、現在最善と思う行動を選ぶ活用(exploitation)はトレードオフである。実機では安全制約を探索より上位に置く。
1. ロボットを「エージェント」として見る
図1 — 強化学習では、エージェントが行動を出した後に環境が変化し、次の観測と報酬が戻る。ロボットではこのループに通信遅延、センサノイズ、機械的な飽和が加わる。
たとえば二輪移動ロボットなら、エージェントはカメラ・LiDAR・エンコーダから得た情報を状態として扱い、左右の車輪速度を行動にする。環境は車体の運動方程式、床の摩擦、障害物、バッテリー残量を含む。目標地点へ近づけば正の報酬、衝突や急な操舵には負の報酬を与える。ただし「ゴールに到達したら+1」だけでは、途中で何をすべきか分からない。距離、速度、停止余裕、電力などを組み合わせる報酬設計が必要になる。
2. MDP:問題を4つの部品に分解する
MDPは、状態集合\mathcal{S}、行動集合\mathcal{A}、遷移確率P(s'\mid s,a)、報酬関数R(s,a,s')、割引率\gammaで定義する。エージェントが状態s_tで行動a_tを選ぶと、環境は確率分布Pに従って次状態s_{t+1}へ移り、報酬r_{t+1}=R(s_t,a_t,s_{t+1})を返す。
「マルコフ」とは、未来が過去全体ではなく現在の状態に条件づければよい、という性質である。車輪ロボットの状態を位置だけにすると、速度や旋回角速度を忘れてしまい、同じ位置でも止まっているのか滑っているのかを区別できない。実際には、位置・速度・姿勢・センサの信頼度などを状態へ含めるか、履歴を扱える再帰モデルを使う。
完全な状態s_tを直接観測できない問題は部分観測MDP(POMDP)になる。現実のロボットはほぼPOMDPであり、カメラの遮蔽やLiDARの欠測を避けられない。そのため、観測o_tを状態推定器(EKF、因子グラフ、ニューラルネットワークなど)で処理する。線形カルマンフィルタの考え方はセンサ融合の記事に、ROS 2での実装境界はROS 2入門にまとめている。
3. 価値関数とリターン
時刻tから先に得られる割引報酬の合計をリターンG_tと呼ぶ。
方策\piに従ったとき、状態sの価値関数は
である。状態行動価値関数(Q値)は、最初の行動も指定する。
Q値が大きい行動を選ぶだけなら、価値ベースの制御になる。逆に方策そのものをニューラルネットワークで表し、\pi_\theta(a\mid s)のパラメータ\thetaを更新する方法は方策ベースである。連続した操舵角や関節トルクを扱うロボットでは、後者やActor-Critic系が自然なことが多い。
4. ベルマン方程式は「一歩先へ分解する」
将来の長い合計をそのまま評価する代わりに、今すぐ得る報酬と一歩先の価値へ分けると、ベルマン期待方程式が得られる。
最善方策の価値V^*(s)は、最も良い行動を選ぶベルマン最適方程式を満たす。
ここで重要なのは、価値を「正解ラベル」として与えなくても、別の時刻の価値を教師にできる点である。実装ではこの自己参照が不安定性の原因にもなる。古い推定値をターゲットネットワークへ隔離する、経験再生で相関を崩す、報酬を正規化する、といった工夫が必要になる。
5. 探索と活用をどう両立するか
現在の推定で最も良い行動だけを選ぶと、偶然見つけた局所解から抜け出せない。未知の行動を試す探索が必要だが、実機の探索は衝突や破損につながる。代表的な方法を比較すると次のようになる。
| 方法 | 直感 | 長所 | ロボットでの注意 |
|---|---|---|---|
| ε-greedy | 確率εでランダム行動 | 実装が簡単 | 連続トルクでは急変し危険 |
| Boltzmann/softmax | 価値に応じた確率で選ぶ | 良さそうな候補を優先 | 温度パラメータの調整が必要 |
| UCB | 不確実性の大きい候補を試す | 探索の根拠を持てる | 価値の分散推定が必要 |
| ノイズ付き方策 | 行動やネットワークに連続ノイズ | 滑らかな探索 | 飽和・安全範囲を別途制限 |
実機では、探索を「動作可能な範囲」に閉じ込める。速度上限、関節角のソフトリミット、力・電流上限、非常停止を学習器の外側に置き、方策がどんな値を出しても安全監視が最終的に遮断できるようにする。シミュレータでのランダム化は有効だが、実機でのランダム操作を意味しない。
6. 小さなグリッドワールドで確かめる
数式だけでなく、5×5のグリッドワールドを使うと学習の流れを観察できる。状態はマス目、行動は上下左右、ゴール報酬は+1、壁への移動は−0.1、各ステップは−0.01とする。Q値をゼロで初期化し、次の更新を繰り返す。
角括弧内はTD誤差(Temporal-Difference error)で、予測と一歩先の目標との差である。\alphaが大きすぎると新しい経験に振り回され、小さすぎると環境の変化へ追従できない。学習曲線を描くときは、エピソードごとの成功率だけでなく、平均ステップ数、衝突率、未訪問状態の割合も記録する。
7. 報酬設計は仕様書として書く
報酬は学習アルゴリズムの細部よりも結果を左右する。たとえば自動搬送ロボットに
を与えると、目的地への距離減少、衝突、入力エネルギー、操作の滑らかさを同時に評価できる。ただし重みwを増やせば常によいとは限らない。衝突ペナルティが大きすぎると、ロボットが一歩も動かない安全側の方策を覚えることがある。報酬の各項をログへ分解し、学習後の方策がどの項を稼いだのかを監査する。
報酬ハッキングにも注意する。ゴール判定のバグ、センサの死角、シミュレータだけに存在する接触判定を利用し、目的とは違う方法で高得点を得る場合がある。人間が読める自然言語の目的、物理量ベースの制約、独立した評価環境を組み合わせると発見しやすい。
8. 研究と製品の境界
価値関数を学ぶ手法はデータ効率が高い一方、状態・行動が離散的であることを前提にしがちである。連続制御では方策勾配、Actor-Critic、SACなどが使われる。モデルベース強化学習は、ロボットの力学モデルや学習した世界モデルを使って、実際に動かす前に候補行動を評価する。サンプル回数を減らせる反面、モデル誤差を補償するロバスト性が必要になる。
現行のロボット開発では、強化学習を安全監視・軌道生成・低レベル電流制御のすべてに適用するとは限らない。古典的なPIDやMPCを安全な基盤に置き、強化学習は把持の接触位置、経路の優先度、ゲインの調整など限定された自由度に使う構成も実用的である。VLAの解説で扱う視覚言語モデルも、最終的なトルクを直接出すのではなく、行動チャンクを安全な低レベル制御器へ渡す設計が増えている。
9. 実機へ移す前のチェックリスト
- 状態に必要な速度・遅延・センサ信頼度が含まれているか。履歴を捨ててマルコフ性を壊していないか。
- 報酬を項ごとにログし、成功率だけでなく衝突率、電力、操作量、停止距離を評価したか。
- 行動の範囲、レート制限、ウォッチドッグ、非常停止を学習器と独立して実装したか。
- シミュレータの摩擦、質量、センサ遅延、照明、通信欠損をランダム化し、実機ログで分布差を測ったか。
- 未知環境での評価データを訓練データから分離したか。成功例だけを選んでいないか。
- 失敗時に安全な停止状態へ遷移し、再起動後に古い行動を再送しないか。
まとめ
強化学習は、ロボットへ「正解動作」を丸暗記させる方法ではない。MDPで状態・行動・遷移・報酬を定義し、ベルマン方程式で長期の価値を一歩ずつ推定する。探索と活用のバランス、報酬ハッキング、実機の安全制約を設計へ含めて初めて、学習した方策を現場へ持ち込める。次の段階では、Q学習とDQN、方策勾配、PPO・SAC、模倣学習、Sim-to-Realを同じ枠組みで比較すると理解がつながる。