Google翻訳のアーキテクチャー(4) Wordpiece

Segmentation Approaches
Neural Machine Translation models often operate with fixed word vocabularies even though translation is fundamentally an open vocabulary problem (names, numbers, dates etc.). There are two broad categories of approaches to address the translation of out-of-vocabulary (OOV) words. One approach is to simply copy rare words from source to target (as most rare words are names or numbers where the correct translation is just a copy), either based on the attention model [37], using an external alignment model [31], or even using a more complicated special purpose pointing network [18].
Another broad category of approaches is to use
sub-word units, e.g., chararacters [10], mixed word/characters [28], or more intelligent sub-words

ニューラルマシン翻訳モデルでは、名前、数字、日付といった、基本的には辞書にないオープンな語彙の翻訳であっても、固定した語のボキャブラリで動作することがよくある。

語彙外(OOV : Out Of Vocaburary )単語の翻訳に対処するアプローチには、大きく2つのカテゴリーがある。

 1つのアプローチは、珍しい単語を、ソースからターゲットへの単純にコピーすることである。(珍しい単語の大部分は、名前や番号で、それらに対しては、コピーが正しい翻訳になる。)あるいは、アテンション・モデルに基づいて、外部のアライメントモデルを使う、または、より複雑な特殊な目的のポインティングネットワークを使う方法もある。

もう一つのアプローチの広いカテゴリーは、サブ・ワード(sub-word)を単位として使うことである。サブ・ワードには、文字(character), 語(word)と文字の混在、あるいは、もっと賢いサブ・ワードがある。

4.1 Wordpiece Model
Our most successful approach falls into the second category (sub-word units), and we adopt the wordpiece model (WPM) implementation initially developed to solve a Japanese/Korean segmentation problem for the Google speech recognition system [35]. This approach is completely data-driven and guaranteed to generate a deterministic segmentation for any possible sequence of characters. It is similar to the method used in [38] to deal with rare words in Neural Machine Translation.

我々の最も成功したアプローチは、第2のカテゴリー(サブワードユニット)に分類される。Google音声認識システムの日本語/韓国語の分割問題を解決するために最初に開発されたワードピースモデル(WPM)[35]の実装を採用した。このアプローチは、完全にデータ駆動型で、可能性のある文字列に対して確定的な分割を生成することが保証されている。これは、ニューラルマシン翻訳で、辞書にない珍しい言葉を扱うために[38]で使用された方法に似ている。

For processing arbitrary words, we first break words into wordpieces given a trained wordpiece model. Special word boundary symbols are added before training of the model such that the original word sequence can be recovered from the wordpiece sequence without ambiguity. At decoding time, the model first produces a wordpiece sequence, which is then converted into the corresponding word sequence.

任意の単語を処理するために、我々はまず、与えられた訓練されたワードピース・モデルでワード達をワードピースに分割する。特別な語境界記号が、モデルの訓練の前に追加される。元のワード列を曖昧さなくワードピース列から復元することができる。デコード時に、モデルはまずワードピース列を生成し、ワードピース列は対応するワード列に変換される。

次の例は、ワード列とそれに対応するワードピース列の例である。

• Word: Jet makers feud over seat width with big orders at stake
• wordpieces: _J et _makers _fe ud _over _seat _width _with _big _orders _at _stake

In the above example, the word “Jet” is broken into two wordpieces “_J” and “et”, and the word “feud” is broken into two wordpieces “_fe” and “ud”. The other words remain as single wordpieces. “_” is a special character added to mark the beginning of a word.

上記の例では、ワード「ジェット」は2つのワードピース「_J」と「et」に分割され、ワード「feud」は2つのワードピース「_fe」と「ud」に分割されている。他のワードは単一のワードピースとして残っている。 "_"はワードの先頭を示す特殊文字である。

The wordpiece model is generated using a data-driven approach to maximize the language-model likelihood of the training data, given an evolving word definition. Given a training corpus and a number of desired tokens D, the optimization problem is to select D wordpieces such that the resulting corpus is minimal in the number of wordpieces when segmented according to the chosen wordpiece model. Our greedy algorithm to this optimization problem is similar to [38] and is described in more detail in [35].

ワードピースモデルは、データドリブン・アプローチを使って生成され、変化するワードの定義の元でも、トレーニングデータの言語モデルの可能性を最大にする。訓練コーパスと、望むトークンの数Dが与えられた時、最適化の問題は、コーパスが選択されたワードピースモデルに従って分割されたとき、結果として得られるコーパスがワードピースの数が最小であるように、D個のワードピースを選択することである。この最適化問題に対する我々の総当たりのアルゴリズムは、[38]と同様であり、[35]でより詳細に説明される。

Compared to the original implementation used in [35], we use a special symbol only at the beginning of the words and not at both ends. We also cut the number of basic characters to a manageable number depending on the data (roughly 500 for Western languages, more for Asian languages) and map the rest to a special unknown character to avoid polluting the given wordpiece vocabulary with very rare characters. We find that using a total vocabulary of between 8k and 32k wordpieces achieves both good accuracy (BLEU scores) and fast decoding speed across all pairs of language pairs we have tried.

