Itsukaraの日記

最新IT技術を勉強・実践中。最近はDeep Learningに注力。

【DRL,Montezuma】GCPアカウントが停止し続行不能。残念!

DRL用にGoogle Cloud Platformの無料試用枠を使ってましたが、サンフランシスコに行っている間、何故か、学習が進まなくなり、帰国後に確認したところ、Googleから通告が来ていて、GCPアカウントが削除されていました。

やはり、無料試用枠の複数回利用は、検出・阻止されるようです。

これで、Montezuma's RevengeのGCPでの試行はできなくなってしまいました。残念です。

Googleからの通告(日本語、11日前)

Google からのお知らせ

このたび Google では、お客様の Google Cloud Platform と API の請求先アカウント HHHHHH-HHHHHH-HHHHHH を一時的に停止いたしました。お客様のアカウントで不審なアクティビティが検知されたためです。

この問題を解決するには、https://support.google.com/cloud/contact/verify でお客様のアカウント情報をご確認ください。

Googleからの通告(英語、11日前)

Dear Developer,

We have recently detected that your Google Cloud Project AAAAAAAA (id: AAAAAAAA-nnnnnn) has been having an issue with your billing account. We are unable to verify the billing information you provided. Your project AAAAAAAA (id: AAAAAAAA-nnnnnn) has been suspended and a notification has been sent to the Billing Account owner of this project. Please work with them in order to resolve the issue.

We will delete your project unless the billing owner corrects the violation by filling out the Account Verification Form within three business days. This form verifies your identity and ownership of the payment instrument. Failure to provide the requested documents may result in permanent account closure.

GCP API利用でのエラーメッセージ

ERROR: (gcloud.compute.instances.list) Some requests did not succeed:
 - Project blocked; abuse detected.
  • その2
-その1
ERROR: (gcloud.compute.copy-files) Could not fetch instance:
 - Project blocked; abuse detected.
  • その3
ERROR: (gcloud.compute.instances.start) Some requests did not succeed:
 - Project blocked; abuse detected.

ERROR: (gcloud.compute.instances.describe) Could not fetch resource:
 - Project blocked; abuse detected.

【DRL, Montezuma】スライド再更新+再々更新

Montezuma's Revengeのスライド更新時に、OpenAI Gymの方から結構詳しく聞かれた「pseudo-countの実装方法」を書き忘れたので、再更新しました。ソースを読めば分かると思っていましたが、それほどわかりやすいソースでもないので... (この後、誤りに気付き、さらに更新しました)

www.slideshare.net

OpenAIのInterviewでのフィードバック受けスライド更新

現在、サンフランシスコに来ており、昨日、Montezuma's Revengeの強化学習の件で、OpenAIのInterviewを受けました。いろいろと質問があり、そこで答えたことや、それ以外も含めてスライドの内容を追加・修正いたしました。ご興味のある方はご覧ください。ちなみに、今回の旅費・宿泊費は、ほぼOpenAI持ちです(1日分の宿泊費だけ自費)。

www.slideshare.net


なお、今回のInterviewで自己紹介に使ったスライドも、ついでにuploadしましたので、ご興味のある方はどうぞ。

www.slideshare.net


更に、今回のInterviewでは結局使いませんでしたが、これまでgithubに載せたプログラムのことなどをスライドに纏めました。ご参考まで。

www.slideshare.net

それにしても、ここ10年ぐらに、英語での会話はあまりしていなかったので、結構冷や汗ものでした。それでも、ある程度、自分のためになった気がします。

【DRL, Montezuma】thread毎多様性の効果確認!(12/7修正)

A3Cをベースにした環境で、Montezuma's RevengeのDeep Reinforcement Learningを行っていますが、thread毎に多様性を持たせた効果が示せました。(12/7訂正)

下記サイト掲載の学習状況をご覧ください。

上記サイトには8個のグラフが掲載され、最初の2つ(gcp10、gcp20)は、全てのthreadが同じパラメーターで学習しています。これらは、途中からSCOREが完全に0に落ち込み、回復していません。参考までに、下記にgcp10のグラフを載せます。

