Unnatural Instructions: Tuning Language Models with (Almost) No Human Labor

SUNGYOON LEE·2023년 8월 27일
0

Abstract

  • Instruction tuning은 PLM이 추론할 때 natural language description으로부터의 새로운 task에 대해 답을 할 수 있게 해 줌.
  • 일반적으로 사람이 수동적으로 수많은 데이터를 직접 라벨링하든지, 구성하여 데이터셋을 구성함.
  • 하지만 위의 방식은 굉장히 많은 비용이 들어가고, 시간이 소모됨.
  • 따라서, 본 논문에서는 Unnatural Instruction 방식을 설명함.
  • Unnatural Instruction 방식을 활용하면 사람의 노동력 없이도, 다양하고, creative한 대량의 데이터셋을 확보할 수 있음.
  • 이 방식을 통해 실제로 사람이 직접 공을 들여 만든 데이터셋으로 학습한 모델의 성능에 버금가거나, 심지어 뛰어 넘기도 했음.

Instroduction

  • 방법 예시

  • 검은색으로 칠해진 글자들이 LLM에 prompt로 주입되는 것이고, 분홍색이 생성되는 output임.
  • Unnatural Instructions 방식으로 하면 5개의 시드에 각각 3개의 example만이 필요로 함. 즉, 총 15개의 instruction 예시만 있으면 됨.
  • 15개의 예시만 있으면 64000개의 예시를 도출할 수 있음.

Method

Data Collection

  1. Generation Pipeline

  • 위의 그림은 Unnatural Instructions 데이터셋을 생성하기 위한 generation 파이프라인이다.
  • 위의 그림에서 맨 초기에 3개의 샘플이 필요한 것으로 보인다.
  • 이러한 샘플이 총 5 묶음이 필요하므로 총 15개의 manually한 seed sample이 있으면 Unnatural Instruction을 생성할 수 있다.
  • 15개의 seed 샘플과, GPT-4 등과 같은 LLM을 활용하여 Instruction Dataset을 생성한다.
  • Prompt의 예시는 아래와 같다.

  • 3개의 샘플을 가지고, necleus sampling(a.k.a top p)의 값을 0.99로 하여 발화의 다양성을 높인다.
  • 그리고 생성된 instruction, Input, Constraints를 활용하여 생성된 output 값의 안정성을 높이기 위해, greedy decoding 방식으로 생성해낸다.
  • 이 ouput을 활용하여 FT를 실행한다.
  • 이 과정의 중간에 필터링이 필요하다.
    • 모델이 생성한 값 중에 format으로 정해놓은 값이 없는 것들(위의 예시에서, instruction, Input, Constraint 중 하나라도 없는 ouput)은 제외한다.
    • instruction과 input이 prompt로 들어간 예시와 같은 것들은 제외한다.
    • prompt내에서 같은 예시가 있으면 제외한다.
  1. Template expansion
  • 데이터의 다양성을 주기 위해서는 instruction 형태가 다양하게 학습되어야 한다. 따라서 기존의 instruction을 few-shot을 활용하여 reformulate 해야한다.

  • 위의 그림은 기존 instruction의 few-shot 예시와 그에 따라 생성된 결과(instruction 및 alternative formulation)이다. 이를 활용해서 데이터의 다양성을 줄 수 있다.

Data analysis

  • Super Natural Instruction과 Unnatural Instructions의 similarity scores distribution

Conclusion

  • 처음으로 automatically하게 데이터셋을 생성한 실험임.
  • 결국 Unnatural Instruction에서도 중요한 것은 데이터의 다양성, 정확성 등이 중요한 것이다. 이러한 데이터를 어떻게 만들어낼지 잘 고민해서 데이터를 만들어야 학습이 원하는 방향으로 잘 된다.

Code

https://github.com/sylee96/kobert_score

profile
매일 매일 한 걸음씩 나아가고자 합니다.

0개의 댓글