4 minute read

머신러닝과 비교하여 딥러닝 모델의 가장 큰 문제는 모델이 왜 이런 결과를 만들어냈는지 해석할 수 없다는 것이고 이를 ‘Black Box Problem’이라고 한다. 그리고 이 Black Box 문제를 해결해보고자 예전부터 XAI(eXplainable AI)에 관한 연구가 활발한데 XAI에서 사용하는 방법은 2가지로 나눌 수 있다.

  • 해석가능성(Interpretability): 엔지니어의 관점에서 모델의 구조를 기반으로 알고리즘이 어떻게 변화하여 해당 결과를 도출해내는지 해석할 수 있는 능력
  • 설명가능성(Explainability): 해석가능성에서 더 나아가 사회과학, HCI 등의 요소를 결합하여 일반적인 사용자들도 이해할 수 있도록 설명하는 능력

이번 포스팅에서는 딥러닝 모델에서 가장 많이 사용하는 Transformer를 기반으로 interpretability에 초점을 맞춰보자. 예전에도 Transformer에 관한 포스팅을 작성한적이 있지만 이번에는 Attention과 MLP 부분을 좀 더 자세하게 다루어보겠다.

Embedding

Transformer에 문장이 입력되면 문장은 여러 토큰(무조건 토큰 하나가, 단어를 의미하는 것은 아님)으로 나뉘고 각 토큰은 해당 단어의 의미와 주변 단어들과의 관계, 위치 정보 등을 담은 고차원의 임베딩 벡터로 표현된다.

토큰이 임베딩 벡터로 표현된다는 것은 내적을 통해 단어사이의 유사도를 구할 수 있게 되는 것이고,

  • 내적이 양수이면 단어가 유사한 것
  • 내적이 0이면 전혀 관련이 없는 것
  • 내적이 음수이면 단어가 반대의미를 가지는 것이다.


image


임베딩은 처음에는 랜덤한 값으로 이루어져있다가 여러 layer를 거치면서 data를 기반으로 아래와 같이 토큰의 정보를 가장 잘 담고 있는 상태로 업데이트된다. 이 embedding matrix의 크기는 모델이 미리 정의해놓은 차원이 행, token의 갯수가 열로 이루어진다.


image


이 embedding matrix는 모델이 어느 정도 단어까지를 문맥으로 볼 것인가에 대한 embedding_dimension x context_size의 크기로 변환되고


image


변환된 embedding matrix의 마지막열 벡터를 사용하여 아래와 같은 unembedding matrix와 곱해(여기까지 logits) 확률(softmax 후)을 계산한다. Unembedding matrix는 토큰갯수 x embedding_dimension의 크기를 가지고 있어 내적 후의 logits의 크기는 토큰갯수x1이다.

  • unembedding matrix: number of token x embedding dimension
  • embedding matrix 마지막열 벡터: embedding dimension x 1(last token)
  • 둘의 내적: number of token x 1(last token) -> 토큰 갯수만큼의 logit값


image


softmax에서 temperature는 0에 가까울수록 가장 높은 logits값의 영향이 크도록(logit의 크기를 그대로 반영), 0과 멀어질수록 가장 높은 logits값의 영향이 작도록(다른 logits도 확률에 영향을 미치도록. 높은 logits값이 그대로 적용된다기 보다는 이 영향을 어느 정도 감쇠시켜서 다양한 토큰이 output으로 출력될 수 있음) 조절한다.

Attention

Attention(여기서는 Self-Attention. Cross-Attention도 있는데 이건 나중에 다뤄보자)은 Query, Key, Value 를 통해 모델이 각 token들의 관계와 변화량을 계산하는 과정이다. 즉, 어떤 단어가 지금 나를 Attend(주목)하고 있는지 파악하는 과정.

  • Query는 나(현재 token)와 관계가 있는 token이 무엇인지 질문을 하는 역할
  • Key는 어떤 token이 현재 token과 연관이 있는지 Query에 대한 답을 하는 역할
  • Value는 Key에 담긴 의미를 나타내어, 기존 token의 embedding에 어떤 의미가 얼만큼 추가되어야 하는지 업데이트 하는 역할

Q와 K는 관계(연관성)를 계산하기 위한 것이고, V는 실제 정보를 전달하기 위한 것이다.

$W_Q$ 는 embedding space에 있는 token vector를 query space로 옮겨주는 역할을 한다. $W_K$, $W_V$ 는 key space, value space로 옮겨주는 역할을 한다.

\[E_{1} \times W_Q = Q_{1}, \quad E_{1} \times W_K = K_{1}, \quad E_{1} \times W_V = V_{1}\]

