パディングとは、機械学習やディープラーニングの入力データや特徴量マップの周囲に、0などの特定の値を補う処理です。画像処理では画像の端の情報ロスを防ぎ、自然言語処理では文章の長さを揃えるために必須の技術です。
パディングとは
パディングとは、ニューラルネットワークの入力データや中間層のデータサイズを調整するため、端に余白データを追加する処理のことです。
詳しく解説
ディープラーニングにおいて、画像やテキストなどのデータを畳み込み層などのモデルに入力する際、そのまま処理を進めるとデータの端の画素や単語が参照される回数が中央部よりも少なくなってしまい、端の情報が失われる問題が発生します。また、畳み込み演算を繰り返すたびにデータのサイズが小さくなってしまうため、ネットワークを深くすることが難しくなります。ここでパディングを用いてデータの周囲に余白(通常は0)を追加することで、出力サイズを入力サイズと同じに保ったまま学習を進めることが可能になります。自然言語処理の分野では、バッチ処理を行う際に長さが異なる文章の長さを揃えるため、短い文の末尾などに特別なトークンを埋め込む処理としても広く利用されています。
具体例・使われ方
画像処理では、3×3のフィルターを使った畳み込み演算を行う際に、入力画像の周囲に1ピクセル分の0をパディングすることで、入力と出力の画像サイズを同じに維持します。自然言語処理では、長さがバラバラな文章をGPUで効率的に一括処理するために、最も長い文章に合わせた長さになるよう短い文章の余白にパディングを行います。
似た用語との違い
ストライド(Stride)が畳み込みのフィルターを動かす間隔を指すのに対し、パディングはデータ自体の外側に余白を追加する点という違いがあります。
注意点
不適切なパディングを行うと、実際には存在しない0などの余分なデータがモデルの学習に悪影響を与え、精度低下を招く恐れがあります。特に自然言語処理のパディングでは、本来の意味を持たない埋め込み値が予測結果にノイズとして作用しないよう、アテンション機構などでマスク処理を併用する注意が必要です。