ディープラーニングブログ

Mine is deeper than yours!

教師なし学習は機械翻訳に魔法をかけるか?

つい先週,機械翻訳で驚くべき進展がありました.

要約すると教師なし学習でもひと昔前の教師あり学習の機械翻訳に匹敵する性能を獲得できたというのです.この記事では機械翻訳を知らない初心者にもわかるように魔法のような教師なし機械翻訳の仕組みを説明したいと思います.

教師あり学習の限界

機械翻訳ディープラーニングを適用することで急激に進歩した分野の1つだと思います.Google 翻訳はニューラル機械翻訳を導入することで非常に流暢な翻訳が可能になりました.これで機械翻訳は解決した......かというと長文翻訳や同時通訳,マイナー言語対応など多くの研究課題が残されています.

f:id:Ryobot:20180428101536p:plain:w700

ところで翻訳モデルの学習には通常2言語間の対訳コーパスが必要です.例えば日英翻訳ではこのような対訳コーパスを準備します.翻訳元の日本語をソース文,翻訳先の英語をターゲット文と言います.

f:id:Ryobot:20180428223508p:plain:w700

翻訳モデルはソース文を入力として翻訳文を生成します.そして生成した翻訳文とターゲット文 (教師信号) との差異が小さくなるようにパラメータを更新することでソース文からターゲット文を生成する翻訳モデルを獲得します.

ここで問題となるのは翻訳モデルの学習には大量の対訳文が必要ということです.英仏や英独間には巨大な対訳コーパスが存在しますが,多くのマイナー言語間ではほとんど対訳文が集まりません.そこでマイナー言語間は英語やインターリングア (人工的な中間言語) を経由して翻訳するピボット翻訳が使われる場合が多いです.しかしこの場合でも英語 (もしくはインターリングア) とマイナー言語間には大量の対訳文が必要になります.もし対訳コーパスを作成する必要がなくなればマイナー言語間の翻訳が可能になるばかりか共通の構造を持つ世界間ならば容易に変換を学習できるはずです.

マイナー言語でもその言語で書かれた文章を集めるのは容易なので,対訳関係のない2言語コーパスなら簡単に作れます.この2言語コーパスだけで翻訳モデルを学習することを教師なし機械翻訳 (Unsupervised Machine Translation) と言います.この場合コーパスには対訳文 (教師信号) が存在しないので教師なし学習に分類されます.

教師なし学習によるニューラル機械翻訳は昨年10月末に論文が投稿されたばかりの新しい技術です*1*2.この論文で提案された手法は興味深いものでしたが,自動評価によるスコアは低く実験の域を脱していませんでした.

f:id:Ryobot:20180428101527p:plain:w700

仏英翻訳の例を載せました.いくつかの語句やフレーズの翻訳に成功していますが,実用とはほど遠い性能だとわかります.このとき私は教師なし機械翻訳が日の目を見るまでにはあと数年かかるだろうと思いました.

状況が好転したのはつい先週です.教師なし機械翻訳を提案した著者らが新しい論文を投稿しました*3

f:id:Ryobot:20180428101520p:plain:w700

仏英翻訳の例を載せました.以前に比べかなりターゲット文に似た翻訳文を生成しています.自動評価のスコアも 15 から 25 に劇的な改善を果たしました.

魔法の正体

対訳関係のない2言語コーパスからどうすれば翻訳モデルを学習できるのでしょうか?

教師あり学習では生成した翻訳文とターゲット文との誤差が小さくなるように学習しました.教師なし学習ではターゲット文 (教師信号) が与えられないので別の教師信号を見つける必要があります.ここで登場する1つ目のトリックが逆翻訳 (Back-translation) です.

f:id:Ryobot:20180428101346p:plain:w700

