しんさんのブログ

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

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

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

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

ユーザーインターフェース(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乗法の最小限のしかしもっとも重要なエッセンスのすべてを習得できます。

現代思想12月号 人工知能特集を読みました

現代思想 2015年12月号 特集=人工知能 -ポスト・シンギュラリティ-

現代思想 2015年12月号 特集=人工知能 -ポスト・シンギュラリティ-

現代思想12月号び人工知能特集をお正月休みに読みました。
NIIの新井先生と小島先生の「東ロボくんから見えてきた、社会と人類の未来」という対談が面白かったです。
ちなみに東ロボくんというのは人工知能を使って東大入試が突破できるかというNIIのプロジェクトで、新井先生がリーダーになって数年前から実施されています。時々偏差値いくつを取ったというような報道で話題になることもあり、研究者だけでなく一般の人も知っている人が結構いると思います。
対談ではこの東ロボくんを題材にして、人工知能とはどういう物かそれがもっと発達すると社会に何が起きるかについて結構熱く語り合っています。
お二人のスタンスが違っていて、新井先生は人工知能に対して警鐘を鳴らす立場で小島先生はどちらかというと楽観的であるように思えました。
お二人が自分の立場から一歩も譲らずに論を戦わせているのは読んでいてひやひやもしましたが、人工知能というものが今こういう立場にあるのだなということを客観的にわからせてもくれました。
2人の論争の中で、人工知能が社会や経済にどういうインパクトを与えるか、という議論がありました。
今の失われた20年で疲弊し将来に対しても悲観的な論調が多い日本にる研究者と、景気が回復して今は将来に不安が少ないアメリカの研究者では人工知能に対する考え方も違うんじゃないかな、などど考えました。
人間の職業を奪ってしまうととるか、人工知能が人間の労働の肩代わりをして生産性をあげてくれると取るのか、人工知能の将来とは別に今おかれている社会によってその評価が変わってしまうように思えました。
この対談については、小島先生が自身のブログに書いておられます。
d.hatena.ne.jp
この対談の他にも、人工知能に関する興味深い記事が多く読み応えのある内容でした。

機械学習を勉強してみる:「ITエンジニアのための機械学習理論入門」: 1章を読んでみた結果データサイエンスが何でサイエンスというかが分かった

1章は導入なのでデータサイエンスと機械学習についての関係やそれぞれがどういう意味を持っているかを解説しています。
そもそも、何でデータサイエンスとかデータサイエンティストとか"サイエンス"という言葉を使うのかについて、以前から謎でした。
単にサイエンスとつければ信頼感があるからかな、などと思って深く考えていませんでしたが、この本ではその理由が明確に述べられていていました。
「科学」と名付けらているからには、科学の要件を満たさなければいけいないというと逆説的ですが、科学と名乗るからには何らかの仮説を立て、データからそのモデルを検証することが必要です。さらに、検証されたモデルを、一般化して未知の現象の説明、未来の予想を行うことができる必要があります。
単にデータを解析してデータに含まれる事実を抽出するだけなら、それでは科学とは呼べません。
仮説が反証できて、客観的である必要がありそれを論理的に言葉(数式)で説明できなければサイエンスにはならないのです。

1章ではさらに機械学習でも用いられるいくつかの手法が大まかに解説されていますが、これらはそれぞれ後の章でくわしく述べられています。
さらに、サンプルコードを実行するための解析ツールのPC上での環境設定の仕方が詳しく解説されています。
この分析ツールの準備の項の最初に、「本書で解説するアルゴリズムは当然のことながらプログラムのコードとして実装して、実行することが可能です」というくだりがあるのですが、素晴らしいです。このさりげない一文に著者の自信のようなものがにじみ出ています。
というのも、機械学習の解説や記事を読むとこの部分がすっぽり抜け落ちていたり、既存の機械学習ライブラリをブラックボックスとして使っているだけだったりします。
そういう解説をいくら読んでも、結局本質的な理解に至らないと感じていました。
本書は、まえがきに"機械学習の基礎となるアルゴリズムを根本から、ごまかさずに解説してある"と述べているようにきちんとコードに落として明確に解説してあります。

ところで、1章の最後の実行環境のセットアップは、本の中に含まなくてもWebもサポートページか何かで解説すればよかったのかなと思います。
この部分だけ、他に比べて不釣り合いに詳しすぎるしこういう内容はすぐに陳腐化しますから、本文になくてもよかったのになと思います。