機械学習記14日目 ~ 強化学習(Reinforcement learning)

強化学習とは
 強化学習(Reinforcement learning)とは機械学習の手法の1つです。囲碁人工知能である「alpha go zero」などに使われている手法でもあります。alpha go zeroは、たったの40日でこれまで開発されたalpha goのどのバージョンよりも強くなりました。囲碁や将棋といったゲームは、本質的に将来の価値(つまり今その手を打つことにより、最終的に勝つのか負けるのか)を最大化することが目的なので、強化学習とは相性が良い問題です。

 強化学習では、研究者は人工知能に過去の対局や正しい手筋を教えません。その代わりに、人工知能どうしで対局を行わせ、より多く勝てるように試行錯誤して、最適な打ち筋を学習していきます。過去のデータを用いることなく強くなったことから、もはや人工知能は人類の手を離れても強くなっていくことが示唆されています。

 テトリスでできるだけ高スコアを得るような問題も強化学習の枠組みで考えることができます。
その時点で一番スコアが高くなるのは、一列でもすぐに消すようなプレイ方法ですが、より長期的には、できるだけ溜めてから一度にたくさんの列を消したほうがスコアが高くなります。


強化学習の3要素とは
さて、強化学習についてもう少し詳しく説明します。
強化学習では、与えられた「環境」における価値(利益)を最大化するように「AI」を学習させます。
例えば、AIが「テトリス」という環境を観測し、そのうえで行動を起こします。環境(テトリス)はその行動に応じて、AIに報酬を与えます。
f:id:hackU0001:20190305180302p:plain
 今回は、アルゴリズムのために必要な強化学習の用語について、状態(situation) ・行動(action) ・報酬(remuneration) の3要素を紹介します。

 状態(situation)とは、環境が今どうなっているのかをあらわすものです。テトリスの例では、積まれているテトリミノや、操作するテトリミノが状態にあたります。

 行動(action)とは、AIが環境に対してどのような行動を起こすことができるのかをあらわします。テトリスの例では、ブロックの操作にあたります。

 報酬(remuneration)とは、ある状態においてエージェントが行動を起こした結果、どれくらいの報酬が得られるのかをあらわします。テトリスの例では、ブロックを積み上げた結果の消した数にあたります。

 ここで、報酬に関しては一点注意が必要です。
先ほど言った通り、強化学習ではその時点で貰える即時報酬ではなく、(将来に渡る)価値を最大化します。
よって、単に即時報酬が多くもらえる近視眼的な行動ではなく、より未来を考えた価値を最大化する行動を取らなければなりません。


▶どうやって価値を最大化させるようにAIを学習させるのか?
 典型的には、「ある状態においてある行動を取った時の価値」がわかれば、その価値の一番高い行動を選択すればよいはずです。この価値のことを Q値 あるいは状態行動価値と呼び、 Q(s,a) と書きます 。Q値は「報酬」ではなく「価値」であることに注意してください。つまり、Q値とは短期的な報酬ではなく、長期的な意味での価値を値として持っている関数です。

 さて、「その行動によって、価値の高い状態に遷移できるような行動」は、遷移先と同じくらいの価値を持っているとみなすのが自然です。
「価値の低い状態に移り変わるような行動の価値は低い」ことも言えそうです。
つまり、現時点 t におけるQ値は一つ先の時点 t+1 のQ値によって書くことができます
f:id:hackU0001:20190305203945p:plain
下付きの t は時点 t における状態や行動であることを表しています。
rt+1 は得られた即時報酬で、外側の期待値が st+1 に関するもの、内側の期待値が at+1 に関するものです。
γ は割引率と呼ばれ、将来の価値をどれだけ割り引いて考えるかのパラメータです。

ここまで準備ができれば、あとはどうやってこの Q値を学習するかを考えることができます。

~参考サイト~

blog.brainpad.co.jp