スライドデザインとテンプレート
研究には必ず発表がつきもので、その際にプレゼンテーションソフトを使って作ることはもはや必須スキル。
外側に向けてわかりやすく自分の研究内容を伝えることも非常に重要な事と思います。
この手のことは何度も言われていて、様々なサイトや書籍で紹介されています。(自分も特にこのサイトには大変お世話になりました。)
…で、いざ自分もそんなスライドを作ってみよう!と意気込むわけですが、1からテンプレートを作るのは非常に手間がかかるわけで、そこで挫折してしまう事が多いと感じました。
幸いにして僕の所属する研究室には、そういうデザインにすごく詳しい先輩がいて、その人が素晴らしいスライドテンプレートを公開してくださっているので、1年間メインのスライドテーマとして使わせていただいた感謝の意味も込めて紹介させていただきたいと思います。
@MOGIE_RISHが公開しているDeep Blue Slideです。
とても見やすいスッキリとしたデザインに加えて一番気に入っている点は、ページ番号が右上にでかく表示されていること。
デフォルトの設定だと右下にちょこんと表示されている場合が多く、あれだと見にくいんですよね。
あとで質問する場合には、xxページのスライドを見せてくださいとページ番号で指定する場合が多いので、ページ番号を大きくすることは重要です。
実際に作ってみるとこんな感じ(卒業研究のスライドから)。
色もほとんどデフォルトの色使いで見やすいものになると思います。
手間を掛けることなく見栄えのするスライドを作りたいときにDeep Blue Slide、お勧めです。
iPhoneでCloudMagic使ってみた
iPhone/Android向けメール管理クライアントにCloudMagicなるものがあるらしい。
複数アカウントでも爆速検索!ドコモメールにも対応した『CloudMagic』でメール管理が超捗る! | TABROID(タブロイド)
ふむふむ…これは良さそうだ。今までiOS標準のメールアプリを使っていたのだが、こいつの不満点として
- 通知がポップアップで出てこないのでspモードメールの見逃しが多かった
- メールを既読にした直後にスムーズに未読を通知するバッチが消えない
とまぁいろいろと思うところはあったものの、標準アプリならではのiOSとの親和性の高さはやっぱりサードパーティ製アプリより高いよなぁ(?)と、だましだまし使っていたがこれを機にメインのメールアプリを切り替えてみよう!
さらにdocomoは最近になって出る出る詐欺を繰り返し、難産の挙句ようやくでてきたimap版spモードメールともいうべき、ドコモメールを出してくれたので、ついでにこいつも導入してみたい。
ちなみにiPhone版spモードメールとドコモメールの何が違うのかは以下の表にまとめてみた。
項目 | spモードメール | ドコモメール |
---|---|---|
受信プロトコル | POP3 | IMAP |
受信メール扱い | 一定期間で削除 | 1GB/2万件まで無期限保存 |
クラウド | 非対応 | 対応 |
その他送受信可能容量が10MBに増えていたり、Wi-Fi送受信ができたり、端末にメールをキャッシュしてオフライン時に閲覧可能になったりと、細かい点で使いやすくなっている。*1
で、こいつを設定しようと以下のページを参考に設定。
【Androidレポート】ドコモメールをCloudMagicで使う方法
よゆーよゆーと思っていたら意外とハマるところがあったのでメモ。
まず、今までドコモメールを一度も使ったことのない人は先にドコモメールを有効化しておかないとCloudMagicで設定してもうまく行きません。(あたりまえだけど…てっきり自動で有効になるもんだと思ってたので…思い込みって怖い)
僕のケースの場合、今までspモードメールしか使ったことがなく、ドコモメールは一度も使ったことがなかったのでまずは以下の記事を参考にドコモメールを有効に。
【メール】iPhoneでも利用開始! 「ドコモメール」の設定方法を徹底解説 | iPhone女子部 - 女子部員がiPhoneのアプリ、アクセサリー、裏ワザ情報などを楽しく発信!
記事の真ん中あたりの【もともとspモードメールを使用していた場合】を参考にiPhoneにプロファイルをインストールしてドコモメールを有効化しました。
あとはCloudMagic側の設定をリンク先のとおりに設定。
ここでも一つ注意点があって、リンク先のページではAndroid版CloudMagicの設定をしています。今回はiPhone版のCloudMagicを設定するのですがドコモメールの設定一覧*2を見ると、iPhone、iPadからのimapサーバの指定はimap.spmode.ne.jpではなくimap2.spmode.ne.jpとなっていたので、そこだけ修正。
これでうまく設定することが出来ました。一つ注意点をいうと、spモードメール時代に受信したメールはドコモメールのクラウドには残っていないので、消えてしまうことでしょうか…
まぁ僕は友達も少なくたいしたメールもなかったのでなんの問題もないね!
TheanoでDeep Learning
最近の機械学習界隈はDeep Learning一色なので、流行りに乗っかってやってみます。
実際に自分が環境構築してみて、ネットワークをCPUとGPUの両方で動かしてみました。
環境構築
今回はLinux Mintを使用して環境を構築しました。Debian/Ubuntu系のOSなら基本同じように設定できるはずです。(家にLinux環境が無かったなんて言えない)
自分の忘備録のためにも書き残しておきます。興味ない方は下まですっ飛ばしてください。
OSインストール
OSはこちらからダウンロード。今回はLinux Mint 16 "Petra" KDE版 64bitを使ってみました。
Pythono+Theano+CUDAインストール
PythonとTheanoのインストールはこちらを参考に設定しました。
$ sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ libopenblas-dev git
$ sudo pip install Theano
python-devはpython本体のパッケージです。python-numpyとpython-scipyはTheanoの依存関係のために必要なパッケージとなっています。ちなみに中身は行列とか便利に扱えるライブラリっぽい。(もしかしたらsudo aptitude installとか使えばこのへんの依存関係を気にしなくていのかもしれませんが)
python-pipはpythonのパッケージ管理ソフトです。Theanoはこれ経由で入れておきます。
次にCUDAのインストールです。これはこちらを参考にしました。
nvccのダウンロードは以下から。Linux Ubuntu12.04 64bit DEBのパッケージを選択。
https://developer.nvidia.com/cuda-downloads
ダウンロードしたらインストール。
終わったらPATHの設定をする。インストールしたCUDAのバージョンによってはPATHの書きかえが必要かもです。
$ export PATH=/Developer/NVIDIA/CUDA-5.5/bin:$PATH
$ export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA-5.5/lib:$DYLD_LIBRARY_PATH
次にGPUドライバが入っているかを確認。
$ sudo grep NVIDIA /var/log/Xorg.0.log
[ 1312.602] (II) Module glx: vendor="NVIDIA Corporation"
[ 1312.602] (II) NVIDIA GLX Module 319.60 Wed Sep 25 14:24:11 PDT 2013
[ 1312.603] (II) Module nvidia: vendor="NVIDIA Corporation"
[ 1312.604] (II) NVIDIA dlloader X Driver 319.60 Wed Sep 25 14:04:14 PDT 2013
[ 1312.604] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
[ 1312.604] (II) NOUVEAU driver for NVIDIA chipset families :
[ 1312.609] (II) NVIDIA(0): Creating default Display subsection in Screen section
[ 1312.609] (==) NVIDIA(0): Depth 24, (==) framebuffer bpp 32
...(中略)
ログを見てドライバが当たっていることを確認。当たってなければ別途インストールしてください。
最後にnvidia-settingsをインストール。
ここまでで無事環境構築は終了です。
ソースコードとデータセットの入手
正直Theanoの動作確認には、Theanoでちょいと書いてあるソースであれば何でもいいのですが、今回はdeeplearning.netからStacked Denoising Auto-Encoderアルゴリズムで実装された手書き数字認識器を動かしてみます。
まずはソースの入手。
https://github.com/lisa-lab/DeepLearningTutorials
データセットは以下で入手できます。ちなみにこれはmnistの手書き数字のpklパッケージ版です。
http://www.iro.umontreal.ca/~lisa/deep/data/mnist/mnist.pkl.gz
今回はSdA.pyの実行をしてみますが、この際SdA.pyのソースコードが保存されているフォルダから見て「../data/mnist.pkl.gz」の位置にデータセットがないとうまくデータを食ってくれなかったりします。
実行結果
CPUモードとGPUモードで比較してみます。
その前に当方のハードウェア的な環境は以下のとおりです。
CPUモード実行結果
CPUモードで学習するには、CPUフラグをONにして実行させます。
$ HEANO_FLAGS=mode=FAST_RUN,device=cpu,floatX=float32 python SdA.py
... loading data
... building the model
... getting the pretraining functions
... pre-training the model
Pre-training layer 0, epoch 0, cost 71.64814
Pre-training layer 0, epoch 1, cost 63.687415
Pre-training layer 0, epoch 2, cost 62.29181
Pre-training layer 0, epoch 3, cost 61.580305
Pre-training layer 0, epoch 4, cost 61.15378
...(中略)
Pre-training layer 2, epoch 13, cost 176.49464
Pre-training layer 2, epoch 14, cost 176.34824
The pretraining code for file SdA.py ran for 235.43m
... getting the finetuning functions
... finetunning the model
epoch 1, minibatch 50000/50000, validation error 4.080000 %
epoch 1, minibatch 50000/50000, test error of best model 4.220000 %
epoch 2, minibatch 50000/50000, validation error 3.480000 %
epoch 2, minibatch 50000/50000, test error of best model 3.690000 %
epoch 3, minibatch 50000/50000, validation error 2.920000 %
...(中略)
epoch 36, minibatch 50000/50000, validation error 1.430000 %
epoch 37, minibatch 50000/50000, validation error 1.430000 %
Optimization complete with best validation score of 1.420000 %,with test performance 1.370000 %
The training code for file SdA.py ran for 284.60m
結果はPre-Trainingで235.43分、Fine-Tuningで284.60分となりました。
GPUモード実行結果
GPUモードで学習するには、GPUフラグをONにして実行させます。
$ THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python SdA.py
Using gpu device 0: GeForce GTX 660 Ti
... loading data
... building the model
... getting the pretraining functions
... pre-training the model
Pre-training layer 0, epoch 0, cost 71.648135
Pre-training layer 0, epoch 1, cost 63.68741
Pre-training layer 0, epoch 2, cost 62.29181
Pre-training layer 0, epoch 3, cost 61.580305
Pre-training layer 0, epoch 4, cost 61.15378
...(中略)
Pre-training layer 2, epoch 13, cost 176.49468
Pre-training layer 2, epoch 14, cost 176.34826
The pretraining code for file SdA.py ran for 93.74m
... getting the finetuning functions
... finetunning the model
epoch 1, minibatch 50000/50000, validation error 4.030000 %
epoch 1, minibatch 50000/50000, test error of best model 4.290000 %
epoch 2, minibatch 50000/50000, validation error 3.330000 %
epoch 2, minibatch 50000/50000, test error of best model 3.840000 %
epoch 3, minibatch 50000/50000, validation error 2.900000 %
epoch 3, minibatch 50000/50000, test error of best model 2.880000 %
...(中略)
epoch 42, minibatch 50000/50000, validation error 1.470000 %
epoch 43, minibatch 50000/50000, validation error 1.470000 %
Optimization complete with best validation score of 1.440000 %,with test performance 1.320000 %
The training code for file SdA.py ran for 119.48m
学習のアルゴリズム上繰り返しの回数が同一のものとならず、ちょっとアンフェア(GPUで計算させた方が今回は繰り返し回数が多かった)な感じですが、それでもこっちの方が速いですね。結果はPre-Trainingで93.74分、Fine-Tuningで119.48分となりました。
結果比較
今回はCPUとGPUでそれぞれ手書き数字文字認識をさせたところ、Pre-Trainingで約2.51倍、FIne-Tuningで約2.38倍高速に計算をさせることができました。
もちろん環境や計算の繰り返し回数で大きく結果が変わる可能性はあるのでご参考程度に…
高速に計算が出きると色々はかどると思うので、Deep Learingの際はGPU計算できる環境を整えることをおすすめします。