instruction-tuned model은 일반화 능력을 입증
-> 그러나 종종 작성한 prompt에 의존하여 일반성을 방해한다
논문에서는 bootstraping으로 pre-trained model을 개선하기 위한 SELF-INSTRUCT를 소개
-> LM에서 input, ouput 등을 생성 한 뒤 fine-tuning 하기전에 필터링 하는 방식
-> 해당 방식으로 Vanilla GPT3보다 33%이상 개선된 성능을 보여주었으며 Instruct GPT보다 5% 격차가 나는 성능을 보여주었다.
최근에 수행되고 있는 자연어 instruction들을 따르는 모델 구축의 문제점
-> 사람이 생성하는것은 인기 있는 NLP 작업이라 data수집의 제한 및 다양성의 한계가 존재
논문에서 이를 해결하기 위해 모델 자체의 instruct signal를 사용하여 pretrain LM을 instuct fine-tune을 하기 위한 SELF-INSTRUCT를 제안
전체적으로 보면 반복 bootstraping 알고리즘으로 동작
논문에서는 이를 평가하기 위해 GPT3를 사용하여 GPT3SELF-INST를 생성
GPT3SELF-INST는 GPT3 보다 33.1% 성능 개선이 이루어 졌으며, Instruct GPT보다 5% 격차만 나는 광범위한 명령 수행을 보여줌
본 논문의 Constribution
1. 최소한의 human-labeled data를 사용하여 instruct를 따르는 SELF-INSTRUCT를 소개
2. 광범위한 Instruct fine-tune 실험을 통한 효과 입증
3. 52K instructions 와 대규모 합성 데이터셋과 이를 따르는 모델 구축및 평가를 위한 dataset을 공개
대규모 instruct data에 annotation을 다는것은 사람에게 어려움
-> 사람의 창의성과 전문지식의 부족
-> 논문에서는 pretrain model 자체로 작업을 생성하고, 데이터를 필터링하여 LM이 명령을 더 잘따르도록 정렬하기 위해 data로 instruct를 조정 수행한다.
생성하고자 하는 Instruct dataset에는 Task I를 자연어로 정의하는 Instruct dataset이 포함
task t는 인 input-output instance 이다.
모델은 task instruction과 그에 대응하는 input이 주어지면 output을 생성해낸다. 이때 instruction 과 instance input에 대해 엄격한 경계를 주지 않는다. -> 데이터 형식의 다양성을 장려하기 위해서추가적인 input이 없는 instruction을 허용한다.
논문에서 제시하는 data생성 pipeline은 다음과 같은 4단계로 구성된다.
1. generatin task instruction
2. determining if the instruction represents a classification task
3. instance generation with either an input-first or output-first approach
4. filtering low-quality data
Instruction Generation
bootstraping 방식으로 작은 human-written instructions 집합에서 새로운 명령을 생성한다.
모든 단계에 대해 이 pool을 시작하고, 8개의 instruction 중 6개는 사람이 작성한 작업에서, 2개는 다양성을 촉진하기 위해 이전 단계의 모델 생성 작업에서 나온 것이다.
위의 table은 prompt tamplate이다.
Classification Task Identification
분류 작업과 비분류 작업은 서로 다른 접근 방식이 필요하다.
12개의 classification instrucion과 19개의 non-classification instruction을 사용하여 몇번의 방법으로 prompt를 표시한다.
위와 같은 prompt tamplate를 가진다
Instance Generation
명령어와 그에 해당하는 task 유형이 주어지면 각 명령어에 대한 instance를 생성한다.
모델이 instruct를 기반으로 작업, 추가입력field를 생성하고, output을 생성하여 어렵다.
-> 논문에서는 사전 훈련된 LM 작업으로 명령어-input-output inconext를 요청할때 해결할 수 있음을 발견
input 우선 접근법으로 LM에게 명령어 기반으로 input field를 제안한 뒤 output을 생성하도록 요청
--> 편향된 input을 생성할 수 있는 문제
이를 해결하기 위해 classification task에 대한 output을 우선 접근 방식을 추가로 제안하며 class label을 먼저 생성한 뒤 각 class label에 input generation을 조정한다.
Filtering and Postprocessing
다양성을 장려하기 위해 기존 명령과 ROUGE-L 유사성이 0.7 미만일 경우 new instruction을 pool에 추가한다.
LM에서 일반적으로 처리할 수 없는 특정 keyword를 포함하는 명령도 제외하며, 각 명령에 대해 instance를 생성할때 정확히 동일하거나 input이 동일하지만 output이 다른 instance를 필터링한다.(유효하지 않은 생성도 heuristic한 방법으로 필터링 된다.)
대규모 instruction dataset을 생성한 이후, LM을 fine-tuning한다.
instruction과 instance input을 prompt로 연결하고 supervise한 방식으로 instance output을 생성하도록 model을 train한다.
-> 모델을 견고하게 하기 위해 여러 tamplate를 사용하여서 instruction과 instance를 같이 encoding한다.
API를 통해 access 된느 가장 큰 GPT3 LM을 사용
논문에서는 생성된 instruction에서 동사-명사 구조를 식별한다.
Berkeley Neural Parser를 사용하여서 Instruction의 구문 분석을 한 후 명사 개체 뿐만이 아닌 근에 가장 가까운 동사를 추출한다.
위의 그림에서 전체 집합의 14$에 해당하는 top-20의 근 동사와 top-4의 직접 명사 개체를 표시한다.
전체적으로 명령어에서 꽤 다양한 의도와 text 형식을 볼 수 있다.
생성된 명령어가 생성을 촉구하는데 사용되는 seed instruction과 어떻게 다른지 추가로 연구
생성된 명령어에 대해 175개의 seed instruction과 가장 높은 ROUGE-L 중첩을 계산한다.
Figure4는 점수 분포를 보여주며 Figure5는 다양성을 보여준다.
200개를 random sampling 하고 instruction 1개당 instance를 무작위로 선택하여, isntance가 정확한지 여부에 대해 label을 지정하게끔 하여서 평가
생성에 오류가 포함될 수 있지만, 대부분 올바른 형식이거나 부분적으로 정확하였다.
생성된 명령어 데이터가 주어지면 GPT3 model로 tuning을 진행
Instruction, input을 연결 -> model train -> output generation
fine-tuning - Open AI의 API를 사용
Prompt loss wweight가 0인것을 제외하고 2epoch동안 train
Off-the-shelf LMs
T5 model 과 GPT3를 사용
Publicly available instruction-tuned models
T0와 Tk-Instruct라는 두가지의 instruction-tuned model을 T5 checkpoint에서 fine-tuning 하였으며 두 모델에 대해 11B의 parameter를 가진 버전을 사용
Instruction-tuned GPT3 models
InstructGPT를 사용하여 평가를 진행하였으며, SELF-INSTRUCT 훈련이 공개적으로 가능한 다른 tuning data들과 비교하기위해 T0와 Tk-Instruct에 사용한 data로 GPT3를 fine-tuning -> 이 두가지를 각각 T0훈련과 SUPERNI 훈련이라 논문에서는 말함
제로샷 방식으로 NLP 작업에 대한 Instruction을 따르는 model을 평가
Result
vanilla GPT는 instruct를 따르지 못하고, 일반적으로 반복적인 텍스트를 생성하고, 언제 종료해야할지를 모르는 문제가 있었다.
GPT3의 경우에는 T0 또는 T0 훈련 set에서 finetuning된 모델보다 나은 성능을 보여 주었다.
또한 GPT3는 InstructGPT와 비슷한 성능을 보여주었다.
그러나 SELF-instruct는 SUPERNI train set과 결합할때 추가적인 이득을 가져와 보완 데이터로서의 가치를 입증하였다.
기존 NLP작업에서는 SUPERNI의 포괄성에도 불구하고 연구목적으로만 사용
-> 논문의 저자들은 사용자 지향 애플리케이션에 의해 동기를 부여받은 새로운 instruct set을 curate한다.
작업의 스타일과 형식을 다양화하는 것을 목표로 하고, 명령어의 길이, 입출력 등등을 다양화 하였으며, instruction 1개당 instance로 총 252개의 instruction을 만들었다.
Human evaluation setup
다양한 평가 dataset에 대해 모델을 평가하는 것은 어렵다 -> 전문 지식의 필요성
논문에서는 평가를 받기 위해 작성자에게 model의 예측을 판단하도록 요청하고, 4개의 등급 시스템을 구현
A : 응답이 유효하고 만족
B : 응답이 허용가능하지만, 약간의 오류와 불완전성이 있다.
C : 응답은 관련이 있고, instruction에 응답하지만 내용에는 중대한 오류가 있다.
D : 응답과 관련이 없거나, 완전히 잘못되었다.
Result
instructGPT001과 비교하여 GPT3-Selfinst는 성능면에서 가까우며 5% 뒤쳐진다. InstructGPT002,003은 인상적인 능력을 보여주었으며, 이후 작업은 보상모델을 훈련하여 생성된 데이터의 품질을 개선하는데 이익을 얻을 수 있다고 가정.
Data size
SELF-INSTRUCT는 사람 labeling이 거의 없이 낮은 비용으로 instruct data를 증가시킬 수 있는 방법을 제공
-> 서로 다른 수의 명령어를 subsampling하고, GPT3를 fine-tuning하고, 252개의 사용자 지향 instruct set에서 결과 모델이 어떻게 수행되는지 평가하여, 생성 데이터의 크기를 분석
위의 그림은 서로 다른 크기의생성 데이터와 fine-tuning된 GPT3 SELF-INST의 성능을 보여준다.
데이터 확장 실험과 일치하며, SUPERNNI에서 평가할 때 수백 개의 instruct에서 이전의 model 성능보다 이득을 발견하였다.
Data quality
Instruct GPT003을 사용하여 instruct와 input이 주어진 모든 instance의 output field를 재생성한다. 이후 개선된 버전의 data를 사용하여 GPT3의 fine-tuning을 진행한다.
-> 위의 Figure7과 같이 워본 데이터로 훈련된 모델보다 10% 더 우수한 성능을 보여주었다.
Instruction-following LMs
annotation이 있는 instructional data와 함께 tuning 되면 vanilla LM이 일반적인 instruction을 따르는데 효과적일 수 있다.
-> 병목현상을 초래 할 수 있다.
논문에서의 제안하는 방식
-> InstructGPT급의 성능을 보여주었으나, 구축process가 불분명하다. 투명성과 연구에 사용된 개인 사용자 데이터로 인해 연구가 부족하다.
--> 대규모 공공데이터가 필요
Language models for data generation and augmentation
데이터 생성 및 증강을 위해 LM을 사용할 것을 제안 -> 논문에서는 NLP 실무자에 의해 정의되지 않았을 수도 있는 새로운 작업 정의를 bootstrap하는것
GPT3 model을 사용하여 대규모 instruct data 생성 방법과의 차이점
1. SUPERNI작업을 seed 작업으로 하여 생성된 분포가 다르다
2. data 생성을 위해 instructGPT002를 사용하는데 이미 instruct tuning 된 모델에서 지식을 증류하고 있는 반면 논문의 방식은 vanilla LM에만 의존한다.
--> 그럼에도 불구하고 논문에서의 방식은 instruct data 확장 노력이 상호 보완적이며 커뮤니티는 이러한 다양한 dataset의 혜택을 받을 것이라고 생각한다.
Instruction generation
SELF-INSTRUCTION은 instructio 생성 작업도 하지만, 작업에 구애를 받지 않고, 새로운 작업을 처음부터 생성한다.
Model self-training
훈련된 모델을 사용하여 label이 지정되지 않은 data에 label을 할당한 다음 새로 label이 지정된 data를 사용하여 모델을 개선
-> 여러 prompt를 사용하여 단일 작업을 지정하고 prompt에 대한 일관석 있는 예측을 장려하여 정규화
-> model을 label이 지정되지 않은 추가 data로 fine-tuning하거나 추론시 직접 적용
--> 대부분의 Self-training은 특정 대상 작업 뿐만 아니라 그 아래 label이 지정되지 않은 예를 가정하지만, SELF-INSTRUCTION은 다양한 작업을 처음부터 생성한다.
Knowledge distillation
더 큰 모델에서 작은 모델로 지식 전달하는것
SELF-INSTRUCTION의 경우 차이점이 있다.
1. distillation은의 원천과 대상은 동일 -> 모델의 지식은 그 자체로 distillation 된다.
2. distillation의 내용은 instruction 작업의 형태이다.
Bootstrapping with limited resources
최근 연구 : LM을 사용하여 전문적인 바법의 일부 추론을 bootstrap 한다.
논문에서의 작업은 instruct paradigm에서 새로운 작업을 bootstrap 하는데 초점을 맞추고 있다.
Multi-modal instruction-following
데이터 확장의 일반적인 접근 방식으로서 SELF-INSTRUCTION은 잠재적으로 도움이 될 수 있다.
자체 생성된 Instuction data를 사용하여 LM의 instruction-follwing 능력을 향상 시키는 방법을 소개
GPT3로 fine-tuning하면 원래 GPT3보다 SUPERNI가 33% 향상 되었다.
또한 SELF-INSTRUCT로 GPT3를 fine-tuning 하면 기존의 공용 instruction dataset을 큰폭으로 사용하는 것보다 성능이 우수하며 InstructGPT001에 가깝게 수행된다.
Tail phenomena
LM의 가장 큰 이득은 빈번한 사용에 해당되며, low-frequency context에서 최소한의 이득이 있을 수 있다.
-> 접근 방식이 흔하지 않고, 창의적인 명령과 관련하여 취약성을 보일 수 있다.
Dependence on large models
SELF-INSTRUCT의 의존성 때문에 더 큰 모델에서 잘 동작할 수는 있다.
-> computing 자원이 부족할 경우 에러가 발생한다.
Reinforcing LM biases
사회적 편견과 같은 부분에서의 증폭은 알고리즘이 의도하지 않은 결과이다.