見出し画像

Hallucinationのモデルの内部指標として使えるALTI


言語モデルが事実では無いことを出力する問題であるHallucinationですが,それが「モデルの内部を見ると,Hallucinationがある程度わかる」,という話です.モデルの内部を見たHallucinationの検出は、簡易にはSequence log probabilityが低いものを弾く,などは考えられますが,ALTI[1]ではモデル内部の挙動を追跡しており,思想が面白かったので,数式の文脈を踏まえてメモを書いておきます.

[1] Measuring the Mixing of Contextual Information in the Transformer. Ferrando et al., EMNLP 2022

概要


Transformer構造はLLMにおいてデファクトスタンダードです.ALTIではTransformerモデルにおいて,出力$${\boldsymbol{y}_i}$$にどれだけ入力$${\boldsymbol{x}_j}$$が計算として貢献しているか,という貢献度 $${c_{i←j}}$$を計算します.(論文内では$${c_{i,j}}$$と表記)

特に,翻訳タスクでは貢献度が低いトークンは入力とはかけ離れてTransformer内部で生成されたトークンであると考えられるため,Hallucination(過剰訳)だと考えられます.ALTIはTransformer Decoderを元にした計算方法ですが,これをTransformer Encoder-Decoderに拡張したALTI+[2]では外部指標を使ったHallucination検出精度を超えるものもありました.([3]表1)

[2] Towards Opening the Black Box of Neural Machine Translation: Source and Target Interpretations of the Transformer Ferrando et al., EMNLP 2022.

[3] Detecting and Mitigating Hallucinations in Machine Translation: Model Internal Workings Alone Do Well, Sentence Similarity Even Better. David Dale et al.,  et al., EMNLP 2023.

解説

先ほど解説したように,ALTIでは$${\boldsymbol{y_i}=\text{Transformer}(\boldsymbol{x_1,..,x_j,..,x_N})}$$として,TranformerのValueの動きを追跡すると,トークン$${\boldsymbol{y_i}}$$がトークン$${\boldsymbol{x_j}}$$由来である貢献度$${{c_{i←j}}}$$を出せます.

Transformerブロックのうち,iトークンとjトークンが計算で含まれるのは,Attention層の部分です.(Vanilla Transformerを想定)

図1 Attention Is All You Need. Vaswani  at al., 2017より引用

Attention層は詳しく見ると以下のように入力XがQ,K,Vに複製され計算されます.

図2 Attention Is All You Need. Vaswani  at al., 2017より著者が編集

これを論文に記載のように数式で書くと

$${\boldsymbol{q}_i:=\boldsymbol{W}_Q^{h}\boldsymbol{x}_i\:, \:\:\:\:\:\boldsymbol{k}_i:= \boldsymbol{W}_K^{h}\boldsymbol{x}_i\:, \:\:\:\:\:\boldsymbol{v}_i:= \boldsymbol{W}_V^{h}\boldsymbol{x}_i}$$

以降はValueの計算に含まれる$${\boldsymbol{x}}$$を追跡します.

あるAttention重み行列は

$${\mathbf{A}^h=\mathrm{softmax\left(\frac{\boldsymbol{Q}\boldsymbol{K}^T}{\sqrt{d_k}}\right)}}$$

となり,この要素のi,jの類似度にこの重みをValueにかけると,新たなベクトル$${\boldsymbol{z_i}}$$が手に入ります.
$${\boldsymbol{z}_i^h=\sum_j^J \mathbf{A}_{i, j}^h \mathbf{W}_V^h \boldsymbol{x}_j}$$

これらをheadの数だけ横に並べて(concat),元のベクトルと同じサイズに線型写像をすると,Attention層(図2オレンジ色で示した部分)の出力となります.
$${{{\boldsymbol{u}}_i=\mathbf{W}_O \operatorname{Concat}\left(\boldsymbol{z}_i^1, \cdots, \boldsymbol{z}_i^H\right)+\boldsymbol{b}_O = \sum_j^J \sum_h^H \mathbf{W}_O^h \mathbf{A}_{i, j}^h \mathbf{W}_V^h \boldsymbol{x}_j+\boldsymbol{b}_O}}$$

次に図1黄色で示した,Residual Connection(add)とLayer Normalizationの計算:$${\operatorname{LN}(\boldsymbol{u})=\frac{\boldsymbol{u}-\mathrm{E}[\boldsymbol{u}]}{\sqrt{\operatorname{Var}[\boldsymbol{u}]}} * \gamma+\beta・・・(1)}$$を行います.

$${{\boldsymbol{y}_i=\operatorname{LN}\left(\sum_j^J \sum_h^H \mathbf{W}_O^h \mathbf{A}_{i, j}^h \mathbf{W}_V^h \boldsymbol{x}_j+\boldsymbol{b}_O+\boldsymbol{x}_i\right)・・・(2)}}$$

ただし,LayerNormの$${γ,β}$$はパラメータ,$${ε}$$は数値計算上のもののため無視,$${n}$$は隠れ層の次元数です.

