初学者ですがニューラル機械翻訳について理解したことをまとめました
ニューラル機械翻訳とは
ニューラル機械翻訳(以下NMT)とは、文字通りニューラルネットワークを利用した機械翻訳です。Google翻訳やDeepLにも採用されている、機械翻訳の最先端です。
NMTは、大きく分けて Encoder、Attention、Decoderの3つからできています。
Encoderでは、入力文をベクトルに変換します。
Attention機構では、重要な領域に着目させる機能を付与し正確な出力を手助けします。
Decoderでは、ベクトル情報とAttention情報から出力文を決定します。
ここから、この3つを詳しく説明していきます。
各機構の説明
Encoder
EncoderはEncoder-Decoderモデルの前半部分です。
翻訳には、単語本体の意味と前後関係の2つの情報が必要になります。まず、単語本体の意味の取得方法です。入力文を単語に分割し(形態素解析)、単語分散表現と呼ばれる数百次元からなる実数値ベクトルに変換します。この作業をEmbeddingと呼び、単語埋め込み層で実行されます。
また、Encoderは次元削減の役割も担います。単語分散表現は低次元(50〜300)のベクトルで表されるため、ここで次元削減をしていることになります。これで、各単語の意味を得ることができました。
次に、単語同士の前後関係の取得方法です。RNNを利用し、前後の単語情報を次層の入力値として学習していきます。ここで、片側からの読み込みだけでは前後両方の関係性を得ることができないため、文頭(forward)と文末(backward)の両側から学習を行う。そうして得られた2つのベクトルを単純に繋げたものを各単語の分散表現として翻訳で利用します。
以上が、Encoderの役割です。
Attention機構
Attention機構は、Encoderから渡されたベクトルを受け取り、Decoderに渡します。その際、正規化された重みをベクトルに割り振る作業を行う、これがAttention機構の重要な役割です。このときDecoderに渡される重み付きベクトルをコンテキストベクトル(context vector)と呼びます。Attention機構を理解するにはベクトルに関する複雑な知識が必要なため、詳しい説明は省略します。
簡単に説明すると、Attention機構ではEncoderの全ての隠れ層の状態に重み付けをし、それらを足し合わせて(重み付き和)Decoder層に渡しているのです。重み付けする際の情報としては、Decoder層における単語翻訳時の内部状態とEncoderから渡された隠れ層の情報を利用します。Decoder層の内部状態とは、状態ベクトルのことです。つまり、情報はEncoder層からDecoder層に一方通行に流れているのではなく、各層を行ったり来たりして翻訳しているのです。
Decoder
Decoderは1つのRNNで構成されている。コンテキストベクトルと1つ前に出力した単語の情報を入力として受け取り、新たな単語を訳文として出力します。ここまで数値情報として扱われていた単語ベクトルをここで自然言語に変換するのです。翻訳対象の単語はAttention機構からの情報によって決定され、訳出された単語は文頭から順に並べられます。入力文にはEncoder層の時点で文末にという文の終わりを表すタグが取り付けられており、このタグがDecoder層から出力されると翻訳は終了となります。
おわりに
以上がNMTの基本構造になります。この記事ではNMTの初歩の初歩しか紹介できていませんが、ぜひみなさんもAttention機構やEncoderDecoderの詳しい仕組み、NMTの課題などを調べてみてください。私もまた勉強して記事を書きたいと思います。最後まで読んで頂きありがとうございました。
参考文献
中澤敏明 "機械翻訳の新しいパラダイム ニューラル機械翻訳の原理" J-STAGE 2017/06/01
https://www.jstage.jst.go.jp/article/johokanri/60/5/60_299/_pdf
参照:2022/11/19