最近読んだ本

普段「読んだ本」として記録しているのは小説だけで、読み終わるのにほとんど時間がかからない漫画や頭から終わりまで順番に読むとは限らない技術系の本は含めていないんだけど、たまには違うことをしてみよう。

統計力学を学ぶ人のために 岩波講座 物理の世界 物理と情報〈3〉ベイズ統計と統計物理 Java並行処理プログラミング ―その「基盤」と「最新API」を究める― ダイナミック・メモリ―認知科学的アプローチ

統計力学を学ぶ人のために』は、古典的なニュートン力学から始まって、原子や分子ひとつひとつの運動に注目するミクロの世界と、熱力学などが扱うマクロの世界との対応付けが分かりやすく書いてあった。また、測定誤差と近似式が当然のように飛び交う本文を読みながら、久しぶりにこういう物理物理してる本を読んだ気分がして、そういう意味でも面白かった。

その流れで『ベイズ統計と統計物理』を読むと非常に理解がしやすかった。この本は、最低限の説明で直感的に理解できるように書かれているので、いくつかの用語が割とあっさりした説明だけで(またはほとんど説明なしで)使われていたりして、その辺の事前知識がないと多少分からないところがあるかもしれない。とはいえ、この本で扱っている対象ー遺伝の法則に基づく家系図の推定、氷の結晶配置のモデル、ノイズを含んだ画像の修復ーはどれも具体的でイメージしやすく、かつそれら一見して関係のなさそうな問題が統計物理アナロジーというひとつの考え方で見事に対応づけられているので、たとえ細かい数式や用語の意味が分からなくても、その面白さは十分伝わったと思う。筆者の文章も、読みやすく分かりやすい。何より筆者がこのテーマを楽しんで、全霊を込めて本を書こうとしているのが、まえがきや行間から伝わってくるのが良い。

もともと強化学習から出発して動的モンテカルロ法(=マルコフ連鎖モンテカルロ法; MCMC)のことが知りたかったために統計力学/統計物理の本に手を出したのだが、思わぬ所で面白い世界を知ることができた。この先あまり使う機会のない知識だとしても、この世界のしくみに関わる知識や新奇なものの考え方を知ることは純粋に楽しい。

Java並行処理プログラミング』も、ある意味これに近いかもしれない。J2SE 5.0のjava.util.concurrentの開発者によって書かれた本書には、Javaの並行処理のしくみやそれを使う際の注意点が余すところなく解説されている。それと同時に、Javaのメモリモデルに関しても、これだけ的確かつ詳細な説明がされているのは(仕様書の類を除けば)現時点でこの本だけだと思う*1。これを読むと、Javaのメモリモデルが、仕様としての簡潔さと現実のアーキテクチャで無理なく実現できることを両立するために、実によく考えられていることが分かる。

最後の『ダイナミック・メモリ』は、この中では自分の専門に最も近いのに、読むのに一番時間がかかった。人工知能といえば記号処理だった時代の本なので、限定された世界を抽象的に記述し尽くそうというのが基本的な姿勢で、その努力には敬意を表しつつも読んでいてやはり違和感がある。理解と想起が表裏一体であることや、予想の失敗が学習を促す、といったいくつかの先進的なアイデアもあるが、まあ一般的な価値で言えば歴史書かな。(一説によるとシャンクのダイナミック・メモリ研究が事例ベース推論の起源とされているようだけど、この本で強調されているような記憶の一般化を、通常使われるCBRではほとんど捨ててしまっているので、むしろ多くのCBRシステムはダイナミック・メモリの考え方とは相反しているように思う)

リンク集

*1:この本が出るまでは、メモリモデルの話題に触れているのは結城浩さんのデザパタ本ぐらいしかなかったんじゃないかな