(2)式がTransformerのAttentionブロックによる,iトークンとjトークンが関係する計算を表したものになります.以降のFeed Forward層では,iトークンはiトークンにしか作用しないため,iトークンからjトークンへの貢献度に影響はありません.

次に,LayerNormの式(1)を簡略化します.長いので,「LayerNormの分子は線形変換である」ということを示すとこまで読み飛ばしてもらっても構いません.興味ある人は一つ一つ追ってみてください.

LayerNormalizationの式(式(1))のLayerNormalizationの分子を式変形すると

$${\operatorname{LN}(\boldsymbol{u}_i)=\frac{\boldsymbol{u}_i-\mathrm{E}[\boldsymbol{u}_i]}{\sqrt{\operatorname{Var}[\boldsymbol{u}_i]}} * \gamma+\beta・・・(1)}$$
この分子は$${γ\boldsymbol{u}-γμ(\boldsymbol{u})}$$

$${{γ\boldsymbol{u}-γμ(\boldsymbol{u})=\left[\begin{array}{cccc}\gamma_1(u_1-μ(\boldsymbol{u}))\\\gamma_2(u_2-μ(\boldsymbol{u}))\\...\\\gamma_n(u_n-μ(\boldsymbol{u}))\\\end{array}\right]}}$$

$${{=\left[\begin{array}{cccc}\gamma_1((1+\frac{-1}{n})u_1+ \frac{-1}{n}u_2+...+\frac{-1}{n} u_n)\\\gamma_2(\frac{-1}{n}u_1+(1+\frac{-1}{n})u_2+...+\frac{-1}{n}u_n)\\... \\\gamma_n(\frac{-1}{n}u_1+ \frac{-1}{n}u_2+...+(1+\frac{-1}{n})u_n)\\\end{array}\right]}}$$

$${{=\left[\begin{array}{cccc}\gamma_1(1+\frac{-1}{n})u_1+\gamma_1 \frac{-1}{n}u_2+...+\gamma_1\frac{-1}{n} u_n\\\gamma_2\frac{-1}{n}u_1+\gamma_2 (1+\frac{-1}{n})u_2+...+\gamma_2\frac{-1}{n}u_n\\.... \\\gamma_n\frac{-1}{n}u_1+\gamma_n \frac{-1}{n}u_2+...+\gamma_n(1+\frac{-1}{n})u_n\\\end{array}\right]}}$$

$${{\left[\begin{array}{cccc}\gamma_1\frac{n-1}{n}u_1+\gamma_1 \frac{-1}{n}u_2+...+\gamma_1\frac{-1}{n} u_n\\\gamma_2\frac{-1}{n}u_1+\gamma_2 \frac{n-1}{n}u_2+...+\gamma_2\frac{-1}{n}u_n\\\ ... \\\gamma_n\frac{-1}{n}u_1+\gamma_n \frac{-1}{n}u_2+...+\gamma_n\frac{-1}{n-1}u_n\\\end{array}\right]}}$$

$${{\left[\begin{array}{cccc}\gamma_1\frac{n-1}{n}&\gamma_1 \frac{-1}{n}&...&\gamma_1\frac{-1}{n} \\\gamma_2\frac{-1}{n}&\gamma_2 \frac{n-1}{n}&...&\gamma_2\frac{-1}{n}\\...&...&...&... \\\gamma_n\frac{-1}{n}&\gamma_n \frac{-1}{n}&...&\gamma_n\frac{-1}{n-1}\\\end{array}\right] \left[\begin{array}{cccc} u_1 \\u_2 \\: \\u_n \end{array}\right]}}$$

$${{=\left[\begin{array}{cccc}\gamma_1 & 0 & \cdots & 0 \\ 0 & \gamma_2 & \cdots & 0 \\ \cdots & \cdots & \cdots & \cdots \\ 0 & 0 & \cdots & \gamma_n\end{array}\right]\left[\begin{array}{cccc}\frac{n-1}{n} & -\frac{1}{n} & \cdots & -\frac{1}{n} \\ -\frac{1}{n} & \frac{n-1}{n} & \cdots & -\frac{1}{n} \\ \cdots & \cdots & \cdots & \cdots \\ -\frac{1}{n} & -\frac{1}{n} & \cdots & \frac{n-1}{n}\end{array}\right]\left[\begin{array}{cccc}u_1\\u_2\\:\\u_n\end{array}\right]=\mathbf{Lu}}}$$

($${\mathbf{L}}$$は線形変換であることを示す.)

よって,LayerNormの分子は線形変換であるように書き直せて,

$${{\boldsymbol{y}_i=\mathrm{LN}(\boldsymbol{u}_i)=\frac{\boldsymbol{Lu_i}}{\sigma{(\boldsymbol{u_i})}}+β}}$$

ここで式(2)の表現$${\boldsymbol{u}_i=\sum_j^J \sum_h^H \mathbf{W}O^h \mathbf{A}{i, j}^h \mathbf{W}_V^h \boldsymbol{x}_j+\boldsymbol{b}_O+\boldsymbol{x}_i}$$を元に戻すと,LayerNormを考慮したTransformerブロックは

