どうも、カタミチです。
さて、音声処理と自然言語処理分野の3回目ですね。今回は、トランスフォーマーというお話のようです。…昔、トラックなどの乗り物がロボットに変身するアニメに、そんな名前のものがあったような気がしますが、まぁ関係ないですね、はい。
トランスフォーマー
そろそろ展開が読めてきたんですが、「だいたい良い感じになってきたんですが、新たに出てきたこの技術によってさらにこういう点が改善されました。」という流れですね。
今回は、前回まで見てきたRNNの欠点から話が始まります。どうやら、2つ欠点があるようです。1つ目は、入力データを時間軸に沿って必ず1つずつ順番に読み込む必要があるため、並列計算ができず、処理速度が遅いという点です。2つ目は、先頭に読み込んだデータの影響が時間の経過とともに次第に薄れてしまうため、入力データの長さが長くなると遠く離れた単語間の関係が捉えきれないという点です。
そこで出てきたのがこの、トランスフォーマー(Transformer)です。
トランスフォーマーの基本形
トランスフォーマーは、エンコーダとデコーダからRNNを排除し、代わりにSelf-Attention(自己注意機構)と呼ばれるネットワーク構造を採用しているのが最大の特徴です。理屈はよく分かりませんでしたが、これによりRNNの2つの欠点を補うことができる…らしいです、はい。
Self-Attention(自己注意機構)
Self-Attentionは入力文内の単語間または出力文内の単語間の関連度を計算したものです。なんでも、その文における文脈を考慮したより適切な分散表現を得ることができるようです。
RNNで入力文内の単語間の関係を計算するにはその間にある単語数分のステップが必要だったところ、Self-Attentionでは入力文内のすべての単語間の関係を1ステップで直接計算することが可能です。おまけにすべての計算が並列に行える…ということで、確かにだいぶ早そうですね。
しかし、Self-Attentionでは、語順の情報が失われてしまいます。そこで、位置エンコーディング(positional encoding)と呼ばれる単語の出現位置に固有の情報を入力に負荷します。
トランスフォーマーでは、エンコーダでは入力文のすべての単語を見ながら計算を行いますが、デコーダでは先頭から順に出力を生成するので、まだ出力していない未来の情報は使えません。
ということで
今日は、トランスフォーマーについてでした。処理が早くなるというのはいいことですよね(小並感)。例えば、機械翻訳なんかはリアルタイムに近ければ近いほど、同時通訳みたいな感じになりますし、恩恵は大きそうです。ちなみに私、幼稚園児の頃の将来の夢は「通訳」でした。果たして通訳の仕事は今後どうなっていくのか?そのあたりも気になるところではありますね。
ではまた。
勉強に使ってる書籍はこちら↓
深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第2版