目次 — 知りたいところから読む
前提と読み方

前提知識 確率と機械学習の基礎。

入門 · 原理・構成・判断のための解説です。

強化学習(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 · ボタンで表示を切り替え
強化学習の観測・行動・報酬ループ エージェントが観測から行動を選び、環境が次の観測と報酬を返す閉ループ図 エージェント方策 π(a|s) を計算 環境物理・シミュレータ・人 行動 aₜ 観測 oₜ₊₁ と報酬 rₜ₊₁ 状態 sₜ は観測履歴を要約した内部表現

図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})を返す。

\mathcal{M}=(\mathcal{S},\mathcal{A},P,R,\gamma),\qquad 0\le\gamma<1

「マルコフ」とは、未来が過去全体ではなく現在の状態に条件づければよい、という性質である。車輪ロボットの状態を位置だけにすると、速度や旋回角速度を忘れてしまい、同じ位置でも止まっているのか滑っているのかを区別できない。実際には、位置・速度・姿勢・センサの信頼度などを状態へ含めるか、履歴を扱える再帰モデルを使う。

完全な状態s_tを直接観測できない問題は部分観測MDP(POMDP)になる。現実のロボットはほぼPOMDPであり、カメラの遮蔽やLiDARの欠測を避けられない。そのため、観測o_tを状態推定器(EKF、因子グラフ、ニューラルネットワークなど)で処理する。線形カルマンフィルタの考え方はセンサ融合の記事に、ROS 2での実装境界はROS 2入門にまとめている。

3. 価値関数とリターン

時刻tから先に得られる割引報酬の合計をリターンG_tと呼ぶ。

G_t=r_{t+1}+\gamma r_{t+2}+\gamma^2r_{t+3}+\cdots

方策\piに従ったとき、状態sの価値関数は

V^\pi(s)=\mathbb{E}_\pi[G_t\mid s_t=s]

である。状態行動価値関数(Q値)は、最初の行動も指定する。

Q^\pi(s,a)=\mathbb{E}_\pi[G_t\mid s_t=s,a_t=a]

Q値が大きい行動を選ぶだけなら、価値ベースの制御になる。逆に方策そのものをニューラルネットワークで表し、\pi_\theta(a\mid s)のパラメータ\thetaを更新する方法は方策ベースである。連続した操舵角や関節トルクを扱うロボットでは、後者やActor-Critic系が自然なことが多い。

4. ベルマン方程式は「一歩先へ分解する」

将来の長い合計をそのまま評価する代わりに、今すぐ得る報酬と一歩先の価値へ分けると、ベルマン期待方程式が得られる。

V^\pi(s)=\sum_a\pi(a\mid s)\sum_{s'}P(s'\mid s,a)\left[R(s,a,s')+\gamma V^\pi(s')\right]

最善方策の価値V^*(s)は、最も良い行動を選ぶベルマン最適方程式を満たす。

V^*(s)=\max_a\sum_{s'}P(s'\mid s,a)\left[R(s,a,s')+\gamma V^*(s')\right]

ここで重要なのは、価値を「正解ラベル」として与えなくても、別の時刻の価値を教師にできる点である。実装ではこの自己参照が不安定性の原因にもなる。古い推定値をターゲットネットワークへ隔離する、経験再生で相関を崩す、報酬を正規化する、といった工夫が必要になる。

5. 探索と活用をどう両立するか

現在の推定で最も良い行動だけを選ぶと、偶然見つけた局所解から抜け出せない。未知の行動を試す探索が必要だが、実機の探索は衝突や破損につながる。代表的な方法を比較すると次のようになる。

方法 直感 長所 ロボットでの注意
ε-greedy 確率εでランダム行動 実装が簡単 連続トルクでは急変し危険
Boltzmann/softmax 価値に応じた確率で選ぶ 良さそうな候補を優先 温度パラメータの調整が必要
UCB 不確実性の大きい候補を試す 探索の根拠を持てる 価値の分散推定が必要
ノイズ付き方策 行動やネットワークに連続ノイズ 滑らかな探索 飽和・安全範囲を別途制限

