chainerrlの使い方 (python)



Python
Pythonとは
基本的な使い方
IDLE

Jupyter Notebook

Markdown

コマンドプロンプトで実行

仮想環境の構築

仮想環境でIDLEを実行

ライブラリのインストール
pipの使い方

numpy , matplotlib等

graphviz

pytorch

Mecab

Pythonの関数:一覧
共通関数
append , extend

class

copy

csv.reader

csv.writer

def , return

dict , defaultdict

enumerate

exit

for

if

import

in

input

lambda

len

list

min/max

OrderedDict

open/close

os

pickle

print

range

re.split

read/readline

round/floor/ceil

split

sys.argv

time

while

write

zip

・特殊メソッド
 ・__name__

 ・__iter__ , __next__

正規表現、メタ文字

データの型の種類

四則演算 (+ , - , * , /)

コメントアウト (# , ''')

numpy
append

arange

argmax/argmin

array

asfarray

astype , dtype

digitize

dot

hstack/vstack

linalg.solve

linspace

max,min

mean

meshgrid

mgrid

ndim

ndmin

pad

poly1d

polyfit

prod

random

reshape

savetxt/loadtxt

shape

std

transpose

where

zeros/zeros_like

scipy
expit

imread

interpolate

matplotlib
imshow

figure

pcolormesh

plot

quiver

scatter

scikit-learn
GaussianNB

KMeans

KNeighborsClassifier

SVC

tree

chaospy

keras

chainer

chainerrl

pytorch
BCELoss , MSELoss

Embedding

device

Sequential

Dataset, Dataloader

RNN, LSTM

OpenAI gym
Blackjack-v0

CartPole-v0

tkinter
frame, grid

画像表示

画像を切り取り表示

画像を保存

目的別
ステップ関数

1 of K 符号化法

線形補間

配列に番号をつける

ベクトル場を描く

線形回帰, 多項式回帰


公開日:2020/4/12         

■説明
chainerrlは強化学習の計算を容易に行う関数です。インストール方法はこちら

■関数
こちらの強化学習実装例で説明します。chainerrl部分は以下になります。

<基本関数>

def rand_act(): return np.random.choice([0,1]) # ランダムアクション関数を定義要

① q_func = chainerrl.action_value.DiscreteActionValue(h2)

② explorer = chainerrl.explorers.LinearDecayEpsilonGreedy(start_epsilon=1.0, end_epsilon=0.1,
decay_steps=n_episode, random_action_func=rand_act) # ε-greedy

③ ex_rep = chainerrl.replay_buffer.ReplayBuffer(capacity=10 ** 6) # 経験再生

④ phi = lambda x: x.astype(np.float32, copy=False) # 入力型定義

⑤ agent = chainerrl.agents.DQN(q_func, opt, replay_buf, gamma, explorer,replay_start_size=500,
update_interval=1, target_update_interval=100, phi=phi)

⑥ action = agent.act_and_train(state, reward) # アクション決定

⑦ agent.stop_episode_and_train(state, reward, done) # DQN重み更新


動作の理解としては、強化学習の行動を決める⑥が最終アウトプット、 ⑥を実現するのが①、①を実現するのが⑤、⑤へのINPUTが②③④となります。 ⑦はDQN内のニューラルネットワークに使われる重みを更新します。

 

<load関数について>
シミュレーションに時間がかかる場合、学習の途中経過を保存して別の機会に途中から学習を再開するには、load関数を使用します。

agent.load('agent') # 学習開始前に一度定義。'agent'は学習値が入ったフォルダ名


ただしこの関数は、学習値は保存しますがε-greedyの値がリセットされてしまいますので、少し工夫が必要です。 chainerrlのε-greedyの処理が不明なのですが、以下部分のstart_epsilon=1.0という部分を修正します。

explorer = chainerrl.explorers.LinearDecayEpsilonGreedy(start_epsilon=1.0, end_epsilon=0.1,\
                decay_steps=n_episode, random_action_func=rand_act)


ε-greedy法の関数を以下の指数関数と仮定します。

 

この時、係数aが解らないので、係数aを求める必要があります。以下のとおり。

 

従って途中から学習を開始する場合は、上記xに一時停止した時のエピソード数を入れて算出されたyをstart_epsilonに入れれば良いです。 (ただしこれは正確ではありません。そこから新たな指数関数としての減衰が始まるので、初期の減衰量が多いです)









サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



Python
Pythonとは
基本的な使い方
IDLE

Jupyter Notebook

Markdown

コマンドプロンプトで実行

仮想環境の構築

仮想環境でIDLEを実行

ライブラリのインストール
pipの使い方

numpy , matplotlib等

graphviz

pytorch

Mecab

Pythonの関数:一覧
共通関数
append , extend

class

copy

csv.reader

csv.writer

def , return

dict , defaultdict

enumerate

exit

for

if

import

in

input

lambda

len

list

min/max

OrderedDict

open/close

os

pickle

print

range

re.split

read/readline

round/floor/ceil

split

sys.argv

time

while

write

zip

・特殊メソッド
 ・__name__

 ・__iter__ , __next__

正規表現、メタ文字

データの型の種類

四則演算 (+ , - , * , /)

コメントアウト (# , ''')

numpy
append

arange

argmax/argmin

array

asfarray

astype , dtype

digitize

dot

hstack/vstack

linalg.solve

linspace

max,min

mean

meshgrid

mgrid

ndim

ndmin

pad

poly1d

polyfit

prod

random

reshape

savetxt/loadtxt

shape

std

transpose

where

zeros/zeros_like

scipy
expit

imread

interpolate

matplotlib
imshow

figure

pcolormesh

plot

quiver

scatter

scikit-learn
GaussianNB

KMeans

KNeighborsClassifier

SVC

tree

chaospy

keras

chainer

chainerrl

pytorch
BCELoss , MSELoss

Embedding

device

Sequential

Dataset, Dataloader

RNN, LSTM

OpenAI gym
Blackjack-v0

CartPole-v0

tkinter
frame, grid

画像表示

画像を切り取り表示

画像を保存

目的別
ステップ関数

1 of K 符号化法

線形補間

配列に番号をつける

ベクトル場を描く

線形回帰, 多項式回帰