人工知能アルゴリズムを総動員して解く統計的機械翻訳

昨日帰るとき、katsuhiko-h くんが論文紹介に苦しんでそうだったので(先週、先々週と彼が紹介していた)自分がやってもいいよ、と声をかけたので、午前中がんばって読んで紹介。

思いがけずおもしろい論文であった。

簡単にまとめると、機械翻訳では単語の対応付け(どの単語がどの位置のどの単語に翻訳されるか)が重要な問題なのだが、この問題は典型的には IBM Model というのを使って(GIZA++ というツールにより)計算するのだが、これは教師なし学習(人手による正解データを用いない)であり、単語対応(アライメントと言う)のデータを作る必要がないのが利点だが、自分が「こういう対応付けになってほしい」と指定することができない、という問題があり、2005-2006年くらいから、機械学習(識別学習)を用いてアライメントを学習する手法の研究が盛んになってきた。

この研究はその流れの一つで、アライメントを教師あり学習する、という話なのだが、独創的な点として、これまで翻訳モデルで使われていた階層的な句を用いた翻訳や木ベースの翻訳のモデルをアライメントに持ち込んだ、という点である。いままで誰もやっていなかったのが驚きだが、言われてみると非常に自然。既存の木または階層的句の手法を適応した利点として、それらで使われていた高速化・省メモリ化などのテクニック、たとえば Cube Pruning といった枝狩り手法が使える、という寸法。

また、原言語側で構文解析器を使った結果により翻訳をガイドすることと、人手でつけたアライメントに従うように学習することで、精度高く学習できる、という利点もある。翻訳アライメントの結果を森ベース(木構造を圧縮して保持している手法を forest-based という)のハイパーグラフにして保持しておくことで、効率的に上位 k 個の結果を出力させる、という工夫もある。別の言葉で言うと、単語アライメントの問題を彼らは構文解析(parsing)の問題にした、ということでもある。統計翻訳や構文解析は、実は A* サーチやビームサーチ、最小全域木などの木やグラフ上の探索の問題として定式化されたりして、動的計画法や近似を使っていかに効率的に解くかとか、あらゆる人工知能の問題がここに詰まっていておもしろい領域である(それも2005年くらいから相次いで「発見」されたので、そこからどんどん研究が進んできたという側面もある)。

本論文は、アライメントに構文解析の考え方を持ち込むとは言うものの、実装も恐らく簡単で、少数のデータだけで精度がかなり上がる、というのはインパクト大きい。これは自分的には今年の best paper あげてもいいかな。そういえば、今年の ACL (この論文が発表された、今週に開催されている国際会議) の best paper は Beyond NomBank: A Study of Implicit Arguments for Nominal Predicates という論文のようだが、そちらも読んでみたい。自分が修士のときにやっていた仕事ともろに関係する論文で、自分たちが書いた論文も(適切な文脈で、好意的に)リファーされている。

一つ難点を上げると、この論文、確かに精度は向上しているのだが、かなり素性のチューニングをがんばっているようで、どの素性がどれくらい精度に貢献したかということが書かれていないので、もしかすると精度の向上に関係しているのはアライメントを識別学習したところだけで、階層的句ベースや森ベースの考えをアライメントに持ち込んだからではない、のかもしれない、という点がある。木に関する素性を抜いたものと全部入ったものと比較すればいいので、そんなに手間ではないはず(可能ならばそれぞれのスコアの絶対値の高い素性を出してくれたりすればもっとよい)だが、ジャーナル版ではそれらの結果も入れてくれるかな?

いずれにせよ、これは非常に筋のよい論文だと思った。どうも今年の ACL はタイトルを見てもどれも興味をあまり引かれない感じで (ICML のほうはたくさん読みたい論文あったのに)、いまいち。もしかするとおもしろそうなのは すでにほとんど読んでしまったせいかもしれないが……。今年は11月の EMNLP に期待かなぁ。

夕方教員の暑気払いに参加。初めて参加でちょっと堅苦しい感じではあるが、まあいいか……。行く道すがら、宮崎先生から、研究費はあれば非常に楽だが、たくさんもらうと、もらったらもらったでしんどい、というお話を伺う。自分もあれもこれもにならないよう、今のところ数を選んで(自分にも先方にもメリットがあるものを選別して)出しているし……。

他にも何人かの方々と話したが、ソフトウェア工学の方々と話が盛り上がる。いやー、自然言語処理の話をこんなにおもしろがってくれる人たちがいるなんて……。最近の機械翻訳の話をしたり、自然言語処理の研究がどういうところでどういうふうに使われているのか話したり、実際のプロダクトではたとえばどういうところが問題になるのかという話をしたり。「数式とかプログラミング言語とか使わないでもこんなに分かりやすく話してくれて、どうもありがとうございます」と感謝してもらい、嬉しいものである。話せば分かってくれる人もいるので、もっと自然言語処理の重要性、宣伝するべきだなと思う。(この日記も自然言語処理NAIST の宣伝の一環です!笑)