読者です 読者をやめる 読者になる 読者になる

Itsukaraの日記

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

ITのお勉強

【DL、RL、A3C+】Montezumaの得点要因を検証中(12:40更新)

これまで書きましたように、A3Cにpseudo-countを入れたコード(A3C+)で、Atari2600のMontezuma's Revengeで最高得点2500点が出たり、平均得点が400点を超えるなど、良い結果が得られています。学習途中でi-node不足で異常終了したため、既存pseudo-countデー…

Variational Autoencoderの20次元中間層内距離の確認結果

昨日(8/31)、全脳アーキテクチャ勉強会のオフ会に参加したところ、NTT研究所の山田さんがVariational Autoencoderの話をされ、MNISTのデータに対して20ノードの中間層まで圧縮できる話を伺いました。これだけ圧縮すると、いわゆる「おばあちゃんニューロン」…

【DL、RL、A3C+】Montezumaで2500点出ました!

直前の記事記載のように、A3c+でMontezuma's Revenge学習中にi-node不足で途中終了したので、終了前のpseudo-countデータ無しで途中再開して試しています。学習曲線は以下のようになってます。 平均得点が元のレベル元に戻るまで5M STEPS弱掛かってしまいま…

【DL、RL】A3C+のpseudo-count無しの途中再開は今ひとつ

直前の記事で、pseudo-countの保存機能の無い版のソースコードを公開したと書きましたが、やはり、pseudo-count無しの途中再開は、中断前の平均得点に戻るまで時間が掛かりそうです。下記が、pseudo-count無しでの再開の状況です。誰か、pseudo-countのセー…

【DL、RL】A3Cでのpseudo-countの実装について