逆翻訳はソース文をターゲット文に翻訳し,ターゲット文を元のソース文に再翻訳する手法です*4.優れた翻訳モデルはソース文と逆翻訳後のソース文が類似していることが期待されます.つまり逆翻訳後のソース文にとって元のソース文は教師信号だと解釈できます.ソース文を擬似的なターゲット文に翻訳し,擬似的なターゲット文をソース文に再翻訳すると,ソース文 (教師信号) と逆翻訳後のソース文との誤差が求まるのでこの誤差が小さくなるように学習します.これは最初の翻訳で擬似的なターゲット文とソース文のペアからなる対訳コーパスを作成して次の翻訳で教師あり学習をしているのだと解釈できます (上図は英日翻訳モデルの学習例です.日英翻訳モデルも逆の手順で学習できます).

しかしこのままでは翻訳モデルを正しく学習できません.学習初期の擬似的なターゲット文はノイズが多く不安定な文です.これを翻訳モデルに入力しても更に支離滅裂な文を生成することは容易に想像できます.これは翻訳モデルがノイズの多い入力からノイズを取り除く能力を持っていないためです.  

f:id:Ryobot:20180428101412p:plain:w700

2つ目のトリックはノイズ除去 (Denoising) です.ノイズ除去は入力文に語順の入れ替えや語句の欠損を施したノイジーな入力文から元の入力文への変換を学習します.この場合もノイズ除去後の入力文にとって元の入力文は教師信号だと解釈できます.ノイズ除去を事前に学習することで逆翻訳の途中で生成されるノイズの多いターゲット文はノイズを除去されながら逆翻訳後のソース文に翻訳されるはずです*5

f:id:Ryobot:20180428101419p:plain:w700 f:id:Ryobot:20180428101353p:plain:w700

ここまでの話は10月末の論文で提案された手法です.結論から言うと,これだけではノイズ除去から逆翻訳への移行に失敗します.なぜでしょうか? ヒントは潜在表現 (Latent Representation) です.

潜在表現はニューラルネットワークが理解できる言葉 (数値の羅列) です.機械翻訳で使用されるニューラルネットワークであるエンコーダ・デコーダモデルでは,エンコーダがソース文 (もしくはターゲット文) を潜在表現に変換し,デコーダが潜在表現をターゲット文 (もしくはソース文) に変換します.

f:id:Ryobot:20180428101426p:plain:w700

今のところモデルには一切制約が与えられていないのでノイズ除去で獲得される潜在表現と翻訳で獲得される潜在表現は異なるエリア (=部分空間) を使用します.したがって日本語デコーダは日本語エンコーダ由来の潜在表現に対してノイズ除去だけを,英語エンコーダ由来の潜在表現に対して翻訳だけを実施すれば十分損失を最小化できました.理想的には日本語デコーダはノイズ除去と翻訳を同時に行うべきですが実際には片方しか行わない状態でした.

10 月末の論文でも潜在表現を共有するための制約が必要なことはわかっていました.2種類の異なる制約が提案されましたが,どちらの制約も十分に機能せず潜在表現の分離を解消できませんでした*6

たったひとつの冴えたやりかた

潜在表現を共有するためにはどんな制約が必要でしょうか?

10 月末の論文では日本語エンコーダと英語エンコーダのパラメータを共有することで,日本語をエンコードした潜在表現と英語をエンコードした潜在表現が同じ空間を使用するような制約を採用しました.

この方法はデコーダが入力言語に関わらず同様に動作することを促しましたが制約として不十分でした.依然として日本語デコーダと英語デコーダは別れたままなので,日本語のノイズ除去と英語のノイズ除去は異なる部分空間を使用して学習できました.

f:id:Ryobot:20180428103912p:plain:w700

新しい論文では翻訳モデルのすべてのパラメータを共有しました.つまり日本語エンコーダと英語エンコーダを共有し,日本語デコーダと英語デコーダも共有しました*7.また,サブワードの埋め込み表現をもつエンコーダの埋め込み層やデコーダのソフトマックス層も共有しました*8

