The jonki

呼ばれて飛び出てじょじょじょじょーんき

Ubuntu on WindowsでOpenAI/Gymを動かす

f:id:jonki:20170107213330p:plain:w300

下記の方のセットアップでUbuntu on WindowsでOpenAI/Gymを動かしてみましたが,CartPoleはできたけど,Pongなどのatariのゲームが動かなかった.
qiita.com

環境

  • python 3.5.2 :: Anaconda 4.2.0 (64-bit)

エラーと対策

gym[atari]を入れようとするとエラー.

$ pip install gym[atari]

(略)
 Could not build atari-py: Command '['make', 'build', '-C', 'atari_py/ale_interface', '-j', '7']' returned non-zero exit status 2. (HINT: are you sure cmake is installed? You might also be missing a library. Atari-py requires: 
zlib [installable as 'apt-get install zlib1g-dev' on Ubuntu].)
(略)

下記を入れたら動きました

$ sudo apt-get install cmake
$ sudo apt-get install swig
$ sudo apt-get install zlib1g-dev
$ pip install gym[atari]

最後の方が入れているものを参考にしました.anacondaは消してないけど.
pip install gym failed, can not install pachi-py · Issue #204 · openai/gym · GitHub

OpenAI GymでQ学習してみた

f:id:jonki:20170103212740g:plain

今更ながらOpenAI Gymに手を出してみました.OpenAI Gymは強化学習の検証プラットフォームです.色々なゲームがGymとしてあるので,自分のアルゴリズムを簡単に検証できます.以前最良経路をQ学習で求める記事を書きましたが,Gym向けに書けばGUIも付いてきて面白いですし,コードをGistで共有していろんな人が見れるのが素晴らしいですね.OpenAI GymについてはQiitaなどの日本語記事も多くありますが,公式ドキュメントをさらっとやるのが良いと思います.pipで簡単に入ります.また結果のアップロード法なども書いてあります.

この記事は私がDQNを勉強するにあたっての勉強段階のメモになりますが,せっかくなので記事にしておきます.

今回やろうとしたことは下記サイトさまの完全な2番煎じです.とても丁寧に導出があるのでわかりやすいです.
OpenAI GymのFrozenLakeをQ学習で解く - 壁は通り抜けられませんよ


ちなみに今回の私の結果はこちらです.お決まりのQ値更新をε-greedy法でやってます.エピソードが20k回を超えたあたりで頭打ちしてるのがわかります.εは0.1なので0.9ぐらいのところで頭打ちになりそうな気がしますが,このFrozenというゲームでのActionは失敗する(床が凍ってるので失敗して違うところに行く)ためこのようになってるのでしょうか.εを大きくすると探索が多くなるので学習回数が稼げるような今回では性能はもっと低くなりました.ちなみにこのFrozenゲームで"Solved"扱いとなるのは,100回以上の連続エピソードで平均報酬が0.78となるときの模様.
gym.openai.com

OpenAIのページにGistのリンクを関連づけできますが,こちらにも転載しておきます.
gist.github.com


またこのコードは学習に100000回,テストに1000回のエピソードを実行しています.テスト時はグリーディにQ値が高いものだけを選んでいるのでまぁまぁの報酬を得られています.ちなみにGymページ上で公開する結果は,実際にエージェントのアクションを実行したものが記録されているので,プログラム上で学習・テストのフェーズに分けていても区別されないので注意が必要です.もしSolvedまでのターン数を少なくするためには学習を途中で打ち切るための工夫が必要になります.

###### LEARNING #####
episodes      : 100000
total reward  : 31345.0
average reward: 0.31
Q Value       :[[ 0.59249091  0.55120355  0.55790889  0.53586489]
 [ 0.37375349  0.28501838  0.32681906  0.50252414]
 [ 0.43046317  0.41389927  0.40868551  0.47895268]
 [ 0.22864477  0.3356128   0.31680292  0.45435774]
 [ 0.61381787  0.36289281  0.40866098  0.40079206]
 [ 0.          0.          0.          0.        ]
 [ 0.19441865  0.16082773  0.31126553  0.19699278]
 [ 0.          0.          0.          0.        ]
 [ 0.49801749  0.32274067  0.38407111  0.64344424]
 [ 0.41881865  0.69643086  0.31627336  0.38262692]
 [ 0.64931095  0.42975229  0.29664946  0.29694533]

 [ 0.          0.          0.          0.        ]
 [ 0.          0.          0.          0.        ]
 [ 0.55541199  0.54653454  0.76694065  0.59618378]
 [ 0.75235909  0.926072    0.83294958  0.78563857]
 [ 0.          0.          0.          0.        ]]
###### TEST #####
episodes      : 1000
total reward  : 741.0
average reward: 0.74


まだ理解が足りてないところもあるけどひとまず今回はこんなところで.

2016年にAmazonで買った物

2016年も終わるのでAmazonで今年お世話になった商品(書籍除く)をメモします.

