機械翻訳システムの内部に迫る

機械翻訳システムを使うこと(というよりもその結果を観察すること)はかなり楽しいと思いませんか。機械翻訳自然言語処理の代表的な用途の1つであり、また自然言語処理の技術の進化にモチベーションを与えた存在でもあります。この記事ではこれまでに開発された3種類の機械翻訳の手法をそれぞれ解説してから、3番目の「ニューラル機械翻訳」の内部仕組みについて記述します。

① ルールベース機械翻訳

初期のAIの多くがそうであったように、初代の機械翻訳にも「ルールベース」の手法が使われていました。人間が事前に作成した、両言語に関するマニュアルと照合して訳文を出力します。例えば、単語の意味を対応させた辞書や構文上のルールなどをシステムに実装します。大量な複雑なルールの登録が大変ではあったが、限定的な用途に限っては役に立っていました。

② 統計的機械翻訳

1990年代になると、統計モデルの学習を通じて訳文を出せるようになった統計的機械翻訳が主流となりました。今度は純粋なルールベース手法ではなく、データを用いて学習を行うようになりました。学習データは起点言語と目標言語の文章のペアを大量に集めたものであり、それらのペアを結びつけるための大規模な確率テーブルを算出します。新しい文章が入力された際には学習済みの確率テーブルを見て最適な(尤もらしい)翻訳文を探します。Google翻訳もサービス開始の2006年から2016年までの10年間、統計的機械翻訳の手法を採用していました。

ちなみに、統計的機械翻訳に使われた言語のペアを集めるために、両言語に翻訳された政府の書類や国連の議事録などが使われていました。

③ ニューラル機械翻訳

2016年にGoogleがニューラル機械翻訳であるGNMT(Google Neural Machine Translation)を発表し、機械翻訳にブレークスルーをもたらしました。GNMT に組み込まれているのは、RNNの対から構成されるエンコーダ・デコーダモデルでした(下セクション参考)。エンコーダが翻訳前の文章を読み込んで埋め込み層を用いて分散表現に変換し、隠れ層で特徴表現に変換した活性化値をデコーダに渡します。デコーダを通じて訳文(新しいデータ)を出します。

近年、Google 以外の企業からも機械翻訳システムを開発されたが、殆ど全てがニューラル機械翻訳の手法を使ったものです。

(少し脱線)エンコーダ・デコーダモデルとは

単語分散表現モデルWord2Vec以降に提案された言語モデルの多くは、基本的に、「リカレントニューラルネットワーク」(RNN)を用いています。RNNは「過去の状態」を反映する隠れ層(フィードバック機構)を持つため、時系列データを扱うことができます。自然言語処理では、入力も出力も必ずしも単一の値ではなく、「単語の系列」を予測するケースが多いです。これに対応するRNNを用いたモデルは sequence-to-sequence(Seq2Seq)と呼びます。名前の通り、過去に入力された時系列から新しい時系列へ変換し出力する機構です。(補足:実用上RNNは長い系列をも扱える「LSTM機構」を取り入れています。)

Seq2Seqはエンコーダ(encoder)とデコーダ(decoder)の2つのRNNから構成されており、エンコーダ・デコーダ(encoder-decoder)モデルと呼びます。エンコーダが入力データを処理して符号化(エンコード)し、符号化された情報をデコーダの方で複元(デコード)します。出力データも時系列なので、出力全体を一気に出すことは出来ず、デコーダは自身の出力を時系列の次のステップで入力として受け取りながら最後まで1ステップずつ処理します。

Seq2Seqは機械翻訳のために進化した技術と言っても過言ではありません。エンコーダのRNNで入力された翻訳前の単語系列をベクトルに圧縮し、隠れ層を経由してベクトルをデコーダに渡して翻訳後の単語系列を生成します。RNNの特性として、翻訳元の入力文章と翻訳後の出力は時系列の長さが一致する必要はありません。

機械翻訳に著しい進化をもたらした技術であるエンコーダ・デコーダモデルはその後に開発された数多く言語モデルの「基礎」となり、自然言語処理の進歩に大きく貢献を果たしました。

ニューラル機械翻訳の仕組み

ここで、機械翻訳の内部の仕組みをより具体的に理解してみましょう。下図は英語の”A woman is carrying her cat”(和訳:ある女性は彼女の猫を抱えています)をフランス語の”Une femme tient son chat”に翻訳しているエンコーダ・デコーダモデルを簡略的に表しているものです。これを用いて翻訳の基本的な仕組みを説明します。

f:id:gri-blog:20210505100356p:plain
エンコーダ・デコーダモデルを用いた、英語からフランス語への機械翻訳の簡易的な仕組み図

図にある白い長方形は、連続的な時間ステップで情報処理しているエンコーダもしくはデコーダを表します。この図では省略していますが、入力された単語(例えばwoman)はあらかじめWord2Vecなどの埋め込みモデルを通じて単語ベクトルに変換してからエンコーダ・ネットワークに入力されています。

図の上半分のネットワークはRNNでできたエンコーダ複数個から成り立っています。入力文は「END符号」も含めて7つの時間ステップでエンコードされます。一つの時間ステップ(長方形)から次へ向かう点線矢印は隠れ層での再帰型の繋がりを表すものです。単語は1つずつ隠れ層の活性化値としてエンコードされ、次のユニットに送り込まれます。このようにして、エンコーダ・ネットワークの中で翻訳前の英語の文章を表現するものが作り上げられていきます。最後の7つ目の時間ステップ(END符号付与後)の時点で隠れ層の活性化値が文章全体の「エンコードの結果」となり、これをデコーダ・ネットワーク(図の下半分)に送信されます。デコーダ・ネットワークでは翻訳文を作ります。その出力は翻訳後の文章を構成する単語を代表する数値です。各時間ステップでの出力は次の時間ステップへフィードバックされます。

ちなみに、英語からフランス語へ翻訳するエンコーダデコーダのシステムを訓練するために、通常3000万の文章ペアが必要と言われています。

図のように、英語(入力)は7個のステップで処理されるのに対して、フランス語(出力)は6個と、翻訳前後の長さに縛られることはありません。エンコーダ・デコーダモデルは理論上どんな長さの文章も翻訳できます。しかし、翻訳対象の文章が長すぎると、後半の時間ステップでは先頭の大事な情報を「忘れてしまいます」。有用な情報がどんどん失われないような工夫が必要です。実際、2016年以降、Google翻訳の技術は改善を積み重ねてきました。ここで詳細に触れませんが、例えば、時間ステップごとに情報の重要度を決める「Attention機構」や長文翻訳を高精度かつ高速に行う「トランスフォーマー」などの技術を取り入れています。

おすすめ参考書

日頃、講座制作のために色々と書籍を模索しています。これまでに一番おすすめで、本記事の参考にもさせていただいたのはこちらです。 評判の通り、何百冊AIに関する本を読んでもこの1冊には及びません。今まで理解したと思ったことをこれを読むと「今初めて理解できた」とさとらせてくれる一冊です。

www.amazon.co.jp

原書の英語名は興味深いですね。Artificial Intelligence;A Guide for Thinking Humans.

記事担当者:(分析官・講師)ヤン・ジャクリン