$Q_{1}$ 은 전체 토큰에 대해 만들어진 Query 행렬이며 각 행인 $i$번째 토큰의 Query 벡터는 $Q_{1}[i]$ 으로 표현할 수 있을 것(예시일뿐)이다. 즉, $Q_{1}$ 자체는 하나의 토큰을 나타내는 것이 아니라 모든 토큰에 대한 Query 벡터들의 집합이다. K, V도 마찬가지.

예시

  • Q1: 각 토큰에 대한 모든 query를 담고 있는 행렬
  • Q[i]: “나는 이런 특징과 관련 있는 token의 정보를 받아오고 싶어.”
  • K[j]: “나는 이런 특징을 가진 token이야.”
  • Q[i]·K[j]: “그럼 우리 둘이 얼마나 관련 있음?”
  • Value(V[j]): “내가 가진 실제 정보는 이거야. 네가 준 가중치(Q[i]·K[j])만큼 반영해줄게!”


image


token 사이의 관계는 Query와 Key의 내적으로 계산할 수 있고, 내적이 크면 두 token은 깊은 관계를 가지고 있는 것. 그리고 이 내적값은 softmax를 통해 확률값으로 변환할 수 있다.


image


추가적으로, Transformer는 RNN과 달리 전체 sequence를 한 번에 병렬로 처리할 수 있다는 것이 큰 장점이다. 하지만 decoder에서 학습 시, 뒤에 나올 단어를 이미 알면 학습에 의미가 없으므로 future token을 가린 상태(masking)로 Attention을 수행한다. 이때 Q와 K의 내적값에서 뒤의 단어에 해당하는 부분에 -Inf를 넣어 softmax 확률이 0이 되도록 하여, 해당 단어가 사용되지 않도록 한다.


image


Value vector는 문맥 정보를 잘 담은 최종 token을 만들기 위해 다른 token에서 더해져야 할 정보를 담고 있는 벡터로, 기존 embedding이 얼마나 변해야 하는지를 나타낸다. Q,K가 내적된 후 softmax를 통해 확률값으로 변하면 이 확률값은 Value를 얼만큼 적용할지를 결정하는 가중치 역할을 하게 되고, 이 Value가 기존 embedding vector를 얼만큼 바꿀지를 결정하게 되는것이다.


image


따라서, 이와 같이 모델에 의해 학습되는 $W_{Q1}$, $W_{K1}$, $W_{V1}$ -> $Q_{1}$, $K_{1}$, $V_{1}$ 을 한 세트로 한 가지 관점에서 token의 관계를 파악하는 것을 Single Head Attention이라고 하고, 각기 다른 $W_{Q}$, $W_{K}$ , $W_{V}$ 를 병렬로 배치하여 다양한 문맥과 관계를 학습할 수 있도록 하는 것을 Multi-Head Attention이라고 한다.

Sequence of token embeddings: $E = [e_1, e_2, \dots, e_n]$

Dimension: $d_{\text{model}}$

Single Multi

MultiLayer Perceptron

Attention이 문맥 정보를 계산한다면, MLP는 문맥 정보를 기반으로 중요한 feature를 더 강화한다. MLP는 Attention의 output을 입력으로 받아 linear, R(G)eLU, linear 연산 후 입력을 다시 더해주는(skip connection) 방법을 사용한다.

예를 들어, Attention의 output에서 마이클 조던이라는 이름에 대한 정보를 담고 있는 임베딩 벡터하나를 MLP에 넣으면 여러 연산을 통해 농구와 관련된 임베딩 벡터가 더 강화되고 이걸 다시 마이클 조던이라는 input과 더해서 마이클 조던이 농구와 관련되었다는 정보를 더 강화하게 된다. 마이클 조던과 농구가 관련 있다는 것은 이미 Attention에서 문맥 정보를 파악하며 이루어졌고, MLP는 이렇게 중요한 정보를 비선형 연산을 통해 더 강화하는 역할을 한다. 이런 과정이 모든 토큰 벡터에 똑같이 적용된다.


image


LLM은 이렇게 text를 입력으로 받아 Attention으로 문맥을 파악하고, MultiLayer Perceptrion에서 중요한 토큰은 더 강화하고, 중요하지 않은 토큰은 약화시키는 과정이 여러번 반복되어 다음 단어를 예측하는 구조로 동작한다.

특히, 요즘에는 MLP의 각 차원이 하나의 의미만 담당하는 것이 아니라(마이클 조던이 마이클 조던의 이름을 넘어 농구, 시카고 불스, 나이키, 23번, 은퇴 등 훨씬 더 많은 정보를 담고 있도록), 여러 의미가 희소하게 겹쳐져 인코딩되는 ‘Super Position’이라는 개념이 주목을 받아, LLM이 제한된 파라미터로 방대한 지식을 저장할 수 있도록 하고, 이 구조를 해석하려는 interpretability 연구가 활발히 이루어지고 있다.

Transformer와 MLP 학습에는 아래 자료를 참고했다.