パディングマスクは、自然言語処理のトランスフォーマーモデルにおいて、バッチ処理のために追加された無意味な埋め込み用トークン(パディング)を、アテンション機構の計算対象から除外するための仕組みです。これにより、可変長のテキストを効率よく並列処理しつつ、不要な情報による悪影響や計算コストの無駄を防ぐことができます。
パディングマスクとは
パディングマスク(Padding Mask)とは、自然言語処理(NLP)などのディープラーニングにおいて、入力データの長さを揃えるために挿入された無意味な埋め込みデータ(パディングトークン)を、モデルが計算する際に無視するように指示を出すためのフィルタリング機構です。
詳しく解説
トランスフォーマーなどのニューラルネットワークモデルで複数のテキストデータを同時に処理するミニバッチ学習を行う際、入力データの長さ(文の長さ)を揃える必要があります。このとき、最も長い文に合わせて、短い文の後ろに特殊なトークンを追加する処理をパディングと呼びます。しかし、このパディングトークンには意味がないため、セルフアテンションなどの計算にそのまま含めてしまうと、モデルが不要な情報に注目してしまい、学習効率や精度が低下する原因になります。そこで、パディングマスクを適用し、パディングトークンに対応する位置のアテンションスコアを極めて小さな値に書き換えます。これにより、ソフトマックス関数を通した後の重みが実質的に0になり、モデルがその部分を完全に無視できるようになります。
具体例・使われ方
例えば、「私は猫が好きです」(長さ5)と「こんにちは」(長さ2)という2つの文をミニバッチで同時に処理する場合を考えます。長さを5に揃えるため、「こんにちは」の後ろに3つのパディングトークンを追加して「こんにちは[PAD][PAD][PAD]」とします。このデータをトランスフォーマーに入力する際、パディングマスクによって後半の3つの[PAD]部分への注目度がゼロになるように制御されます。結果として、モデルは「こんにちは」という元の意味だけに集中して学習を行うことができます。
似た用語との違い
混同されやすい概念にルックアヘッドマスクがあります。パディングマスクが「無意味なパディングトークンを無視するため」に適用されるのに対し、ルックアヘッドマスクは「未来のトークンを予測するタスクにおいて、未来の情報を見せないようにするため」に適用されます。これらはアテンション機構において組み合わせて使用されることがあります。
注意点
パディングマスクの適用を忘れたり、実装を誤ったりすると、モデルが無意味なトークンからパターンを学習しようとしてしまい、予測精度が低下します。また、ミニバッチ内のテキストの長さの差が極端に大きい場合、パディングの割合が増えて計算の無駄が発生するため、バッチ作成時に類似した長さのデータを集める工夫が必要になることがあります。