しんさんのブログ

科学や技術のこと読書のことなど

%matplotlib inlineについて

最近、jupyter notebookを使い始めた人から質問を受け、僕も前にはまったことがあるのでメモを残します。
jupyter notebookでノート上にグラフを書こうと思い例えば、

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10, 10, 0.1)
y = np.arctan(x)
plt.plot(x, y)

のように書くと、グラフが表示されません。
コード自体は間違っていないので、理由が分からずはまってしまうことがあるようです。
これを解決するには、先頭で、

%matplotlib inline

を1行書けば解決します。
他にも起動時に

jupyter notebook --matplotlib inline

とする方法でもOKです。
以下のブログに、説明があります
yagays.github.io

「人工知能入門」 小高知宏/著 を読みました

人工知能入門

人工知能入門

人工知能全般について、浅く広く知るための本です。
ディープラーニング機械学習の特定のアルゴリズムについて知りたいとか、機械学習の理論的な側面について知りたいと言った人向けの本ではありません。
それよりは、いったい人工知能ってどんなもので、何を目的に研究・開発されているのかを知りたいという欲求にこたえてくれる本です。
各章末に演習問題が載っていたりするのでおそらく著者が大学の講義で利用しているのではないかと思われます。

人工知能とは何かから、その歴史、そして機械学習とは何かニューラルネットとはどういうものなのかを数式をほとんど使わないで完結に説明しています。
なぜかQ-Networkの説明というちょっとそれは他のバランスから考えて難しい内容じゃないかと思うような記述もありますが、全般的には理系でない人でも、人工知能につて知りたいと思う方なら、短時間で読めてしまえます。
本の雰囲気がいかにも教科書って感じなので、ちょっと見た目はとっつきにくく感じますが読んでみると、あ、簡単に読めてしまったとなりました。

Sublime3 で日本語ファイル名が文字化けする

4Kディスプレーを最近導入しました。
その際に、Windowsで文字の大きさを、
コントロール パネル\デスクトップのカスタマイズ\ディスプレイ
で変更しました。
カスタムで180%にしたのですが、この変更を加えるとsublime3のサイドメニューやタブの日本語表記が文字化けしてしまうようです。
いわゆる豆腐になってしまいます。

対処方法は、

Preferences.sublime-settings に
"dpi_scale": 1.0,
を1行加えればOKです。
ただし、文字フォントは100%サイズですので、小さくなります。

この情報は以下のサイトに載っていました。
wist.hateblo.jp

「人工知能は人間を超えるか ディープラーニングの先にあるもの」を読みました

マスコミでも積極的に人工知能について解説しておられる東大の松尾先生による人工知能ディープラーニングにつていの解説書です。
技術書ではないので、専門家でない方も十分楽しんで読めますし、深層学習や人工知能ってなんだかわからないけど人類の脅威になるの?といった疑問や不安をお持ちの方は本書を読んで安心できるのではないかと思います。
人工知能は人の職業を奪うとか、将来人間をはるかに超える人工知能ができて人類の危機が訪れるというセンセーショナルな言説が飛び交っていますが、そういう議論にたいして人工知能を専門に研究する著者だからこその冷静で、事実に基づく論理的な解説が展開されていて読んでいて好感を持てます。
SFまがいの解説書が多い中、本書は数少ない頼りになる解説書であると思います。
学生、エンジニア、社会人、人工知能機械学習ディープラーニングに興味のあるすべての人にお勧めです。
読めば、ディープラーニングってそういうことだったのかと非常にクリアに理解できます。

Jupyter Notebookを使い始めました

いまさらながら、Jupyter Notebookを使い始めました。
マークダウンで数式もtexをそのまま持ってこられますし、メモもpythonコードもグラフも画像も全部入れられて非常に便利です。
一度使い始めるともう他には戻れません。
導入には以下のサイトの解説が非常に参考になりました。
myenigma.hatenablog.com

以下のサイトはjupyter notebookの話と絡めて画像認識の話も書いてあり、参考になります。

http://derivecv.tumblr.com/post/95686651704
derivecv.tumblr.com

「カメラ?カメラ!カメラ?!―計算をはじめた未来のカメラたち 」 を読みました

著者はNIIの研究者の児玉さんとサイエンス関係の本の編集者の財部で国立情報学研究所が監修しています。
一見タイトルや装丁が初心者向きに見えますが、内容は本格的にカメラの原理からBokeh(いわゆるレンズによりピンボケ)の仕組みについて原理から詳しく説明していて、専門家が読んでも十分に楽しめます。
私はこの本を読んで、ピンホールカメラからスタートしレンズでなぜピンボケが起きるのかが整理できました。
最も面白いところは、筆者らの研究による、撮影現場に戻れるカメラとは何を目指し、いま最先端の研究でどこまで到達できているのかを明確に説明している部分です。
イメージセンサーの技術進歩だけでなく計算機の進歩を合わせると、写真は単なるピクセルの集まりではなく多くの情報を含んでいることが分かります。
ライトフィールドカメラという光線情報を記録できるカメラが最近発売されていますが、このカメラはレンズアレーの大きさや数の問題から画素に入る光がどうしてもすくなくなるとか、解像度の問題とかまだ実用には問題があるのですが、連続してボケを変化させた3次元ボケを使うと多数の位置が異なるピンホールカメラの画像に分解でき、これはまさにライトフィールドカメラで撮影したのと同じことですので、後でピントの位置を変更したり、視点を変えたりできます。
さらに、光源のライトフィールドまで取得すれば、撮影現場の光源条件を変えた画像までも作れるという、撮影現場に影響を与えるカメラまでできてしまうという
夢のような未来を描き出しています。
しかもその未来が遠い未来でなく、目に見える現実に起こる未来のカメラとしての可能性を著者は示してくれています。
この本は、著者の児玉さんのこれまでの研究の集大成をまとめたものであると同時に、この分野の研究の未来を垣間見せてくれるもので、画像処理にかかわる方には強くお勧めします。

Machine learingのオンライン講義

機械学習系で有名なオンライン講義には、StanfordのNgさんの講義があります。
Andrew Y. Ngさんの講義にはいくつかのバージョンがあります。

1) CS229 
2) CS229A
3) Coursera Ml class

この3種類の違いについてまとめました。

CS229とCS229Aの違いですが、Ngさんのページによると
http://www.robotics.stanford.edu/~ang/contact.html
CS229Aは応用で、CS229は基礎という位置づけのようです。
基礎といっても簡単という意味ではなく、より数学的に厳密で理論的な内容という意味ですので
難易度としてはCS229の方が高いです。
(3)のCourseraのMLの講座はCS229Aと同じ内容のようです。