2024-07-28

"集合知プログラミング" Toby Segaran 著

原題 "Programming Collective Intelligence"
"Collective Intelligence" を機械翻訳にかけると「集合知」と出る。なにやら宝の山を思わせるような...
しかし、情報をただ集めるだけでは、大衆の叡智に体臭がたちこめ、情報過多シンドロームを患う。集合知の元になるのは確かにデータだが、きわめて流動的で、こいつを活用するのは至難の業。それには知を高めてこそ...

本書は、統計情報に機械学習のアルゴリズムが絡んでいく物語である。データの収集やパースのやり方、効率的なデータ構造の持ち方、あるいは、ネット上に公開される API の利用など、いわば機械学習の入門書といったところ。
サンプルコードでは Python が採用され、プリミティブ型では List と Dictionary が多用され、可読性もいい。そして、データ収集、分析のためのライブラリ群を紹介してくれる。
尚、當山仁健、鴨澤眞夫訳版(オライリー・ジャパン)を手に取る。

登場するアルゴリズムは、大きく分けて「教師あり学習」「教師なし学習」の二つ。
教師あり学習では、ベイジアンフィルタ、決定木、K 近傍法、ニューラルネットワーク、サポートベクトルマシン(SVM)が...
教師なし学習では、クラスタリング、多次元尺度構成法、非負値行列因子分解、最適化が...
これらのアルゴリズムに、ユークリッド距離、ピアソン相関係数、Tanimoto 係数、ドット積(内積)、条件付き確率、エントロピー、ガウス関数といった数学が絡んでいく。
要するに主に問われている事は、データの関連性とその距離や確率、そして、これらの次元的マッピングや可視化である。こうした図式化は、人口分布、流行予測、株式市場の動向といった現象と重なり、行動経済学的ですらある。

具体的な事例は、購入やレンタルした商品の情報からユーザに推奨する方法、膨大なデータから類似したアイテムを発見してクラスタリングする方法、数多くの解決策の中から最適なものを選ぶ方法、オークションの最終価格を予測する方法、カップルになりそうなペアを探す方法など。
例えば、Amazon で本しか買っていなくても、類似のユーザに関連づければ、映画のオススメもできるといった具合。どんな些細な個人情報も、集団化して分類器にかければ、金になるってことだ。年齢、性別、家族構成、住まい、保険契約、プロバイダ契約から、お酒の嗜好や音楽の好みまで、データの集合体として組み立てれば、なんでもあり。
そして、ほんの些細な情報漏洩も... 情報収集社会から行動モニタリング社会へ、まったく油断も隙もならぬ時代を実感させられる。
さらに、遺伝的プログラミングに触れ、アルゴリズム自体を自動生成するアルゴリズムまでも登場。もはや人間様は不要ってか。いや、カモは必要だ!

おまけで付録には、日本語テキストを処理するためのサンプルコードが紹介される。英語のように単語と単語の間に空白があるような言語システムでは、デリミタで悩むことがなく、そのまま正規表現にかけたりできるが、日本語の場合そうはいかない。文章解析では、昔から悩ましいところ。こいつに、g さんの PageRank アルゴリズムを喰わせた日にゃ...

2024-07-21

"Beautiful Testing" Tim Riley & Adam Goucher 編

テストにビューティフルとは、なんとも馴染みにくい形容である。開発工程において、最も泥臭く地道で根気のいる仕事。テストケース、おいらの周りでは検証リストと呼んでいるが、この膨大なリストと睨めっこしながら、実際にテストを実行していくのは思いっきり辛い!ちまちました項目を挙げていく眼力は、まるで姑チェック!おまけに、それで完全に網羅できたなんて、どこにも保証がないときた。
とはいえ、テスト環境、おいらの周りでは検証環境と呼んでいるが、これを構築するのは結構楽しい。プログラミング言語、ハードウェア記述言語、数値演算言語、グラフィックツール、画像フォーマットなどを組み合わせ、スクリプト言語で全体を制御する。こうした統合環境を構築していると、システムを支配した気分になる。自動化して手懐けちまえば、ちょっぴり美しくも見え、何よりも愛着がわく。手のかかる子ほど可愛い... と言うが、その類い。
ならば、自動化に至る作業までも自動化してくれなくっちゃ... AI 君、よろしく!人間よりも人間臭い AI の出現を願いつつ...
尚、大西建児監訳、児島修訳版(オライリー・ジャパン)を手に取る。

「ソフトウェアテスティングは常に挑戦です。どれほど真剣に取り組んだとしても、プログラムが完全に安全で、バグフリーであることを証明できません。アルゴリズムの完璧さを証明出来たとしても、その確信が正しいかどうかは、現実世界によって検証されるのです。」

美しい... というのは、あくまでも主観的な審美眼。美しさが何であるかを完璧に知る者は、いないだろう。芸術家ですら、美的感覚は個性によるもの。それでも、美しさ、単純さ、真理といったものには、なにがしら関連性がありそうだ。
自然界には数学に看取られた美がある。例えば、黄金比がそれだ。構造化プログラミングにも、オブジェクト指向にも、設計手法にも、そのような感覚を覚えることがある。
では、テストはどうであろう。自動化や効率性といったものに、それを見い出すことはできそうか...

