Google翻訳のアーキテクチャー(1) ニューラル機械翻訳モデル
ニューラル機械翻訳に先行した機械翻訳モデル
新しいGoogle翻訳は、「ニューラル機械翻訳モデル」に基づいている。それに対して、それ以前のGoogle翻訳は、「統計的機械翻訳モデル」に基づいたものだ。ここでは、まず、新しいGoogle翻訳以前の代表的な機械翻訳モデルを振り返り、ニューラル機械翻訳モデルが、どのような問題意識から生まれたのかを考えてみよう。
ルール・ベース機械翻訳モデル (RBMT)
ルール・ベースの機械翻訳モデル(Rule-Based Machine Translation)は、古典的なものだ。日本でも、このモデルに基づく多くの翻訳システムが、かつては作られていた。(こんなリストをネットで見つけた。今から20年以上前のものだ。当時の日本は、AIでも機械翻訳でも、先進国だった。http://aamt.info/english/mtsys.htm )
人間が(ここでは日本人としよう)、英語の文章を日本語の文章に翻訳する場合を考えよう。その時、最低限必要になるのは、次の三つだ。
- 英語・日本語の辞書
- 英語の文法の知識
- 日本語の文法の知識(暗黙の知識を含めて)
ただ、これで十分かというと、そうではない。英語の構文を日本語の構文に変換する知識が必要となる。
ルール・ベースの機械翻訳は、基本的には、こうした人間の翻訳作業と同じことを、機械にさせようとする。原理はわかりやすい。機械の翻訳のルールは、人間が手で書くので、誤訳があっても、その原因を突き止めることは容易だ。ただ、電子的に利用可能ないい辞書があるかは分野による。と言って、ゼロから辞書を作るのは手間がかかる。その上、文法構造の解析は、意外と難しい。様々の付加的情報を追加する必要がある。ただ、我々は、母語にせよ外国語にせよ、自分の持つ文法知識を、たいていの場合、ルールとして全て書き下せるわけではないのだ。
統計的機械翻訳モデル (SMT)
ルール・ベースの機械翻訳モデルが、その精度を上げるのに伸び悩んでいる中、新しい機械翻訳のモデルに注目が集まる。それが統計的機械翻訳モデル (Statistical Machine Translation)である。
代表的な論文は、次のものだと思う。
1990年 Peter F. Brown et al. "A Statistical Approach To Machine Translation" https://goo.gl/UnTIxo
「機械翻訳の分野は、現代のデジタルコンピュータとほとんど同じ程古いものだ。 1949年に、ウォーレン・ウィーバー (Warren Weaver)は、この問題が統計的方法と情報理論から得られるアイデアで攻略できると提案していた。情報理論の領域は、当時、彼やクロード・シャノン(Claude Shannon)やその他の人たちが開発していたものだ。このアプローチは、多くの理論上の反対意見を集め、研究者はすぐにこのアプローチを放棄したのが、我々は、本当の障害は、利用可能なコンピューターの相対的な無能力と、こうした攻略には不可欠な、そこから統計情報を収集する機械で可読なテキストの欠如にあったと考えている。今日では、コンピューターは、1950年より5桁ほど早くなり、数百メガバイトのストレージを備えている。機械可読なコーパスも利用可能である。 .... 我々は、今こそ、これらを、機械翻訳に生かすべき時だと感じている。」
基本的なアイデアは、次のようなものだ。
二ヶ国語間の翻訳を考える。翻訳されるべき文S(ソース SourceのSだと思えばいい)と翻訳結果の文T(ターゲット TargetのTである)のすべてのペア(S, T)に対して、ある確率を割り当てる。
確率Pr(T|S) は、ソース言語に文Sが現れる時、翻訳がターゲット言語で文Tを生み出す確率と解釈される。
例えば、英語から日本語への翻訳なら、Pr( "リンカーン大統領はいい弁護士だった" l "President Lincoln was a good lawyer") は、高い確率をマークするだろうが、Pr( "僕は今朝歯磨きをした" l "President Lincoln was a good lawyer") の確率は低くなるように確率を与える。
こうした見方をすると、機械翻訳は、次のような問題だと考えることができる。
ターゲット言語の文Tが与えられた時、我々は、翻訳が文Tを生成した文Sを検索する。与えられたTに対して、もっともありそうなSを選ぶことで、翻訳のエラーは最小化されるのは明らかなので、Pr(S|T) が最大になるように、S を選べばいいことになる。
次の関係は簡単にわかる。(ベイズの公式)
$$ Pr(S|T) = \frac{Pr(S) Pr(TIS)} {Pr(T)} $$
右辺の分母のPr(T)は、Sには依存しないので、Pr(S|T) を最大にするには、分子のPr(S) Pr(TIS)を最大にすれば十分である。 この最初の項 Pr(S)を「この言語モデルでのSの確率」と言い、二番目の項 Pr(T|S) を「与えられたSに対するTの翻訳の確率」という。
次の図は、統計的機械翻訳モデルの概念図である。2008年のNTT Communication Science LaboratoriesのFrancis Bondの講演資料 "Machine Translation Introduction" https://goo.gl/syFJ2P から借用した。
コーパスとしては、次のようなものが用いられる(英仏のコーパスの例)。Gale & Church "A Program for Aligning Sentences in Bilingual Corpora"
単純化すれば、膨大な二国語コーパスから、適当な翻訳を「検索」するというアプローチなのだが、それでも、先行した「ルールベース機械翻訳モデル」より、高い翻訳精度を達成した。
統計的機械翻訳モデル (SMT)の成功と限界
こうした、統計的機械翻訳モデル (SMT)の成功は、翻訳モデルの質にではなく、コーパスの量に対する関心を向けさせることになった。
2001年のBankoらの論文 “Scaling to Very Very Large Corpora for Natural Language Disambiguation” のタイトルにも、そうした傾向が如実に表れている。http://research.microsoft.com/pubs/66840/acl2001.pdf
ただ、Bankoらのモデルでは、"For breakfast I ate _____ eggs." の空白部分に入るものを、{to, two, too}の三つの中から選べという、極めて単純な問題に答えるのに、10億語のコーパスの学習が必要だった。
Andrew NGは、この論文を取り上げ、次のように述べる。http://bit.ly/1qKh8ro
「勝つのは、最良のアルゴリズムを持っている人ではなく、もっとも多くのデータを持っている人である。」
“It’s not who has the best algorithm that win. It’s who has the most data.”これは、皮肉なのだろうか?
Googleの以前の機械翻訳に対するアプローチも、スペル訂正アルゴリズムの成功に気を良くして、"Power of Data"を前面に押し出して、"Yes! Size Matters" と叫んでいた。「コーパスが二倍になれば、翻訳の質は、0.5%上がる」と。
ただ、今回の新しいGoogle翻訳による翻訳精度の改善は、単純なコーパスの量の拡大によるものではない。Googleは、翻訳のアルゴリズムを見直し、機械翻訳のモデルを「統計的機械翻訳モデル」から「ニューラル機械翻訳モデル」に変えたのである。
ニューラル確率言語モデル -- Benjioの「次元の呪い」
統計的機械翻訳モデルに変わるニューラル機械翻訳モデルを提案したのは、次のBengioの論文である。
2003年 Yoshua Bengio et al. “A Neural Probabilistic Language Model” http://goo.gl/977AQp
Bengioは、早くから、統計的機械翻訳モデルに現れる組み合わせの数の爆発を意識していた一人である。彼は、それを「次元の呪い」 Curse of Dimentionality と呼んだ。
26文字のアルファベット15文字以内で構成される語の数は、高々、$26^{15}$である。スペル訂正の次元は、その程度のオーダーである。ただし、語彙が10万個ある言語での10個の語からなる文は、$100000^{10}=10^{50}$種類もある!
$この_1 文_2 は_3 10_4 個_5 の_6 語_7 から_8 できて_9 いる_{10}$
このように、10語文というのは、そんなに長い文章ではない。が、$10^{50}$というのは、とてつもなく巨大な数である。
彼は、この論文で、統計的言語モデルについて、こう語る。
「統計的言語モデルの目標は、ある言語における語のシーケンスの結合確率関数を学習することである。ただ、これは、次元の呪いのために本質的に困難である。その上でモデルが試される語のシーケンスは、モデルが学習中に出会った全ての語のシーケンスとは異なっている可能性が高い。」
それでは、どのように「次元の呪い」と戦うのか?
「伝統的だが非常に成功したn-gramベースのアプローチは、訓練データ中に現れた非常に短いシーケンスの重なりを連結することで、一般化の能力を得ている。それぞれの訓練用データ中の文が、モデルに、指数関数的な数のその文と意味的に近い文の情報を伝えることを可能にするような、語の分散表現を学習することで、この次元の呪いと戦うことを提案する。」
具体的には、この論文で、彼は、次のような方法を提案する。
- 語彙中のそれぞれの語に、$R_m$に実数値の値を持つ、分散した語の特徴ベクトル(word feature vector)を対応づける。
- 語の並びの結合確率関数を、この並びの中の語の特徴ベクトルで表現する。
- 語の特徴ベクトルとこの確率関数のパラメーターを、同時に学習する。
要は、統計的モデルのように、単に語の並びの統計的性質に依拠するだけでなく、それぞれの語に「特徴ベクトル」という語の「意味」の対応物を導入しようということだと僕は理解している。
こうした問題意識は、 Tomas Mikolovらの Word2Vec に受け継がれている。
Word2Vecの登場 語の「意味ベクトル」
2013年に、GoogleにいたTomas Mikolovらは、語が埋め込まれたベクター空間が、言語学的に(文法的にも、意味論的にも)面白い性質を持っていることを発見する。それが、次の論文である。
Tomas Mikolov et al. “Linguistic Regularities in Continuous Space Word Representations” http://goo.gl/j25y8s
ここで使われているモデルは、次の二つである。
ここでも、文中の語の順序は、捨象されていることに注意しよう。
ここでも、文中の語の順序は、捨象されていることに注意しよう。
- CBOW(Continuus Bag-of-Word”) モデル: 複数の語の集まりから、一緒に出現しそうな一つの語の確率を調べる。
- Skip-gram モデル: 一つの語が与えられた時、一緒に出現しそうな複数の語の確率を調べる。
こうして多次元(1000次元ぐらい)のベクトル空間に語を埋め込んでいくと、意味の似通ったものが、この空間内で「近い」ところに埋め込まれるのである。(例えば、一列目は、国の名前。二列目は、宗教的な神。三列目は、ゲーム関係。等々。)
それだけではない。二つの語を対応づけるベクトルを考えると、そのベクトルは、語の意味を変換するベクトルとして、多くの語に共通に作用するように見えるという。例えば、"MAN"と"WOMEN" を対応づけるベクトルは、"UNCLE" を"AUNT"に対応付け、"KING"を"QUEEN"に対応づける。
彼の発見で有名なのは、次のように、国を首都に対応づけるベクトルもあるということだった。
さらに、様々な「関係」に対応するベクトルも存在する。
もっとも、このMikalovのWord2Vecは、直接に、機械翻訳モデルに生かされたわけではないように思う。
Word2Vecについては、丸山のblog「モノと名前(2)」http://maruyama097.blogspot.com/2017/01/blog-post_53.html を参照されたい。
コメント
コメントを投稿