MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

強化学習を手を動かして学ぶ『Pythonで学ぶ強化学習』


機械学習スタートアップシリーズ Pythonで学ぶ強化学習 入門から実践まで (KS情報科学専門書)

目次

はじめに

下記の通り、先日『Pythonで学ぶ強化学習』の著者の方々から、

献本をいただきました。

再び献本を頂きました😲『Pythonで学ぶ強化学習』の関係者の方々、ありがとうございます。機械学習は正直あまり詳しくないので、これを読んでAIエンジニアになれるように頑張ります。全編カラーで、コードも沢山あっていい感じです。じっくり読んで書評させて頂きます😀 #python

 

献本を頂いてから、かなりの時間が経ってしまいましたが、

今年のGWを使って、一通り読んでみたので、

感想と読書メモ、

そして、同時並行で強化学習を勉強するのに良かった素材について

紹介したいと思います。

感想

この本は、Pythonを使った簡単な強化学習のサンプルコードを元に、

(深層)強化学習の概要と、分類、そして各種代表的なアルゴリズムの概要を

学ぶための書籍です。

 

Day1からDay7まで、章立てされており、

(深層)強化学習の概要から、強化学習の現在の問題点とその対策、

そして強化学習の応用先まで学ぶことができます。

 

強化学習は、ベルマン方程式をベースとして、

議論されることが多いため、数式のみで議論すると、

あまり具体的なイメージが掴みづらいですが、

この本は、基本的にPythonによるサンプルコードをベースとして、

説明を実施するための、

数式を実際に実装する時のイメージがつかみやすかったです。

 

また、全編カラーだったので、グラフや図が読みやすく、

ページ数もそこまで多くないので、

一週間ほどで読み終わることができました。

 

一方、強化学習の内容を一冊に詰め込んでいるため、

重要な単語などを知ることができましたが、

それぞれの意味や関連を学ぶには、

この本を一回読むだけでは、理解するのが難しいと感じました。

この本を何度か読み返しつつ、

後述するような、副読素材も利用しつつ、

強化学習の全体像を理解していくことが重要かと思います。

 

読了メモ

以下は『Pythonで学ぶ強化学習』と、

後述の資料を読んだ際の個人的な読了メモです。

Day1

RL:Reinforcement Learning 強化学習は、

行動の評価方法と、行動の選び方を学習する。

これにより一般的な意思決定問題に利用することができる。

 

強化学習は、行動に対する報酬があるという点で、

教師あり学習ににているが、

入力データに対応した教師データがあるわけではなく、

その入力データを元に、遅れて報酬(reward)を得ることことができ、

これを最大化する方策(Policy)を得るのが目的

 

しかし、教師あり学習と異なり、

モデルのパラメータの勾配などは得られないため、

学習が非常に難しい。

解きたい問題が、教師あり学習

 

強化学習の面白い所は、

ある目的を達成するために、Policyを最適化するして目標を達成する方法と、

報酬の与え方を最適化することにより、目標を達成する手法がある。

 

評価方法そのものを学習出来るのが強化学習のウリ

一方、強化学習の問題としては、

獲得された行動をうまく制御できないということがある。

 

強化学習では、Agentとenviromentの2つの要素があり、

Agentはactionによって、enviromentに影響を与え、

enviromentは、その代わりにrewardとobservation(state)を

agentに返す形になる。

 

AgentはPolicyとLearning algorithmで構成される

状態から行動を出力する関数を方策(戦略) Policyと呼ぶ。

このPolicyのパラメータをlearning algorithmで学習するのが強化学習

このPolicyに応じて行動する対象がagentとなる。

Reward: ある状態における、その時の利得

Value: ある状態における、将来の期待される利得の和

 

  • 強化学習が解きたい問題1

将来の予測利得(Value)は、今の利得より、少なくあるべき

予測は精密でないことも考慮に入れるべき

 

  • 強化学習が解きたい問題2

Exploration:探索とExploitation:搾取のバランス

いつも同じレストランに行っていたら、本当に美味しい食べ物には出会えないのと同じ問題

 

Day2

