仕事柄「ニューラル翻訳の仕組みを教えてください」と聞かれることがあります。そういうときは「翻訳をするニューラルネットワークを作る方法は説明できますが、できあがったニューラルネットワークがどうして翻訳できるのかは説明できません」(※)と正直に答えるようにしています。
※ 「翻訳できるように学習しているから翻訳できる」という回答は質問の意図を取り違えています。いま求められているのはパラメータがどう決められたかとは関係なく、目の前にあるニューラルネットワークがどうやって翻訳しているのか、その説明だからです。
ニューラル翻訳のモデルそのものを理解することはそれほど難しくありません。しかし、そのモデルが翻訳という機能をどうやって実現しているかはよくわかりません。モデルを部分構造にわけて encoder、decoder、attention といった名前をつけることはできますが、それぞれが名付けにしたがった機能を果たしている保証はありません。(名付けただけでその通り動き出したら、その人は魔法使いです。)encoder の中で既に復号化 decoding が起きているかもしれませんし、decoder の中でまだ符号化 encoding しているかもしれません。さらに厄介なことに、ある入力にたいしては符号化をおこなっていた部分が、別の入力にたいしては復号化をおこなっている、という可能性もあります。また最近出てきている non autoregressive なモデルなどでは、そもそも encoder/decoder といった構造上の区別すらあまり意味を持たないかもしれません。
モデルの動作を理解したい私にとって、これはとても困った状況です。
理解のためのヒューリスティクス
私が複雑な機能を実現するモノを理解しようとするときは、
- 複雑な機能は単純な機能が連携して実現している
- 単純な機能を実装している部分(パーツ)がそのモノの中に存在する
- 各部分が実装する機能は状況によらず一定である
といったことをとりあえず仮定して観察や実験をします。これらは必ず成り立つ法則ではなくて、とりあえず問題に手をつけるためのヒューリスティクスです。なので、うまくいかなければ捨てて別の手を試してみるべきもの・・・なのですが、実際にはうまくいかなくても手を替え品を替え、なんとかこれらのヒューリスティクスで押し通そうとします。そうするとなんとなく道が開けてくることが多い気がしています。
繰り返しになりますが、こうしたヒューリスティクスはあくまで作業仮説であって、世の中が必然的にしたがわなければならない法則ではありません。しかし、私個人の経験だけでなく科学の歴史を見てみても、どういうわけか、この「単純な機能をある程度独立した部分構造に帰着させる」ヒューリスティクス(ここでは、分割統治、と読んでおきます)で、 様々なことの理解が進んできました。あまりにもうまくいくので、実は世の中が本当はそういうふうにできているのではないかと疑いたくなります。
分割統治がうまくいく理由
こうした疑問にたいして、大きく二つの考え方があるようです。一つ目は、世界がそのようにできているのではなくて、人間が分割統治的な方法でしか世界を理解できないのだという考え方。言うなれば「人間の限界説」。二つ目は、分割統治がよく当てはまるモノはパーツの再利用により変化する環境に効率的に対応できるので、生存に有利だったり(自然物の場合)広く使われたり(人工物の場合)して、世の中に広まったのだという考え方。こちらは「結果として説」と名付けます。
「人間の限界」説は、問題の見方をひっくり返して世界についての問いを人間についての問いに転嫁しているとも言えます。個人的には、人間が世界を理解する方法には制限があるというのは納得できるものの、それはもっと緩やかなものなのではないかと思っています。また、人間の限界に訴えるのは他の方法が尽きてからでも遅くないとも思います。
その点、「結果として」説は人間に問題を転嫁していないので、私には受け入れやすい説明です。そもそもある機能を果たす構造がどうやって生まれてきたのかとか、具体的にどういうメカニズムで世に広まったのかといった疑問にはまた別の説明が必要ですが、とりあえず、そういった構造が一度生まれてきたら広まって定着しそう、というのは納得できます。デファクト・スタンダードになってしまえば、常に成り立つと仮定しても大抵の場合問題ありません。「結果として」説は分割統治がなぜかうまくいく理由としては妥当なもののように感じます。
ニューラル翻訳に分割統治的理解は通用するか
ニューラル翻訳もやはり分割統治でいつかは理解できるのでしょうか。私は少し懐疑的です。
「結果として」説では、うまく機能するパーツが広く再利用されることが、分割統治でうまく理解できるモノが生まれてくる原因とされます。しかし、ニューラル翻訳の学習で似たようなことが起きるかどうか自明ではありません。
現在主流の学習法では、外から与えるのは入力文と正解文のペアのみで、あとはモデルの出力が正解文に近くなるように全てのモデルパラメータを一気に変化させます。学習の過程で有用なパーツが一時的に生じたとしても、それを保持して再利用するような仕組みには(少なくともあからさまには)なっていません。今後学習過程の解析が進めば、そのような再利用が実際に発生している発見があるかもしれませんが、catastrophic forgetting のように折角学習した内容を一度リセットしてしまうような現象が存在することを考えると、安定的にパーツを再利用する仕組みが自然発生していると考えるのは無理があるように思えます。
また、パーツを再利用すると短期的には適応に有利になるかもしれませんが、長期的には不利になる可能性もあります。ソフトウェア開発の分野には技術的負債 technical debt という言葉があります。新しい要求に合わなくなっているにもかかわらず、昔から使っているコードを継当てしながら無理やり使い続ける場合などが典型的な技術的負債です。パーツの再利用もやりすぎると同じように技術的負債になり、モノ全体としての最適化を妨げる要因になりえます。最終的な翻訳精度が問題となるかぎりにおいて、パーツの再利用というのはよい戦略ではない可能性も十分あります。
理解可能なリファレンスモデル?
ニューラル翻訳の出力を見て驚愕したときから、ずっと仕組みが知りたいと思っています。いろいろと考えたり手を動かしたりして思うのは、任意のニューラル翻訳モデルを理解しようとするのは現時点では少し荷が重いのではないかということです。ここはいったん一歩後退するべきかもしれません。我々が理解でき(たとえばパーツの再利用を陽に推進するような学習をするなど)かつ、最先端で研究されているモデルとの比較もできるようなリファレンスモデルを構築する。そこから我々の理解できる対象を徐々に広げていく。そんな地道な研究が必要になるのではないかと夢想しています。