아래 설명하는 Induction Heads와 Associative Recall은 AI 모델의 추론 능력을 나타내며, 이것은 모두 Transformer의 Multi-Head Attention(MHA)과 연관되어 있다.
Induction Heads
Induction Head는 주로 언어 모델에서 특정 유형의 추론 능력을 나타내는데, 모델이 이전에 나타났던 패턴을 기억하고 이후 동일한 패턴이 나타날 때 이에 대해 일관성 있는 반응할 수 있는 능력을 말한다.
예컨대 문장 내에서 ‘Harry Potter’라는 이름을 보았다면, 이후 Harry라는 단어가 다시 등장했을 때 모델은 다음에 Potter가 나올 것을 예측해야 한다.
이것은 모델이 특정 패턴을 저장했다가 특정 시점에 저장된 패턴을 정확히 복사해야 하는 Copying Task와도 유사하지만 Induction Head는 패턴을 정확히 기억한다기 보다 컨텍스트를 이해하고 해당 패턴을 참조해서 일관성 있는 출력을 생성한다는 점에서 Copying Task의 일반화된 버전으로 볼 수 있다.
Example
Induction Heads을 구현하는 표준 형식은 없고, Q, K, V를 이용한 Multi-Head Attention으로 구현될 수 있지만, 입력을 A, B로 분할 한 후에 A는 일련의 연산을 거치고, 그 결과를 B와 연결한 후 output head로 합치는 형태로 구현할 수도 있다. 여기서 output head를 induction head라 하며, Attention의 Multi-head와 유사하다.
입력을 A, B, C 셋으로 분할하는 것도 가능하다. 이 경우 A가 일련의 연산을 거친 후 B와 합쳐지고, 그 결과를 다시 일련의 연산을 거친 후에, 마지막으로 C와 합쳐서 output head에 통과시키는 식으로 구현할 수 있다.
# 입력 데이터를 둘로 분할
a, b = x.chunk(2)
# 분할 된 것 중 하나(=a)를 모델 or 일련의 처리 과정에 통과 시킴
a = model(b)
# 통과된 결과를 나머지(=b)와 합친 후 induction_head를 통과시켜서 출력으로 통합 함.
# 여기서 induction_head는 일반적으로 Linear를 사용함
out = induction_head(torch.cat([a, b], dim=-1)
Python
복사
위의 코드는 단순 예시이고 b도 그냥 합치지 않고 별도의 활성화 함수를 통과한 후에 합치는 것도 가능하다. Mamba 논문에서 제시된 몇 가지 아키텍쳐 참조. 그림 가장 왼쪽의 H3은 3개로 분할한 후 하나씩 합치는 구조를 취한다.
Associative Recall
Associative Recall은 모델이 데이터의 연관성을 이용해서 특정 정보를 회상(Recall)하는 능력을 말한다. 즉, 모델은 입력에서 key-value 쌍을 기억하고 이후에 key가 다시 등장하면 value를 기억해 내야 한다.
예컨대 문장 내에서 “Alice: 1234-5678, Bob: 5678-1234, ...” 와 같은 사람 이름과 전화번호 쌍을 보았다면, 이후 Alice라는 단서가 주어질 때 ‘1234-5678’이라는 결과를 출력해야 한다.