pinesの日記

気ままに書くブログです

強化学習2日目

昨日の振り返り

強化学習のやり方には方策反復法と価値反復法がある
・方策反復法は結果から動き方を変え、価値反復法は予測するその後の報酬の合計を最大化するように方策を変える
・価値反復法のなかにはsarsaとQ学習法があり、次の段階の動きを知らずとも学習できるQ学習法(方策オフ型)のほうがよさそう
ε-greedy法で行動価値関数が最大になる行動を決定
→行動価値関数が正しいかわからないのでsarsaまたはQ学習法で行動価値関数を更新していく

※ただし価値反復法は制御対象が離散マルコフ過程でないと×

倒立振り子課題を強化学習で実装してみる

ローカルの環境構築メモ

つくりながら学ぶ!深層強化学習 PyTorchによる実践プログラミング | 株式会社電通国際情報サービス 小川雄太郎 | 工学 | Kindleストア | Amazon
これのp.73に書いてあるものを入れよう

連続値の状態を表形式表現するには?

・CartPoleの状態はカートの位置、速度、角度、角速度で決まる→これを離散化すればQ関数を表形式で表現できる
関数メモ
digitize
numpy.digitize — NumPy v1.21 Manual
binsの部分が閾値を決定している ここでは先に定義したbinsを持ってきてる
returnの部分
i=1~4においてdigitaized配列の各値×(分割数)iを計算し、その和を返す
enumerate
配列の要素にindexをつけるやつ?→なんでこれを使ってるのかがわからない

Q学習で実装

Agent:Q関数の更新と次の行動を決定→Brainクラスのオブジェクトをメンバ変数にもつ(Brainのひな型から作ったオブジェクト(データのまとまり)をクラス内で使える変数として持ってる(self.brainってやつ)) Brain:Q学習を実装(状態の離散化、Qテーブルの更新とQテーブルから行動決定)