관심있는 NLP 논문을 읽어보고 간단히 정리했습니다.
혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 🙇♂️
[LK Lab, KAIST]
- prompt를 LM의 파라미터에 주입하는 방식, Prompt Injection (PI)를 제안
- novel distillation approach, Pseudo-INput Generation (PING)를 제안
- prompt를 input에 prepend하는 기존 방식 대비 우수한 성능 달성
- 배경
- input에 prompt를 attach함으로써(prefixes) LM을 특정 태스크에 맞게 조정하는 것이 가능
- 그러나 이처럼 prompt와 input을 단순 concatenate하는 prompt-dependent 방식은 두 가지 한계가 존재
- 1) 추론 단계에서 너무 많은 computational & memory overhead를 초래
- 2) 입력 sequence의 길이에 제한이 있는 transformer 기반 모델에 detailed description과 같은 long text를 제공하는 것의 난이도가 높음
- Related Works
- Prompting: few-shot & zero-shot learning
- Efficient Transformers for Long Inputs: 기존 transformer는 time & memory 관점에서 quadratic cost 발생
- Persona-dependent Conversation: 챗봇에 persona를 부여하는 것이 대화 품질을 향상시키지만 쉽지는 않음
- Semantic Parsing: 자연어 query를 데이터 베이스에 적용 가능한 SQL query에 매핑하는 등의 방법
- Zero-shot Learning with Task Instructions: multi-task prompted training을 통해 모델의 일반화 성능을 향상시킬 수 있음
- Contributions
- long prompts가 주어지는 scenarios에서 computation & memory efficient한 방법 Prompt Injection (PI)를 제시
- 일부 케이스에서 PI의 성능이 상한선(unconstrained) 수준에 이르는 것을 확인
- long prompts를 모델에 injection하는 것이 PI를 통해 달성될 수 있음을 확인
- Prompt Injection
- 기존: 프롬프트 z, 입력 시퀀스 x를 합쳐 y를 반환하는 LM은 f로 표시 -> 기존 방식 대신에 프롬프트 z를 LM에 inject하는 방식
- 프롬프트 z를 여러 sub-프롬프트로 쪼개어 반복적으로 PI process를 진행 (multiple epochs)
- 프롬프트가 LM에 한 번 injected되면 추론 단계에서 해당 프롬프트를 입력 시퀀스에 반복적으로 붙여줄 필요가 없음
- 성능을 평가하는 PI score는 min-max scaling을 통해 획득
- Method for Prompt Injection
- Continued Pre-training: target prompt에 대해 LM의 기존 objective를 유지하여 추가 학습
- Curriculumn Learning: 이때 mask의 비율을 난이도로 판단하고 점진적으로 난이도를 높이는 방식으로 학습
- PING
- 1) input generator가 task-specific 학습 데이터를 생성
- 2) input generator는 frozen하여 unseen prompts로부터 pseudo-inputs을 생성. 이는 프롬프트와 함께 teacher model에 주어지고, puseduo-inputs은 student 모델에 전달
- Datasets
- Persona-Chat, Spider, WSC / RTE / COPA
- Baseline
- T5, Fusion-in-Decoder (FiD), Linear Transformer
- Results
- Inference Efficiency: PI는 prompt 길이에 독립적이라 효율적임. FLOP 기준 최대 280배 효율적
- Model Performance: 방법론별 모델 성능은 입력 시퀀스의 복잡도에 달려 있음
- Long Prompts Injection: 13,000 토큰이 되는 위키피디아 문서를 제대로 이해한 결과를 cherry picking하여 제시
- 개인적 감상
- transformer 기반의 모델들이 지닌 한계를 극복하는 참신한 시도인 것 같으나 완전히 고정된 프롬프트를 주입시켜 놓은 것이라 일반화 성능이 많이 부족할 것 같다는 의문이 바로 드는 방식..
- cherry picking한 케이스를 제외하면 확실히 결과물이 아쉬울 것 같다는 느낌이 듦