単語の挿入と削除を用いた新時代の文生成手法が登場

3つの要点

✔️単語の挿入と削除を用いた新たな文生成手法を提案
✔️従来の手法に比べて高速な計算が可能
✔️機械翻訳タスクで性能が向上

文生成は自然言語処理において盛んに研究されている分野の一つです。文生成を用いた自然言語処理技術の代表的な応用先として、機械翻訳やチャットボットなどが挙げられます。こうした文生成には言語モデルと呼ばれる技術が用いられており、ニューラルネットワークを用いた手法であればLSTMやTransformerなどで前から順番に一単語ずつ生成していく方法が一般的です。

今回ご紹介する論文では、こうした従来の「一単語ずつ生成する」方法とは異なるアプローチで文生成を行う手法を提案しています。提案手法では一度にいくつかの単語をまとめて生成し、それを元に単語の削除や挿入といった編集操作を繰り返すことで目的の文を生成します。

従来の手法に比べて一文を出力するためにかかる計算回数が少なくなるため、高速な文生成が可能となりました。また、機械翻訳タスクにおいて性能の向上も報告されています。本論文はこの冬にカナダで開催される機械学習のトップカンファレンスであるNeurIPS 2019に採択されています。

一般的な自己回帰モデルによる文生成

本論文による提案手法を紹介する前に、一般的な文生成の手法について説明します。自然言語処理技術による文生成では、前から順番に単語を一つずつ出力していく手法が一般的に用いられています。例えば”today is a beautiful day”という文(単語列)を出力するときには、まず一単語目の”today”を出力し、この”today”という単語を元にして次の”is”を出力します。さらに、”today is”という文脈を入力して次の”a”、その次の”beautiful”を同様にして出力していきます。

すなわち、文生成は「ある文脈から次の単語を予測するタスク」に落とし込むことでモデル化されています。これは言語モデルと呼ばれる考え方で、近年のニューラルネットワークを用いた手法ではLSTMやTransformerを用いて文脈をエンコードし、次の出現する単語の分布を計算するモデルが有名です。

こうした手法を用いて文生成をする場合、各ステップで単語を予測するために、毎回それまでの文脈を用いた確率の計算をする必要があります。そのため、出力する系列が長くなれば長くなるほど生成時に時間がかかってしまいます。例えば上の文であれば、先頭の”today”から最後の”day”を出力するまでに、5回の計算が必要になります。同様にして、100単語出力するためには最低でも100回の計算が必要になります。特に近年の文生成で広く用いられているTransformerは、時刻ごとに全ての計算をやりなおす必要があるため、これは看過できない問題となります。

文の長さに比例して計算時間が長くなってしまう問題を解決する手法として、全ての単語を一度に出力する手法(非自己回帰モデル)が提案されています。上の例であれば、文の長さが5単語であることが所与であると仮定したときに、”today is a beautiful day”という全ての単語を一度に出力します。これにより、文の長さに関わらず1回の計算で文を出力することができます。しかし、このモデルには文の長さをあらかじめ指定しないといけない点や、文脈を利用できないという点といったデメリットがあります。

挿入と削除を用いたモデルによる文生成

本論文では、これまでに提案されてきた自己回帰モデルと非自己回帰モデルを組み合わせた、高速かつ高性能な新しい文生成の枠組みを提案しています。本手法による文生成では、挿入と削除の操作を繰り返し、文を編集していくことで目的の文の生成を行います。

具体的な例として、上で挙げた例文”today is a beautiful day”を出力する過程を示します。まず、以下のように単語を入れることができる空のトークン(PLaceHolder)をいくつか生成します。

[PLH] [PLH] [PLH]

挿入ステップでは上のような空のトークンを生成し、そこに単語を当てはめます。

today day beautiful

続いて削除ステップでは、不要な単語の削除を行います。

today day beautiful

再び挿入ステップとして空のトークンを各単語の間に、いくつか挿入します。

today [PLH] [PLH] beautiful [PLH]

さらにこの空のトークンに単語を挿入します。

today is a beautiful day

続く削除ステップや挿入ステップで、これ以上文を編集する必要がないと判断されたら、この挿入と削除のループを抜け、文が完成します。

