1. BigTheAndo

    Posted

    BigTheAndo
Changes in title
+Pythonで学ぶ強化学習
Changes in tags
Changes in body
Source | HTML | Preview

概要

 機械学習スタートアップシリーズ「Pythonで学ぶ強化学習」を読み終わったので、できるかぎりわかりやすくまとめてアウトプットしようと思います。
 この書籍は、サンプルコードがたくさん載っており、数式や理論などを理解するのが苦手なプログラマの方におすすめです。機会学習の初歩から学べるという点も、この本の強みであると感じています。

機械学習とは

 人工知能を実現するための技術のひとつとして機械学習というものがあります。
 機械学習の明確な定義はいまだに定まっておらず、ひとによって細部の理解は異なります。Wikipediaによると、

明示的な指示を用いることなく、その代わりにパターンと推論に依存して、特定の課題を効率的に実行するためにコンピュータシステムが使用するアルゴリズムおよび統計モデルの科学研究である。

とあります。

 ちまたでよく話題になっている深層学習(DeepLearning)は、機械学習モデルのひとつです。ニューラルネットワークとよばれる、動物のニューロン(神経細胞)を模したモデルを多層にしたもので、以降ではDNN(Deep Neural Network)と称します。

 機械学習においてモデルを学習させる手法は主に3つに分けられます。

  • 教師あり学習
    ー> モデルに入力するデータと正解となる出力ラベルをセットで学習に用います。

  • 教師なし学習
    ー> 正解ラベルをもたない入力データだけで、それぞれのデータの関係性をあらわせるようにパラメータ調整(学習)を行います。クラスタリングはこれに含まれます。

  • 強化学習

 ここから強化学習を深掘っていきたいと思います。

強化学習とは

 強化学習では、ほか2つの手法と異なり、データをあたえるかわりに「環境」を設定します。

 ここでいう「環境」では「行動(Action)」とそれに対応した「状態(State)」、そしてある状態に至ったときに得られる「報酬(Reward)」が定義された空間のことになります。Actionを行う強化学習上での主体のことを「エージェント」とよびます。

 強化学習でよく使用される環境として、ゲームは欠かせません。スーパーマリオブラザーズでたとえるならば、「マリオ(エージェント)がジャンプする」が「行動」で、「マリオ(エージェント)の位置座標」が「状態」、「獲得したコインの枚数」が「報酬」といったように定義できます。


 このようにあたえられた「環境」の中で、一連の「行動」(1エピソードともいう)で得られた「報酬の総和」を最大化することが、強化学習の目的になります。


 ひとつ例をあげてみましょう。1日あたり1000円受け取ることができるけれど、3日がまんすれば10000円もらえるという場合を考えます。この場合の行動は、我慢するかしないかになります。このとき、強化学習では報酬の総和を最大化することを目的とするため、3日我慢するのが最適な行動となるように学習することになります。


 これを学習するためには、「報酬の総和」を最大化するために「行動」を評価する必要があります。つまり、モデルが学習すべき点は2つです。1つは行動の評価方法、もう1つはその評価に基づく行動の選び方(戦略、方策、ポリシーとよばれます)です。


 なんとなくイメージは伝わりましたでしょうか? ここからは強化学習のしくみについて説明します。

マルコフ決定過程

 前述したとおり、強化学習では環境が必要になります。

 その環境は一定の性質をもっていることを前提としており、マルコフ性とよばれています。その性質は「遷移先の状態は直前の状態とその状態での行動からみちびかれ、報酬は直前の状態と遷移先に依存する」というものです。マルコフ性をもつ環境のことをマルコフ決定過程(MDP)といい、4つの要素をもっています。

  • :状態(State)
  • :行動(Action)
  • :状態遷移確率(Transition function)。ある状態(s)である行動(a)を行った際に遷移先の状態(s’)に移動する確率。T(s, a, s')であらわされる。
  • :報酬。状態と遷移先(行動も考慮する場合もある)から出力される。

 このような環境のなかで、「報酬の総和」を最大化するように学習していきます。エピソード終了時までの報酬の和を考えてみましょう。以下のようにあらわすことができます。
(つづく)