強化学習は評価関数を計算するときに、未来の評価値を1以下のパラメータを使って、

指数的に減衰させている。

強化学習には、遷移関数と報酬関数が既知な、モデルベースの学習方法と、

遷移関数と報酬関数がわからない場合に使用されるモデルフリーな学習方法がある。

モデルフリーRL: 環境の事前情報を利用しない手法

モデルベースRL: 環境の事前情報を利用する方法

モデルベースの方が、良い学習ができることが多いが、

実はモデルフリーの強化学習システムの方が多い。

なぜなら、学習したいモデルが複雑過ぎて、学習に組み込めないからである。

 

Day3

Epsilon-Greedy法: 乱数がEpsilon以下の時は探索(ランダムで手法を選択)し、

Epsilon以上の時は、これまでのデータから最も期待値が高い手法を選択する。

Epsilonは0.1ぐらいが良い場合が多い。

行動の修正を

各エピソード毎に実施->モンテカルロ法(修正は的確だが、遅い)

各行動毎に実施-> Temporal Difference(TD)法 (修正が不安定だが早い)

 

Day4

Policyの中にNNを使うのが、深層強化学習

Policyには、tableや関数を使うこともできるが、

任意の関数を近似でき、学習アルゴリズムが存在しているNNは都合が良い。

強化学習の学習アルゴリズムの種類

  • 1 Policyベース 方策を学習する方法 Policy gradient methodが有名

  • 2 Valueベース 評価関数を学習する方法

  • 3 Critic/Actor 方策も評価関数も両方学習する方法

Actorは状態を入力として、actionを出力するNN

Criticは状態を入力として、valueを出すNN (rewardを予測するNN)

 

Day5

強化学習の問題点1

学習に大量のデータが必要であるため、シミュレータが無いと、ほぼ学習は不可能

深層強化学習は、汎用的だが、特化させることが難しく、

結果が不安定で、学習に時間がかかる

RLの学習にシミュレータを使うメリット

  1. 沢山のデータで学習できる

  2. リアルよりも高速に学習できる

  3. 並列で学習できる

  4. リアルでは難しい、データを意図的に作ることができる。

強化学習の問題点2

局所最適や、過学習しやすい。

予期しなかった、行動をしやすい

強化学習の問題点3

再現性が低い

ハイパーパラメータに影響されやすい

シミュレーションで、パラメータを変えて実施する場合、

各コミットログに、グラフや結果を貼ると良い

アルゴリズムに関しては、ロジック実装時のバグをへらすため、

出来るだけ、既存のライブラリを使う

Day6

前章で述べた問題点を解決するために、

  • 転移学習: 以前の学習結果の再利用

  • エキスパート学習 (カリキュラムラーニング, 模倣学習): 教師データのようなデータを元に優先学習する

などが提案されている。

Day7

強化学習の応用例

  • ゲームのプレイヤー

  • grasping

  • 自然言語処理

  • リコメンデーションエンジン

 

参考資料

 

『Pythonで学ぶ強化学習』におすすめの副読素材

Pythonで学ぶ強化学習は、

コードをベースにして深く強化学習を学べる良い本ですが、

一冊に基礎から、最新の応用まで詰め込んでいるので、

置いてきぼりにされていると感じる人もいるかと思います。

そこでおすすめなのが、下記の副読素材です。

Pythonで学ぶ強化学習と一緒に参照すると、

より深く強化学習を学ぶことができると思います。

 

まず初めに、強化学習を大まかな概要を学びたい場合は、

下記のMATLABの動画がおすすめです。


Reinforcement Learning for Engineers, Part 1: What Is Reinforcement Learning?


Reinforcement Learning for Engineers, Part 2: Understanding the Environment and Rewards


Reinforcement Learning for Engineers, Part 3: Policies and Learning Algorithms

 

また、下記のMITの授業の動画もおすすめです。


MIT 6.S091: Introduction to Deep Reinforcement Learning (Deep RL)


MIT 6.S191: Deep Reinforcement Learning

 

また、自分が一番混乱した、

Policy baseとValue baseの違いに関しては、

下記に記事がわかりやすかったです。

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com