長岡技術科学大学 自然言語処理研究室 B3ゼミ勉強会(第2回)
強化学習による迷路抜け知識の学習平成29年2⽉2⽇⻑岡技術科学⼤学⾃然⾔語処理研究室 ⼩川耀⼀朗1
View Slide
⽬次1. 強化学習とは2. Q学習3. 迷路抜け知識の学習4. 強化学習プログラムの実装5. 評価参考⽂献機械学習と深層学習 ⼩⾼知宏 オーム社2
強化学習とは⼀連の⾏動の最後に評価が与えられるような場合に⽤いる学習⽅法例)将棋教師あり学習の場合• コンピュータが⼀⼿ごとにその⼿の評価を先⽣から教わる⽅法• 効率的な学習は可能だが、⼤量の教師データを⽤意する必要があり⼤変• ⼀⼿だけ取り出してその⼿が正しいかどうかは、多くの場合判断することができない強化学習の場合• ⼀連の着⼿が終了した後に評価を得てその評価に基づいて学習を進める• ゲームの勝敗によって評価(勝ち、負け、引き分け) → ใु• 最終の評価から、⼀⼿⼀⼿の⾏動に関する知識を学習する3
Q値の学習強化学習を実現する⽅法として、Qֶशがあるある場⾯において次にとるべき⾏動を選択するための指標 → QQ値に従って⾏動を選択する例)将棋• 次に選択できる⼿のそれぞれにQ値を与え、Q値の⼤きさに従って次の⾏動をとる• Q学習を繰り返していくとQ値の値が改善されていき、やがて選択が適切に⾏われるようになる4
迷路抜け知識の学習5
迷路抜け知識の学習ઃఆ• スタート地点から開始• 分岐を繰り返して最下段までたどり着くと、その場所に応じた報酬が得られる• なるべく多くの報酬がもらえるような⾏動知識を学習する• 今回はs14が最⼤の報酬、s7が最⼤の半分の報酬を与えるとする6
初期状態• 初期状態学習の初期の⾏動はランダムに選択される• 初期状態でたまたま⽬標とする⾏動パターンに近いものが現れることがある→ この時に得た報酬によって、その⾏動パターンのQ値が増加→ 次回からその⾏動パターンが選択されやすくなるこれでは…報酬に直結する⾏動のQ値が改善されるだけで、初期の⾏動に対するQ値はランダムに決定された値のまま更新されない7
初期状態8
そこで次の⾏動の選択肢の中で最⼤のQ値に⽐例する値を直前のQ値に加える→学習を繰り返していくと報酬を得ることができる⾏動パターンに対するQ値が増加する初期状態9
Q値の計算"#,%#= "#,%#+ + 012, 012− 0, 00 : 時刻tにおける状態0 : 0において選択した⾏動を表すr : 報酬(得られなければ0)α : 学習係数(0.1程度)γ : 割引率(0.9程度) 012, 012 : 次の時刻における⾏動の選択肢中のQ値の最⼤値10
ε-グリーディ法⾏動選択はQ値の⼤きい⾏動を優先する→ 初期のランダムに決まったQ値がたまたま⼤きな値となった⾏動だけが常に選択されてしまうそこで• ある適当な定数を⽤意(ε = 0.3)• ⾏動選択の際、0~1の間の乱数を⽣成し、その値がε以下であればランダムに⾏動を選択する• εより⼤きければQ値の⼤きい⾏動を選択する→ Q値の初期値に依存することなく、様々な⾏動に対する適切なQ値の学習が可能となる11
Q学習の⼿順1. 全てのQ値をランダムに決定2. 学習が⼗分進むまで以下を繰り返すa. 動作の初期状態に戻るb. 選択可能な⾏動から、Q値に基づいて次の⾏動を決定するc. Q値を更新d. 報酬を得たら、報酬に⽐例した値をQ値に加えるe. 次の状態で選択できる⾏動に対するQ値のうち、最⼤値に⽐例した値をQ値に加えるf. ⽬標状態に⾄ったら2に戻るg. 2に戻る12
ڧԽֶशʹΑΔ໎࿏ൈ͚ࣝͷֶशϓϩάϥϜߏQ学習を⾏うクラスを作成• コンストラクタ: 定数を宣⾔• learnメソッド: 学習のメイン処理を⾏う• updateメソッド: Q値を更新する• selectメソッド: 次の⾏動を決定する13
• Qlearningクラスを⽣成• コンストラクタの引数でデフォルトの定数の値を宣⾔• インスタンス変数に各定数の値を代⼊GENERATE_MAX: 学習を繰り返す回数BRANCH: 最下段までの全ての枝の数ALPHA: 学習係数GAMMA: 割引率EPSILON: ⾏動選択のランダム性を決定14
• 全枝のQ値を0~100のランダムな値に設定• 以下を学習の繰り返し回数まで繰り返す• 以下を最下段まで繰り返す• 次の⾏動の選択• Q値の更新• 更新したQ値を出⼒q: それぞれの枝のQ値(リスト)s: 次の⾏動を⽰す(int)15
• 今が最下段にいる場合• 今がs14かs7にいるなら => 報酬を与える• s14以外にいるなら => 報酬なし• 最下段にいない場合• 次の⾏動の中でQ値が⼤きい⽅をqmaxに代⼊• gmaxに⽐例した値を加算• 更新したQ値を返す16
• ε-greedy法により⾏動を選択• 0~1の間のランダムな値を⽣成し、それが• εより⼩さい => 次の⾏動をランダムに決定• εより⼤きい => 選択肢の中から最⼤のQ値を持つ⾏動を選択• 選択した⾏動を返すold: ⾏動前の状態17
最後に実⾏18
実⾏結果19
Q値の変化グラフ学習繰り返し回数:500回20
迷路抜け知識の学習24に⾄るまでの枝であるQ14、Q6、Q2では、得られる報酬が1000のため、1000に近いQ値まで増加している5に到るまでの枝であるQ7、Q3、Q1では、得られる報酬が24の半分なのでQ値もおよそ半分のところまで増加している従って …構想した迷路において多くの報酬がもらえるような⾏動知識を学習することができた21