https://arxiv.org/pdf/2308.08780


Abstract:

  • In-context learning(맥락 내 학습)은 언어 모델(LM)에 특정 태스크의 입력-출력 예시 쌍(데모, demonstrations)을 제공하여 해당 태스크를 수행하는 방법임. 즉, 언어 모델에게 문제와 그에 대한 정답 예시들을 문맥 내에서 보여주어 모델이 이를 바탕으로 새로운 문제에 대한 답을 추론하도록 하는 방식.
  • 이 방식은 모든 데모들을 단순히 이어붙여(concatenation) 모델의 입력으로 주고, 마지막에 해결해야 할 테스트 입력을 추가하는 형태임.
  • 하지만 이 방법은 다음과 같은 문제점이 있음:
    • 데모들의 기여도 조절의 어려움: 단순 연결은 각 데모 예시가 모델의 예측에 얼마나 기여하는지를 조절할 수 있는 방법이 거의 없다. 이는 테스트 입력과 관련성이 없는 일부 데모 때문에 최적의 결과를 얻지 못할 수 있음을 의미함.
    • 입력 길이 제한: 많은 트랜스포머 기반 언어 모델은 입력 길이에 제한이 있음. 따라서 입력이 긴 태스크에서 많은 수의 데모 예시들을 입력에 모두 포함시키는 것이 불가능할 수 있다.
  • 이 문제를 해결하기 위해서 저자들은 DENSE: Demonstration Ensembling 기법을 제안함. 이 방법은 단순한 데모들의 연결(concatenation) 대신에, 주어진 데모들을 여러 부분 집합(버킷, buckets)으로 나누어 각각을 사용해 모델의 출력을 예측함. 그 후 각 부분 집합에서 나온 출력의 확률을 조합(앙상블, ensemble)하여 최종적인 예측을 하는 방식임.
  • 즉, 전체 데모를 한 번에 모델에 넣는 대신, 데모를 몇 개씩 나누어서 여러 번 모델에 입력하고 각각의 결과를 합쳐 최종 결과를 도출하는 것.
  • 연구에서는 GPT-j(Wang & Komatsuzaki, 2021) 모델을 사용하고, 12개의 언어 태스크에 대해 실험을 해봤다고 함. (주로 텍스트 분류, 질의응답과 관련딘 NLP 작업을 한 듯.)
  • 그리고 연구에서는 weighted max ensembling 방법을 사용함. 이건 데모를 단순 연결하는 기존 방식에 비해 최대 2.4점의 성능 향상을 보였다고 한다. (앙상블 방식도 약간 변경해서 결과를 낸듯)

Introduction:

  • ICL에서 데모(입력과 정답 쌍)를 제공하는 가장 일반적인 방법은 모델 입력의 맨 앞에 데모들을 단순 연결하는거임. 모델은 이 연결된 데모들을 바탕으로 테스트 입력에 대한 예측을 수행한다. 그러나 이 단순 연결 방식에는 다음과 같은 여러 문제가 있음:
    • 데모 기여도 조절의 어려움: 데모를 단순히 이어붙이면, 각 데모가 최종 예측에 얼마나 기여하는지 직접적으로 조절할 수 없음.
    • 입력 길이 제한 문제: 트랜스포머 기반 언어 모델에는 입력 길이 제한이 있음. 데모가 많거나 개별 입력이 긴 경우, 모델의 컨텍스트 윈도를 초과하여 모든 데모를 포함시키기가 어려움.
    • 데모 순서에 대한 민감성: 대규모 언어 모델은 데모의 순서에 매우 민감함. 즉, 동일한 데모라도 순서가 바뀌면 모델의 성능이나 예측 결과가 달라질 수 있음.
  • 데모 앙상블링(Demonstration Ensembling) 접근 제안:
    • 구체적으로, 주어진 데모 예시들을 여러 개의 부분 집합(버킷, buckets)으로 나눈 후, 각 버킷을 사용하여 모델로부터 예측을 얻는 방법임.
    • 이렇게 얻은 예측을 결합해서 최종적인 예측을 도출한다.
    • 이 기법을 사용할 때 다음 두 가지가 중요함:
      • 분할 방법: 예시들을 어떻게 적절히 나눌 것인지
      • 앙상블 방법: 각 버킷별로 얻은 예측 결과를 어떻게 합칠지

 

 