文字通りすべてのパラメータを共有するという強力な制約によって,ようやく日本語由来と英語由来の潜在表現は一体化し,ノイズ除去からノイズの多い逆翻訳への移行に成功しました.教師なし学習でも流暢な翻訳が可能になったのです.

この新しい論文のアプローチは Google ニューラル機械翻訳の zero-shot 翻訳の影響を受けたものです*9.zero-shot 翻訳では多言語間で翻訳モデルを共有し,デコーダが複数のターゲット言語を生成するために共有のサブワードを使用します.注目すべきは翻訳モデルとサブワードの共有によって潜在表現が共有されることを可視化した点です.

f:id:Ryobot:20180428101510p:plain:w700

英日韓翻訳を学習したモデルを用いて潜在表現をクラスタリングした例を載せました.(a) は74種類の,英日韓で同一の意味を表す文を74色のクラスタに別けたものです.(b) は英日韓ともに「成層圏は、高度10kmから50kmの範囲にあります.」という意味を表す文のクラスタであり,(c) は英日韓で色分けしています.同一の意味を表す文の潜在表現が共有されていることが確認できます.

教師なし日英翻訳を行うためには日英間で共有できるサブワードがあまり存在しないという問題があります.とはいえ zero-shot 翻訳では数字・日付・名前・ウェブサイト・句読点などが共通の ASCII を使用するので予想よりも多くのサブワードを共有でき,それほど厄介な問題にならなかったようです.

f:id:Ryobot:20180428101403p:plain:w700

逆翻訳は教師なし画風変換の CycleGAN に似た学習方法と言えます*10.CycleGAN は2つのドメイン間の,各画像間にペア関係がないデータセット間から同じ構図の画風変換を学習します.例えば馬画像だけを集めたデータセットとシマウマ画像だけを集めたデータセットから馬→シマウマの変換やシマウマ→馬の変換を学習します.

CycleGAN でも馬をシマウマに変換してシマウマを馬に再変換し,逆変換後の馬と元の馬との誤差を最小化します.これは逆翻訳とまったく同じ思想です.今後,画像とテキスト間の教師なし変換が可能になるかもしれません.

機械翻訳ディープラーニングに出会うことで急速な技術革新が起きています.機械翻訳の最新の研究を追うことで新しい発見があると私は信じています.また,おもしろい研究があれば紹介したいと思います.以上です.

f:id:Ryobot:20180428101449p:plain:w700

人工知能が魔法によって力を得ているサムネ画像です.お気になさらず.

*1:Unsupervised Neural Machine Translation [arXiv: 1710.11041]

*2:Unsupervised Machine Translation Using Monolingual Corpora Only [arXiv: 1711.00043]

*3:Phrase-Based & Neural Unsupervised Machine Translation [arXiv: 1804.07755]

*4:Improving Neural Machine Translation Models with Monolingual Data [arXiv: 1511.06709]

*5:ノイズ除去は暗黙的に言語モデルを学習します.つまり日本語デコーダは日本語らしい文を,英語デコーダは英語らしい文を生成します.日英翻訳の場合,英語デコーダを使用して英語らしい文を生成するので単純なコピータスク (日本語文を日本語文に翻訳) を防ぐことができます

*6:1つは日本語エンコーダと英語エンコーダのパラメータを共有して潜在表現の共有化を図る方法,もう1つは敵対的学習によって潜在表現を近似する方法です

*7:共有デコーダは最初に識別子(生成したい言語のフラグ)を受け取って潜在表現をその言語に変換します

*8:例えば「something」という単語を分割した「some」と「thing」のような単語をサブワードと言います.新しい論文ではソース言語とターゲット言語のコーパスを混合した Byte Pair Encoding によってサブワードを作成しています.英仏の場合,95 %以上のサブワードを共有します

*9:Google's Multilingual Neural Machine Translation System: Enabling Zero-Shot Translation [arXiv: 1611.04558]

*10:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks [arXiv: 1703.10593]