しんさんのブログ

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

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

著者は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と同じ内容のようです。

「融けるデザイン ―ハード×ソフト×ネット時代の新たな設計論」を読みました

融けるデザイン ハード×ソフト×ネット時代の新たな設計論

融けるデザイン ハード×ソフト×ネット時代の新たな設計論

ユーザーインターフェース(UI)のデザインとはどうあるべきか。
何を指導原理として考えるべきかを示してくれる良書です。
使いやすいとかわかりやすいインターフェースが良いと思いこまれていますが、それだけではUIのデザインとしては表面的であると述べています。
かつての日本の携帯メーカーが物理ボタンにこだわりタッチパネルの導入が遅れたりしたことがありましたが、アップルのデザインは単にそれだけではなくもっと深くよく考えられていると解説されています。
自己帰属感や運動主体感という自己感があればそれは道具の透明化がなされたといい、透明化される対象は道具から機械、コンピュータそしてインターネットへと進んできています。
今後情報そのものを透明化するという方向に進化していきます。
透明化とか融けるとはなに?と思いましたが、本書を読んでその意味が解りました。
例えば手は意識しなくても指が自由自在に動きます。鉛筆を持てばその先端は自由自在に動き、しかもまるで自分の体の一部のような感覚になります。これを透明化と言うようです。
今後のインターフェースのデザインはこの透明化を意識しなくていけないし、これを指導原理にすればUIをどうすればいいかで途方に暮れることもなさそうです。
著者が影響を受けたという、深澤直人氏の著書も本書と同時に読むとさらに理解が深まります。

科学未来館で「9次元からきた男」のプレミアム試写会に行ってきました

お台場の科学未来館で開催された「9次元からきた男」というショートムービーの試写会に行ってきました。
まずは、以下のリンク先から予告編と未来館の特設サイトをご覧ください。
www.youtube.com
www.miraikan.jst.go.jp
いかがでしょうか、不思議な感じの映像です。
監督はホラー映画の呪怨などを手掛けた清水監督です。
テーマになっている9次元というのは、現代物理学の最先端の研究成果である超弦理論から理論的に予想されるこの世界の空間次元の数です。
このように書くとものすごく難しい話のように思うかと感じる方もおられるかと思いますが、ムービーではそれがわからなくても美しい映像とストーリーを楽しめます。
世界は原子からできているというのは、よく知られていますが原子はクォークというさらに小さい素粒子からできていることが知られています、ではクォークは何からできているのかということを突き詰めていくと、ひものように1次元の広がりをもったものからできてるのではないかという予想がされています。
さらに宇宙のすべての素粒子がたった1種類のひもの振動する様子の違いだけで説明できるという理論が、超弦理論です。
これだけではなく、このひもが存在する世界が、9次元の世界だというわけです。
我々の宇宙は3次元ですので残りの6次元はどこにあるのか?という疑問がでますが、それに対する答えもこのムービーの中で見ることができますし、普段は見ることのできない次元というものを、3Dドームシアターの特徴をフルに活用して迫力ある映像にしています。
よくある科学映像とは違い、エンタテインメント性もあり30分はあっという間でした。
真空の揺らいでいる様子や、ニュートリノヒッグス粒子そして宇宙の始まりを映像で見ることができるとても興奮し、そして幸せな時間でした。
科学館で上映されるわけですから、単にきれいな映像だけではなく科学的にも正確な映像を目指したそうです。
その背景には、あの物理学者の大栗先生のアドバイスがあります。大栗先生はこのムービーの監修をされていて、科学的に正しい映像になるように多くのアドバイスをしたそうです。
試写会では、上映後に大栗先生によるレクチャーがあり、とても楽しい時間でした。物理を楽しそうにお話している大栗さんを見て、かつて物理の勉強をしていた時のあの時間を思い出しました。
物理の研究はもちろん楽しいだけではなく苦しいことも多いですが、宇宙の真理に少しでも近づくことができる仕事というのはうらやましいです。
帰宅後、以前読んだ大栗先生超弦理論の解説書を再び読み始めました。

大栗先生の超弦理論入門 (ブルーバックス)

大栗先生の超弦理論入門 (ブルーバックス)

映像を見た後の、大栗先生のレクチャーで見逃した部分が多くあったのに気付いたので4月20日後の正式公開が始まればまた見に行こうと思います。
何度も見ることで新しい発見が沢山ありそうです。

javaからprocessing3.xを使う

