機械学習3分類のうち、概要しか触れていなかった強化学習の中身。Q学習とSARSAを学びます。
強化学習ってAlphaGoとかゲームAIで使われてるやつだよね?
中身ってどうなってるの?
強化学習はね、『エージェント』が『環境』の中で行動して、『報酬』を受け取りながら最適な方策を学んでいく枠組みなのよ。 中心になる概念がQ値とQ学習ね。
Q学習(Q-learning)は、『状態sで行動aを取ったときの累積報酬の期待値』をQ(s,a)として学習する手法ですね。 試行錯誤を通じてQ値を更新していきます。
SARSAとは何が違うんですかぁ?
両者の違いは更新方法ですね。 Q学習=オフポリシー(理想の最適行動を仮定)、SARSA=オンポリシー(実際にとった行動から学ぶ)。 Q学習は積極的に、SARSAは保守的に学ぶ傾向があります。
オンポリシーとオフポリシーって…?
オンポリシー(SARSA)は、自分の現在のポリシーから次の行動も予測して学ぶということね。 オフポリシー(Q学習)は、理論的に最適な行動を仮定して学ぶから、より探索的になるのよ。
探索と活用のトレードオフをε-greedy法で扱うのも重要。 確率εでランダム行動(探索)、1-εで現在最適行動(活用)。
深層強化学習ってのもあるんですかぁ?
あるわよ。 DQN(Deep Q-Network)はQ値をニューラルネットで近似する手法なの。 これがAtariのゲームをクリアして話題になったのよ。 AlphaGoは深層強化学習とモンテカルロ木探索を組み合わせた発展形ね。
実用例は?
ロボット制御、自動運転の経路計画、広告配信最適化、レコメンド、金融取引(高頻度取引)、ゲームAI、化学反応の最適化など多岐にわたる。 ただし学習に大量試行が必要で、教師あり学習より導入コスト高。
DS検定★では『Q学習=オフポリシー』『SARSA=オンポリシー』『DQN=深層強化学習』『ε-greedy=探索と活用』『AlphaGo=深層強化学習の代表』を押さえて。
# Q学習の基本ループ (擬似コード)
for episode in range(num_episodes):
state = env.reset()
while not done:
# ε-greedy で行動選択
if random.random() < epsilon:
action = env.action_space.sample() # 探索
else:
action = np.argmax(Q[state]) # 活用
next_state, reward, done = env.step(action)
# Q値の更新 (TD学習)
Q[state][action] += alpha * (
reward + gamma * np.max(Q[next_state]) - Q[state][action]
)
state = next_state
確認クイズ
Q学習(Q-learning)とSARSAの違いとして正しいのはどれか。
- Q学習はオンポリシー、SARSAはオフポリシー
- Q学習はオフポリシー(最適行動仮定)、SARSAはオンポリシー(実行動ベース)
- 両者は同じ手法
- SARSAはニューラルネット必須、Q学習は不要
こたえを見る
正解: 2. Q学習はオフポリシー(最適行動仮定)、SARSAはオンポリシー(実行動ベース)
Q学習はオフポリシー、SARSAはオンポリシー。 Q学習は更新時に理論的最適行動を仮定するため『オフポリシー(現方策と異なる方策で学習)』、SARSAは実際にとった次の行動から学ぶため『オンポリシー(現方策で学習)』です。