ディープラーニング編

RNNやCNN、Transformerの理解を問います

Transformer: Attentionスコアのスケーリング理由 レベル1

TransformerのSelf-Attention機構で用いられるScaled Dot-Product Attentionでは、QueryベクトルとKeyベクトルの内積を \(\sqrt{d_k}\) (\(d_k\)はキーベクトルの次元数) で割るスケーリングを行います。このスケーリングを行う主な理由として、最も適切なものを選択してください。

解説
解答と解説を表示
<h4>Transformer: Scaled Dot-Product Attention とスケーリングの重要性</h4> <p>TransformerのSelf-Attention機構では、Queryベクトル (Q) と Keyベクトル (K) の類似度を計算するために内積(Dot Product)がよく用いられます。しかし、単純な内積ではなく、<strong>Scaled Dot-Product Attention</strong> という、内積をスケーリング(調整)する手法が標準的に採用されています。</p> <div class="section"> <h5>Scaled Dot-Product Attention の計算式</h5> <p>Queryベクトル \(\mathbf{q}\) と Keyベクトル \(\mathbf{k}\) のアテンションスコアは、以下のように計算されます。</p> <div class="formula"> $AttentionScore(\mathbf{q}, \mathbf{k}) = \frac{\mathbf{q} \cdot \mathbf{k}}{\sqrt{d_k}}$ </div> <p>ここで、\(\mathbf{q} \cdot \mathbf{k}\) はベクトル \(\mathbf{q}\) と\(\mathbf{k}\)の内積、\(d_k\) はこれらのベクトルの次元数(Keyベクトルの次元数)を表します。この \( / \sqrt{d_k} \) の部分がスケーリング操作です。</p> </div> <div class="section"> <h5>なぜスケーリングが必要なのか?</h5> <p>スケーリングが必要となる主な理由は、<strong>内積の値の大きさ</strong>と、後続の<strong>Softmax関数</strong>の性質に関係しています。</p> <ul> <li><strong>内積の値と次元数:</strong> QueryベクトルとKeyベクトルの各要素が平均0、分散1の独立なランダム変数であると仮定すると、それらの内積 \(\mathbf{q} \cdot \mathbf{k} = \sum_{i=1}^{d_k} q_i k_i\) の平均は0ですが、分散は \(d_k\) になります。つまり、<strong>ベクトルの次元数 \(d_k\) が大きくなるほど、内積の値(のばらつき)も大きくなる傾向</strong>があります。</li> <li><strong>Softmax関数と勾配消失:</strong> アテンションスコアは、Softmax関数によって正規化され、アテンションウェイト(確率分布)に変換されます。Softmax関数 \( \text{softmax}(z_i) = e^{z_i} / \sum_j e^{z_j} \) は、入力値 \(z_i\) の絶対値が大きい領域では、その勾配が非常に小さく(ほぼ0に)なってしまいます。</li> <li><strong>問題点:</strong> もしスケーリングを行わず、次元数 \(d_k\) が大きい場合に内積 \(\mathbf{q} \cdot \mathbf{k}\) が非常に大きな(あるいは非常に小さな)値をとると、Softmax関数への入力が飽和領域に入ってしまい、勾配が消失します。これは、誤差逆伝播による学習がうまく進まなくなり、モデルの収束を妨げる原因となります。</li> </ul> </div> <div class="section"> <h5>スケーリングの効果</h5> <p>内積を \(\sqrt{d_k}\) で割ることにより、内積の値の分散が次元数 \(d_k\) に依存しないように(分散を1程度に)調整されます。これにより、Softmax関数への入力が大きくなりすぎるのを防ぎ、<strong>勾配消失問題を緩和し、学習プロセス全体を安定化させる</strong>ことができます。<strong>(選択肢2が正しい)</strong></p> </div> <div class="section"> <h5>他の選択肢の評価</h5> <ul> <li>選択肢1: 次元数の影響を抑制しますが、完全に依存しなくするわけではありません。主目的は学習の安定化です。</li> <li>選択肢3: このスケーリング操作は、計算量やメモリ使用量にはほとんど影響を与えません。</li> <li>選択肢4: QueryとKeyの次元数を揃えることはAttention計算の前提ですが、スケーリングはそのための操作ではありません。</li> </ul> </div> <p>したがって、Scaled Dot-Product Attentionにおけるスケーリングは、特に高次元のベクトルを扱う場合に、学習を安定させるための重要なテクニックです。</p>
問題 1/1
カテゴリ一覧に戻る