実機では、探索を「動作可能な範囲」に閉じ込める。速度上限、関節角のソフトリミット、力・電流上限、非常停止を学習器の外側に置き、方策がどんな値を出しても安全監視が最終的に遮断できるようにする。シミュレータでのランダム化は有効だが、実機でのランダム操作を意味しない。

6. 小さなグリッドワールドで確かめる

数式だけでなく、5×5のグリッドワールドを使うと学習の流れを観察できる。状態はマス目、行動は上下左右、ゴール報酬は+1、壁への移動は−0.1、各ステップは−0.01とする。Q値をゼロで初期化し、次の更新を繰り返す。

Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha\left[r_{t+1}+\gamma\max_{a'}Q(s_{t+1},a')-Q(s_t,a_t)\right]

角括弧内はTD誤差(Temporal-Difference error)で、予測と一歩先の目標との差である。\alphaが大きすぎると新しい経験に振り回され、小さすぎると環境の変化へ追従できない。学習曲線を描くときは、エピソードごとの成功率だけでなく、平均ステップ数、衝突率、未訪問状態の割合も記録する。

7. 報酬設計は仕様書として書く

報酬は学習アルゴリズムの細部よりも結果を左右する。たとえば自動搬送ロボットに

r=w_d\,\Delta d-w_c\,\mathbf{1}_{\mathrm{collision}}-w_u\,|u|^2-w_j\,\|\Delta u\|^2

を与えると、目的地への距離減少、衝突、入力エネルギー、操作の滑らかさを同時に評価できる。ただし重みwを増やせば常によいとは限らない。衝突ペナルティが大きすぎると、ロボットが一歩も動かない安全側の方策を覚えることがある。報酬の各項をログへ分解し、学習後の方策がどの項を稼いだのかを監査する。

報酬ハッキングにも注意する。ゴール判定のバグ、センサの死角、シミュレータだけに存在する接触判定を利用し、目的とは違う方法で高得点を得る場合がある。人間が読める自然言語の目的、物理量ベースの制約、独立した評価環境を組み合わせると発見しやすい。

8. 研究と製品の境界

価値関数を学ぶ手法はデータ効率が高い一方、状態・行動が離散的であることを前提にしがちである。連続制御では方策勾配、Actor-Critic、SACなどが使われる。モデルベース強化学習は、ロボットの力学モデルや学習した世界モデルを使って、実際に動かす前に候補行動を評価する。サンプル回数を減らせる反面、モデル誤差を補償するロバスト性が必要になる。

現行のロボット開発では、強化学習を安全監視・軌道生成・低レベル電流制御のすべてに適用するとは限らない。古典的なPIDやMPCを安全な基盤に置き、強化学習は把持の接触位置、経路の優先度、ゲインの調整など限定された自由度に使う構成も実用的である。VLAの解説で扱う視覚言語モデルも、最終的なトルクを直接出すのではなく、行動チャンクを安全な低レベル制御器へ渡す設計が増えている。

9. 実機へ移す前のチェックリスト

  • 状態に必要な速度・遅延・センサ信頼度が含まれているか。履歴を捨ててマルコフ性を壊していないか。
  • 報酬を項ごとにログし、成功率だけでなく衝突率、電力、操作量、停止距離を評価したか。
  • 行動の範囲、レート制限、ウォッチドッグ、非常停止を学習器と独立して実装したか。
  • シミュレータの摩擦、質量、センサ遅延、照明、通信欠損をランダム化し、実機ログで分布差を測ったか。
  • 未知環境での評価データを訓練データから分離したか。成功例だけを選んでいないか。
  • 失敗時に安全な停止状態へ遷移し、再起動後に古い行動を再送しないか。

まとめ

