본문 바로가기
AI 관련/논문 리뷰

[논문 리뷰] FINETUNED LANGUAGE MODELS ARE ZERO-SHOTLEARNERS (FLAN)

by 세계 최고의 AI Engineer_naknak 2024. 1. 4.

https://arxiv.org/pdf/2109.01652.pdf

 

 

Abstract

 본 논문은 FLAN 이라는 모델을 소개합니다. 그리고 궁극적인 목표는 LM의 Zero-shot Learning 능력을 향상시키기 위한 simple method를 찾는 것이라고 이야기합니다. 그래서 그 방법으로 instruction-tuning을 보여주며 이 학습 방법이 zero-shot 에 대한 ability를 향상시킨다고 주장합니다. 그리고 Instruction tuned 된 모델을 FLAN 이라고 소개하죠. FLAN은 137B이며 60여개의 NLP 데이터셋들로 instruction-tuned 시켰다고 합니다.

 

Figure 1

instruction-tuning 은 위와 같이 NLP Tasks를 언어 모델에 지시사항과 함께 넣어 주어 학습을 시키는 것이라고 생각하시면 좋을 것 같습니다.

 

여기서 제가 궁금했던 부분은 175B인 GPT-3와 FLAN을 비교했는데 model scale이 instruction tuning의 여러 성공 요인 중 하나라고 주장한 부분에서 모델의 크기가 작을수록 instruction tuning 이 성공적이라는 것인가? 하는 거이었습니다. 아무튼 GPT-3 에 비해 FLAN이 zero-shot 능력이 20/25 데이터셋에서 좋고, few-shot learning에서도 몇 개의 평가 지표에서 GPT-3보다 더 좋은 성능을 낸다고 합니다.

 

 

 

Instroduction

기존  GPT와 비교를 합니다. 기존 GPT는 Few shot 에는 좋은 성능을 보이지만 zero-shot 엔 그닥 좋은 성능을 보이지 못한다고 하면서 그 이유가 pretraining data의 형식과 유사하지 않은 prompt에는 모델이 좋은 성능을 보이지 못하기 때문이라고 지적합니다.

 

그래서 본 저자는 자연스러운 Instruction으로 기술된 NLP task에 대한 직관을 기용하여 FLAN이라는(Finetuned Langage Net) 모델을 제안합니다. 물론 Abstract에서 기술한 걱처럼 137B이고 Instruction tuning을 하였으며 60개의 NLP datasets를 사용했다고 합니다.

 

평가를 위해서 NLP datasets를 task type에 알맞게 clustering했다고 하며 Figure 1 에 나온 것처럼 Instruction Tuning 동안 Natural Language Inference에 대한 Task가 없도록 했으며 학습 이후 NLI로 zero shot learning에 대한 평가를 진행다고 합니다. 이때 모델 크기가 적절해야 instruction tuning의 이점인 unseen tasks에서 성능이 향상되는 것이 명확해진다는 걸 ablation studies에 정리해두었다고 합니다.

 

이제  Instuction Tuning에 대해서 설명을 해주는 데 아래 Figure 2를 보시면 될 것 같습니다.

A,B에서 Fintuning과 Prompt를 합친 것이 Instruction Tuning이라고 생각하시면 쉽지 않을까 싶습니다.

 

 

 

FLAN : Instruction Tuning Improves Zero-Shot Learning

Instruction Tuning을 하는 것은 NLP Instruction 에 응답할 수 있는 능력을 향상시키기 위해서 입니다. 그 아이디어는 LM에 지도학습으로 Instruction을 통해 기술된 tasks들을 수행하도록 가르치는 것이고 LM은 이를 통해 Instruction 을 따라가는 것을 배우고 unseen tasks에 대한 것도 배울 수 있도록 하는 것입니다.

 

 

 

본 저자들은 Instruction Datasets을 밑바닥부터 만들는 것에 대한 어려움을 이야기하고 기존에 있던 데이터셋에서 Instruction Datasets을 만들었다고 이야기 합니다. 그리고 그 Instruction을 다양하게 하기 위해 Templates를 여러 개로 만들었다고 합니다.

 

그래서 이런 Templates를 바탕으로 각 Datasets을 재구성했다고 할 수 있습니다. 

 

평가

어떤 기준으로 unseen task를 정할 건지에 대해 이야기 합니다. 이전 연구에서는 모델이 Instruction tuning에서 학습하지 않은 데이터셋에 대한 task를 unseen task라고 했다면 본 저자들은 Figure 3에 있는 clusters에 카테고리 중 하나라도 Instruction tuning에 학습되었다면 그에 해당하는 모든 데이터셋을 evaluation에 적용하지 않는다고 합니다.

 

 

그런데 만약에 FLAN으로 Calssification을 진행하고 싶다면 어떻게 할까요? 기존에는 Rank Classification으로 평가를 했다고 합니다. 예를 들어 Yes or No를 분류하는 Task라면 Yes : 70%, No : 30%로 yes를 골랐다고 합니다. 그러나 저자들은 이러한 방식의 문제점으로 만약에 모델이 sure이나 absolutely 같은 유사어를 만들었을 경우 yes에 대한 확률 분포를 낮춘다고 하면서 정확도에 영향을 끼칠 수 있다는 것을 지적합니다.

