2018-01-01から1年間の記事一覧
categorical dqnの論文はこちら A Distributional Perspective on Reinforcement Learning https://arxiv.org/pdf/1707.06887.pdf 元のdqnでは報酬を一つの値として扱っているが、分布として扱うことによって学習のパフォーマンスが向上したというもの。 ま…
しばらくdatalabを使っていたらブラウザからアクセスできなくなった。 対応するportにchromeからアクセスすると、このページは動作していません、という画面になる。 gcloud compute ssh hogeでVMに直接入ることは可能だったのでいろいろ試してみるとこんな…
google colaboratoryで強化学習のプログラムを書きつつ動かしていたのだが、少し間があいて1ヶ月ぶりくらいに動かしてみたら、学習がまったく進まなくなってしまった。こんな感じで青が以前、赤が今回。 自分のプログラムを同じ状態に戻して↑の状態なので、…
以下のような形で書いたところうまく表示されない [tex: x_{i,j} + x_{j,k}] このように表示される [tex: x{i,j} + x{j,k}] 少しググってみるとこちらのブログでその原因が解説されていた はてなブログのTeX記法で数式を書く時用のチートシートと注意点 - ぴ…
元の論文はこちら [1706.10295] Noisy Networks for Exploration 常にその時点で価値の高い行動を取り続けた場合、最初に価値が高くなった行動が取られ続け、別の行動を取る可能性がなくなってしまう。それを防ぐため元のDQNではε-greedy法と呼ばれる手法を…
元の論文はこちら [1511.05952] Prioritized Experience Replay DQNで学習を進めるための重要なテクニックとしてexperience replyというものがあり、これはメモリにためておいたstateやactionの記録をmini batchとしてランダムに取り出して学習させるという…
あるカラム(group_id)の値でグルーピングした上で、カラム(value)の値が重複しているgroup_idを抽出したい。 # table: example group_id value 1 1 1 2 1 3 2 1 2 3 2 3 例えば上記のようなテーブルがあった場合は、group_id=2のvalue=3が重複している。 以…
Double DQNの実装に必要になるちょっとした計算についてメモ 2つの2次元tensor x, yを用意し、"xの各行において最大の値を持つ要素"と同じ位置にあるyの要素を取得する >>> x = torch.rand(3,5) >>> x tensor([[ 0.0778, 0.6633, 0.4953, 0.1461, 0.4691],…
強化学習の性能を改善する方法の一つであるdueling networkについて調べたのでメモ。まず参考にしたのはこちらのqiitaの記事 【深層強化学習】Dueling Network 実装・解説 詳細な部分についてはこちらの論文を参考にした [1511.06581] Dueling Network Archi…
以前迷路の学習を方策勾配法でやってみて、それをこちらにまとめた 方策勾配法とニューラルネットワークで迷路を学習 - MEMOcho- これと同じ方法をgym-retroに適用してソニックの学習を試してみた。ちなみに先に結果を書いておくと、スコアをちゃんと取れる…
OpenAI Retro Contestの環境構築そのものは既にまとめてくれている方がいて、大変わかりやすかった。この通りにやったら簡単にGym Retro Integrationを動かすことができた。ありがとうございます。 OpenAI Retro Contestの「Gym Retro Integration」でソニッ…
DQNで実装したものはネット上でよく見かけるが方策勾配法を使ったものは意外と見つからないのでやってみた。 題材はこちら 第5回 ⽅策勾配法で迷路を攻略|Tech Book Zone Manatee 私はこの連載で強化学習の基本的な実装方法を学んだがとてもわかりやすかっ…
タイトルに書いたエラーが出たのでわかったことをメモ とりあえず解決に最も有用だった情報はこれ Leaf variable has been moved into the graph interior - autograd - PyTorch Forums 生成したtensorの要素を直に書き換える処理をした上で、backwardを行う…
cocos2dxで開発している際、タイトルのようなことがあったので原因を調査。 ちなみにiosはxcodebuild、androidはgradleでビルドしていた。 iosとandroidのビルド結果を見比べると、iosのビルド時には以下のようなビルドオプションがついていることがわかった…
コンフリクト解消をしそこねて>>>>>>みたいなマーカーがそのまま上がってしまってる場合がある。以下に紹介されているようにhookを書いてがマーカーが含まれていればcommitをキャンセルすることで回避できる。 [Git]コンフリクトをよりスマートに解消したい…
vectorから特定の条件でフィルターをかけて要素を削除するにはerase-removeというイディオムがある。std::remove_ifで条件に当てはまる要素を後ろに移動させ、返り値のiteratorから元のvectorの最後尾までをeraseにかける、というもの。 cf. std::remove_if…
photonとの接続が切断されたことを検知する方法を調べたのでメモ 公式のドキュメントはこちら https://doc.photonengine.com/ja-jp/realtime/current/reference/analyzing-disconnects photonのサーバとクライアントはheartbeatのメッセージを投げあって、接…
c+11で書いていてクラス内のメンバの中に、コンストラクタで初期化子が定義されてないものがあったのでどのような挙動になるのか調べてみた。 これらを見るとわかりやすい C++11: Syntax and Feature C++の初期化は分かりにくい - ぷろみん まず、staticが付…