Section1:TensorFlowの実装演習
実務では、numpyを使ってフルスクラッチでNNを組むような事は少なく、TensorFlowなどを利用する事が多い。
TensorFlowはGoogleが開発したフレームワークもので、世界中でユーザ数が最も多い。
TensorFlowを使う事で、簡単にディープラーニングの実装を行う事が出来る。
numpyなどと作法が違うところがあるので、tensorFlowの作法は、演習を通して覚える必要がある。
Keras:
TensorFlowのラッパーのライブラリ。
TensorFlowをそのまま使うよりも、CNNなどは簡単にコーディングする事が出来るようになっている。
初心者にはすごく使いやすいディープラーニングのライブラリになっている。
但し、簡単に書ける分、複雑な構造を書きたい場合は、TensorFlowで書く必要がある。
Section2:強化学習
Section2-1:強化学習とは
長期的に、報酬を最大化出来るように、環境の中で、行動を選択出来るエージェントを作る事を目標とする機械学習の一分野。
行動の結果として、与えられる利益(報酬)をもとに、行動を決定する原理を改善していく仕組み。
これまで見てきた、教師あり学習/教師なし学習とは違った、新しい分野。
Section2-2:強化学習の応用例
【マーケティングの場合】
環境:
会社の販売促進部
エージェント:
プロフィールと購入履歴に基づいて、キャンペーンメールを送る顧客を決めるソフト
行動:
顧客ごとに送信、非送信の2つの行動を選ぶ
報酬:
キャンペーンのコストという負の報酬と
キャンペーンで生み出されると推測される売り上げという正の報酬を受ける
【囲碁の場合】
環境:
対戦相手のモデル
エージェント:
盤面に応じて、次の一手を考えるソフト
行動:
手を打つ
報酬:
勝敗
Section2-3:検索と利用のトレードオフ
強化学習については、事前に完璧な知識があるという前提ではなく、
不完全な知識をもとに行動しながら、データを収集して、最適な行動を身についていく事になる。
そこで、過去のデータの中で、ベストだった行動ばかりを常に取り続けると、他の可能性を見つける事が出来ない(他にもっといい行動があるかもしれない)。
逆に、過去のデータにない、未知の行動ばかりを取り続ければ、過去の経験を生かせない、全く学習しない行動ばかりになってしまう。
強化学習では、過去のベストな行動と、未知の行動とのトレードオフを調整する事が重要になる。
Section2-4:強化学習のイメージ
①(行動)エージェントが、環境に対して、方策πを実施する。
②環境が、状態sになる。
③状態sをエージェントが観測する。
④状態sにおける報酬価値vを、エージェントが受け取る
という①~④が一連の強化学習の流れになる。
Section2-5:強化学習の差分
これまでやってきた、教師あり/なし学習と、強化学習との違いは、
教師あり/なしでは、データに含まれるパターンを見つけ出して、データから分類や回帰を予測する事が目標だったが、
強化学習では、優れた方策を見つける事が目標になる。
Section2-6:行動価値関数(Q関数)
行動価値関数:
価値を表す関数は、状態価値関数と行動価値関数の2種類ある。
状態価値関数:ある状態に注目する場合
行動価値関数:状態と価値を組み合わせた価値に注目する場合
Q学習は、行動のたびに、行動価値関数を更新する学習を行う。
Section2-7:方策関数
方策関数:
方策ベースの強化学習において、
ある状態で、どのような行動をとるのかの確率を与える関数。
例)
状態aであれば、行動Aをとる確率が80%、行動Bをとる確率が20%
状態bであれば、行動Aをとる確率が20%、行動Bをとる確率が80%
というように、同じ行動でも状態によって、確率が変わってくる。
Section2-8:方策勾配法
方策勾配法とは、方策を再帰的に更新していくようなモデル。
数式は次の通り:
$\theta^{(t+1)} = \theta^{(t)} + \epsilon \nabla J(\theta) $
勾配降下法の時と同じような数式になっていて、
次の方策の時に、$\epsilon \nabla J(\theta) $を加えるような形になっている。
ここで$J(\theta)$は、方策の良さを表しているもので、これについては、いくつか定義方法がある(何をもって良いと判断するかの基準)。
次のような定義方法がある:
・平均報酬:行動をとった時に生まれる、価値全部の平均をとったもの。
・割引報酬和:報酬を足し合わせる時に、行動した時間に対して、未来の報酬ほど価値を減衰させる方法(一番時間の近い価値を重要視する)。