그래서 FLAN은 options token을 줘서 모델이 답을 선택할 수 있게끔 한다고 합니다. 그 예시로는 아래 그림을 참고하시면 좋을 거 같습니다. Options가 보이죠?

 

학습 Details : 모델의 아키텍처는 LaMDA-PT 모델로 decoder-only 를 사용했습니다. 또 2.49T BPE tokens를 사용했구요(Byte Pair Encoding : 문장에 있는 글자들을 적절한 단위로 나눠서 tokenizer화 하는 subtokenizer) 어떤 doc를 사용했는지는 본 논문을 참고하시면 될 거 같습니다. 

Instrucion Tuning procedure : 각 데이터셋에서 랜덤으로 샘플을 가져와서 instruction tuning을 했고 3e-5 learning rate를 사용했으며 input, target sequence는 1024, 256을 사용했다고 합니다. TPUv3 with 128cores를 60시간 정도 사용해서 instruction tuning을 진행했다고 합니다.

 

 

Results

전반적으로 대화형식의 Task(NLI, QA, translation, struct-to-text)는 instruction tuning이 효과적이었지만 Instruction이 장황하게 되야 하는 Task(CommonSence  Reasoning 등)는 덜 효과적으로 나타났다고 합니다. 이거에 대한 이유가 후자의 Task는 Intruction을 하더라도 모델에 추가적인 정보나 그 Task 자체의 본질을 변화시키지 못하기 때문이라고도 하네요(by ChatGPT 4)

 

실험 결과입니다. 필요하신분은 분석해보셔도 좋을 거 같습니다.

 

 

Ablation Studies & Further Analysis

Abstract에서 궁금했던 부분이 model scale에 따른 instruction tuning의 성능이였습니다. 이 부분에 대한 답이 있는지 기억하면서 읽어보았습니다.

 

 

먼저 Instruction tuning으로 학습시키는  cluster의 수가 증가할 때 마다 성능이 향상되는 것을 봤을 때 cluster의 수가 instruction tuning으로 인한 zero shot performance를 향상 시킬 수 있다는 인사이트를 얻습니다.

 

 

여기서 제가 궁금했던 부분이 나옵니다. 먼저 궁금했던 걸 해소하자면 Instruction Tuning에서 model의 scale이 증가할수록 성능이 좋아지는 것을 확인할 수 있죠.

그리고 가져가야할 인사이트는 Model scale이 8B보다 작을때 Instruction Tuning이 Untuned Model보다 더 낮은 accuracy를 보인다는 것입니다. 즉 작은 모델 사이즈에서 Instruction Tuning을 진행한다면 오히려 Zero Shot에서 낮은 성능을 보인다는 것입니다. 이 설명을 기초로 더 큰 scale의 모델은 instruction을 어떻게 수행하는 지 배우고 이를 통해 모델이 새로운 tasks를 일반화 할 수 있도록 학습이 된다는 인사이트를 가져가실 수 있을 겁니다.

 

 

Instruction Tuning과 Prompt Tuning의 차이점

 

Instruction Tuning : 모델이 Instruction을 이해하고 그에 맞춰서 수행할 수 있도록 학습시키는 것이고 넓은 범위의 task Instruction을 수행 할 수 있도록 학습합니다.

 

Prompt Tuning : 좀 더 좁은 의미로 pre-trained 된 모델이 specific 한 task에 적응하도록 학습을 하는 것입니다.

이 설명에서 둘 다 fine tuning의 속한다고 볼 수 있고 모델이 할 수 있도록 하는 능력의 범위가 다른 것이 차이점이라고 할 수 있을 거 같습니다.

Instruction Tuning으로 성능이 향상되었다면 당연히 더 작은 개념인 Prompt Tuning을 했을 때 성능이 더 좋아져야 한다고이야기하며 그 결과를 제시합니다.

 

 

Discussion

한계 : Cluster를 카테고리화하는게 주관적이고 전형적으로 짧고 단순한 Instruction을 사용했다는 것.

평가에 대한 한계 : 개인적인 예시들이 모델의 pretraining data에서 나타날지도 모른다는 것이다.

마지막으로  FLAN의 scale이 비싸다.  Future Work로 task clusters를 더 모드거나 만들거나 FLAN으로 새로운 데이터를 만들거나 등등 할일이 많이 남아 있다.

 

 

Conclusion

간단한 메서드, LM의 Zero Shot task를 수행함에 있어서 LM의 능력을 향상시키는 

LM의 Zero Shot Task를 수행함에 있어서 그 능력을 향상 시키는 간단한 Method를 살펴 봤는데 그 Method는 순수하게 Instruction에 기반된다. 그리고 instruction-tuned model인 FLAN은 GPT-3에 비해서 Instruction을 수행하는 잠재적 능력이 더 높다는 걸 보여준다. 그래서 이 논문이 Instructions-based NLP, zero-shot learning, using labeled data to improve large language models 에 영감을 주길 바란다.

댓글