DEMONSTRATION ENSEMBLING:

  • 주어진 n개의 데모 D = ⟨(x1, y1), …, (xn, yn)⟩ (여기서 xi는 데모의 입력, yi는 그 입력에 대한 정답)을 가지고, DENSE가 어떻게 작동하는지 보자.
  • BUCKET ALLOCATION:
    • DENSE는 n개의 데모를 b개의 버킷(bucket)으로 분할함. 각 버킷은 비어있지 않으며, 서로 다른 데모들로 구성된다. 이는 다음과 같이 이뤄짐:
      • 데모 할당:
        • n개의 데모를 각 버킷에 균등하게 나눈다고 가정하면, 각 버킷에는 γ = n/b개의 데모가 할당됨.
        • 예를 들어, 첫 번째 버킷 B0에는 D의 처음 γ개의 데모가, 두 번째 버킷 B1에는 그 다음 γ개의 데모가 할당되는 식임.
      • 버킷별 데모 분할:
        • 즉, 버킷 Bi는 데모 목록 D의 D[γi : γ(i+1)-1] 범위에 해당하는 데모들을 포함하게 될거임.
        • 예를 들어, b=2이고 n=6이라면, 각 버킷에는 3개의 데모가 할당될거임. B0에는 D의 첫 번째 세 데모 (x1, y1), (x2, y2), (x3, y3)가, B1에는 D의 나머지 세 데모 (x4, y4), (x5, y5), (x6, y6)가 할당되겠지.
  • 앙상블링 방법 (Ensembling Method):
    • 각 버킷의 예측 결과를 어떻게 조합하여 최종 예측을 얻을지 결정하는 것이 바로 앙상블링 방법임.
    • 중요도 가중치 (Importance Weights):
      • 각 버킷 B_i에는 정규화된 중요도 가중치 w_i가 할당되어 있음.
      • 여기서 w_i는 버킷 B_i가 최종 예측에 기여하는 정도를 나타내며, 모든 w_i의 합은 1임.
      • w_0 + w_1 + \cdots + w_{b-1} = 1
    • 앙상블링 연산자 Φ:
      • 앙상블링 연산자 Φ 는 각 버킷의 예측 확률을 입력받아 최종 라벨 y의 예측 확률 P(y|x)을 계산하는 함수임.
      • 논문에서는 3가지 형태의 Φ 를 제안함:
        • 전문가들의 곱 (Product of Experts, PoE):
          • 각 버킷의 예측 확률에다가, 각 버킷의 중요도를 지수로해서 곱한 후, 이 확률들을 모두 곱하는 방법임.
          • 각 버킷의 예측 확률이 모두 독립적인 전문가 의견이라 가정하고, 전문가들의 합의에 따라 최종 결정을 내리는 것.
          • 모든 확률이 비슷하다면 곱의 결과는 높게 나올거임.
          • 반면 하나의 버킷이라도 낮게 나오면 곱의 결과는 크게 감소하는게 특징이다.
        • 전문가들의 혼합 (Mixture of Experts, MoE):
          • 각 버킷의 확률에다가 중요도를 곱하고, 이들을 모두 합산하는 방식임.
          • 이번에는 곱이 아니라 각 버킷의 의견을 가중합으로 결합하여 최종 예측을 결정하는 방식.
          • 만약 어떤 버킷의 확률이 매우 높고 그 버킷의 가중치도 높다면, 그 버킷이 최종 결과에 많은 영향을 미칠거임.
          • 특정 버킷의 낮은 확률이 있다고 해도, 다른 버킷의 높은 확률이 이를 보완할 수 있음.
        • 최대 앙상블 (Max Ensembling):
          • 각 버킷에 대해 가중치가 적용된 예측 확률을 계산하고, 그 중 가장 높은 값을 선택하는 방식임.
          • 모든 버킷 중에서 가장 큰 값을 확률로 사용하는 것.
          • 한 버킷이라도 매우 높은 확률을 가지면 그 버킷이 최종 결정에 지배적인 영향을 미침.
          • (논문에서는 이 방식을 사용한듣듯)
  • 버킷 가중치 계산:
    • 이전 연구에서는 테스트 입력 x와 유사한 데모들이 모델 성능을 더 잘 향상시킨다는 점을 발견했음.
    • 따라서 각 버킷에 포함된 데모들이 테스트 입력 x와 얼마나 유사한지를 기반으로 해당 버킷의 가중치를 계산하는 방식을 사용함.
    • 그러니까 유사성이 높은 버킷일수록 모델 예측에 더 큰 기여를 하도록 설계하는 것.
    • 테스트 입력 x의 임베딩 벡터 x^e와 데모 입력 x_j의 임베딩 벡터 x_j^e 사이의 코사인 유사도를 계산함.
  • 버킷 할당(Clustering Demonstrations):
    • In-context learning에서 사용할 데모(Demonstrations)를 효율적으로 버킷으로 나누기 위해 클러스터링 방법을 보자.
    • 기존의 버킷 구성 방식은 단순히 데모 목록의 순서에 따라 버킷을 형성했음. (순서대로 할당)
    • 그러나 이러한 단순한 방식은 각 버킷이 의미적으로 다양하거나 유사한 데모들로 구성될 것이라는 보장이 없다.
    • 논문에서는 K-평균(K-means) 클러스터링을 사용하여 데모를 유사성에 따라 그룹화하고, 이렇게 형성된 클러스터를 버킷으로 활용하는 방법을 제안함.
    • 유사성 기반 버킷 할당 (Similar-together Bucket Allocation):
      • 각 데모의 벡터 표현(vector representation) 간 유사성을 기준으로 데모를 클러스터링함.
      • 구체적으로, K-평균 클러스터링 알고리즘(Hartigan & Wong, 1979)을 사용한다.
      • b개의 버킷을 형성하기 위해, 데모를 b개의 클러스터로 나눔.
      • 클러스터링은 각 데모의 벡터 표현을 바탕으로 이뤄짐.
      • 이렇게 형성된 각 클러스터는 의미적으로 유사한 데모들을 포함하게 된다.
      • 이러한 방법을 통해 “비슷한 것들끼리 묶는(similar-together)” 버킷 할당 방식을 구현함.
    • 다양성 기반 버킷 할당 (Diverse Bucket Allocation):
      • 유사성에 기반하지 않고, 오히려 데모들 간의 비유사성(dissimilarity)를 최대화하는 방식으로 버킷을 구현하는 방법임.
      • 이를 위해 먼저 ⌊n/b⌋개의 클러스터를 형성함. 각 클러스터에는 b개의 데모가 들어가게 된다.
      • 각 클러스터에서 하나의 데모씩 선택하여 총 b개의 버킷을 형성하는 방법임.
      • 이렇게 하면 각 버킷은 여러 클러스터에서 뽑힌 데모들을 포함하게 되며, 이는 서로 다른 범주의 데모들이 한 버킷에 섞이게 됨.
    • 클러스터링을 통해 버킷을 구성하면, 데모를 어떻게 순서화하더라도 버킷 구성에 큰 영향을 주지 않게됨. (순서에 대한 민감도 감소)

 

 

