Prompt Technique - In Context Learning

김혁준·2025년 2월 12일

prompt-engineering

목록 보기
6/12

In Context Learning이란?

  • LLM이 Prompt내에 주어진 맥락을 통해 새로운 작업을 수행할 수 있는 능력을 가지는것.
  • Prompt Design 원칙 중에 "Use Example"에 해당됨
  • LLM의 성능은 주어진 예시에 크게 의존함
  • 이전에는 Fine-tuning을 통해 새로운 작업을 배웠음

Few-shot learning

  • 소수의 예시를 프롬프트에 추가해서 사용하는 방법은 일반적으로 Few-shot라고 지칭함
  • Few-shot의 이유는 제한된 Context Window 사이즈 때문임

예시를 사용할때 고려해야할 요소들

  • 예시를 제공할때 라벨링이 필요한가?
  • 예시의 순서는 중요한가?
  • 좋은 예시를 선택하는 방법은 무엇인가?

예시에서 라벨링이 중요한가?

  • 예시의 순서에 따라 전체적인 예시 제공 성능이 결정될 수 있음
  • 데이터 셋마다 예시 레이블의 영향을 받기도 하고 안받기도 한다
  • 복잡한 작업일수록 예시를 활용하기 어렵기 때문에 레이블에 영향을 덜 받는다
  • 모델이 커질수록 레이블 영향을 크게 받고 예시를 통해 새로운 작업을 수행하는게 가능하다
  • 예시가 많을수록 성능이 향상되고 동시에 레이블 영향도도 증가한다

예시의 순서를 정하는 방법

유전 알고리즘

--> 생물의 진화 과정을 모방한 알고리즘. 모든 가능한 순열을 탐색하지 않으면서 최적의 성능을 달성하는 기법이다.

Entropy 기반 프로빙 메트릭

--> 매번 예시를 제공할 떄마다 최적의 예시 순서를 찾아내는 것은 부담이고 좋은 예시 순서를 평가하기 위해 필요한 라벨링 데이터가 부족할 수 있다. 이때 인공 데이터를 생성하고 엔트로피 통계 분석으로 최적의 순서를 찾는다.
--> LLM을 이용해 인공 데이터를 생성
--> 순서를 다르게 줘서 엔트로피 기반의 지표로 통계적 분석

  • 높은 엔트로피일수록 모델이 안정적인 예측을 하는 것

  • 대체적으로 이런 순서로 예시를 주면 성능이 좋다는 경험적 증거를 제시

  • 인공 데이터에서 좋은 성능을 보인 순서는 실제 데이터에서도 좋은 순서를 보일 것이라는 가정이 담겨 있음

  • 다양한 예시 순서에 대해 엔트로피를 계산하는 과정에서 많은 비용이 생길 수 있음

  • 특정 모델에서 최적화된 예시 순서가 다른 모델에도 동일하게 적용되지 않을 수 있음

In-COntext Curriculum Learning(ICCL)

--> 기존의 예시 순서 최적화 방법들은 높은 계산 비용이 필요하다는 단점이 있음
--> 예시의 복잡성을 낮은 순서에서 높은 순서대로 제시하는 ICCL 방법을 통해 간단하게 순서를 정할 수 있음
--> 인간 또는 LLM이 예시를 난이도에 따라 평가한다 -> 가장 쉬운 예시를 먼저 배열하고 가장 어려운 예시를 나중에 배열한다

  • LLM이 예시의 난이도를 평가할때 복잡도를 기준으로 평가하지만 정확하진 않을 수 있음. 하지만 다른 방법들보다 실용적으로 적용해볼 수 있다

어떻게 좋은 예시를 선택할까?

  • 예시의 품질이 LLM의 답변 퀄리티에 영향을 크게 준다는 것은 사실이다.
  • 좋은 예시를 고르는 전략 : 지도 학습, 비지도 학습
  • 지도 학습 : 예시를 검색하는 Retriever를 학습, 이 Retriever를 다양한 작업에 활용할 수 있도록 Unified Retriever를 학습
  • 비지도 학습 : KATE 전략, Vote-K 전략, LENS 전략

KATE 전략

  • 입력과 유사한 예제를 kNN 검색으로 검색해서 프롬프트에 보강
    --> 문장 인코더를 사용해서 예시와 입력을 벡터 표현으로 변경
    --> 입력과 가장 유사한 예시를 벡터 표현에서 검색 - 코사인 유사도
    --> 검색된 예시를 연결해서 프롬프트에 추가

  • 원하는 작업과 관련된 데이터 셋으로 추가 파인 튜닝된 문장 인코더를 사용하면 성능 향상

  • 검색 대상인 예시 데이터 셋이 많을수록 성능 향상

  • 예시의 순서는 성능 영향에 크게 작용하지 않음

