答えのない世界で学ぶ:クラスタリングと強化学習

「AIの基礎:探索から機械学習まで」のレッスン 11 / 15・約6分

正解ラベルのないデータから構造を見つける教師なし学習(k-means)と、試行錯誤と報酬で上達する強化学習(Q学習)を学ぶレッスンです。

このレッスンで学ぶこと

  • 正解のないデータから、まとまりだけを見つける
  • 点数だけを頼りに、動き方を覚えさせる

レッスンの内容

正解の札がないデータ

ネット通販には何百万人分の購入履歴がありますが、「この人はどんな客か」という正解の札はありません。

札のないデータから、似たもの同士の集まりを見つけ出す方法を教師なし学習と呼びます。

勝手にグループ分け

18個の点に3つの中心をランダムに置きました。「次の一手」を何度か押して、点の色と中心の位置の変化を見てみましょう。

2つの手を繰り返すだけ

点を一番近い中心の色に塗り、中心を同じ色の点の真ん中である重心へ動かす。この繰り返しがk-means法です。

中心が動かなくなったら完成です。

いくつに分けるかは人が決める

k-means法では、グループ数 $k$ を人が先に決めます。データに4つの集まりがあっても、$k=3$ なら3つに分けます。

中心の初期位置によって、分け方が変わることもあります。

1万曲の音楽を、ジャンルの札なしで似た曲どうしに分けたい。k-means法を使う前に、人が決めておくものはどれ?

問題:1万曲の音楽をジャンルの札なしで似た曲同士に分けたいとき、k-means法を使う前に人が決めるものはどれ?

  1. 分けるグループの数(正解)
  2. 1曲ずつの正しいジャンル
  3. 中心を置く正しい位置

解説:k-means法で人が決めるのはグループ数だけです。ジャンルの札は不要で、中心の初期位置もランダムで構いません。塗る・動かすの繰り返しで自然と決まります。

手順の代わりに点数を返す

k-means法は似たものを分けられますが、迷路の進路までは教えてくれません。

迷路の抜け方を学ばせるときは、手順ではなく結果の点数だけを返します。これが強化学習です。

ごほうびで覚える

5×5の迷路で、ネズミはチーズの場所を知りません。何度か試させて、手数の棒がどう縮むか見てみましょう。

見る・動く・点数をもらう

学ぶネズミをエージェントと呼びます。いるマスで動きを選ぶと、点数の報酬が届きます。

チーズは+1、穴は−1、1歩で−0.02。遠回りするほど減点です。

ロボット掃除機に、強化学習で部屋の掃除を覚えさせます。人が必ず用意するものはどれ?

問題:ロボット掃除機に強化学習で掃除を覚えさせるとき、人が必ず用意するものはどれ?

  1. ゴミを吸うと増える点数(正解)
  2. 部屋ごとの正しい走り順
  3. 家具の位置を描いた地図

解説:強化学習で人が渡すのは結果の点数だけです。走り順は、点数が増える動きを試す中でロボット自身が見つけます。

ネズミの頭の中は100個の数

ネズミは25マスそれぞれの上下左右4方向に対して、合計100個の数を持っています。

進むと将来どれだけ得するかの見積もりで、Q値と呼びます。この表を育てる方法がQ学習です。

点数は手前へ染み出す

1歩動くたびにQ値を更新します。目指す値は、報酬に移動先の一番高いQ値を足したものです。

そのため、チーズの+1が少しずつ目減りしながら1マスずつ手前へ伝わります。

迷路のQ学習で、チーズから2マス手前のマスにも高い値が付くのはなぜ?

問題:迷路のQ学習で、チーズの2マス手前にも高い値が付くのはなぜ?

  1. 隣のマスの高い値を足して直すから(正解)
  2. 人がそのマスに点数を書き込むから
  3. チーズまでの距離を最初に測るから

解説:Q値を更新するときは、移動先のマスの最高Q値を足します。チーズの隣の値が高くなると、その手前の値も高くなり、+1が1マスずつ手前へ伝わります。

ときどき、わざとでたらめに

高いQ値ばかり選ぶと、最初の遠回りから抜け出せません。

そこで時々でたらめに動きます。ネズミも最初は90%、慣れると5%だけランダムに動きました。

○か✕か

○か✕か:強化学習のAIは、毎回いちばん高いQ値の行動だけを選ぶほうが、早く近道を見つけられる。

答え:✕。高い値だけを追うと、最初に見つけた道より良い道を試せません。ときどきランダムに動くからこそ、新しい近道に出会えます。

囲碁のトップ棋士に勝った

2016年、囲碁AIのAlphaGoはトップ棋士の李世乭さんに4勝1敗で勝利しました。

人の棋譜で学んだあと、自分同士で対局を重ね、勝敗を報酬にして打ち方を磨いています。

表に書ききれない盤面

5×5の迷路ならQ値は100個で足りますが、囲碁の盤面は10の170乗通りもあり表に書ききれません。

そこでAlphaGoは表の代わりに、盤面から勝ちやすさを計算で見積もる方法を使いました。

正解なしで学ぶ2つの方法

  • 正解の札がないデータは、k-means法で近いものどうしに分ける
  • 近い中心の色に塗り、中心を重心へ動かす。グループの数は人が決める
  • 動き方は、正しい手順の代わりに報酬だけを返す強化学習で覚えさせる
  • Q値の表を報酬で直し、ときどきでたらめに動いて近道を探す

将棋AIに指し方を覚えさせたい。手元にあるのは、対局ごとの勝ち負けの記録だけです。合う学び方はどれ?

問題:将棋AIに指し方を覚えさせたいとき、手元に勝敗の記録しかない場合に合う学び方はどれ?

  1. 勝ち負けを報酬にする強化学習(正解)
  2. 似た局面を集めるk-means法
  3. 名人の指し手を丸写しする方法

解説:正しい手が分からなくても、勝敗という点数なら返せるので強化学習が向いています。ただし将棋の局面も表には書ききれず、未知の局面をどう見積もるかが課題です。次は、脳の神経細胞を模した人工ニューロンを動かし、入力に重みをかけて判断する仕組みを見ていきましょう。

用語

Q値(Q-value)
その行動で将来どれだけ得できるかの見込み値。
報酬(Reward)
行動の結果もらえる点数。良いとプラス、悪いとマイナス。
重心(Centroid)
グループの点々の位置を平均した場所。真ん中の位置。
Q学習(Q-learning)
行動するたびに、得た報酬と次の状態の最高Q値を使って、Q値の表を更新していく強化学習の手法です。
k-means法(k-means Clustering)
データを指定した数 $k$ のグループに分ける方法です。近い中心の色に塗り、中心を重心へ動かす操作を繰り返します。
強化学習(Reinforcement Learning)
手順は教えず、行動結果の点数だけを渡して、点数が最大化する動きをAIに試行錯誤で学ばせる方法です。
エージェント(Agent)
強化学習で環境を観察して行動を選び、点数をもらって学ぶ主体です。迷路のネズミなどを指します。
教師なし学習(Unsupervised Learning)
正解の札がないデータから、似た集まりや隠れたパターンをAI自身に見つけさせる学び方です。