REINFORCEMENT LEARNING / LESSON 19

試しながら学ぶ強化学習

ROBORONが道を選び、結果のごほうびを手掛かりに次の行動を変える。

図から学ぶ
試しながら学ぶ強化学習を表すキャラクターと学習内容のイラスト
TODAY'S GOAL

この回でつかむこと

状態・行動・報酬と、探索をする理由を具体例で説明できる。

ことばの窓
01 / SEE THE IDEA

試しながら学ぶ強化学習って何だろう?

強化学習は、行動する主体(エージェント)が環境の状態を見て行動を選び、得た報酬を手掛かりに行動の方針を学ぶ方法です。ここでは4マスの小さな道を使います。正解の行動を毎回教える教師あり学習とは学び方が違います。

あおい

ROBORONは、最初からゴールまでの道を全部知っているの?

AI先生

いい質問だね。強化学習では、行動して得られた結果を手掛かりに、次はどちらへ進むか学ぶんだよ。最初は試すことも大切なんだ。

はる

状態・行動・報酬を分けて記録すると、何を学習しているか確認できますね。

行動の結果から学ぶ。位置を見て左右を選ぶ。ゴールで報酬+1。右へ進む価値を更新。
図19 行動の結果から学ぶ。位置を見て左右を選ぶ。ゴールで報酬+1。右へ進む価値を更新。

ROBORON ピコン! 右へ進んでごほうびを得た経験を次に生かすよ。

図を読むと

迷路で行動を選び、報酬から次の選び方を少しずつ変える。 強化学習は、行動する主体(エージェント)が環境の状態を見て行動を選び、得た報酬を手掛かりに行動の方針を学ぶ方法です。ここでは4マスの小さな道を使います。正解の行動を毎回教える教師あり学習とは学び方が違います。

小さなコードで確かめるまず結果を予想しよう
import numpy as np
positions = np.arange(4)
rewards = np.array([0, 0, 0, 1])
print('位置:', positions)
print('ゴールの報酬:', rewards[-1])
実行結果位置: [0 1 2 3]、ゴールの報酬: 1

なぜそうなる? ROBORONは位置0から出発します。位置3がゴールです。途中の報酬は0で、最後だけ1を受け取ります。

02 / GO ONE STEP FURTHER

行動の価値を少しずつ更新する

Q値は、ある位置である行動を選ぶ良さの見積もりです。ゴールへ近づく行動が高く評価されるか、Colabで試します。

q = np.zeros((4, 2))  # 各位置で、左・右の2行動
state, action, reward, next_state = 2, 1, 1, 3
q[state, action] += 0.5 * (reward + 0.9 * q[next_state].max() - q[state, action])
print(q[2])
実行結果[0. 0.5]

ここに注目 位置2で右を選び、ゴールへ着いた経験から、右のQ値が0から0.5へ上がります。左の値はまだ0です。

03 / YOUR TURN

予想して、理由を話そう

答えを選んで、説明を確かめよう。外れても発見が一つ増えるよ。

まだ道を知らないROBORONに必要なのは?

答えを選ぶと理由が表示されます。

04 / TRY ON COLAB

Colabで試してみよう

コードの実行はColaboratoryの実行環境で行います。まずノートブックを保存し、Colabで「ファイル → ノートブックをアップロード」から開いてください。上から順に実行し、最後に値を変えてみましょう。

保存ボタンを押しても画面は切り替わりません。通常はブラウザの「ダウンロード」フォルダに .ipynb が保存されます。見つからない場合はダウンロード履歴を確認してください。Colabの実習は小さな例から始められます。

COFFEE BREAK

身近な技術とつなげてみよう

AI先生

AI先生:ゲームの迷路だけでなく、ロボット制御にもつながる考え方だよ。ただし現実のロボットは安全に試せる範囲を決めてから学習させるんだ。

KEY TERMS

この回の重要な用語

本文で出会った言葉を、ここで意味と一緒に振り返ろう。上の「ことばの窓」からも説明を開けるよ。

強化学習
行動の結果として得られる報酬を手掛かりに、行動の方針を学ぶ方法です。
エージェント
環境の中で行動を選ぶ主体です。この例ではROBORONです。
状態
行動を選ぶときに見えている環境の情報です。この例では現在位置です。
報酬
行動の結果に対する数値の手掛かりです。目的に合う行動を学ぶために使います。
Q値
ある状態である行動を選ぶ価値の見積もりです。
Q学習
Q-learning。行動して得た報酬から、各状態と行動のQ値を更新する強化学習の方法です。
探索
今わかっている最善だけに頼らず、別の行動も試すことです。