エンジニアから機械学習への要望

機械学習のトップカンファレンス ICML にて、「機械学習はこのままでいいの?」という感じの論文が発表された。
細かい内容は上の紹介記事を読んでいただくとして*1、乱暴に一言でまとめると「実応用から離れすぎ」ということになるだろう。
あるいは、2章の章題となっている "Machine Learning for Machine Learning's Sake" がこの論文をもっとも端的に表す一言と言ってみるのもいいかも。


内容についてはいちいち同感で、素性だの正則化だの最適化だのいう用語は分野外とのコミュニケーションを拒否しているとしか思えないとか、定量的なこともまあ大事だろうけどエンジニアはもっと定性的な性質が知りたい、F値が 0.1 改善したとかどうでもいいねん! とか、常々公言してきた身としては我が意を得たり。機械学習の中の人からこのように言ってもらえると非常に心強い。


次の IBIS(情報論的学習理論ワークショップ) でも、インダストリアルトラックが設けられて実応用との接点を増やそうとしているそうだ。

論文が提言している Impact Challenges はまだ他にも色々アイデアや分野があるべきだし、具体的にブレイクダウンするにももう少し時間が掛かるだろう。
けれど、機械学習自然言語処理がエンジニアに近づいてきてくれるのはまだまだ当分先で、もうしばらくはエンジニアから頑張ってアプローチするしかないんだろうなあ、と見込んでいたのだが、みんなが幸せになれる邂逅が意外と早く訪れるのかもしれない、とちょびっと期待。


個人的には、専門外のエンジニアの立場から機械学習に対して、件の論文にて指摘されていること以外にもいくつか要望的なものがある。


1つは、仮定の妥当性を考察してほしいということ。
機械学習はそのモデルや特徴の設計において非常に強い仮定が導入される。最適化や積分を計算できるようにするためにさらに仮定が追加されることも珍しくない。
仮定を入れるということは必ずメリットデメリットがあるわけで、これこれこういう傾向の問題には大丈夫だが、こういうデータには本手法は全く適していない、というようなことは導入した仮定から自ずと明らかになる部分も多いはず。
そういった考察がなされていれば、問題やデータをよく知るエンジニアは提案されている手法が使えるかどうかを判断する参考にすることができて、非常に助かる。*2


しかし現状では、試行錯誤したモデル・特徴量のうち、ターゲットのデータセットに対して一番いい指標値を示したものを紹介、みたいなものも多く、そういったものはたいてい仮定に対する考察は全くなされていない。


もう1つは、定性的な評価手段の標準化である。
上でも述べたように、エンジニアは定量的な評価と同じくらいかそれ以上に定性的な評価に興味がある。
最近は、Mechanical Turk などを使って定性的な評価を行おうという試みが徐々に増えてきていると思うが、まだ各研究者がそれぞれ独自に工夫をこらして試行錯誤している段階という印象だ。
まあそっち方面の研究は今後どんどん進んでいくだろうから、ここであえて要望するようなことではなくて、むしろ「クラウドソーシングなどを使った定性的な評価手法が開発された」後をそろそろ視野に入れ始めてほしいなあというあたり。


件の論文でも指摘されているが、著名なデータセットを使いたい強い動機の一つが「結果の比較が楽だから」である。同じデータセットでテストすれば、数値さえ引用すれば済み、その手法を再現する必要はない。
しかし定性的な評価をするにはそんな単純な比較は不可能なので、手法の再現性が今まで以上に重要となるだろう。そのためには、実装したソフトウェアを公開したり、サービスとして公開したりということが必要になってくる。
さらにそれらのインターフェースがバラバラでは評価の手間がかかりすぎるので、インターフェースはできるかぎり標準化していることが望ましい。*3
これまでは実装を公開するメリットが研究者にあまりなかったからか、公開する人は少数派であるという印象があるが、定性的な評価こそが重要という風潮になってくれれば、実装を公開しないと評価してもらえないというように変わってくれるのでは、という期待もある。


まあ後者はすごく時間のかかる話だが、「仮定の考察」はそれこそ明日からでもすぐ始められるくらいの話だと思う。どうだろう。


追記
そういえば1年ちょっと前にもこんな記事を書いてたのをたまたま見つけた。まあ関係あるっちゃあ関係ある?

【/追記

*1:わざわざこんなブログにたどり着く人ならもう読んでるだろうけど

*2:ナイーブベイズみたいに「こんなに強い仮定を入れているのになぜかうまくいく」というパターンもあるので、予断は常に禁物だが

*3:liblinear のように、ある種のデファクトに揃えていく、というのが現実的なのだろう