DeepMind社の論文[「[1606.01868] Unifying Count-Based Exploration and Intrinsic Motivation」記載のpseudo-countのA3C on pythonでの実装について、防備録を残しておきます。なお、論文は抽象化して書かれていますが、当方の当面のターゲットはAtari2600…

【DL.A3C+pseudo-count】Montezumaで平均400点達成

直前の記事で途中経過を記載した件、途中でエラーとなり終了してしまいました。「No space left on device ...」と出ていますが、「df -h」でみると容量はまだ余っている様子。よく見ると「os.makedirs」でエラーが出ているので、i-node不足の可能性があり、…

【DL.A3C+pseudo-count】Montezuma途中(22M)経過良好

少し前の記事で記載しましたように、Deep LearningのA3C論文再現コードに、最新論文の手法(pseudo-count)を加えて改造し、トライアル実行中です。途中経過ですが、非常に良好なので報告させていただきます。下記のように、18M STEPS辺りから平均点数が急激に…

【DL.A3C+pseudo-count】Montezumaで5つの部屋に到達!!

8/26の記事で記載しましたように、Deep LearningのA3C論文再現コードに独自の改造を加えて色々試しています。A3Cだけでは殆ど点数が取れないゲーム「Montezuma's Revenge」で高得点を取ることが現在の目標です。A3C論文再現コードを書いたmiyosudaさんから、…

【DL.A3C】Montezuma' RevengeでScore=400の動画

直前の記事の続きです。400点の動画も撮れましたので、載せておきます。100点取れていれば、400点になるのは、ごく簡単ですね。ご参考まで。 youtu.be 注意 コマンドを少し改造しました。最新版をGithubからfetchのうえ、動画変換は、下記コマンドを利用くだ…

【DL.A3C】Montezuma' RevengeでScore=100の動画

相変わらず、Deep LearningのA3C論文再現コードを改造して遊んでいます。以前に書きましたように、Montezuma's Revengeでは、殆どのエピソード(1回のゲーム)で得点が0です。しかし、得点が得られた時にプレイ動画を見たいと思いました。そこで、プログラムを…

Google Cloud PlatformでのA3C実験環境構築スクリプト

Deep Learningの実験にクラウドは欠かせないと感じており、Google Cloud Platform (GCP)やAmazon Web Servicesの無料試用枠を活用しています。今後は、Microsoft AzureやIBM Softlayerの無料試用枠も活用する予定です。実験にあたっては、色々なクラウドで同…

再:Deep Learningで特定ゲームのSOREが低い理由

一度誤った情報を書いてしまったので、削除の上、新たに書かせて頂きます。 経緯 相変わらずA3C再現コードを、Breakoutでの学習曲線の変化を確認していますが、私が参加している勉強会Do2dleでは、A3Cの論文でSOREが低いMontezuma's RevengeのSCOREを上げる…

DQNでのReplay Memory圧縮効果

下記でDeepMindのDQN再現コードを試行した話を書きましたが、当方のマシンではメモリが16GBしかないため、Replay Memoryが0.4M個に制限されていました。そこで、試しにReplay Memoryをメモリ上で圧縮する処理を入れてみたところ、Replay Memory用のメモリサ…

A3Cでのbreakout学習済networkをgithubにアップしました

下記でDeep Learningの最新技術A3Cでゲームbreakoutを試したことを書きましたが、よく考えたら学習済networkをgithubにアップロードするのを忘れていました。先ほどgithubにアップロードしました。試したい方はどうぞ。itsukara.hateblo.jptensorflowが動く…

プロブラム出力データの定期的グラフ化ツール

Tensorboardのグラフが貧弱なので、自分でグラフ化ツールを試作した話を下記で書きましたが、多少アップデートしたので掲載します。少しでも役立つ方がいれば幸いです。itsukara.hateblo.jp新版では、グラフを一度表示後、ファイルに順次追加されていくデー…

K平均法でMNIST文字データの分類を試行

Do2dle勉強会という機械学習関連の勉強会に参加しており、月に2〜3回のペースで集まって、本の輪講などを行っています。一人で本を読んでいるのと異なり、勉強会では本の内容に関して色々と議論するので、とても刺激になって楽しいです。ちなみに、Do2dle…

最新機械学習論文再現コードの修正版をGithubに掲載

下記の記事で書いたA3C再現コードの修正版をGithubに載せました(pull request中)。 ご参考まで。 itsukara.hateblo.jp 掲載場所 修正版:https://github.com/Itsukara/async_deep_reinforce 「Branch」で「breakout」を選択してZIPファイルをダウンロードす…

東京電力「でんき家計簿」データ自動抽出ツールを微修正

かなり以前の記事(下記)で、東京電力「でんき家計簿」の時間別グラフのデータ自動抽出ツールのことを書きましたが、試された方から「動かない!」とのコメントを2件いただきました。少し反応が遅れてしまいましたが修正しましたので、Githubから最新版を入手…

Tensorboardのグラフは、もうすこし何とかならないのか?

Tensorflowでは、ゲームSCOREなどのスカラ値をTensorboardでグラフ化してくれるのはありがたいのですが、グラフが荒すぎます。また、移動平均など、当然必要と思われる機能がありません。せめて、移動平均ぐらいは出して欲しいです。試しに、ゲームSCOREとそ…

Deep Learning最新論文の再現コードを試行(DeepMindのA3C)

前回の記事で書きましたように、DeepMind社の最新論文Asynchronous Methods for Deep Reinforcement Learning、16 Jun 2016に書かれた手法A3C(Asynchronous Advantage Actor-critic)の再現コードをGithubで見つけたので、実際に走らせて試行中。 Pongの学習…

DeepMind社のAtariゲーム攻略論文のコード等を試行中

DeepMind社が有名になるキッカケとなった論文「Playing Atari with Deep Reinforcement Learningの内容を実装して試した記事「DQNをKerasとTensorFlowとOpenAI Gymで実装する」を、深層学習の輪講メンバーで読みながら、実際に実行させて試しています。必要…

機械学習の基本的となる本の読書完了

7月の初旬から読み始め機械学習の本(下記)を読み終えました。内容的には、機械学習というよりも、古典的なデータ分析の話が中心でした。数学的な解説もしっかりと書いてあり、勉強にはなりました。これで、機械学習の基本となる本は、一応読了しました。I…

自宅ITインフラ強化(2016/7/04-10)

先週(2016/7/04-10)行った自宅ITインフラ強化の内容をメモ代わりに記載します。 デスクトップPCにメモリ追加(16GB) 機械学習ではメモリが足りなくなる可能性もあり、早々にメモリを追加しました(16GB)。現在、メモリはかなり安くなっており、約7000円で16G追…

Chainerを幾つかの環境で性能比較

2~3日間、デスクトップPCが起動しなかったので、ノートPCにTensorFlowとChainerを入れて試してましたが、性能が非常に悪かったです。ノートPCはWindows10で、その上でVirtualBox上を動かし、さらにその上でUbuntuを動かしてました。余りに遅いので、Windows…

「深層学習」の省略された数式を自分で確認しました

深層学習を最初から読み始めたのですが、省略してある数式の部分がよく分からなかったので、自分で計算して確認しました。 二値分類のロジスティック関数と微分、尤度、誤差関数と微分 1.1 ロジスティック関数(Sigmoid関数) (2.3.1)1.2 ロジスティック関数の…

機械学習で勾配降下法の収束を加速できるか、ちょっと試行

深層学習のp.37に、誤差関数の谷底に高低差が少ない場合に収束が遅くなることへの対策として、「3.6.5 モメンタム」というものが書かれていました。これは、重み係数の修正量を計算するときに、前回の修正量の定数倍を加えるというもの。機械学習から離れて…

また本を買ってしまった(シンギュラリティ関連)+読書状況

本日、気晴らしに外出した際に、本屋で立ち読みしていたら、シンギュラリティ関連の本があり、ついつい買ってしまいました。まだ読んでいない本や、読みかけの本が沢山あるのに... 先日、機械学習関連の輪講に出てから、本の購入に関する心理的なタガが外れ…

機械学習関連の本を何冊か買いました

本日、機械学習の勉強会に参加しました。30名ぐらいが参加し、3つぐらいのグループに分かれて活動しており、その中で、本の輪講を行っているグループに参加しました。勉強会のタイトルには「初心者歓迎」とは書いてありましたが、みなさん、何らかの形で機械…

とりあえず、AWS無料枠の利用開始

AWS Summit Tokyo 2016に登録した人には、通常の1年間の無料利用枠に加えて、25 ドル分の無料利用クーポンプレゼントを頂けるとのこと。期限が6月30日だったので、とりあえず、AWS無料枠でアカウントを作成し、クーポンの申請を完了しました。クーポンを頂け…

TensorFlowの勉強を再開しました

色々とわき道にそれていましたが、UDACITYのDeep Learning無料コースの勉強を、ようやく再開しました。 環境構築 まずは、TensorFlowを使う環境を再構築しました。DockerのTensorFlow環境は既にあったのですが、WindowsのDocker環境には、色々制限があること…

SORACOMはIOT専用と思ったほうが良い

IOTのテスト用にSORACOMのSIM+USBドングルを買ったのですが、メモリ量が数十KB程度のマイコンでは繋がらないので、WindowsノートPCで使おうと思っていました。しかし、改めてSORACOMサイトで料金を確認したところ、通信回線が上りの場合は料金が安いのですが…

DIGA録画番組名一括変更を支援するツール群の説明補充

DIGAの番組名を一括変更するツール群を2月~3月頃に作成し、日々使っております。ずっと問題なく使っていたのですが、先ほど使った際にエラーが表示され、調べたところ、説明不十分な点に気が付きましたので、説明を補充しました。ご参考まで。GitHub - Itsu…

「みんなのPython勉強会」で頂いたESP8266にハマってます

Pythonの勉強会があると知り、先週参加しました。この勉強会は、Pythonの初心者から熟練者まで、色々な人が集まる会とのこと。今回は、「Pythonデータサイエンス祭り」と題し、Pythonで機械学習を活用するための進め方を中心に紹介されました。非常にタメに…

Python チュートリアルをIPython Notebook形式に変換

前回記事で、Python チュートリアル(2.7系)に記載のプログラム例を、スクリプトとして抜き出しましたが、今回、これにチュートリアルの文章も追加し、Jupyter/IPython Notebook形式に変換しました。これで、チュートリアルの文章も見ながら、各プログラム例…

Pythonチュートリアルプログラム例スクリプト化(全面改訂)

下記記事で作成したファイル群を、出来るだけチュートリアルに合わせて全面改訂しました。 ご参考まで。itsukara.hateblo.jp改めて見たら、前回公開したファイル群はチュートリアルからかなり外れていました。失礼しました

TensorFlowの勉強に必要なDocker導入サバイバルメモ

前回の記事でGoogleのTensorFlowで勉強を始めたことを書きましたが、これにあたっては、Pythonより前に、TensorFlowの学習環境が詰まったDockerイメージを動かすためのDocker環境を構築する必要がありました。Dockerについて、名前は聞いていたものの、使っ…

Pythonチュートリアルのプログラム例をスクリプト化

囲碁の世界チャンピオンがAlphaGoに勝ったのは凄いですね。昔のAIは大したことしかできませんでしたが、ここ数年の進歩は目覚ましいものがあると思っています。各国・各企業・教育機関でも、AlphaGOをきっかけに、機械学習の研究・開発・利用に拍車がかかっ…

Java SE 8 Programmer I (Silver)に合格しました

本日、Oracleの認定試験「IZO-808-JPN Java SE 8 Programmer I」を受験し、めでたく合格することができました。これで、「Oracle Certified Java Programmer, Silver SE 8」の資格が取れました。 資格取得の経緯 Javaは、6年ぐらい前に、ドイツの方が作ったS…

クリップボードへのコピーを簡単化するAndroidアプリ再改訂

前回作ったアプリは、各行の左にあるCボタンを押さないと、書き換えた内容が保存されませんでした。書換えたものが自動的に保存されないのは、ユーザインターフェースとして良くないと感じたので、下記のように仕様を変更しました。 使用方法(README.mdより…

クリップボードへのコピーを簡単化するAndroidアプリ改訂

前回の記事「Android StudioでClipboardMgrを作成しました - Itsukaraの日記」で、クリップボードへのコピーを簡単化するアプリを作成しましたが、今回、ListViewを使って改訂しました。改訂版は、機能が少し異なるため、別の名前(ClipboardManager)としまし…

Android StudioでClipboardMgrを作成しました

1行程度の情報をクリップボードにコピーしたり、クリップボードからペーストしたりすることがよくあるので、そのような情報をいくつか(15行)管理できるアプリ(ClipboradMgr)を作成しました。ご自由にお使いください。github.com 使用方法 各行にテキストを入…

Android Studio版電卓アプリを更に少し修正

Android Studio版電卓アプリを少し使っていて不便と感じた点を改善しました。 ボタンと文字を大きくしました。 計算結果をクリップボードにコピーする機能を追加しました。 他のアプリで計算結果をペーストすることができます。 画面が回転しても計算結果を…

Android Studio版電卓アプリを少し修正

下記記事に書いたAndroid Studio版電卓アプリの件、コードを少し簡潔にしました。具体的には、電卓の各ボタン毎にEventListenerを設定する処理をもっと簡潔にしました。ご参考まで。ちなみに、元々は、ボタン毎の処理(特に+,-,*,/,%)で同じような部分がある…

Javaのシングルトンの使い方を例題で確認しました

Javaのシングルトンについて知りたかったのでJavaでSingletonパターンを実装するのにclassとenumのどちらを使うべきか - SELECT * FROM life;を読ませて頂きました。しかし、シングルトンの定義しか書いていないため、使い方が今一つ分かりませんでした。そ…

Android Studioで作った電卓アプリをCloud9でJavascript化

Android Studioで電卓アプリを作った際に色々と苦労した点を直前の記事に書きました。また、「この程度の処理ならばJavascriptで十分だし、Androidに限らずに使えるので、その方が良いのでは?」思ったことも書きました。そこで、さっそく電卓アプリをJavasc…

Android Studioで電卓アプリを作ってみました

Javaの開発環境としてAndroid Studioを使い、電卓アプリを作ってみました。 公開先:https://github.com/Itsukara/PocketCalc Android Studioのインストール方法と簡単な使い方は、以下を参考にし、分からないところは、必要に応じてググりました。 [Android…

Java8のラムダ式/ストリームはCoffeeScript/Jqueryの真似?

最近のJavaの仕様を確認中です。Java8でラムダ式とストリームが入ったらしいですが、Javascript/CoffeeScript/Jqueryを先に知ったためか、Javaがこれらを真似たように感じました。Javascript/CoffreeScriptでは、元々、関数を記述可能でしたが、Java7までは…

interface、abstractなどの仕様確認(Java認定試験向け)

interface、abstract、initializer、staticの仕様再確認のために、プログラムを書いて試しました。Java認定試験に向けた腕試しに役立つかもしれないので、載せておきます。パッと見て分かる人もいるのか疑問ですが... /* * interface、abstract、initializer…

NodeJS+Seleniumを使ったスクレイピングの雛形公開

これまで書いてきた「NodeJS+Seleniumを使ったスクレイピング」の試行結果の成果として、スクレイピング用プログラムの雛形を作成しました。そのままでは使えませんが、プログラムを作成するうえでの参考としてご利用ください。https://github.com/Itsukara/…

ブログのデザインを変更しました

ブログの中身には関係しないので、見る人にとってはどうでもいいことかもしれませんが、少し前に、ブログのデザインを変更しました。 ヘッダ画像は、スイスのマッターホルンの写真です 昨年(2015年)の9月に、夫婦でスイス旅行した際に撮影した写真です。撮影…