「何かを指して『美しい、素晴らしい』と言うとき、そこには大きな『喜び』か『満足』のどちらかが存在します。」

本書は、テスター、プロセス、ツールという三部で構成され、23 もの体験談が掲載される。ビューティフルテスティングとは、「ビューティフルなテスターによる、ビューティフルなプロセスのための、ビューティフルなツールの活用」であると。
テスターの心理やオープンソースに見るコミュニティから、ファジングやテスト駆動型開発(TDD)といった技法、あるいは、ミューテーションテストや Web オートメーションなど、門外漢でも興味を引く。

テスティングは、リリースの合否を判定する最後の砦。
ちなみに、極度に困難でストレスに満ち、重苦しい雰囲気の中で仕事をしている医療スタッフは、少々ブラックで、ゾッとするようなユーモアのセンスを身につけてしまうそうな。それは必要なことなのだろう。あまりに真面目で、緊張し過ぎの医者による手術は、勘弁願いたい。
テスターにも似たようなところがあるらしい。彼らは問題を発見し、それを報告し、リスクの存在を知らしめる。深刻なエラーもあれば、リリース後のアップデートでカバーできるバグもある。システムがますます複雑化していく昨今、完全にバグを消し去るなんて不可能だ。
本書は、テストの観点から少しばかり肩の力を抜いてくれる。アダム・グーチャーは、「楽しさ、やりがい、魅力、経験を積んでいるという実感、知的さ、意義」これらを言い換えると、すべて美しいことだという...

ところで、テスターとは、どんな人種であろう。どんな人が向いているのであろう。
テスターは質問魔!設計者にインタビューし、設計思想や設計構造を聞き出しては実質的な設計を理解し、テストすべき要所を見抜く。適切な質問で言葉の行間を読み、現象の背後にあるものを推測する。好奇心旺盛で実験好き、分析的で、新たな知識をすばやく吸収。バグを見つけるのは、まるで宝探し。その姑チェックぶりは、なかなか手ごわい。
一方で、政治的な振る舞いには無関心で、目上の人間にもお構いなし。開発部と品質管理部はよく衝突するものだが、適度な緊張感は必要だ。中には開発メンバーを教育してやろうと考える人もいるが、人の欠点ばかり探してるってのもどうだろう。
優れたプロジェクトチームは、テストチームの知識と直感をうまく活用するという。テスターとの距離感と、そこに信頼関係を築くのも、プロマネの本領というわけか...

「言ってみれば、僕は現実の境界線をテストしていたんだ。ただ、何が起こるのか見てみたかった。好奇心... それだけさ。」
... ジム・モリソン

2024-07-14

"Visualizing Data - Processing による情報視覚化手法" Ben Fry 著

グラフィック用のプログラミング言語 "Processing" ってやつが、ずっと気になっていた。データをビジュアルに表現するのに、Ruby や Python、あるいは JavaScript や Gnuplot そして画像フォーマットなどを駆使し、ちと行き詰まり感が漂う今日このごろ。Graphviz もかじったりと... 本書でも触れられ、ちとうれしい!

本書は、Processing の言語入門書といったところ。当初、この言語は芸術家やデザイナ向けの Java 拡張として開発されたそうな。今では、本格的なデザインツールならびにプロトタイピングツールとして利用されているとか。
Java ベースというのは個人的にはちと抵抗のあるところだが、RubyGems にも rubysketch ってやつがあって、"A game engine based on the Processing API." とある。
尚、増井俊之監訳, 加藤慶彦訳版(オライリー・ジャパン)を手に取る。

大勢で大量のデータと向かい合う情報過多の時代、データ収集の方法は思いっきり進んでも、それを分析し、それを利用するとなると遅れをとる。いくらデータを集めたところで満足のいく答えが得られるわけもなく、むしろ弊害に。単に集めただけのデータは漏洩した途端に悪用され、これほどタチの悪いものはない。
本書は、まずデータの理解に目を向け、そこに至る七つのプロセスを提示する。収集、解析、フィルタリング、マイニング、表現、精緻化、インタラクションと...

「優れた問いを発することは、データを理解する上で最も重要なスキルの一つです。... もちろん、問いを過度に狭く定義することはやめて柔軟に利用できるようにしたいデータセットもあるでしょう。ただしその場合でも、重要な発見を強調することに目標を置くべきです。」

本書は、地理情報、時系列データ、散布図、ツリー構造や階層構造といったものを事例に、具体的なコードを紹介してくれる。全般的に対話的手法が掲載され、興味を引くところでは、map() などのメソッド群、タブ表示、タイポグラフィ、あるいは、Eclipse といったところ。付録には、ActionScript の使い方まで掲載されるが、まぁ、これはいいやぁ...

