確率ロボティクス第9回: 行動決定(その1)

千葉工業大学 上田 隆一


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Creative Commons License

確率ロボティクス第9回

今日やること

  • なにかをやるということはどういうことかを考える
  • Q学習
確率ロボティクス第9回

自分がやってることの根拠

  • あります?
    • なんで朝飯食ったのか?
    • なんで朝飯はそれを食ったのか?
    • なんで大学来たのか
    • なんで講義受けているのか
  • たぶん以下の理由でやってる
    • そうすると良いことがありそうだから
      • 良いこと: 楽しいなども含む
    • そうしないと悪いことがありそうだから
確率ロボティクス第9回

行動決定のモデル

  • 「なにか行動をするといい/悪いことがある」は行動を決めるときの手がかり
    • ロボットの行動を計算するときにも必要
      • 行動の結果の良し悪しを数値化して評価しないと行動が選べない
  • いいこと/悪いことの数値化(2種類)
    • その時その時に良いこと/悪いことがある
      • 食べている/勉強している/遊ぶ
    • 行動の結果、よい/悪い状態になる
      • 満腹になる/賢くなる/無意味に歳をとる
確率ロボティクス第9回

記号化しましょう

  • 状態: 行動に関係する変数を並べたベクトル
  • 行動: 状態を変えるなにか
  • 損失: 行動の結果被る(行動は疲れる)
    • 学習の場合にはをかけた報酬で考えることが多い
  • 終端状態とその価値
    • 一連の行動が終わった状態と、その状態の良さ

確率ロボティクス第9回

「よい行動」

  • 状態、行動、損失、終端状態の価値でどう表現するか?
  • こたえ: 一連の行動がおわったときのの和
    • たとえばある状態に行きつくのに10回行動が必要だった
  • あくまで主観
    • ひとそれぞれ。何をやってもいつか死ぬので難しい話
    • 問題: これからの人生をモデル化してみましょう!
      • 趣味に生きるか、スキルをつけるか、人のために生きるか、タバコを吸うか、酒を飲むか、あるいはその全部か・・・

確率ロボティクス第9回

補足

  • 数値ひとつで行動が決められるのか?
    • 行動は同時にできず1つしか選べない
      • 選んだ行動がなんらかの点数付けの上で一番良いから選ばれていると解釈することは可能
  • 行動決定問題の面白さ
    • 「損して得とれ」という構造がよく出現する
      • その場で一番良い行動が将来的に一番良い行動とはならないので難しい
        • 依存症は一種の「バグ」
  • 行動決定問題を解く鍵
    • 「今は損な行動でも、将来的には良い」という確証をどう計算で得るか?
      • なにかの将来的な期待値を計算することに
確率ロボティクス第9回

強化学習

  • 評価がよりよくなる行動をロボット(エージェント)に選ばせるように学習させる仕組み
  • 学習するもの: : 方策
    • ある状態でどの行動を選ぶかを決める関数
  • 損失関数
      • : 最初の状態
確率ロボティクス第9回

簡単な例題で考えましょう

  • タイルワールド(右図)のQ学習を扱う
  • こんな問題
    • ロボットは右か左どちらかを選択してサイコロを振って出たマスだけ移動
      • 端より先には行けず、そこに停留
    • ゴール or 穴のマスに止まれば終了
  • 記号などの定義: 右図
  • ある場所から出発したときに、損失の期待値を最小化したい(どうしましょう?)
確率ロボティクス第9回

一番よい方策(最適方策)

  • おそらくこれ
    (とにかく穴をさけたほうがよい)
    • 以外では「左」を選択
    • で「右」を選択
  • 最適方策:
  • これをどうやってコンピュータに解かせましょう?
確率ロボティクス第9回

問題の性質

  • ある状態に対し、そこからスタートしたときの損失関数の期待値が計算可能
    • 損失関数:
    • 右図: 計算したもの
  • は最初の状態でなくてもよい
    • 別の状態からスタートしても、ある時点でにいたら、以後のの期待値は右図の計算した値
    • 過去のことはこれからの行動選択には無関係
  • 損失関数の期待値を状態の関数にできる
    • 終端状態の価値を拡張して
      関数状態価値関数)を考える
確率ロボティクス第9回

状態価値関数の性質

  • 方策にしたがって行動をとったときに次の関係
      • : ある状態
      • : 行動
      • : 行動をとったあとの状態
        (複数の候補あり)
    • : 行動に対する損失の関数
  • 右の例: 左端の2つの状態が分かりやすい
    • 問題: 左から3つめの状態について計算を
  • もし別の行動をとって右辺のほうが左辺よりよかったらもっと良い方策がある
確率ロボティクス第9回

方策の改善

こういう方法が考えられる

  • 最初に適当なを設定
  • 次の2つの値を比較
  • 後者のほうがよければ
    • の行動を変える
これが強化学習の原理
確率ロボティクス第9回

Q学習

  • 先ほどの原理でロボットを
    学習させてみましょう
  • ただし、行動価値関数というものを考える
    • : をとるときの
      状態の価値
  • まず、を初期化(右図)
確率ロボティクス第9回

値の更新

  • ロボットに適当に動いてもらっての値を更新
  • 更新式
    • もとのの値を少しだけ変更
      • : 学習率(右図の例だと
確率ロボティクス第9回

方策の工夫

  • 方策が完全にランダムだとゴールに着かず
    学習が進まない
  • そのときに一番良い行動しかとらないと
    別の可能性が探れない
    • 例: 右図のようになってしまうとで左が選ばれなくなり学習が進まない
    • こういうことは日常でないだろうか?
  • 方策を次のように確率的に
    -グリーディー方策)
    • 確率値が一番良い行動をとる
    • 確率でランダムに行動選択
確率ロボティクス第9回

学習の実行例

  • 100試行までには最適方策が得られている
  • はなかなか収束しない
確率ロボティクス第9回

少し大きな問題

  • 右のロボットが、水たまりを避けてゴールに
    行くように学習させたい
    • いまのところ水たまりに一直線
  • 下図左: 方策(ロボットが左を向いている時のもの)
  • 下図右: 状態価値関数(同上)
確率ロボティクス第9回

ロボットに行動させる

  • -グリーディ方策で
  • 水たまりに入ると損失を与える
  • Q学習の式で行動価値関数を書き換え

確率ロボティクス第9回

学習の進行: 行動の変化

  • 時間はかかるがだんだん水たまりを避けるように

確率ロボティクス第9回

学習の進行: 状態価値関数の変化

  • ゴールまでの損失が減っていく

確率ロボティクス第9回

もっと複雑な問題

  • DQN (Deep Q-Network) [Mnih 2013]
    • ゲームをするエージェントを実現して騒ぎに
  • ゲームの学習方法
    • 画像(全体の)をCNNに通して特徴で分類して状態に
    • の表現にも人工ニューラルネットワークを使用
確率ロボティクス第9回

まとめ

  • 行動の評価方法(損失・価値)について
    • そのときの行動に対する損失と、最終的な状態に与えられる価値がある
      • 補足: 最終的な状態の価値の代わりにその直前の行動に対して与える場合もあるが等価
  • 強化学習、その中のQ学習を見てきた
    • 行動と状態、損失の観察(=経験)から状態の「価値」を計算
確率ロボティクス第9回