Javaのコードの中でProcessingを使いたいと思い検索すると、以下のページに非常にわかりやすく書いてありました。
tkitao.hatenablog.com
上記ブログに書いてある方法でほぼうまくいきましたが、以下所だけ実行時に、ブログでは
java -cp /Applications/Processing.app/Contents/Java/core/library/core.jar:. MySketch
と書いてありますが、正しくはコロンをセミコロンにしないといけないです。
java -cp /Applications/Processing.app/Contents/Java/core/library/core.jar;. MySketch
と書くのが正しいです。

バージョン管理システム

今はSVNとGitの両方を使っていますが、gitの方に軸足を移しつつあります。
私の使っている環境をメモとして書いておきます。

リモートリポジトリは、GitHub, BitBucketを使い分けています。
GitHubは、無料版では公開プロジェクトのみですので、公開したくない場合には使えないです。
BitBucketは、無料版でも非公開プロジェクトの作成が可能です。ただし、コミット可能なのは5人までのようです。
この二つに関する比較は以下のリンクに詳しいです。
GitHubとBitbucketの比較:Webデザイナーの業務にはBitbucketが向いている | Internet | ウェビンブログ

GUIを使ったクライアントとして、SourceTreeを使っています。

機械学習を勉強してみる:「ITエンジニアのための機械学習理論入門」: 2章を読んでみた。最小二乗法は理系出身者にはなつかしい。

2章のテーマは最小二乗法です。
最小二乗法と聞いて理系出身者なら実験データのフィッテングを思い出すのではないでしょうか。
実験データを直線フィッテングすることで、ある物理量の推定を行うなど学生実験でやったことあるという方もおられると思います。
この章で解説されているのは、そういう手法と大きく変わるものではないのですが、機械学習という観点から、注意すべき点や間違いやすい点を丁寧に説明しています。

まず最初はデータの多項式近似ということで、あたえられたデータセットに対してそれらの点を一番うまく近似できる曲線を求めてみようということをやってみます。
いわゆるこんな図を書いてみるということです。(点は与えられたデータで、実線が推測された曲線。サンプル02-square_error.pyを実行した結果)
f:id:wshinya:20160128123735p:plain
この曲線を求める方法が、最小二乗法なのです。
いろんな曲線の可能性がある中で、誤差が最小になるという条件を課すとこういう曲線が決まります。
とここでちょっと待てよと、そもそも多項式近似というからには何次の多項式か決めてから推定する曲線を決めないといけないですよね。
それに関しては、本書で詳しく述べられています。
ちなみに上のグラフのMが展開の次数で、0, 1, 3, 9次の多項式近似となります。
本書にしばしば出てくる「数学徒の小部屋」というコラムには、最小二乗法での近似多項式の次数とデータセットの個数の満たすべき条件が、数式の変形も飛ばすことなく詳細に述べられています。
この本を読むときには、コラム欄だからと読み飛ばさずコラム欄をきちんと把握することで、機械学習の理論的なバックグラウンドを正しく取得できますし、さらに深い学習の手がかりを得ることもできます。ただし、大学で線形代数を学んでいないと結構難しい内容ですしあくまでコラムですので説明を端折っている部分もありますから、このあたりは別の資料の解説を参照した方が分かりやすいかもしれません。
ここの部分の解説は以下の著者のブログにあります。
enakai00.hatenablog.com
ここまで見ると、この最小2乗モデルは解析的に解けるわけで、逆に解析的に解けるから最小2乗法を採用したともいえるのですが、著者はこれに関して簡単で明確な数学モデルを採用する理由として、データサイエンスにおいてモデルの数学的性質がよくわかっていれば得られた結果の意味を深く理解でき、現実のビジネスに役立つ判断指標へより適切に変換できると述べています。

さて、上の4つのグラフの右下をみると、赤い曲線が入力データセットの青い点を全部踏んでいますが、見るからに無理やり通っている感じがします。
例えばデータが2点だけの場合、直線y=ax + bはaとbを両方(M=2)動かすことができればこの2点を通る直線は必ず引くことができます。これがオーバーフィッテイングです。
このオーバーフィッティングをどうやって検出し解析するかについても述べられています。
ここまで読んで初めて、多項式の何次までの近似がいいのかが、分かるわけです。
いいかどうかの基準を決めるにも、仮説・検証という科学的な手法が重要になります。
これを簡単に言ってしまえば、曲線を決めるのに使ったのと別のデータを用意しておいて、曲線がその別のデータにもうまくフィットしているかどうか調べるといいよ、ということです。

最後にデータが多ければオーバーフィッテングが起きにくいんじゃないかという当たり前の疑問に対して実際にコードを走らせて確かにその通りだよ、と解説しています。

2章は以上です。この章を読めば、最小2乗法の最小限のしかしもっとも重要なエッセンスのすべてを習得できます。