Vote-k 전략

  • 비라벨링 데이터에서 다양성과 대표성을 고려해서 예시를 선택해서 활용
  • 예시를 사용하는 방법은 많은 예시가 필요하고 이는 어노테이션 비용을 크게 증가시킴
  • Vote-k 전략은 어노테이션 비용을 낮추기 위해 제안된 방법이다
  • 어노테이션의 효율성을 향상시키는 두 단계의 프레임워크가 있음 : 선택적 어노테이션, 프롬프트 검색

선택적 어노테이션

1) 어노테이션 되지 않은 원시 데이터를 임베딩해서 벡터 표현으로 변경
2) 각 데이터를 그래프의 노드로 생성
3) 각 노드들은 자신과 유사한 노드들과 연결
4) 각 노드에 대해 점수를 계산해서 높은 점수를 가진 노드들이 선택
-> 대표성 점수 계산 : 해당 노드가 다른 노드들과 얼마나 많이 연결되어 있는가
-> 다양성 점수 계산 : 이미 선택된 노드와 얼마나 겹치지 않는가
5) 초기 어노테이션 샘플을 이용해서 남은 샘플들에 대해 예측을 해보고 신뢰도 점수 계산
6) 신뢰도 점수에 따라서 샘플들을 동일한 크기의 그룹으로 나눔
7) 각 그룹에서 가장 신뢰도 점수가 높은 샘플을 추가 어노테이션으로 선택하며 가장 신뢰도가 높은 그룹은 제외

--> 그래프에서 중복 방지, 신뢰도 점수가 다양한 샘플 선택, 신뢰도 점수가 제일 높은 그룹은 제외함으로써 다양성을 확보할 수 있다.

LENS 전략

  • fiLter-thEN-Search의 약자로 두 단계로 구성된 지원 예시를 찾는 방법
  • 예시의 유용함을 평가하고 유용한 예시 조합을 찾는 방법
  • 전체 데이터셋을 잘 대표하고 정보량이 많은 소수의 예시들을 선택하는 방법을 제안
  • 더 정보량이 많은 중요한 예시가 있다는 가정
  • 예시들의 조합을 평가해보면서 최적의 조합을 찾는 방법

1) 예시 필터링 : infoScore 메트릭을 바탕으로 정보량이 많은 예시를 선별
2) 다양한 예시 조합 탐색 : 예시를 조합해보고 교체해보고 순서를 바꿔봄.

예시 스스로 생성하기

  • SG-ICL(Self-Generated In-Context-Learning)이라는 기법으로 LLM이 예시를 생성할 수 있다.
  • 스스로 생성한 경우 일관된 성능을 기대할 수 있다.
  • 예시를 직접추가하는 방법에 비해 0.6배의 성능을 낸다.

SG-ICL

  • 두 단계로 구성되어 있다. Self-generation step, Inference step
  • Self-generation step : 현재 입력과 생성할 클래스 정보를 조건으로 해서 예시를 생성
  • Inference step : 앞에서 생성된 예시를 이용해서 추론

적절한 예시의 수는?

  • 일반적으로 예시의 수가 늘어날수록 모델의 성능도 커진다
  • 같은 예시가 추가되는 것은 의미가 없다
  • 모델이 클수록 예시가 많을 수록 성능이 커진다
  • 너무 많은 예시는 크게 효과가 없다(20개이상)

예시를 추가할때 주의점

  • 프롬프트에 추가하는 예시 클래스의 수가 불균형적이라면 편향을 일으킬 수 있다
  • 예시의 수도 클래스에 맞게 균형을 맞춰야 한다
  • 언어 모델은 편향을 가지고 있으니 보정해야 한다
  • 언어모델은 다수 라벨 편향, 최신 편향, 자주 등장하는 토큰 편향을 가지고 있다.
  • Majority Label Bias(다수 라벨 편향) : 프롬프트에서 더 자주 등장하는 클래스에 모델이 편향되는 경향
  • Recency Bias(최신 편향) : 모델이 프롬프트에서 뒤에 나오는 예시에 더 많은 영향을 받는 경향
  • Common Token Bias(자주 등장하는 토큰 편향) : 모델이 사전 훈련 데이터에서 자주 등장하는 단어에 편향된다는 것

0개의 댓글