[35]で使用された元の実装と比較して、ワードの始めにのみ特殊記号を使用し、ワードの両端では使用しない。また、基本的な文字の数をデータに応じて管理可能な数に減らし(西洋言語では約500、アジア言語ではより多く)、残った文字を特別な未知の文字にマップして、非常にまれな文字で、ワードピースの語彙を汚染しないようにする。 トータルで8kないし32kの間のワードピースの語彙を使用すると、私たちが試したすべての言語対の間で良好な精度(BLEUスコア)と高速なデコード速度の両方が達成されることがわかりった。

As mentioned above, in translation it often makes sense to copy rare entity names or numbers directly from the source to the target. To facilitate this type of direct copying, we always use a shared wordpiece model for both the source language and target language. Using this approach, it is guaranteed that the same string in source and target sentence will be segmented in exactly the same way, making it easier for the system to learn to copy these tokens.

前述のように、翻訳では、ソースからターゲットにまれな固有名あるいは番号を直接コピーすることがよくある。このような直接のコピーを容易にするため、ソース言語とターゲット言語の両方に共通のワードピースモデルを使用する。このアプローチを使用すると、ソースとターゲットの文の同じ文字列がまったく同じ方法で分割されることが保証され、システムがこれらのトークンを簡単にコピーできるようになる。

Wordpieces achieve a balance between the flexibility of characters and efficiency of words. We also find that our models get better overall BLEU scores when using wordpieces – possibly due to the fact that our models now deal efficiently with an essentially infinite vocabulary without resorting to characters only. The latter would make the average lengths of the input and output sequences much longer, and therefore would require more computation.

ワードピースは、キャラクターの柔軟性とワードの効率との間のバランスを達成する。我々のモデルは、ワードピースを使用したときに、BLEUスコア全体が改善されていることがわかる。おそらく、我々のモデルが文字のみに頼らずに本質的に無限のボキャブラリを効率的に扱うからである。文字のみの場合は、入力列と出力列の平均長さをずっと長くするので、より多くの計算が必要になる。

[38] "Neural Machine Translation of Rare Words with Subword Units" 

http://www.aclweb.org/anthology/P16-1162

[35] Schuster, M., and Nakajima, K. Japanese and Korean voice search. 2012 IEEE International Conference on Acoustics, Speech and Signal Processing (2012).

https://goo.gl/DUxQuv


  1. まず、単位語の目録を、ベーシックUnicode(日本語の漢字・ひらがな・カタカナ、韓国語のハングル、そしてすべてのASCIIコードを含む)で作る。最終的には、日本語でトータル22000語、韓国語11000の目録になる。
  2. この目録を使った訓練データ上に、言語モデルを構築する。
  3. 現在の語の目録から二つの単位語を取り出し、一つに結合して新しい単位語を作り、単位語の目録を一つ増やす。可能な組み合わせの中から、言語モデルに追加された時、訓練データ上で、類似度を一番増大させるものを、新しい単位語として選ぶ。
  4. 事前に定義された単位語の限界に到達するか、類似度の増大が、ある閾値以下に下がるまで、2. の操作を繰り返す。



  1. 元の言語モデルは、「書かれたもの」として利用される。すなわち、あるものは空白を含み、あるものは含まない。
  2. 言語モデルのデータを、ワードピース・モデルで分割する時には、空白があれば、単位語の前後に、空白マーカー(我々は、アンダースコアあるいはティルダを使う)を追加する。空白がなければ何もしない。それぞれの単位語は、四つの異なった形で現れることができる。すなわち、両側に空白マーカーがあるか(データの両側に、元々空白があった場合)、右側か左側に空白マーカーがあるか、空白マーカーが全くないかの四種類である。語の目録は、大きくなる。すべての組み合わせが存在すれば、可能的には、元の目録の四倍の大きさになりうる。
  3. この新しい目録をベースにした辞書で、言語モデルを構築する。
  4. デコード中に、言語モデルに従って、最良のパスが選ばれる。それは、どこに空白を置き、あるいは、置かないかを保存する。もちろん、正しい表示のためには、デコードの出力からは、追加された空白マーカーは、取り除かれなければならない。デコーダーが、単位語の間に、自動的に空白を挿入するという、共通のシナリオを想定すれば、この過程は、次のようになる。
     (a) すべての空白を取り除く  ( " " -> "" )
     (b) ダブルの空白マーカーを空白に置き換える ( "__" -> " " )
     (c) 残った一つの空白マーカーを取り除く ( "_" -> "" )

  1. "京都 清水寺の写真"      original
  2. "京都 清水寺 の写真"     segmentation
  3. "__京都__ __清水寺 の写真__"  adding space marker ?
  4. "__京都__ __清水寺 の写真__"  decorder result ?
  5. "京都 清水寺の写真"  display output 


コメント

このブログの人気の投稿

TPU論文の翻訳(1)

TensorFlow Foldについて

可微分ニューラルコンピュータとは何か(1) 概論