실험 결과:

  • 버킷 수(Bucket Count):
    • 모델의 최적 성능을 위해서는 적절한 버킷 수를 선택하는 것이 중요
    • 6-샷과 10-샷 설정에서 최적 버킷 수는 다를 수 있다.
    • 버킷 수가 많아질수록 모델의 전반적인 성능이 향상되는 경향이 있음. 이는 버킷이 많을수록 데모를 더 세분화하여 처리할 수 있고, 다양한 관점이 앙상블에 반영되기 때문임.
  • 앙상블링 방법 비교 (Comparing Ensembling Methods):
    • 다양한 앙상블링 방법이 In-context learning에서 단순 데모 연결 방식(Concat)보다 더 나은 성능을 보임.
    • Max ensembling: 버킷별 확률 중 최대값을 사용하는 앙상블 방식이 가장 성능이 낫다고 함.
    • 입력과 유사성 기반의 가중치를 사용하는 앙상블 방식은 특히 성능을 향상시킴. (6-shot 기준)
    • Unweighted ensembling은 Concat-sort보다 성능이 떨어졌다고 함:
      • Unweighted ensembling: 모든 버킷에 동일한 가중치(w_i = \frac{1}{b})를 부여하는 방식
      • Concat-sort: 데모들을 테스트 입력과 유사한 순으로 정렬하는 방식
  • 가중치 기반 앙상블의 성능:
    • 비슷한 데모끼리 묶는(similar-together) 클러스터링은 6-샷 설정에서 가중치 기반 앙상블 방법에 꾸준한 성능 향상을 보임.
  • 클러스터링 기반 버킷 할당의 영향:
    • 태스크와 데모 수에 따라 클러스터링 전략의 성능은 달랐다고 함. 10-샷 설정에서는 다양한 데모를 포함하는 버킷 할당 방법이 항상 비슷한 데모끼리 묶는 것보다 성능이 뛰어났다고 함. 그러나 6-샷에서는 그렇지 않았다고 함.
    • 이는 데모 수가 많을수록 버킷 간에 보다 다양한 데모들을 배치할 수 있기 떄문임.

+ Recent posts