[yongggg's] LLM2LLM: Boosting LLMs with Novel Iterative DataEnhancement Review
이번 장에는 LLM에 fine-tuning을 할 때, 부족한 데이터 문제로 인한 fine-tuning의 한계를 해결한 연구인 LLM2LLM: Boosting LLMs with Novel Iterative DataEnhancement review을 소개하고자 합니다.
처음에는 Distillation 분야의 연구인 줄 알았으나, 그렇지는 않은 이 논문을 같이 살펴보겠습니다.
자세한 설명을 하기 전에 이 논문의 컨셉은 다음과 같습니다.
low-data의 문제로 인해 LLM의 fine-tuning이 쉽지 않다. 이를 해결하기 위해, (1) 초기 시드 데이터에 baseline student LLM을 fine-tuning한다. (2) evaluate 후, model이 잘못 이해(생성)한 datapoint를 추출한다. (3) teacher LLM을 사용하여 이러한 잘못된 datapoint를 기반으로 합성 데이터를 생성하여 학습 데이터에 추가한다.
이 방식은 학습 중에 LLM이 잘못 예측한 datapoint의 신호를 증폭해 dataset에 다시 통합하기 때문에, LLM에 대한 더 어려운 예시에 집중시킬 수 있다고 합니다.
자세한 내용을 살펴보겠습니다!
1. Introduction
LLM의 pre-train 데이터와 밀접하게 일치하는 간단한 task의 경우 광범위한 Prompt가 필요 없을 수 있으나, 특수 도메인(의료등의 개인데이터의 프로토콜이 있는 도메인)에 LLM을 적용하는 것은 어려울 수 있다. 그 이유는
- 엄청 긴 prompt를 사용해야하며, 이는 길이 제한이 초과되지 않더라도 추론의 지연 시간을 발생 시킨다.
- 긴 Context에서 정보를 잊거나, 무시하는 경향이 있어 잠재적인 정확도가 저하될 수 있다.
- 위 두 가지 문제의 대안으로 RAG가 방법이어도, 관련 없는 구절이나 문서를 검색하여 성능을 저하시킬 수 있다.
따라서, 이를 해결하기 위한 유망한 방법은 fine-tuning이며, PEFT의 등장으로 fine-tuning시 소요되는 계산 resource가 크게 감소했다. 하지만, fine-tuning시에 충분한 데이터가 필요하다. 이는 Data augmentation으로 해결 가능하며, 본 연구에서는 여러 선행 연구에서 LLM을 사용하여 fine-tuning dataset을 확장하는 방법을 연구했다. 선행 연구처럼 LLM이 이미 높은 정확도를 달성하고 있음에도 datapoint를 계속 증강하는 것은 최적이 아니기 때문에, teacher LLM을 사용하여 training dataset을 확장하는 새로운 새로운 targeted 및 iterative data augmentation framework를 제안한다. 이 방법은 위에 설명했듯이 (1) 초기 시드 데이터에 baseline student LLM을 fine-tuning한다. (2) evaluate 후, model이 잘못 이해(생성)한 datapoint를 추출한다. (3) teacher LLM을 사용하여 이러한 잘못된 datapoint를 기반으로 합성 데이터를 생성하여 학습 데이터에 추가한다. 라는 process를 따른다.
2. Methodology
먼저, 사전 학습된 LLM 모델 $M$(ex: gpt-3.5, llama2-7b)가 주어졌다고 가정한다. 이 때 LLM2LLM의 목표는 small seed dataset $D$ (pre-train에 사용하는 dataset과 비교했을 때, 잠재적으로 보이지 않는 특성을 갖는 dataset; 예를들어 의료 dataset, 개인 database)를 사용하여 student model $M$을 새로운 target domain에 adaptation 시키는 것이다.
이전 AugGPT는 모든 사용 가능한 data point에 prompt된 LLM을 적용하여 추가 증강 데이터를 생성했으나, 이는 student model의 다양한 성능을 고려하지 않은 무분별한 증강 방법이다. 따라서 무분별한 증강이 아닌, 어려운 예제와 개념적으로 일치하는 data point를 생성하는 방법인 방법론을 제안한다. 앞서 언급한 반복 프로세스는 다음과 같다.
$$ D^{n+1} = f(M_{teacher}, M_{student}, D^{n}, \cdots, D^{0}) \qquad (1).$$
식 (1)에서 $f$는 데이터 생성 알고리즘이며, 각 단계에서 teacher model은 n번째 단계에서 student model이 수행하는 방법(whitebox model의 correct/incorrect labels, 예측 분포)에 접근할 수 있으며, 이를 기반으로 다음 반복을 위한 train data point를 편집할 수 있다.
* LLM2LLM은 knowledge distillation과 다르다. KD는 일반적으로 teacher model이 target data에 대한 정확도가 높은 경우에 적용된다. 그러나 이 경우 teacher model이 target data에 대해 차선의 성능을 수행할 수도 있다.(ex: teacher model에게 domain-specific knowledge가 부족한 private database의 경우).
3. LLM2LLM
LLM2LLM의 알고리즘은 Self-Instruct에서 영감을 받았다. 제공된 target data $D_{0}$에서 baseline student model $M_{student}$를 훈련하고 그 성능을 평가한다. (위 알고리즘의 4-5행) 그 다음 결과를 filtering하고 student model이 정답을 맞추기 위해 고군분투했던 Incorrect training examples를 Keep한다 (6행의 $E_{i}$). 그 다음은 teacher model은 개념적으로 aligned 됐으나 의미론적으로 다른 추가적인 Training data points를 추가로 생성하도록 prompt를 받는다 (7행). teacher model은 성능을 향상시킬 수 있지만 반드시 더 클 이유는 없다. teacher model의 요구 사항은 data augmentation instruction을 따를 수 있는 추론 능력과 잘못된 예제와 유사한 data points를 생성할 수 있는 능력이다. 이는 아래 그림 1에 대략적으로 나타내어 졌다.
LLM2LLM에는 몇 가지 중요한 설계 결정이 있다. 가장 중요한 것은 augmentation 과정에서 모델에 prompting을 위해 Seed data의 예제만 사용한다는 것이다. 이는 Alpaca와 유사하지만, Evol-Instruct와는 다르다. 여기에는 두 가지 이유가 있는데 첫 째, 이 접근 방식은 여러 증강의 iteration으로 인한 데이터 저하를 방지한다. 초기 실험에서 teacher model이 고품질 증강을 생성할 수 있지만, 일부 예제에는 논리적 오류가 포함되어 있음을 보여주었다. 따라서 이러한 예제에 적용된 추가 증강은 잠재적으로 오류를 전파하여 시간이 지남에 따라 dataset의 품질을 저하시킬 수 있다. 이는 데이터 증강에 seed data와 합성 data를 모두 사용하면 정확도가 떨어질 수 있다는 것을 보여준다 (표4).
둘째, 이 접근 방식은 전체적으로 생성되는 새로운 데이터의 양을 제한한다. 원래 seed dataset의 크기가 n이고 각 반복에서 student model이 Train dataset의 $p_{i}$ 비율을 얻었다고 가정하자. 여기서 0<$p_{i}$<1 이다. 증강 데이터를 데이터 생성을 위해 seed data에 포함시키면, j 단계의 dataset $D_{j}$의 크기는
$$ |D^{j}| = n \prod^{j}_{i=0} (1+p_{i}) \ge n (1+p_{min})^{j}. $$
이것은 각 단계에 따라 기하급수적으로 증가하는 하한값을 갖는다. 데이터 세트 생성 중, input wrong answers $W_{i}를 원래 seed data의 데이터로만 제한하면 전체 학습 data points 수를 다음과 같이 제한할 수 있다.
$$ |D^{j}| = n + \sum^{j}_{i=0} np_{i} \le n(1+jp_{max})$$
이는 steps의 수에 따라 선형적으로 증가하는 상한을 갖고 있다. 위의 표4의 내용에서 이를 입증한다.