上記のような挿入と削除による編集を用いた文生成を行うために、空のトークンを挿入する機構、空のトークンに単語をあてはめる機構、単語を削除する機構の三つが必要になります。各機構が担う操作は単純であるため、それぞれ分類問題として解くモデルとして考えることができます。提案手法ではTransformerを用いて生成途中の文を読み込み、三つの機構による各操作の計算を行います。

まず空のトークンを挿入する機構(Placeholder Classifier)では、ある二つの単語の間にいくつの空のトークンが挿入されるかを予測します。次に空のトークンに単語を当てはめる機構(Token Classifier)では、ある空のトークンに当てはまる最適な単語を前後の文脈から予測します。最後に単語を削除する機構(Deletion Classifier)は、前後の文脈を考慮した上でその単語を削除するべきかを二値分類します。

このモデルによる文生成では、非自己回帰モデルのように一回の計算で複数の単語を出力することができます。すなわち、100単語のような長い文を出力する場合であっても、100回以下の計算回数で文を完成させることができるようになります。さらに、直前に出力した文を編集していくことで、自己回帰モデルのような文全体を考慮した単語の生成を行うことができます。

これにより、文生成の性能を落とすことなく高速に文生成を行うことができます。なお、本モデルは文字列同士の距離を測る編集距離の考え方から、Levenshtein Transformerと名付けられています。

機械翻訳タスクで精度向上と高速化に成功

文を生成するモデルの評価で一般的に用いられている機械翻訳タスクで、提案手法の評価を行います。機械翻訳タスクでは、ロシア語から英語、英語からドイツ語、英語から日本語の三つの言語間での翻訳を対象とします。さらに、英語での文書要約タスクとして、Gigawordというデータセットを用いた実験も掲載しています。

比較するモデルは、近年の文生成タスクで成功を収めているTransformerモデルで、文を生成する際に確率の高い4パターンの文の可能性を残しながら出力を行うモデル(すなわちbeam sizeが4のモデル、表中ではbeam4)と、毎回最も確率の高い単語を順番に出力するモデル(greedy)を用います。提案手法は、挿入と削除の操作を学習する際にデータに含まれる正文のみを使用するモデル(oracle)と、別の文生成手法を用いて学習データを作成するモデル(distillation)の二つを比較します。

結果より、提案手法を用いることでロシア語から英語、英語からドイツ語の二つの機械翻訳で性能が向上したことが報告されています。また、その他の実験でもTransformerの数値と同程度の性能が出ており、出力メカニズムを変更したことで大幅に性能が落ちることはないと判断できます。

下段では一文の出力にかかる平均時間(ms)と、出力に必要な挿入・削除の平均イテレーションを示しています。例えばロシア語から英語の機械翻訳であれば、従来のTransformerでは文の出力に平均して27.1回の計算が必要であったのに対し、提案手法では2.03回の計算で済むことが示されています。これに伴い、全体の文出力にかかる平均時間も大幅に削減されています。

下図は提案手法を用いた英語から日本語への機械翻訳の過程を示したものです。英文を受け取ったモデルが、最初のイテレーションでほとんどの単語を出力し、次のイテレーションで重複部分の削除や足りない単語の挿入を行い、生成が終了している様子がわかります。日本語の出力には11単語含まれているため、従来の手法では11回の計算が必要になりますが、提案手法ではわずか2回で生成が終了しています。

まとめ

本論文では従来手法とは異なるアプローチで文生成を行う新たな手法を提案しました。挿入と削除という操作は、人間が文章を遂行するときのプロセスにも似ており、その文生成過程は人間にとってもわかりやすいものであると考えられます。

機械翻訳や文書要約の精度を大幅に下げることなく(一部では性能向上に寄与)、文生成を高速化した貢献は大きいと言えます。これはニューラルネットワークを用いてリアルタイム応答を行うシステムの速度改善にも貢献すると考えられます。

Levenshtein Transformer
Jiatao Gu , Changhan Wang , and Jake Zhao (Junbo)
NeurIPS 2019

この記事をシェアする