強化学習の心臓部!行動価値関数(Q関数)を分かりやすく解説

AI(人工知能)の学習方法の一つである強化学習という分野で、非常に重要な役割を担う「行動価値関数(こうどうかちかんすう)」という言葉を聞いたことはありますか?

この行動価値関数は、AIが最適な行動を自ら学習していく上で、まさに羅針盤のような存在です。この記事では、AI初心者の方でも理解できるよう、行動価値関数の基本から、その仕組み、活用例までを丁寧に解説していきます。

前提知識:強化学習のキホン

行動価値関数を理解するために、まずは「強化学習」の基本的な考え方を押さえておきましょう。

強化学習とは、AI(専門用語でエージェントと呼びます)が、ある環境の中で試行錯誤を繰り返しながら、より良い結果(報酬)を得るための行動を学習していく手法です。 例えば、犬に「お手」を教えるとき、上手にできたらおやつ(報酬)をあげて褒めますよね。これを繰り返すことで、犬は「お手」という行動が良いことだと学習します。強化学習の考え方はこれとよく似ています。

用語説明迷路の例
エージェント学習し、行動する主体。AIのこと。迷路を解くロボット
環境エージェントが置かれている状況全体。迷路そのもの
状態 (State)エージェントがいる特定の状況。ロボットの現在位置(座標)
行動 (Action)エージェントがその状態で行う選択。上下左右に移動する
報酬 (Reward)行動の結果として環境から得られるフィードバック。良い行動にはプラスの報酬、悪い行動にはマイナスの報酬(罰)が与えられる。ゴールにたどり着く(+100点)、壁にぶつかる(-10点)など

強化学習の目的は、エージェントが将来にわたって得られる報酬の合計(累積報酬)を最大化するような行動のルール(方策といいます)を見つけ出すことです。

行動価値関数とは?

それでは本題の「行動価値関数」について説明します。

行動価値関数とは、「ある状態(State)で、ある行動(Action)をとった場合に、将来的に得られると期待される報酬の合計値」を計算する関数のことです。 この関数は、しばしばQ関数 (Q-function) と呼ばれ、その計算結果はQ値 (Q-value) と呼ばれます。

迷路の例で考えてみましょう。ロボットがある地点(状態)にいるとします。そこから「上に進む」「下に進む」「右に進む」「左に進む」という4つの行動が選択できるとします。行動価値関数は、これら4つそれぞれの行動に対して「その行動をとったら、将来ゴールまでにどれくらい良い結果が待っているか」を点数(Q値)で示してくれます。

  • 「右に進む」のQ値:80点(ゴールにかなり近い)
  • 「上に進む」のQ値:30点(少しだけゴールに近づく)
  • 「左に進む」のQ値:-50点(行き止まり)

エージェントは、このQ値が最も高くなる行動を選び続けることで、最終的に最大の報酬を得ることを目指します。 つまり、行動価値関数は、どの行動が「良い手」なのかを判断するための、具体的な指標となるのです。

「状態価値関数」との違い

行動価値関数とよく似た概念に「状態価値関数」があります。この2つは密接に関連していますが、評価する対象が異なります。

  • 状態価値関数 (V関数): 「ある状態」そのものの良し悪しを評価します。その状態からスタートした場合に将来得られる報酬の期待値を表します。
  • 行動価値関数 (Q関数): 「ある状態」で「ある行動」をとることの良し悪しを評価します。

状態価値関数が「どの場所が良いか」を評価するのに対し、行動価値関数は「その場所で、どの方向に進むのが良いか」という、より具体的な行動レベルでの価値を評価します。

状態価値関数 (V関数)行動価値関数 (Q関数)
評価対象状態 (State)状態 (State) と 行動 (Action) のペア
意味「この状態はどれくらい良いか?」「この状態でこの行動をすると、どれくらい良いか?」
迷路の例「ゴールに近い場所」は価値が高い。「ゴールに近い場所で、さらにゴールに近づく行動」は価値が高い。

どうやって価値を学ぶの? Q学習入門

では、AIはどうやってこの「行動価値(Q値)」を学習するのでしょうか。その代表的なアルゴリズムがQ学習 (Q-learning) です。

Q学習は、TD学習(Temporal-Difference Learning、時間差分学習)と呼ばれる手法の一種です。 最初はデタラメな値からスタートしますが、エージェントが実際に行動し、報酬を得るという経験を繰り返す中で、Q値を少しずつ更新していきます。

Q値の更新は、以下の考え方に基づいています。

新しいQ値 = 現在のQ値 + 学習率 × ( 実際に得た報酬 + 割引率 × 次の状態で最も高いQ値 – 現在のQ値 )

少し複雑に見えますが、要は「実際に行動してみて得られた結果(報酬と、次の状態の価値)と、事前の予測(現在のQ値)がどれだけ違ったか」という誤差を使って、予測を現実に近づけるように修正していく作業です。この試行錯誤を何度も何度も繰り返すことで、Q値はだんだん正確な値に収束していきます。

以下に、Q学習の雰囲気を掴むための簡単なPythonコードの例を示します。

# Qテーブルを初期化(すべてのQ値を0で始める)
# 例: Q[状態][行動] = 0
# 学習率 (alpha) と割引率 (gamma) を設定
alpha = 0.1
gamma = 0.9
# エピソード(試行)を繰り返す
for episode in range(1000): # 状態を初期化 state = ... while not done: # ゴールするまで # ε-greedy法などで行動を選択 action = ... # 行動を実行し、次の状態と報酬を得る next_state, reward, done, _ = env.step(action) # 次の状態で最も高いQ値を取得 max_next_q_value = max(Q[next_state]) # 現在のQ値を取得 current_q_value = Q[state][action] # 新しいQ値を計算 new_q_value = current_q_value + alpha * (reward + gamma * max_next_q_value - current_q_value) # Qテーブルを更新 Q[state][action] = new_q_value # 状態を更新 state = next_state 

行動価値関数の活用事例

行動価値関数を学習する強化学習は、すでに私たちの身の回りの様々な分野で活用されています。

  • ゲームAI: 2016年に世界のトップ棋士に勝利した囲碁AI「AlphaGo」は、強化学習の技術が使われた代表例です。 盤面の「状態」を評価し、勝利という「報酬」を最大化する「行動(次の一手)」を学習しました。他にも、ビデオゲームのキャラクター制御などにも利用されています。
  • ロボット制御: 工場の組み立てラインで動く産業用ロボットや、お掃除ロボットが、障害物を避けながら効率的に作業するための経路計画などに活用されています。
  • 最適化問題: 広告配信システムにおいて、どのユーザーにどの広告を表示すればクリック率(報酬)が最大になるか、といった問題や、交通信号を制御して渋滞を緩和する問題などにも応用されています。

まとめ

行動価値関数は、強化学習においてAIが「今、何をすべきか」を判断するための非常に重要な指標です。

ある状態における各行動の価値を数値化し、それを最大化する行動を選ぶことで、AIは試行錯誤の中から最適な戦略を自律的に学習していきます。この仕組みを理解することは、近年の目覚ましいAI技術の進化を理解する上で、大きな助けとなるでしょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です