ガジェット編

SONY コンパクトオーディオシステム CAS-1 CAS-1 WC

SONY コンパクトオーディオシステム CAS-1 CAS-1 WC

今年買ったガジェットでは一番高かったけど,その価値はあったもの.デスク作業に特化したハイエンドのオーディオなので作業も捗ります.小さいのにすごい音を出してくれます.ただ音声の入力端子が少ないのが惜しい.


CAS-1は基本的にPS4につながらないので,torne用に買いました.安いけど評判が良かったので迷わず購入.あんまりこだわりないけど安っぽいのは嫌,という人にはちょうどいいと思う.


BOSEのNCモデルと迷ってこれ.意外と重さは感じず,NCの機能はバッチりでした.アンビエントモードやタッチ操作が思いの外便利で良いです.


ここからAnkerシリーズ.10000mAhの割に軽いし質感も良いです.旅行用などに購入.


こちらは日常持ち歩き用.カバンに仕込んでおくために購入.


旅行用.サイズも小さく収まりが良いです.2つあるのでスマホiPadとか同時に出来て安心.


Kindle Paper Whiteを長時間保っていると疲れるので,これを貼り付けて使用.


Galaxy S7 Edge用に.気軽にポイー,と置けて充電できるので会社にも同じやつ置いてあります.


収納の少ないバッグに購入.縦型,横型あってどっちも買いました.


いろいろ突っ込めるバッグ.背面のメッシュやベルトもしっかりしてるのでPCの持ち運びに便利.


日常編

ちょっと高いので迷ったけど,明らかに睡眠の質が変わって上半身が凝らなくなりました.


会社用に.簡易蓋なので保温力はそこまで高くないけど,洗うのが簡単で気に入りました.衛生的.


木曽工芸 ウッドローラーマッサージャー 足うら思い

木曽工芸 ウッドローラーマッサージャー 足うら思い

会社に置いてます.足裏ゴロゴロするの好きなんです.


手ピカジェル [指定医薬部外品] 300ml

手ピカジェル [指定医薬部外品] 300ml

アルコールシリーズは色々使ったけど,これが適度な粘度でさらっと使えて便利.


洗濯機の洗剤投入口がベドベドになって嫌だったので購入.手も汚れず革命でした.


Call of Duty以来,やり込めたゲーム.


珪藻土のバスマット.濡れた足で立つと吸引する感覚が癖になります.衛生的っぽいしオススメ.


白元アース レンジでゆたぽん(Lサイズ) 330086

白元アース レンジでゆたぽん(Lサイズ) 330086

この時期は足が冷えるので.思いの外,朝まであったかいです.


我が家の風呂の収容力が少ないので購入.髭剃りとか化粧水とかいろいろ置いても大丈夫で便利.



これ以外にもいろいろ買いましたが,まぁこんなところ.来年もどうぞよろしくお願いします.

Anker PowerPort Qiの台を3Dプリンタで作った

f:id:jonki:20161218211449j:plain:w450

AnkerのPowerPort Qiを買ったんですが,Galaxy s7 edgeの充電スポットに当てるのにコツが必要だったので,気軽にぽいっとおいて充電できるように台を作りました.Qiの充電台製品があるのは知ってますが,このAnkerのやつを使わないのも勿体無いので.


裏側とスマホ乗せた時の画像はこんな感じ.Ankerのケーブルがぴったり収まるようにしました.Up Plus2の印刷サイズ限界が12cmなのでしょうがない.実用上は特に問題ありません.
f:id:jonki:20161218211457j:plain:w450
f:id:jonki:20161218210946j:plain:w450

作ったモデルはこちらにアップしてあります.
http://www.123dapp.com/123D_Design/Anker-PowerPort-Qi-Case/6472398www.123dapp.com

node-dash-buttonでのMACアドレス

node-dash-buttonで(dasherが利用してるライブラリ)でAmazon Dash ButtonのMACアドレスを探すスクリプトがあります.
github.com

モノによっては製造者に'Amazon Technologies Inc.'と表示されるようですが,私の場合は下記の2つ.前者のunknown (udp)のMACだとうまくいかず,後者のBroadcom (アメリカンの無線企業)のarpで見つけた方のMACアドレスを利用するようにしたところうまくボタン押下を検出できるようになった.でも前者のvendor調べたらAmazonなんだよね.

MACアドレス検索 - UIC

Possible dash hardware address detected: xx:xx:xx:xx:xx:xx Manufacturer: unknown Protocol: udp
Possible dash hardware address detected: yy:yy:yy:yy:yy:yy Manufacturer: Broadcom Protocol: arp

またDash Buttonを自分用IoTボタンにする場合,商品登録してクーポン適用購入した後でも無効化すればIoTボタンとしてまた遊べた.もったいないのでどうせなら商品買った後に遊ぼう.
Amazon.co.jp ヘルプ: Dash Buttonを無効化する