相手の立場に立って考える + 道具には使いどころがある

ノンパラベイズの解釈のところでid:mamorukさんとあれこれと議論。

相手の立場に立って考える

言葉の定義のところでお互いに食い違いがあったということが分かってくる。例えば今回の場合

  • パラメータがない
  • データに語らせる

の付近であれこれと食い違いがあった(詳しくは書かないけど。階層ベイズ、周辺化、経験ベイズとかまともに書くと疲れる)。どっちが正しいというよりお互いの文脈で見ればどっちも正しいので、すごいcontext sensitiveというか言葉の定義の仕方があまりよくないと言われればそれまでな気もする...w。こういうときは正確さを多少犠牲にしてでも、伝えたいことを伝えられるように頑張るべきだし、相手がどういうことを理解したいのかどういう応用で使いたいのかetcを探りながら議論していく必要があるなと当たり前のことながら思い出した。こういうときによくないのは、自分の知識をそのままdump(dumpって表現がよく合う気がする)したような話し方をして「こういう知識あるんやで(ドヤッ」ってのが一番迷惑である。うちの研究室のスタッフの人はその付近の刀のなませ方(?)がすごくうまいなぁと思うので色々盗みたい次第。自分の専門性を持ちつつ、色々な分野の人と話すことというようなT字型ってのは重要だとしみじみ思う。

相手に伝えるって付近は就活のときにも生きてきた。

道具には使いどころがある

最近色々な人と話しているとノンパラベイズ(に限らず機械学習全般か...)はすごい注目を浴び初めているのかなぁと思うのだけど「何でも自動でやってくれる、すげぇ!!1」みたいなノリでこられて過度な期待を持たれてしまうのも何だかなぁ...と思うときが多々ある(念のために言っておきますが、今回の件ではないですよ)。「自分でノンパラベイズやってるくせに冷めたやつだなぁ」と思われるかもしれないが、使ってる人のほうが現実的というのは機械学習に限らずプログラミング言語の文脈でもよくありますよね*1

銀の弾などないって言葉もありますし、ノンパラベイズももちろんそれではありません。ノンパラでない普通のベイズでも十分に役に立つときももちろんありますし、ベイズじゃなくてもいいときもありますし、パーセプトロンで十分なときもありますし、そもそも機械学習いらないときも(よくよく!!)あります。機械学習やノンパラベイズはすごい流行ってきてますし知識としてはあるに越したことはないですが、精通している必要はないと思います。自然言語処理の人が考えるべきことは

  • そもそも解きたい問題は機械学習を使ったほうがいいものなのか
  • 機械学習を使うとして、解きたい問題はどれくらい難しい問題なのか
    • どの程度複雑な手法なら解決できそうな見込みがあるのか(当たり前ですが、同程度ならsimpleなほうがいいに決まってますよね)
    • 実行時間や使えるメモリの制約は?
  • 使うべき手法が決まったらどういう素性が効きそうなのか、どういう潜在変数やモデル設計が効きそうなのか

なんじゃないかと思います(あるいはタスク自体の設計とか)。今年の最初の研究会でmasayu-aさんもこういうこと言っておられたと思うし、自然言語処理はなんちゃって機械学習の応用分野ではないし、機械学習に精通(精通であって、全然知らないではないことに注意ですよ)していないからと言って卑下する必要ないと思うし、自分の分野で何を解くべきかをしっかり考える必要があるんだと思います(半分以上自戒を込めつつですよ)。結局その付近が「専門が自然言語処理である」ってことにつながってくるんだと思います。水曜にノンパラベイズのチュートリアルをやってくださったCS研の進藤さんもチョムスキーとか言語学とかの勉強をしたいとおっしゃられていたしつまりそういうことだと思います。

関係あるかもしれない昔のlogたち。

なんか色々書き過ぎた気もしますが、強調し過ぎてもいいくらいだと思うので書いてみました。この付近は自分の行動決定基準のもうcoreなものになってしまってるんだと思います(というか上のこと、大体昔の自分を反面教師にしてって感じですねw)。

*1:「最近出てきたXXX言語すげぇwww、YYY言語涙目wwwこれからはXXX言語だけでやっていくぜ!!!」みたいなノリ。XXX言語を実際に使っている人のほうがドン引き。ええ、僕もRだけでいいんじゃね?とか言ってた黒歴史がありますが何か