Upgrade to Pro — share decks privately, control downloads, hide ads and more …

強化学習による迷路抜け知識の学習

66cc992074ab4522374e429c11fef225?s=47 youichiro
February 01, 2017

 強化学習による迷路抜け知識の学習

長岡技術科学大学
自然言語処理研究室
B3ゼミ勉強会(第2回)

66cc992074ab4522374e429c11fef225?s=128

youichiro

February 01, 2017
Tweet

More Decks by youichiro

Other Decks in Technology

Transcript

  1. 強化学習による迷路抜け知識の学習 平成29年2⽉2⽇ ⻑岡技術科学⼤学 ⾃然⾔語処理研究室 ⼩川耀⼀朗 1

  2. ⽬次 1. 強化学習とは 2. Q学習 3. 迷路抜け知識の学習 4. 強化学習プログラムの実装 5.

    評価 参考⽂献 機械学習と深層学習 ⼩⾼知宏 オーム社 2
  3. 強化学習とは ⼀連の⾏動の最後に評価が与えられるような場合に⽤いる学習⽅法 例)将棋 教師あり学習の場合 • コンピュータが⼀⼿ごとにその⼿の評価を先⽣から教わる⽅法 • 効率的な学習は可能だが、⼤量の教師データを⽤意する必要があり⼤変 • ⼀⼿だけ取り出してその⼿が正しいかどうかは、多くの場合判断するこ

    とができない 強化学習の場合 • ⼀連の着⼿が終了した後に評価を得てその評価に基づいて学習を進める • ゲームの勝敗によって評価(勝ち、負け、引き分け) → ใु • 最終の評価から、⼀⼿⼀⼿の⾏動に関する知識を学習する 3
  4. Q値の学習 強化学習を実現する⽅法として、Qֶशがある ある場⾯において次にとるべき⾏動を選択するための指標 → Q஋ Q値に従って⾏動を選択する 例)将棋 • 次に選択できる⼿のそれぞれにQ値 を与え、Q値の⼤きさに従って次の

    ⾏動をとる • Q学習を繰り返していくとQ値の値 が改善されていき、やがて選択が 適切に⾏われるようになる 4
  5. 迷路抜け知識の学習 5

  6. 迷路抜け知識の学習 ໰୊ઃఆ • スタート地点から開始 • 分岐を繰り返して最下段までたどり着くと、その場所 に応じた報酬が得られる • なるべく多くの報酬がもらえるような⾏動知識を学習 する

    • 今回はs14が最⼤の報酬、s7が最⼤の半分の報酬を与え るとする 6
  7. 初期状態 • 初期状態学習の初期の⾏動はランダムに選択される • 初期状態でたまたま⽬標とする⾏動パターンに近いものが 現れることがある → この時に得た報酬によって、その⾏動パターンのQ値が増 加 →

    次回からその⾏動パターンが選択されやすくなる これでは… 報酬に直結する⾏動のQ値が改善されるだけで、初期の⾏ 動に対するQ値はランダムに決定された値のまま更新されな い 7
  8. 初期状態 8

  9. そこで 次の⾏動の選択肢の中で 最⼤のQ値に⽐例する値を直前 のQ値に加える →学習を繰り返していくと報酬 を得ることができる⾏動パ ターンに対するQ値が増加する 初期状態 9

  10. Q値の計算 "#,%# = "#,%# + + 012 , 012 −

    0 , 0 0 : 時刻tにおける状態 0 : 0 において選択した⾏動を表す r : 報酬(得られなければ0) α : 学習係数(0.1程度) γ : 割引率(0.9程度) 012 , 012 : 次の時刻における⾏動の選択肢中のQ値の最⼤値 10
  11. ε-グリーディ法 ⾏動選択はQ値の⼤きい⾏動を優先する → 初期のランダムに決まったQ値がたまたま⼤きな値となった⾏動だけ が常に選択されてしまう そこで • ある適当な定数を⽤意(ε = 0.3)

    • ⾏動選択の際、0~1の間の乱数を⽣成し、その値がε以下であればラン ダムに⾏動を選択する • εより⼤きければQ値の⼤きい⾏動を選択する → Q値の初期値に依存することなく、様々な⾏動に対する適切なQ値の 学習が可能となる 11
  12. Q学習の⼿順 1. 全てのQ値をランダムに決定 2. 学習が⼗分進むまで以下を繰り返す a. 動作の初期状態に戻る b. 選択可能な⾏動から、Q値に基づいて次の⾏動を決定する c.

    Q値を更新 d. 報酬を得たら、報酬に⽐例した値をQ値に加える e. 次の状態で選択できる⾏動に対するQ値のうち、最⼤値に ⽐例した値をQ値に加える f. ⽬標状態に⾄ったら2に戻る g. 2に戻る 12
  13. ڧԽֶशʹΑΔ໎࿏ൈ͚஌ࣝͷֶशϓϩάϥϜ ߏ੒ Q学習を⾏うクラスを作成 • コンストラクタ: 定数を宣⾔ • learnメソッド: 学習のメイン処理を⾏う •

    updateメソッド: Q値を更新する • selectメソッド: 次の⾏動を決定する 13
  14. • Qlearningクラスを⽣成 • コンストラクタの引数でデフォルトの定数の値を宣⾔ • インスタンス変数に各定数の値を代⼊ GENERATE_MAX: 学習を繰り返す回数 BRANCH: 最下段までの全ての枝の数

    ALPHA: 学習係数 GAMMA: 割引率 EPSILON: ⾏動選択のランダム性を決定 14
  15. • 全枝のQ値を0~100のランダムな値に設定 • 以下を学習の繰り返し回数まで繰り返す • 以下を最下段まで繰り返す • 次の⾏動の選択 • Q値の更新

    • 更新したQ値を出⼒ q: それぞれの枝のQ値(リスト) s: 次の⾏動を⽰す(int) 15
  16. • 今が最下段にいる場合 • 今がs14かs7にいるなら => 報酬を与える • s14以外にいるなら => 報酬なし

    • 最下段にいない場合 • 次の⾏動の中でQ値が⼤きい⽅をqmaxに代⼊ • gmaxに⽐例した値を加算 • 更新したQ値を返す 16
  17. • ε-greedy法により⾏動を選択 • 0~1の間のランダムな値を⽣成し、それが • εより⼩さい => 次の⾏動をランダムに決定 • εより⼤きい

    => 選択肢の中から最⼤のQ値を持つ⾏動を選択 • 選択した⾏動を返す old: ⾏動前の状態 17
  18. 最後に実⾏ 18

  19. 実⾏結果 19

  20. Q値の変化グラフ 学習繰り返し回数:500回 20

  21. 迷路抜け知識の学習 24 に⾄るまでの枝であるQ14、Q6、Q2では、得られる 報酬が1000のため、1000に近いQ値まで増加している 5 に到るまでの枝であるQ7、Q3、Q1では、得られる報 酬が24 の半分なのでQ値もおよそ半分のところまで増加 している 従って

    … 構想した迷路において多くの報酬がもらえるような⾏ 動知識を学習することができた 21