$${{\boldsymbol{y}_i=\frac{\sum_j^J\boldsymbol{L} \sum_h^H \mathbf{W}_O^h \mathbf{A}_{i, j}^h \mathbf{W}_V^h \boldsymbol{x}_j+\boldsymbol{b}_O+\boldsymbol{x}_i}{\sigma{(\boldsymbol{u}_i)}}+β}}$$

$${{=\frac{\boldsymbol{L\left(\sum_j^J \sum_h^H \mathbf{W}_O^h \mathbf{A}_{i, j}^h \mathbf{W}_V^h \boldsymbol{x}_j+\boldsymbol{x}_i\right)}}{\sigma{(\boldsymbol{u}_i)}}+\frac{\boldsymbol{L\boldsymbol{b}_O}}{\sigma{(\boldsymbol{u}_i)}}+β}}$$

と書ける.こうすることでTransformerブロックは抽象化して,jトークンの作用した範囲(下線部a)とそれ以外(下線部b)に分けられる←ここがキモ

$${{\boldsymbol{y}_i=\underline{\sum_j^J T_i\left(\boldsymbol{x}_j\right)}_a+\underline{\frac{1}{\sigma\left(\hat{\boldsymbol{x}}_i+\boldsymbol{x}_i\right)} \mathbf{L} \boldsymbol{b}_O+\beta}_b}}$$

なお,residualは自身のみ足すので,i=jとi≠jで挙動が変わります

$${{T_i\left(\boldsymbol{x}_j\right)= \begin{cases}\frac{1}{\sigma\left(\hat{\boldsymbol{x}}_i+\boldsymbol{x}_i\right)} \mathbf{L} \sum_h^H \mathbf{W}_O^h \mathbf{A}_{i, j}^h \mathbf{W}_V^h \boldsymbol{x}_j & \text { if } j \neq i \\ \frac{1}{\sigma\left(\hat{\boldsymbol{x}}_i+\boldsymbol{x}_i\right)} \mathbf{L}\left(\sum_h^H \mathbf{W}_O^h \mathbf{A}_{i, j}^h \mathbf{W}_V^h \boldsymbol{x}_j+\boldsymbol{x}_i\right) & \text { if } j=i\end{cases}}}$$

この時,トークンjからトークンiへの貢献度$${c_{i←j}}$$を,トークンiの計算中のトークンj由来の部分の絶対値とすると

$${{c_{ij}=|T_i(\boldsymbol{x_j})|_2}}$$

従って,Transformerブロックのトークンjからトークンiへの貢献度が計算できます.

補正

ここまでは論文中では,ALTIのバックグラウンドです.ALTIでは補正をかけています.

ユークリッド距離では外れ値に影響されやすかったり,ランダムにとったベクトルの類似度が近いといった問題があったため,論文中では,$${T}$$の絶対値ではなく,$${{\boldsymbol{y}}}$$との差のL1ノルムをとることにし,$${{c_{i←j}}}$$の上限を$${{|\boldsymbol{y}_i|_1}}$$としました.

また差をとって余分な影響を除いたり$${d_{i, j}=\left|\boldsymbol{y}_i-T_i\left(\boldsymbol{x}_j\right)\right|_1}$$,$${{|T_i\left(\boldsymbol{x}_j\right)|_1}}$$が$${{|\boldsymbol{y}_i|_1}}$$を超えた場合,無視する$${\max \left(0,-d{i, j}+\left|\boldsymbol{y}_i\right|_1\right)}$$など補正をしています.

加えて,$${c}$$を0-1の範囲に収めるため次のように計算

$${{c_{i←j}=\frac{\max \left(0,-d_{i, j}+\left|\boldsymbol{y}_i\right|_1\right)}{\sum_k \max \left(0,-d{i,k}+\left|\boldsymbol{y}_i\right|_1\right)}}}$$

Transformerブロックを複数積んだ場合,貢献度に対して,その貢献方向のパスを辿って確率を計算していくことで,簡易に入力から出力までの端から端の貢献度を計算できます.

$${{R^{l}=C^{l}C^{l-1} \cdots C^{1}}}$$

ここまで読めた方は,Transformer Encoder-Decoder に拡張したALTI+ (参考文献[2])も読んでみてください.Logitsへの影響にも拡張したALTI-Logit (参考文献[4])もあります.

参考文献

[1] Measuring the Mixing of Contextual Information in the Transformer. Ferrando et al., EMNLP 2022

[2] Towards Opening the Black Box of Neural Machine Translation: Source and Target Interpretations of the Transformer Ferrando et al., EMNLP 2022.

[3] Detecting and Mitigating Hallucinations in Machine Translation: Model Internal Workings Alone Do Well, Sentence Similarity Even Better. David Dale et al.,  et al., EMNLP 2023.

[4] Explaining How Transformers Use Context to Build Predictions. Ferrando et al., ACL 2023


この記事が気に入ったらサポートをしてみませんか?