強化学習は、ロボットへ「正解動作」を丸暗記させる方法ではない。MDPで状態・行動・遷移・報酬を定義し、ベルマン方程式で長期の価値を一歩ずつ推定する。探索と活用のバランス、報酬ハッキング、実機の安全制約を設計へ含めて初めて、学習した方策を現場へ持ち込める。次の段階では、Q学習とDQN、方策勾配、PPO・SAC、模倣学習、Sim-to-Realを同じ枠組みで比較すると理解がつながる。

理解を確かめる
目先の報酬が最大の行動は常に最善?

将来の報酬や状態遷移が違えば最善とは限らない。割引累積報酬を、即時報酬と区別して考える。

参考資料

実装では、状態・行動・報酬の単位と周期を最初に固定する。例えば速度をm/s、角速度をrad/s、行動を正規化した指令値で保存し、制御器へ渡す直前に物理上限へ戻す。報酬の各項は距離、衝突、停止誤差、電力などに分け、重みとクリップ範囲を設定ファイルに残す。学習時の成功率だけでなく、未見の初期位置、センサ欠測、通信遅延、制限器の介入回数を評価セットで測定する。

シミュレーションから実機へ移すときは、時間刻み、摩擦、アクチュエータ遅延、飽和、観測ノイズを一覧化する。実機ログを使う場合は訓練・検証・最終評価を時間や環境単位で分け、同じ走行の隣接フレームが両方へ入らないようにする。安全監視が行動を上書きした遷移は、方策が選んだ行動と実際に実行された行動を別々に保存する。そうしないと、制限器の安全性を方策の性能と取り違える。

評価では、平均報酬だけを一つの数字として報告しない。エピソードごとの成功率、衝突や接触の回数、制約違反、停止距離、計算時間、未完了の割合を分けて示す。乱数seedを変えた分布と、未見の地形・初期姿勢・荷重での結果を併記すると、偶然の成功と方策の頑健性を区別できる。報酬を正規化した場合は、元の物理単位と変換式も残す。

オンライン学習では、更新前のモデルを固定した評価器として残し、更新後に安全指標が悪化していないか比較する。センサ欠測や通信断が起きたときに、最後の行動を保持するのか、速度をゼロへ落とすのか、古典制御へ切り替えるのかを仕様に書く。学習器の再起動後に古い指令を再送しないこと、非常停止の解除を人が確認することも、アルゴリズムの式と同じ重要度を持つ。

連続行動では、出力をそのままモーターへ送らず、速度・加速度・電流のレート制限を通す。制限後の行動をログへ保存し、方策が要求した値との差も記録する。これにより、学習が制限器に依存していないか、制限器が頻繁に介入して性能を支えていないかを確認できる。

再現性のため、環境のバージョン、乱数seed、方策の重み、報酬設定、センサ周期、終了条件を同じ実験IDへ結び付ける。結果を公開するときは、平均値だけでなく試行数、信頼区間、失敗例、評価から除外した条件を明記する。これらがそろって初めて、別の装置や環境で同じ主張を検証できる。

評価データを後から都合よく選び直さず、失敗した試行も保存する。安全に関わる閾値は学習後に都合よく変更せず、変更履歴と理由を残す。報酬の改善と現場の安全性を別々に評価することが、実装を信頼できるものにする。

試験条件、単位、停止理由を記録し、他の評価と比較できる形にする。

評価の前に合否基準を固定し、成功例だけを選ばない。

測定結果を改変せず保存する。

監査可能にする。

現在の項目 · 1 / 8 · 強化学習入門

次に読む

シリーズの次の内容へ進むQ学習とDQN入門 — 表のQ値から深層強化学習へ同じ分野を別の観点から読むマルチエージェント強化学習入門 — 相手も学習する世界でどう最適化するか同じ分野を別の観点から読むπ0(パイ・ゼロ)徹底解説 — フローマッチングはVLAの行動生成をどう変えたか