しかしながら、いくら言語を習得しても、いくらコードの書き方を会得しても、ビジュアライジングに演出するには芸術的なセンスが問われる。
ベンジャミン・フライは、コンピュータサイエンス、統計学、データマイニング、グラフィックデザインなど、様々な分野の洞察力が必要だとしている。
ちなみに、ガウディは、建築はあらゆる芸術空間の総合であり、建築家のみが総合的芸術作品を完成することができるとし、自ら画家、音楽家、彫刻家、家具師、金物製造師、都市計画家を演じてみせた。ビジュアライジングにも、建築家のような空間センスが必要なのであろう。
そして、普段から芸術を嗜み、美術に親しみ、動画や映画の演出に触れ、多くのデータと戯れ、多角的に視覚センスを鍛えておかねば。おそらく最も重要なセンスは、調和ということになろうか。
ここでは、芸術家でありながらプログラマでもある人材を求め、宮大工のような調和センスを要請してくる。なんと酷な!

2024-07-07

"数学の学び方・教え方" 遠山啓 著

暗算って、どうやってるんだろう。おいらは、自分の頭の中がとんと分からん。
例えば、2 + 3 って、どうやって計算してるんだろう。暗記か。経験則か。
方程式の解が一通りでも、解き方はたくさんある。ならば、答えよりも、答えに至る過程の方が重要やもしれん。その方が人間味があっていいし、ほかの解き方を模索するだけで視野も広がる。
数学は、論理的思考の源泉。それは問題解決能力を養う上でも鍵となり、今日の情報社会でデータの収集や分析に欠かせない。
数学をやるのは楽しい。落ちこぼれでも楽しい。自由に学べるってことが、なにより愉快。押しつけがましい学習指導要領なんぞ、クソ喰らえ!

遠山啓先生は、数学の土台に、量と数、集合と論理、空間と図形、変数と関数を位置づけ、従来の急所を避ける数学教育の在り方に苦言を呈す。教育ってやつは、なにかと保守的なもの。数学の教え方となると、明治時代に確立されたやり方が根強く残っているという。
数学を物語るならば、最初に「数」を論じそうなものだが、ここでは「量」を論じることに始まる。それは、人間の進化に根ざした感覚的なもの。大きい、小さい、多い、少ない、熱い、冷たい、長い、短い、重い、軽い、高い、安い... こうした量は、日常生活と密接に結びついてきた。いわば、生命を維持するための本能的な感覚として。これらの量を客観的な視点で数値化しようとするのが数学という学問。数はそれを記述するための道具に過ぎないというわけか。

そして、集合論に論理的思考の根源を見る。集合は、英語では "set"。この用語は、セットメニューや食器セットなどでお馴染み。憲法は条文の集まり、古今和歌集は和歌の集まり、これらすべてセット。
集合という概念は身近でありながら、その定義となるとよそよそしい。結局は、記述の問題か。集合の要素を種別、分離することで図式化したのがド・モルガンの法則で、真と偽、論理和と論理積でブール代数を成す。この論理形式は、真理値表とすこぶる相性がよく、0 と 1 で記述するデジタルへの道筋を示している。
そして、ブール関数の簡略化で有効なカルノー図やクワイン・マクラスキー法がふと頭をよぎり、なにやら懐かしい風を感じる。本書には登場しないけど...

空間問題では、定規とコンパスが主役。つまり、直線と円で特徴づけられる図形が問われる。ただ、直線は幅のないまっすぐな線であって、現実的ではない。図形は、測度よりも、その特徴に目を奪われがち。三角形の性質を説いても、スケールの実感がわかない。そこで、方眼紙を用いた作図を、教育に取り入れることを提案してくれる。すると、図形をマス目で数え、測量する感覚が自然に身につくのだとか。図形を量として捉えるのがいいのかは分からんが、方眼紙を用いて思考する習慣は良さそう。
図形の舞台は、ユークリッド幾何学。その代表格は三角形だ。図形の性質を論じるのに、三角関数は欠かせない。それは図形にとどまらず、あらゆる連続的な物理現象の解析に用いられる。フーリエ変換がそれだ。こいつには、学生時代に魅せられたものだ。本書には登場しないけど...

ユークリッド原論は、公準、公理、定義を通して、整然たる論理の組み立て手順を示した。まさに、論証法のお手本!それで、演繹的な思考が王道とされ、帰納的な思考が邪道とされるのでは、ちと視点が狂っちまう。現実社会は、すっきりと演繹的に説明できる現象はそうはない。むしろ、帰納的なアプローチの方が役立つことが多い。例えば、互助法は帰納法の美しさを示しているし、そこからアルゴリズムという思考法が見えてくる。

さらに、変数と関数が登場すると、代数という抽象数学を体感できる。ツルカメ算は、最初に出くわす連立方程式。その原型を古代中国の算術書「孫子算経」に見る。
方程式は、入力に対する出力という関係から、量的な因果法則として成り立つ。これを、ある種のブラックボックスと見立てれば、符号化処理や暗号処理、あるいは、あらゆるデータ変換への道筋が見えてくる。
さらにさらに、関数を座標系に投影すれば、グラフとの関係が見て取れ、認識空間が精神空間と結びつく。やはりデカルトの発明は偉大だ!