結果の解釈可能性について

相変わらずつながりの悪いバラバラとした文章の書きなぐりだが、いつまでも下書きに溜め込んでいても仕方がないので、公開してしまう。
最近感じている、「技術としては面白いけれど、結果自体には興味が持てない」感覚を、なんとか言語化しようと試みたが、結局、自分自身の精神状態が万全ではなくて、「つまらなく」感じているだけなのかもしれないという、極めて私的な結論に落ち着きそうだ。

世の中、機械学習を始めとする統計的手法が熱い。面白い成果がどんどん上がっている。私もプログラマとして、ワクワクすることがある。自分でもちょっと実装してみて、「おおーっ」っと手法の威力に感心したりする(手っ取り早く、どんな手法があってどんな応用がされているのかを知り、動くコードを読んで/書いてみたい場合は、オライリー「集合知プログラミング」という本がお勧めだ)。

しかし研究としては、どうか。どうも熱くなれない。

パーセプトロンなり SVM を学習させて、かなり精度のよい判別器を作ったとしよう。例えば、バイオマーカから疾患の予後因子や治療反応性を予測する。
実用上は大勝利だ。たくさんの人の命が助かる。しかし、それで「分かった」ことになるのか、私には甚だ疑問である……

例を取ろう。f(x) = sin(x), x = [0, 1] という関数があったとして、十分な数のサンプリングをして、多項式フィッティングを行う。その係数は、自然と sin(x)のマクローリン展開に近くなるはずだ。電卓を設計するには、十分な精度である。だが、これらの数値を見て、sin 関数を理解したことにはならないと思う。この数値の一般項を知って、その導出まで分かって初めて、理解したことになるのではないか。帰納的に得られた「数値」と、三角関数の定義から演繹的に得られた解析的な値では、実用上は同じでも意味がまったく違う。

最近のデータ・ドリブンなアプローチは、すべて帰納的である。

Google が数年前に出した "The Unreasonable Effectiveness of Data" (Google サイト内に author manuscript あり)という発表は、大変ショッキングだった。

例えば、機械翻訳。昔は、言語学者が体系化した文法をプログラムに組み入れていたのだが、現在は統計モデルによって文法も自動で学習させるようになっている。というか、文法を明示的に扱うのではなく、ある言語におけるこういう単語の列は別の言語ではこういう単語の列に対応するらしい、というペアを大量に集めて使っているだけだそうだ。詳しいアルゴリズムは不勉強なので間違っているかもしれないけれど。単純な k-mer による文章生成だって、k = 3, 4 あたりから既に「それらしい」文章が出力されるようになるのである。元文章の単語によって、翻訳先文章の k-mer の出現頻度をバイアスしてやれば、翻訳が出てくるという感じなのだろう。「中国語の部屋」ではないが、これで分かったことになるのだろうか……

人間が手を入れた少数個の綺麗なデータよりは、ネットから収集したままの汚いけれど超大量のデータのほうがよいという時代なのだ。

構造生物学の結果は、解釈可能である。構造を化学の目で見れば、反応機構を推測したりできる。それが楽しい。次世代シーケンサのデータ処理は、その膨大なデータ量という点からは、プログラマとして挑戦的でやりがいのある課題だと感じるが、科学としては全く面白くない。「○○病と強く相関する遺伝子座として○○が見つかった」という情報は、今後の wet な実験の方向性を決める作業仮説を作ったという点ではとても大きな一歩だが、それだけでは何も言えない。それを言い出したら、構造生物学だってあくまで仮説を提唱するだけで、実際に変異体を作ってみなければ何も言えないではないかと反論をされそうだ。

ここまで、「帰納的」だから分かった気がしないというように聞こえる書き方をしてきたかもしれないが、言うまでもなく、実験科学とはもともと帰納的なものである。演繹的なのは、数学だけであり、数学は実験科学とは違う。

自分でも分からない。というか、すぐ上で、構造生物学で「反応機構を推測したりできる」のが「楽しい」と書いたけれども、本当に楽しいのか、分からなくなってきた。私は、今、「サイエンスとして」面白いと思っているテーマが、1つでもあるだろうか……

コンピュータ将棋がどんどん強くなる。私はルールを知っている程度だから、棋譜を見てもどのくらい強いのかは分からないし、序盤にまだ穴があると言われても、どれが悪手なのか分からない。ただ、プログラマとして、機械がどんどん強くなるのは見ていて嬉しいし、応援したくなる。

将棋の初心者向け解説を見ると、「ここで○○とするのが定石。というのは、○○とすると、次に相手が○○としてきても、……あるいは○○でも、こうなって、ああなって……で、どう転んでも、有利になるわけです」と説明してくれる。これを聞くと、ははあ、と分かった気になる。評価関数はそうではない。二駒関係などの無数のパラメータを機械学習でフィットさせただけのものだから、ある局面で評価値が+330ですと言われても、それがどうしてなのかを解釈するのは難しい。

ゲーム木を調べ尽くした結果としてこうだという説明は、力任せの感じがするが、まだ分かった気になれる。実際、「どうぶつしょうぎ」はこの方法で後手必勝と証明されている(「http://media.itc.u-tokyo.ac.jp/ktanaka/dobutsushogi/」参照)。力任せの証明というなら、たとえば地図彩色問題における4色定理の証明(1976年)の時点で、既に力任せだったわけだ。当時の数学者はなんとも言えない気持ち悪さを感じていたようだが、私には、「この問題は、解決した」と納得できる。

しかし、学習の結果得られた「よく分からない」パラメータの総和として評価値がこうですと言われても、どうも分かった感じがしない。とはいえ、人間向けの将棋の解説で、「駒得になるから有利」と言われて分かった気になっているのも、同じくらい「分かっていない」のかもしれない。駒だけ得をしても、他の要素で大きく不利になっているということは十分ありうる。それでも、「大抵の場合には」、駒の損得と、他のパラメータが、ある程度独立していて、そこだけ取り出して説明できるから、人間に理解できるのかもしれない。

GPS将棋は、そういう人間に理解可能な形で説明することも研究テーマの一つだそうであり、期待している(「コンピュータ将棋を用いた棋譜の自動解説と評価」 金子知適.情報処理学会論文誌(2012)など)。