- Alibaba
- Submitted on 4 Aug 2022
- Comments: Work in progress
Paper TL;DR
일반적인 수준의 Prompt Tuning, 하지만 Visual Encoding을 끼얹은.
- MultiModal end-to-end 모델에의 Prompt Tuning
- Fine-tune 대신에 prompt tuning을 적용
- Encoder, Decoder 각 종류의 모델에 적용하는 대신, Encoder-Decoder(unified transformer) 계열의 모델에 적용
- Encoder, Decoder 한 부분에만 Prompt-Embedding을 넣어주는 것 보다, 둘 다에 함께 Prompt embedding을 추가로 넣어주는 것이 효과가 좋다. (아주 큰 차이를 보인다고 함)
- 만약 Encoder, Decoder 중 하나에만 넣어야 한다면 Encoder에 넣어주는 것이 낫다.
- Zero-shot, Few-shot Learning, In-context Learning 맥락에서 유의미한 페이퍼
- 전체 weight 중 1%에 해당하는 부분 (100M이라면 1M, 930M이라면 대략 9M) Params만 수정
- Prompt의 길이가 길 수록 더 효과가 좋아짐
- 20 tokens 이상의 prompt가 유의미한 모습을 보인다.
- 하지만 너무 긴 prompt는 오히려 효과를 떨어뜨림.(128넘어가면 별로라고 하는 듯)
- 실험적으로, 64 tokens의 prompt가 가장 좋은 효과를 보여줬다고 함
- Reparameterization(ExBERT처럼, 추가적으로 MLP같은 학습 layer를 추가해 주는 것)은 생각보다 성능이 좋지 않았음
- 오히려 성능 하락을 보이기도 함
- Prompt Embedding Matrix를 일종의 Prompt Generator function으로 취급
Experiments & Results
- 성능 비교시 finetuning과 prompt tuning이 성능 차이가 크지 않은 모습을 보여준다.
- 실험은 NLU, NLG가 가능한 VQA 등으로 구성
- 180M~470M 모델 크기로 구성
- 유사 방법론인 Bitfit과 Adapter와도 비교. 성능이 더 좋다고 이야기 함.
- Prompt Length에 따라서 Downstream Task에 성능 비교
- 대략 60(64) 부근에서 가장 성능이 괜찮게 나온다고 함 (SNLI-VE의 test set에서 가장 극단적인 듯)
- 64가 평균적으로 낫더라
- Prompt Tuning이 Finetune보다 나은 점 하나로: Adversarial Attack에 강건하다.
- Finetune한 모델, Prompt Tuning한 모델 각각에 대해서 공격
- Gradient-based로 Adv attack
- 성능 저하가 훨씬 적더라 (절반정도)
- 앞서 이야기 했던.. Enc + Dec vs Enc vs Dec
- 어디에 넣느냐에 따라서 성능의 차이가 있음
- 유의미한 차이라고 보이긴 함 (성능 향상의 trend가 일정)
- Encoder-Decoder 전부 넣어주는게 제일 낫다.
- 안되면 encoder only라도.
- 모델에 MLP 등 추가한 Reparameterization
- MLP가 쪼끔 더 성능이 좋은가? 싶으면서도 오히려 떨어지는 경우(SNLI-VE dev/test, COCO, VQA)가 꽤 있음
Discussion
- Prompt tuning이 finetune을 대체할수는 없지만 유의미한 성능이 나온다
- 문제1: SLOOOOOOW Convergence
- 분명, 1%정도의 params만 학습하니까 학습 cost는 낮고, Efficiency는 높음.
- 근데.. 제대로 된 학습을 하려 하니 40epochs(?!)의 학습이 필요
- GPU-Hours로 계산하니까.. 엄청 절약되는 그런게 아님
- 문제2: HyperParams 튜닝이 어려움
- Fine-tune할 때 쓰는 하이퍼파라미터 튜닝 기법을 쓰기 어려움
- 다행히(?) Prompt Tuning을 위한 Hparams 튜닝은 크게 어렵지 않음
- 문제가 있지만 그래도 Adv Attack에 강건한건 좋음