Start_python’s diary

ふたり暮らし

アラフィフ夫婦のフリーランスプラン

本格的に機械学習アルゴリズムを勉強していきます

機械学習とはどういうものか?

機械学習の分類にはさまざまな分類方法がありますが、このアルゴリズムを次の3種類に分ける考え方があります。

教師あり学習(Supervised Learning)

過去のデータから将来起こりそうな事象を予測する用途に使われます。

教師なし学習(Unsupervised Learning)

アルゴリズム自身がデータを探索してその内部に何らかの構造を見つけ出します。

強化学習Reinforcement Learning

どの行動が最大の報酬を生み出すかを、試行錯誤を通して突き止めます。

 

今回は強化学習について勉強していきたいと思います。

 

本日の課題と目標

gymの倒立振子を使って強化学習のための準備

 

プログラムのコード

import gym

env = gym.make("CartPole-v0")                           # GUI環境の開始(***)

for episode in range(100):            # 試行回数
  observation = env.reset()                             # 環境の初期化
  for t in range(50):                 # 1試行の行動回数
    env.render()                                        # レンダリング(画面の描画)
    action = env.action_space.sample()                  # 行動の決定
    observation, reward, done, info = env.step(action)  # 行動による次の状態の決定
    print("=" * 10)
    print("episode=",episode)
    print("t=",t)
    print("action=",action)            # 0:左移動 1:右移動
    print("observation=",observation)  # カート位置、カート速度、ポール角度、ポールの先端速度
    print("reward=",reward)            # 報酬:棒が垂直に立つようにすると報酬が増える
    print("done=",done)                # True:棒が倒れたと判断(ポール角度が0.2以上)
    print("info=",info)                # 未使用:デバッグに役立つ診断情報

env.close()                                             # GUI環境の終了

実行すると倒立振子の様子と下記の情報がプリントされていきます。

f:id:Start_python:20191124142921g:plain

==========
episode= 0
t= 0
action= 0
observation= [ 0.01766668 -0.23248437 -0.02206151 0.2368038 ]
reward= 1.0
done= False
info= {}
==========
episode= 0
t= 1
action= 1
observation= [ 0.01301699 -0.03705429 -0.01732543 -0.06275554]
reward= 1.0
done= False
info= {}
==========
episode= 0
t= 2
action= 1
observation= [ 0.01227591 0.15831172 -0.01858054 -0.360854 ]
reward= 1.0
done= False
info= {}
==========

 

解説

gymがインポートできないときは
「pip install gym」
gymモジュールのインストール

「env=gym.make("CartPole-v0")」
CartPole-v0は倒立振子のゲーム名

「action_space.sample()」
カートをランダムに移動する(0で左、1で右)

 

 

動作確認と各パラメータを理解できるようになれば、次回から強化学習アルゴリズムを一つずつ勉強していきます。

 

 

参考サイト

qiita.com

qiita.com

dev.classmethod.jp

 

 

保存ファイル

lesson43.py

 

 

文責:Luke