強化学習は、試行錯誤を繰り返しながら「どう行動すれば報酬が最も高くなるか」をエージェント自身が学ぶ機械学習の枠組みです。正解ラベルを与える教師あり学習と違い、環境から返る報酬という手がかりだけを頼りに、良い行動の方針を少しずつ組み立てます。囲碁のAlphaGoやロボット制御、大規模言語モデルの調整(RLHF)まで、逐次的な意思決定を扱う場面で使われてきました。この記事では、エージェント・環境・報酬という構成要素とマルコフ決定過程の考え方、Q学習と方策勾配という二系統の学習手法、探索と利用のトレードオフ、深層強化学習への発展を整理したうえで、Gymnasiumで環境を立ち上げてQ学習を書き切るところ、Stable-Baselines3でPPOを回して方策を保存するところまで手を動かします。最後に、企業が自社の課題に強化学習を持ち込むべきか見送るべきかの判断基準を、実装する側の目線でまとめます。
まとめ:強化学習の要点と企業が導入を判断する結論
強化学習の核心は、報酬という一つの信号から行動の方針を学ぶ点にあります。エージェントが環境の状態を観測して行動を選ぶと、返ってくるのは報酬と次の状態です。この繰り返しの中で、目先の報酬ではなく将来にわたる報酬の合計が高くなる方針を探ります。学習手法は大きく二つあり、各状態・行動の価値を見積もるQ学習系と、行動の方針そのものを直接改善する方策勾配系に分かれます。ここにニューラルネットワークによる関数近似を組み合わせたものが深層強化学習です。
手を動かす順序も先に示します。環境の標準はFarama財団のGymnasiumで、PyPIの配布ページでは1.3系が2026年4月に公開されており、対応Pythonは3.10以上と記載されています。まずGymnasiumのCartPoleでQ学習をテーブルのまま書き、状態が増えて表が破綻する感触を確かめる。次にStable-Baselines3でPPOを回し、既製の実装がどこまでやってくれるかを知る。この二段階を踏むと、自社の課題に必要なのがアルゴリズムの工夫なのか報酬設計なのかシミュレータなのかが切り分けられます。
導入判断の結論はこうです。強化学習は、多くの業務課題にとって最初の選択肢ではありません。学習の収束が不安定で、報酬設計や大量の試行を許すシミュレータの用意に手間がかかり、教師あり学習や数理計画法で解けるなら、そちらのほうが速く確実に答えへ届きます。強化学習が向くのは、行動が連続して次の状況を左右する逐次的な意思決定であり、良し悪しを数値の報酬で表現でき、失敗を安全に繰り返せる環境が用意できる課題に限られます。まず単純な手法で解けないかを確かめ、それでも届かない逐次意思決定の領域だけを強化学習に任せる。この順序が投資を抑える道筋になります。
強化学習とは何かと教師あり学習・教師なし学習との根本的な違い
強化学習は、機械学習の仕組みと種類を整理した記事で挙げた三本柱の一つにあたります。残る二つである教師あり学習・教師なし学習と分かれる境目は、何を手がかりに学ぶかという一点です。まず、その位置づけと基本の構成要素を押さえます。
エージェント・環境・状態・行動・報酬という五つの基本構成要素
強化学習は、五つの要素の関係で表されます。学習する主体がエージェント、その相手となる世界が環境です。エージェントは環境の状態(state)を観測し、そこで取れる行動(action)の中から一つを選びます。すると環境は次の状態へ移り、行動の良し悪しを表す報酬(reward)を返します。この観測・行動・報酬のやり取りを時間ステップごとに繰り返すのが基本の流れです。エージェントが状態に応じてどの行動を選ぶかの決め方を方策(policy)と呼び、強化学習の目的は、将来にわたって受け取る報酬の合計を高くする方策を見つけることに尽きます。迷路を抜けるロボットなら、位置が状態、進む方向が行動、ゴール到達が報酬にあたります。
この五要素は、そのままコードの構造にも現れます。Gymnasiumの標準APIでは、環境がreset()で初期状態を返し、step(action)で「次の観測・報酬・終了フラグ」を返す形に固定されています。公式の基本操作ドキュメントによれば、step()の戻り値はobservation・reward・terminated・truncated・infoの5つです。理論の用語がAPIの引数名と1対1で対応しているため、教科書の記号がそのままコードに落ちます。
教師あり学習との違いと試行錯誤で将来の報酬を最大化する枠組み
教師あり学習は、入力と正解ラベルの組を大量に与え、正解に近づくよう関数を調整します。強化学習には、この「一手ごとの正解」がありません。代わりにあるのは、行動した後にまとめて返ってくる報酬だけです。しかも報酬は遅れて届くことが多く、囲碁なら一手一手に正解はなく、勝敗という結果が最後にわかります。どの行動が勝利に効いたのかを、遅れて届く報酬から逆算して割り当てる必要があり、これを信用割当問題と呼びます。正解を教わるのではなく、自ら試して報酬から学ぶ点、そして目先ではなく将来の報酬まで見据える点が、教師あり学習との決定的な違いです。教師なし学習がラベルなしデータの構造を見つけるのに対し、強化学習は行動と結果の因果を学ぶ、という整理もできます。
この違いはデータの集め方にも及びます。教師あり学習は学習前にデータセットが確定していますが、強化学習では、エージェントが動いた結果として学習データが生まれます。方策が変われば集まるデータも変わるため、データ分布そのものが学習中に移り変わる点が、実装を難しくしている根っこです。学習が途中で崩れる現象の多くは、この自己生成データの偏りに由来します。
強化学習の理論的土台となるマルコフ決定過程と価値・方策の考え方
強化学習の問題を数式で扱うための枠組みが、マルコフ決定過程です。その土台にあるマルコフ連鎖の仕組みを押さえておくと、状態遷移と価値の考え方が理解しやすくなります。学習アルゴリズムはこの枠組みの上で、状態や行動の価値を見積もったり、方策を直接改善したりします。
マルコフ決定過程(MDP)と割引報酬による将来の収益の見積もり
マルコフ決定過程(MDP)は、状態・行動・状態遷移・報酬の四つで意思決定の問題を定義します。中心にある前提がマルコフ性で、「次の状態は現在の状態と行動だけで決まり、それ以前の履歴には依存しない」という仮定です。この仮定のおかげで、過去すべてを覚えずに現在の状態だけを見て行動を決められます。将来の報酬は、割引率(γ、0以上1未満)を掛けて足し合わせます。1ステップ先の報酬はそのまま、2ステップ先はγ倍、3ステップ先はγの2乗倍と、遠い未来ほど割り引いて評価する仕組みです。この割引報酬の合計を収益と呼び、収益を高くする方策を求めることが、強化学習の数学的な目標になります。
割引率は実装上のつまみでもあります。Stable-Baselines3のPPOドキュメントではgammaの既定値が0.99に置かれており、PyTorchのDQNチュートリアルでもGAMMAは0.99です。0.99は「およそ100ステップ先までを視野に入れる」目安にあたり、1エピソードが短い課題では小さく、長期の効果を見たい課題では大きく振ることになります。
探索と利用のトレードオフと行動価値を見積もる価値関数が担う役割
強化学習には、避けて通れない二律背反があります。探索と利用のトレードオフです。今わかっている中で最も報酬が高い行動を選び続ければ(利用)、目先の成績は安定しますが、まだ試していないより良い行動を見逃します。逆に未知の行動ばかり試せば(探索)、良い方策を見つける機会は増えても、成績は伸び悩みます。両者の釣り合いを取る代表的な工夫が、一定の確率でわざとランダムな行動を混ぜるε-greedy法です。もう一つの中心概念が価値関数で、ある状態の価値、あるいはある状態で特定の行動を取ったときの価値(行動価値、Q値)を、そこから先に得られる収益の期待値として見積もります。この価値の見積もりを手がかりに、より良い行動を選んでいくのが次章の価値ベースの手法です。
ε の与え方にも定石があります。前掲のPyTorchチュートリアルは、EPS_STARTを0.9、EPS_ENDを0.01、減衰の速さを決めるEPS_DECAYを2500として、序盤はほぼランダム、終盤はほぼ貪欲へ滑らかに移す設計を採っています。最初から探索率を絞ると局所的な方策に居着き、最後まで探索率を残すと成績が伸び切らない。この二つの失敗の間を取る調整です。
強化学習の主要な手法:価値ベース・方策ベース・Actor-Critic
強化学習のアルゴリズムは、何を学習の対象にするかで系統が分かれます。価値を見積もってから行動を決める価値ベースと、方策そのものを直接動かす方策ベース、両者を組み合わせるActor-Criticの三つです。
Q学習とDQNに代表される価値ベース系の強化学習アルゴリズム
価値ベースは、各状態・行動の価値(Q値)を見積もり、価値の高い行動を選ぶ考え方です。代表格のQ学習は、実際に行動して得た報酬と次状態の価値を使い、Q値を少しずつ現実に合わせて更新します。状態と行動が少ないうちは、Q値を表(テーブル)で持てば十分です。ところが状態が画像のように膨大になると、表では持ちきれません。そこでQ値を表ではなくニューラルネットワークで近似したのがDQN(Deep Q-Network)で、DeepMindがブロック崩しなどのゲーム画面を入力に人間並みの操作を学習させ、深層強化学習の火付け役になりました。価値ベースは、取れる行動が「上下左右」のように離散的な場面で扱いやすい一方、ロボットの関節角度のような連続的な行動には向きにくい弱点があります。
方策勾配法とPPOに代表される方策ベースの強化学習アルゴリズム
方策ベースは、価値を経由せず、方策を表すパラメータを直接調整して良い行動の確率を上げていきます。この調整を勾配法で行うのが方策勾配法です。行動を確率分布として出力できるため、車のハンドル角のような連続的な行動をそのまま扱えるのが強みです。半面、学習の分散が大きく不安定になりやすいため、更新の幅を制限して安定させる改良が重ねられました。その実務上の定番がPPO(Proximal Policy Optimization)で、一度の更新で方策が大きく振れすぎないよう制約をかけ、扱いやすさと性能の釣り合いを取ります。
PPOの原典はSchulmanらが2017年7月に投稿した論文で、要旨では「ミニバッチによる複数エポックの更新を可能にする目的関数を提案し、TRPOの利点を持ちながら実装が単純でサンプル効率にも優れる」と述べられています。方策の更新比率を一定幅に切り詰めるclipped surrogate objectiveという道具立てが要点で、OpenAI Spinning UpのPPO解説は、この切り詰めが「方策を大きく変えても得にならない」状態を作る正則化として働き、新しい方策を古い方策の近くに留める、という整理です。方策ベースの具体的なアルゴリズムであるPPOと、その派生であるDPOの実装上の違いはDPOとPPOの比較・評価・実装上の利点を解説した記事で掘り下げています。行動価値を見積もるCritic(批評役)と、方策を動かすActor(行動役)を組み合わせ、両手法の長所を取るActor-Criticも、現在の主流の一つです。
深層強化学習とニューラルネットワークを用いた価値・方策の関数近似
Q学習も方策勾配も、状態が現実的な規模になると、価値や方策を表で持つことが不可能になります。ここを埋めたのがニューラルネットワークによる関数近似で、深層強化学習と呼ばれます。
ニューラルネットワークの関数近似が広げた適用範囲と安定化の工夫
深層強化学習は、価値関数や方策をニューラルネットワークで表現します。入力が画像やセンサ値のような高次元でも、ネットワークが状態から価値や行動確率への対応を学べるため、表では扱えなかった問題に手が届くようになりました。関数近似そのものの仕組みである重み付き和と非線形変換の積み重ねはニューラルネットワークの構造と学習を実装目線で解説した記事と共通します。ただし、強化学習とニューラルネットワークの組み合わせは学習が不安定になりやすく、これを抑えるための工夫が要ります。DQNでは、過去の経験を溜めて無作為に取り出し学習に使う経験再生(experience replay)と、目標値の計算に少し古いネットワークを使うターゲットネットワークの二つで、学習の発散を防ぎました。囲碁のAlphaGoが深層強化学習と探索を組み合わせて人間のトップ棋士を破ったのは、この関数近似が広い状態空間を扱えたからです。
PyTorchのDQN実装で使う経験再生とターゲット更新の設定値
抽象的に語られがちな二つの工夫も、公式チュートリアルの設定値を見ると輪郭がはっきりします。PyTorchのDQNチュートリアルは、経験再生の保存容量を10000遷移、学習1回あたりに取り出すミニバッチを128としています。直前の経験だけで学習すると時間的に強く相関したデータで重みが引っ張られるため、溜めた中から無作為に選び直して相関を断つ、という設計です。
ターゲットネットワークの更新は、丸ごと入れ替える方式ではなくソフト更新が採られています。同チュートリアルはTAUを0.005とし、毎ステップ「新しい重みを0.5%だけ混ぜる」形でターゲット側を追従させる設計です。学習率は3e-4で、この値はStable-Baselines3のPPOの既定値とも一致します。実務では、まず容量とバッチサイズを触って学習の安定を確かめ、それでも崩れる場合にTAUや学習率へ手を伸ばす順序が扱いやすいはずです。
Gymnasiumで強化学習の環境を用意しエージェントを動かす
ここからは実際に動かします。強化学習の環境インタフェースは、OpenAI Gymを引き継いだFarama財団のGymnasiumが事実上の標準です。倒立振子のCartPole-v1を題材に、環境の立ち上げからQ学習の実装までを通します。
Gymnasiumをインストールしresetとstepの戻り値を確かめる
最初にやることは、環境が返す値を目で見ることです。reset()はobservationとinfoの2つ、step(action)はobservation・reward・terminated・truncated・infoの5つを返します。terminatedは課題としての成功や失敗、truncatedは時間切れを表し、公式ドキュメントはこの2つのいずれかが真になったらエピソードを終える扱いを示しています。旧Gymの4値APIと混同しやすい箇所なので、最初に手元で確認しておくと後が楽です。
# インストール(PyPIで2026年9月8日に確認した最新は1.3系)
# pip install gymnasium
import gymnasium as gym
env = gym.make("CartPole-v1")
observation, info = env.reset(seed=0)
print("観測の形", observation.shape, "行動の数", env.action_space.n)
total_reward = 0.0
for step in range(500):
action = env.action_space.sample() # まずはランダム方策で動かす
observation, reward, terminated, truncated, info = env.step(action)
total_reward += reward
if terminated or truncated: # 失敗か時間切れでエピソード終了
print("終了 step=", step, "報酬合計=", total_reward)
observation, info = env.reset()
total_reward = 0.0
env.close()
ランダム方策のままだと、棒は早々に倒れてエピソードが終わります。ここで出力される報酬合計を控えておくことが、後の比較の基準になります。学習を回したあとの平均報酬がこの水準から動いていないなら、アルゴリズムではなく報酬や観測の与え方を疑う番です。
Q学習をテーブルで実装しCartPoleの連続状態を離散化する
CartPoleの観測は「カート位置・カート速度・棒の角度・棒の角速度」という4つの実数で、そのままではQ値の表を作れません。そこで各次元をいくつかの区間に区切り、離散的な状態番号へ写します。この離散化こそが、テーブル型Q学習の限界を体感する場所です。区間を細かくすれば表現力は上がりますが、状態数は次元の積で膨らみ、学習に必要な試行回数が跳ね上がります。
import numpy as np
import gymnasium as gym
env = gym.make("CartPole-v1")
BINS = (6, 6, 12, 12) # 4次元をそれぞれ何分割するか
LOW = np.array([-2.4, -3.0, -0.21, -3.0])
HIGH = np.array([2.4, 3.0, 0.21, 3.0])
SCALE = 1.0 / (HIGH - LOW)
def to_index(obs):
ratio = np.clip((obs - LOW) * SCALE, 0.0, 0.999)
return tuple((ratio * np.array(BINS)).astype(int))
q_table = np.zeros(BINS + (env.action_space.n,))
alpha, gamma = 0.1, 0.99 # 学習率と割引率
scores = []
for episode in range(3000):
obs, info = env.reset(seed=episode)
state = to_index(obs)
epsilon = max(0.01, 0.9 * (0.999 ** episode)) # 探索率を徐々に絞る
done, total = False, 0.0
while not done:
if np.random.rand() < epsilon:
action = env.action_space.sample() # 探索
else:
action = int(np.argmax(q_table[state])) # 利用
obs, reward, terminated, truncated, info = env.step(action)
nxt = to_index(obs)
bootstrap = 0.0 if terminated else np.max(q_table[nxt])
target = reward + gamma * bootstrap # Q学習の更新目標
q_table[state][action] += alpha * (target - q_table[state][action])
state, total, done = nxt, total + reward, terminated or truncated
scores.append(total)
if (episode + 1) % 500 == 0:
print(episode + 1, "直近500話の平均報酬", np.mean(scores[-500:]))
env.close()
このコードは500エピソードごとに平均報酬を出力するので、ランダム方策の水準から数字が離れていくかどうかを追えます。報酬の設計に手を入れずQ値の更新だけで方策が動く、という強化学習の骨格をここで確かめる作りです。次にBINSの分割数を大きくして再実行すると、状態数が増えた分だけ同じエピソード数では学習が進みにくくなります。表を捨ててニューラルネットワークへ移る動機は、この一手間で見えてきます。
Stable-Baselines3でPPOを学習させ学習済み方策を保存する
アルゴリズムを自作するのは理解のためであって、業務ではまず既製の実装を使います。PyTorch実装の定番がStable-Baselines3で、PyPIの配布ページでは2.9系が2026年6月に公開され、対応Pythonは3.10以上との記載です。PPO・A2C・DQN・SACなどが同じインタフェースで扱えるため、アルゴリズムの差し替えが1行で済みます。
PPOの既定ハイパーパラメータと学習で先に調整する値の見分け方
PPOの主要な既定値は公式ドキュメントに明記されています。学習率3e-4、1回の収集で集める遷移数n_stepsが2048、ミニバッチbatch_sizeが64、同じデータを何周させるかのn_epochsが10、割引率gammaが0.99、GAEのgae_lambdaが0.95、更新幅の切り詰めclip_rangeが0.2という並びです。CartPole程度なら、この既定のままで学習が進みます。
# pip install stable-baselines3
from stable_baselines3 import PPO
from stable_baselines3.common.env_util import make_vec_env
from stable_baselines3.common.evaluation import evaluate_policy
vec_env = make_vec_env("CartPole-v1", n_envs=4) # 4本の環境を並列で回す
model = PPO(
"MlpPolicy",
vec_env,
verbose=1,
n_steps=2048, # 既定値。1更新あたりの収集遷移数
batch_size=64, # 既定値
gamma=0.99, # 既定値。長期の効果を見たいなら上げる
clip_range=0.2, # 既定値。学習が暴れるなら下げる
tensorboard_log="runs",
)
model.learn(total_timesteps=100_000)
model.save("ppo_cartpole")
mean_reward, std_reward = evaluate_policy(model, vec_env, n_eval_episodes=20)
print("平均報酬", mean_reward, "標準偏差", std_reward)
# 学習曲線の確認
# tensorboard --logdir runs
触る順序には目安があります。学習がまったく進まないなら、まず報酬の与え方と観測の正規化を疑います。次に、収集量が足りているかという観点でn_stepsを増やす。それでも成績が上下に暴れる場合にclip_rangeを0.1へ絞り、学習率を1e-4付近まで下げます。n_epochsを大きくすると同じデータを使い回して効率は上がりますが、方策が古いデータに引っ張られて崩れやすくなります。既定値から遠ざけるほど、なぜ動いたのかの説明が難しくなる点は覚えておきたいところです。
学習がうまく進まないときに報酬曲線とログから原因を切り分ける
強化学習のデバッグは、損失を眺めても答えが出ません。見るべきはエピソード報酬の推移です。Stable-Baselines3はverbose=1でep_rew_mean(平均エピソード報酬)とep_len_mean(平均エピソード長)を出力するので、この2つが右肩上がりかどうかを最初に確かめます。報酬が横ばいのまま動かない場合、原因は次の三つのどれかに落ち着くことが多いです。
一つ目は、報酬が疎すぎて学習の手がかりが届いていない場合。ゴール到達時だけ報酬を与える設計では、偶然ゴールするまで何も学べません。中間目標に小さな報酬を置く段階的な設計へ変えます。二つ目は、報酬に抜け道がある場合。エージェントが設計者の意図と無関係な行動で報酬を稼いでいないか、実際の行動を可視化して確かめます。三つ目は、観測にスケールの偏りがある場合。桁が数千の特徴量と0.1程度の特徴量が混在していると勾配が偏るため、正規化をかけます。ep_rew_meanが伸びているのにep_len_meanが伸びない、といった食い違いも、報酬設計を見直す合図になります。
企業が自社の課題に強化学習を導入する際の採用判断と見送る場面
ここからは技術解説から一歩進め、自社の課題に強化学習を持ち込むべきかの判断軸を示します。結論は明快で、強化学習は「まず試す手法」ではなく「他で解けないと確かめてから使う手法」です。順序を取り違えると、成果に見合わない投資になります。
教師あり学習や数理計画で足りる課題に強化学習を持ち込まない基準
需要予測や画像の判定のように、入力と正解の組がすでに手元にある課題は、教師あり学習のほうが速く確実です。配送ルートや人員配置のように、条件と制約が数式で書ける課題なら、数理計画をPythonで解く手順を解説した記事で扱った線形計画・整数計画のほうが答えの質と再現性で上回ります。強化学習を持ち込むべきでない典型は、この二つで解ける課題に、あえて試行錯誤の枠組みを載せてしまう場面です。強化学習は学習の収束が不安定で、報酬の設計を少し誤ると意図しない抜け道を学び、シミュレータや大量の試行を用意する初期コストもかさみます。過去データから答えを教えられる、あるいは制約を明示して計算できる。このどちらかが成り立つなら、強化学習は過剰です。
強化学習が適する逐次的意思決定と報酬設計・シミュレータの要件
強化学習が力を発揮するのは、次の三条件がそろう課題です。第一に、一手が次の状況を変え、その連鎖の末に成果が決まる逐次的な意思決定であること。ロボット制御、在庫の発注、動的な価格の調整、広告配信の順序などが当てはまります。第二に、行動の良し悪しを数値の報酬として表現できること。ここが曖昧だと、エージェントは設計者の意図と違う行動を学びます。第三に、失敗を安全かつ安価に繰り返せる環境、多くはシミュレータが用意できること。実機のロボットを何万回も壊すわけにはいかないため、まず仮想環境で学び、現実へ移す段取りが要ります。
試行回数の桁感も、着手前に押さえておく材料です。前掲のCartPoleは4次元の観測と2つの行動しかない題材ですが、それでも前章のPPOには10万ステップという試行量を指定しました。自社の業務がこれより複雑な状態と行動を持つなら、必要な試行はさらに桁が上がります。実機や本番システムでその回数を回せないなら、シミュレータの構築費が本体より重くなる。この見積もりを先に置くと、PoCの入口で立ち止まる判断がしやすくなります。自社の課題がこの逐次的意思決定に当たるのか、教師あり学習や数理計画で足りるのかの切り分けに迷う段階では、機械学習の受託開発を手がける一創のAIエンジン開発にご相談ください。データの性質と報酬設計の可否から、強化学習が見合う範囲と、より単純な手法で足りる範囲まで含めて設計します。
RLHFとしてLLMの調整にも使われる強化学習と応用の広がり
強化学習の用途は、ゲームやロボットにとどまりません。大規模言語モデルの調整に使われるRLHF(人間のフィードバックによる強化学習)は、その代表例です。人間が「どちらの回答が好ましいか」を比較評価し、その好みを報酬モデルとして学習させ、方策勾配系のPPOなどでモデルの出力を人の意図へ寄せていきます。ChatGPTのような対話モデルが単なる文の続きではなく役立つ応答を返すようになった背景にあるのが、この仕組みです。強化学習が大規模言語モデルの実用化にどう寄与し、企業がその導入をどう判断するかはLLMの仕組みと企業導入の判断基準を解説した記事で扱っています。報酬という一つの信号から方針を学ぶという同じ原理が、ゲームの操作から言語モデルの調整まで、幅広い逐次的意思決定に通じています。
強化学習の仕組み・アルゴリズム・企業導入に関するよくある質問
強化学習の学習と導入でよく検索される疑問に、実装目線で簡潔に答えます。
強化学習と教師あり学習・ディープラーニングの違いは何ですか?
強化学習は、正解ラベルではなく行動後に返る報酬を手がかりに、将来の報酬が高くなる方針を試行錯誤で学ぶ枠組みです。入力と正解の組から学ぶ教師あり学習とは、学習の手がかりが異なります。ディープラーニングは学習の道具であるニューラルネットワークを深く積む技術で、強化学習と対立する概念ではありません。両者を組み合わせたものが深層強化学習です。
強化学習ではどんなアルゴリズムが使われますか?
各状態・行動の価値を見積もる価値ベースのQ学習やDQN、方策そのものを直接改善する方策ベースの方策勾配法やPPO、両者を組み合わせるActor-Criticが代表的です。取れる行動が離散的なら価値ベース、連続的ならば方策ベースが扱いやすい、という使い分けが目安になります。
Q学習と深層強化学習(DQN)はどう違いますか?
Q学習は各状態・行動の価値を表(テーブル)で持って更新する手法です。状態が画像のように膨大だと表では扱えません。この価値をニューラルネットワークで近似し、高次元の入力を扱えるようにしたのがDQNで、深層強化学習の代表例です。両者は同じQ学習の考え方を土台に、価値の持ち方が表かネットワークかで分かれます。
強化学習を試すにはどのライブラリから始めるとよいですか?
環境側はGymnasium、アルゴリズム側はStable-Baselines3という組み合わせが入口として扱いやすいです。PyPIで2026年9月8日に確認した時点で、Gymnasiumは1.3系、Stable-Baselines3は2.9系が公開されており、どちらもPython 3.10以上に対応しています。まずCartPole-v1でテーブル型のQ学習を書き、次に同じ環境をPPOへ差し替えると、自作と既製実装の差が数字で見えます。
強化学習の学習にはどれくらいの試行回数が必要ですか?
課題の複雑さで桁が変わります。観測4次元・行動2つのCartPole-v1でも、本記事のPPOの例で指定した試行量は10万ステップです。状態や行動が増えれば必要量はさらに膨らむため、実機で回せる回数から逆算し、足りなければシミュレータを用意する前提で見積もります。この試行回数を賄えるかどうかが、着手可否の分かれ目になります。
強化学習はどんな場面で企業に向いていますか?
一手が次の状況を左右する逐次的な意思決定で、成果を数値の報酬で表現でき、失敗を安全に繰り返せるシミュレータが用意できる課題に向きます。ロボット制御や在庫発注、動的な価格の調整が典型です。逆に、正解データがある課題は教師あり学習、制約を数式化できる課題は数理計画法のほうが速く確実です。
RLHFとは何で、強化学習とどう関係しますか?
RLHFは人間のフィードバックによる強化学習で、大規模言語モデルの調整に使われます。人間が回答の好ましさを比較評価し、その好みを報酬として学習させ、PPOなどでモデルの出力を人の意図へ寄せます。報酬から方針を学ぶという強化学習の原理を、言語モデルの応答改善に応用したものです。3段階のパイプラインと採用判断はRLHFとは?人間のフィードバックで言語モデルを調整する3段階の仕組みと採用判断で解説しています。
関連記事
- 機械学習とは?仕組み・種類・業務での使いどころを解説:強化学習を含む機械学習の三本柱を先に俯瞰したい方へ。
- マルコフ連鎖とは?仕組み・遷移行列・定常分布とAI実装での使いどころ:マルコフ決定過程の土台にある状態遷移の数学を押さえたい方へ。
- ニューラルネットワークとは?仕組み・種類・PyTorch実装まで解説:深層強化学習の関数近似を担うネットワーク構造を実装から知りたい方へ。
- DPOとPPOの違いとは?RLHFの選好学習を仕組み・性能・実装で比較:方策ベースの代表であるPPOと、その派生を実装面で比べたい方へ。
- 数理計画とは?3要素・アルゴリズムと機械学習との違いをPythonで解説:強化学習を見送り数理計画で解く場合の道具立てを確かめたい方へ。
- RLHFとは?人間のフィードバックで言語モデルを調整する3段階の仕組み:強化学習が大規模言語モデルの調整にどう使われるかを深掘りしたい方へ。