Reinforcement Learning
強化学習(RL)は、長期的な報酬を最大化するため、試行錯誤を通じてエージェントを学習させます。RLのループ、Q学習、アルゴリズムの種類、用途を解説します。
強化学習(RL)は機械学習(ML)の一分野です。エージェントが環境内で行動を試し、報酬やペナルティを受け取りながら一連の意思決定を学習し、時間の経過とともにできるだけ多くの報酬を得ることを目指します。エージェントに正しい行動を教える人はいません。エージェントはどの行動が成果につながるかを自ら見つけます。チェスで10手後に駒得につながる一手のように、成果が何手も後に現れる行動も学習します。そのため、強化学習はゲームのプレイ、ロボットの操縦、人々が好む回答やプログラムで検証できる回答を生成するよう大規模言語モデル(LLM)を学習させるなど、逐次的な制御問題における標準的な手法です。現代の強化学習分野を定義する教科書を執筆したRichard SuttonとAndrew Bartoは、強化学習の基礎的な研究により2024年のACM A.M.チューリング賞を受賞しました。
強化学習の仕組み#
強化学習の問題は、マルコフ決定過程(MDP)として形式化されます。各時刻にエージェントは現在の状態を観測し、行動空間から行動を選択して、報酬と次の状態を受け取ります。目的はリターン、つまり将来の報酬の合計です。割引率を0から1の間に設定することで、遠い将来の報酬の重みを直近の報酬より小さくします。エージェントがタスクについて受け取る説明は報酬だけなので、報酬の設計が不適切だと報酬ハッキングを招き、エージェントが設計者の意図どおりに動かず、高いスコアだけを得る可能性があります。
- エージェント:ロボットのコントローラーやゲームをプレイするプログラムなど、学習と意思決定を行う主体です。
- 環境:物理シミュレーターから実際の倉庫の床まで、エージェントがやり取りするすべての対象です。
- 状態:関節角度、盤面の配置、カメラフレームから抽出した特徴量など、エージェントが行動を決めるための情報です。
- 行動:左か右かのような離散的な選択や、操舵角のような連続的な選択など、エージェントが取れる選択肢です。
- 報酬:各行動の後に環境が返す数値です。進歩には正の値、ミスや時間の浪費には負の値が与えられます。
- 方策:各状態で行動を選ぶためのエージェントのルールであり、学習によって改善される対象です。
- 価値関数:ある状態、またはある状態で特定の行動を取った場合に期待されるリターンです。エージェントはこれを使って、行動の長期的な結果を評価します。
エージェントは自ら試した行動からしか学べないため、価値が不確かな行動を試す「探索」と、現時点で最善と思われる行動を選ぶ「活用」のバランスを取る必要があります。一般的なルールはε-greedyです。小さな確率でランダムに行動し、それ以外の場合は貪欲に行動します。このNumPyの例では、すべての状態と行動のペアの価値を学習する古典的なアルゴリズムであるQ-learningを使って、エージェントに6マスの通路を進み、奥の端にある報酬へ到達する方法を学習させます。
import numpy as np
rng = np.random.default_rng(0)
# 6マスの通路:マス0から開始し、マス5に到達すると報酬+1。行動0=左、1=右
n_states, goal = 6, 5
Q = np.zeros((n_states, 2)) # 各(状態、行動)の推定リターン
alpha, gamma, epsilon = 0.5, 0.9, 0.2 # 学習率、割引率、探索率
for episode in range(200):
state = 0
while state != goal:
# 確率epsilonで探索し、それ以外の場合は既知の中で最善の行動を活用する
action = rng.integers(2) if rng.random() < epsilon else Q[state].argmax()
next_state = max(0, state - 1) if action == 0 else state + 1
reward = 1.0 if next_state == goal else 0.0
# Q-learningの更新:報酬と、次の状態の割引後の最善値に近づくように更新する
Q[state, action] += alpha * (reward + gamma * Q[next_state].max() - Q[state, action])
state = next_state
print("Greedy policy:", ["left" if a == 0 else "right" for a in Q[:goal].argmax(axis=1)])
print("Value of moving right:", Q[:goal, 1].round(2))各マスでrightの方策と[0.66 0.73 0.81 0.9 1. ]の値を出力します。報酬が与えられるのは最後のマスだけですが、更新によってその報酬が後ろ向きに伝播します。ゴールから1ステップ離れるごとに価値が次のマスの0.9倍となり、割引率がそのまま反映されています。
強化学習アルゴリズムの系統#
上記のようなテーブル方式は各状態の価値を保存しますが、状態がカメラ画像や連続的な関節角度になると機能しなくなります。深層強化学習では、テーブルをニューラルネットワークに置き換え、類似する状態間で汎化します。主なアルゴリズムの系統は、そのネットワークが何を学習するかによって異なります。
モデルフリーのエージェントは実環境またはシミュレーションでの経験のみから学習します。一方、モデルベースのエージェントは環境がどのように応答するかを予測する世界モデルを学習し、モデル予測制御やモンテカルロ木探索のように、そのモデルを使って計画を立てます。各更新による方策の変化幅を制限する近接方策最適化(PPO)は、ロボティクスや言語モデルの学習における標準的な方策勾配法になりました。グループ相対方策最適化(GRPO)は、学習済みのクリティックを取り除くことで、LLMの推論にこの手法を適用しました。OpenAIのSpinning Upでは、これらのアルゴリズムをリファレンス実装とともに解説しています。
実際のアプリケーション#
- ゲーム: DeepMindのAlphaGoは、深層ニューラルネットワークと木探索、強化学習による自己対戦を組み合わせ、2016年3月に囲碁の世界チャンピオンである李世乭氏を4勝1敗で破りました。
- ロボティクス: 四足歩行ロボットやヒューマノイドの歩行制御器は、数千台のロボットを並列シミュレーションして強化学習で訓練します。方策を実機に適用できるよう、摩擦、質量、地形をランダム化することもよくあります。
- 言語モデルのアラインメント: チャットアシスタントは、人間の選好比較データで訓練した報酬モデルを基準に、強化学習でファインチューニングされます。推論モデルは、数学の解答を検証したりユニットテストを実行したりする自動チェッカーを用いて強化学習で訓練されます。
- レコメンデーションシステム: 一連の推薦を意思決定として扱うことで、システムは次のクリックだけでなく、長期的なエンゲージメントを最適化できます。
多くのロボット方策はシミュレーションで訓練されます。エージェントには数百万回の試行が必要な場合があり、実機は故障する可能性があるためです。NVIDIA Isaac Labなどのフレームワークは、1台のGPU上で数千の環境を実行します。また、ドメインランダム化によって、シミュレーションと実際の物理環境との隔たりを縮めます。カメラベースの強化学習システムは通常、生のピクセルではなく、知覚モデルの出力に基づいて動作します。ロボット上で動作するUltralytics YOLO26は、ROS統合を通じて、各カメラフレーム内の物体クラスを軽量なメッセージとして配信します。深度カメラを使う場合は、各物体までの距離も配信され、方策はそれらを状態として利用できます。
強化学習と関連するパラダイムの比較#
- 教師あり学習: 各訓練例には正解が付いています。強化学習エージェントが得るのは、多くの場合遅れて与えられるスカラー報酬のみで、次にどのデータを見るかはエージェント自身の行動によって決まります。
- 教師なし学習: モデルはラベルのないデータから、クラスタなどの構造を見つけます。取るべき行動も、最大化する報酬もありません。
- マルコフ決定過程: MDPは問題の定式化であり、強化学習は状態遷移確率を与えられずに経験から問題を解く手法の総称です。
- 模倣学習: エージェントは、最も単純には行動クローニングを通じて、エキスパートのデモンストレーションを模倣しますが、教師を超えることは容易ではありません。一方、RLでは、デモンストレーターが示していない戦略を発見できます。この2つは組み合わせて使われることがよくあります。AlphaGoはまず人間の対局から得た3,000万局面を学習し、その後セルフプレイによって性能を高めました。後継のAlphaGo Zeroは人間のデータを完全に省き、AlphaGoに100勝0敗で勝利しました。