http://52.193.119.202/montezuma-x/log.gcp10.montezuma-x-yaml-pscm-ff-fs2.r.png

これに対し、gcp30〜gcp80は、thread毎に学習パラメータを変えてあります。下に行くほど、パラメーターの多様性が上ってます。gcp30〜gcp80は、一度0になっても、しぶとく回復しています(12/7訂正。本記事初版ではgcp60のSCOREが完全に0に落ち込んでいましたが、その後回復し、gcp30~gcp80の全てで効果が確認できました)。参考までに、下記にgcp60の例を載せます。

http://52.193.119.202/montezuma-x/log.gcp60.montezuma-x-yaml-pscm-ff-fs2.r.png

もう少し学習を続けてみるつもりですが、上記で、thread毎の学習パラメーターの多様性が、学習安定化に対して効果があることを十分に示せたと思います。

【DRL, Montezuma】これまでの最高得点3600点取得動画

Thread毎の環境の多様性を高めた実験で、これまでの最高得点である3600点を取得した動画が撮れました。結構良い動きをしているように見えます。ただ、ライフが減っても気にしない動きをしています。ライフが減るイベントをうまく回避できれば、もっと先まで行けるのですが...

youtu.be

【DRL, Montezuma】到達部屋追加でスライド更新(20161205)

懲りずに続けているMontezuma's Revengeの実験ですが、到達部屋が1つ増えましたので(下図最下段の右端)、スライドを更新しました。下記がこれまでの到達部屋です。

f:id:Itsukara:20161205234507p:plain

なお、Thread毎の環境の多様性を高めた実験の途中結果を下記に置きました。今のところ、SCOREが0点で貼り付く現象は置きておらず、そこそこ順調です。gcp70のグラフを見ると、SCOREが何回も0点になっていますが、しぶとく、400点に回復しています。ただ、残念ながら、点数はあまり上がっていません。

ちなみに、DeepMindの論文記載の到達部屋は下記であり、到達部屋に関してはDeepMindを超えています。
f:id:Itsukara:20161225040856p:plain

【DRL, Montezuma】thread毎にパラーメータを変える機能を追加

VMを1台に限定すればGCPを後数日使える想定でしたが、今朝、クレジットを使い切りました。1日毎に課金をチェックするらしく、残りクレジットが420円であることに気がついた時には、既に、残りクレジットがもっと少なかったようです。

何も実験しないのは寂しいので、結局、またGCP無料試用を始めました。試用開始に際し、氏名、住所、電話番号、クレジットカード番号などを入力するのですが、電話番号とクレジットカードは複数持っていたので、これらは変えたところ、特に問題なく、新しい試用を開始することが出来ました。googleさん、ありがとうございます。

せっかくGCPを再度使えるようにしたので、thread毎にパラメータを変える機能を追加しました。学習履歴長(tes)、pseudo-rewardを計算するときの係数(psc_beta)、指数(psc_pow)をthread毎に変えられるようにしました。

github.com

thread毎にtes, psc_beta, psc_powを指定するオプションは、「--tes-list、--psc-beta-list、psc-pow-list」の3つで、「--tes-list=29,29,29,29,40,40,40,40」といった書き方になります。

このように実行時オプションで指定したら、とても見にくかったので、結局、各VM毎にこれらのパラメータをyamlファイル化し、「--yaml=yamlファイル名」で取り込めるようにしました。yamlファイルの例は下記です。実行時オプションと共用できるように、listではなく、文字列にしています。

tes_list : "40 ,40 ,40 ,40 ,29 ,29 ,29 ,29 "
psc_beta_list: "0.018 ,0.018 ,0.018 ,0.018 ,0.020 ,0.020 ,0.020 ,0.020 "
psc_pow_list : "2.0 ,2.0 ,2.0 ,2.0 ,2.2 ,2.2 ,2.2 ,2.2 "

トレーニング状況確認用の画面作成スクリプトも多少変え、thread毎のパラメータを表示するようにしました。確認画面例はここをご覧ください。ちなみに、まだ学習を始めたばかりなので、thread毎のパラーメータ多様化の効果は分かりません。

これで実験が容易になったので、しばらくは、これで実験する予定です。