핵심 : 동일한 LLM 하나로 생성-피드백-수정 단계를 밟으면서 생성 결과를 발전시킬 수 있다. (ChatGPT와 대화하면서 조금씩 원하는 방향으로 수정하도록 query를 넣어주는 것을 자동화한 느낌)
0. Abstract
해당 논문에서는 인간이 자신이 쓴 글을 개선하는 방식과 유사하게, LLM이 반복적으로 피드백하고 수정하는 과정을 통해 결과물을 개선하는 Self-Refine 방식을 소개한다. 별도의 학습이 필요하지 않고, 하나의 LLM만으로 generator, feedback provider, refiner의 역할을 모두 수행할 수 있다. 논문에서는 7개의 task에 대해 확인하였으며 GPT-4와 같은 SOTA LLM도 Self-Refine을 통해 더 개선될 수 있다는 것을 보인다.
1. Introduction
LLM의 성능은 뛰어나지만, 복잡한 요구사항이나 정의하기 어려운 목표가 주어졌을 때는 성능이 떨어지는 경우가 존재한다. 기존의 방식들은 추가적인 수정이 필요할 때 별도의 refinement model을 설계하거나, 더 큰 training data 또는 expensive한 라벨링을 필요로 했다.
따라서 Self-Refine이라는 새로운 알고리즘으로, Feedback과 Refine 단계를 반복적으로 거치면서 high-quality output을 생성할 수 있게 한다. 모델이 initial output을 만들면, 동일한 모델이 더 이상의 개선이 필요 없다고 판단할 때 까지 이 과정을 반복한다.
2. Iterative Refinement with Self-Refine
initial output, feedback, refine을 수식으로 표현하면 다음과 같다. (x는 input, || 는 concat, M은 모델을 뜻한다.)
Initial output = $y_0 = \mathcal{M}(p_{gen} || x)$
t번째 Feedback = $fb_t = \mathcal{M}(p_{fb}||x||y_t)$
t+1번째 Output = $y_{t+1}=\mathcal{M}(p_{refinc}||x||y_{t}||fb_{t})$
이 과정을 iterative하게 수행하면 최종 수식은 다음과 같다.
$ y_{t+1}=\mathcal{M}(p_{refinc}||x||y_{0}||fb_{0}||...||y_{t}||fb_{t})$
3. Evaluation
총 7개의 task에 대해서 실험을 하였고, 모든 base model들에 대해서 일관되게 개선됨을 확인할 수 있었다.
- Sentiment Reversal : 긍정적인 리뷰였다면 부정적인 리뷰를 작성하는 것처럼 감정을 반전한 뒤에 재작성하는 task
- Dialogue Response 생성
- Code 최적화
- Code 가독성 개선
- Math Reasoning
- Acronym Generation : 적절한 약어 만들기
- Constrained Generation : 특정 키워드를 무조건 포함해서 문장 생성하기
> 공통적으로 최대 4번의 iteration을 허용했고, few-shot 프롬프트를 제공하였다.
> 평가 기준은 1) Task specific metric, 2) Human-선호도, 3) GPT-4-선호도를 사용하였다.
> Task의 특성별로 성능이 좋아지는 정도가 차이가 있었다. constrained generation의 경우 intial output이 많이 놓칠 수도 있어서 추가적인 refine을 통해 많이 개선되었지만, math reasoning의 경우에는 정확히 어디서 실수를 했는지 알기가 어려워서 적게 개선되었다.
4. Analysis
Feedback의 품질의 중요성
Self-Refine의 피드백과 2가지 경우(더 모호하고 일반적인 피드백을 주는 경우, 피드백을 안주는 경우)와 비교했을 때 Self-Refine의 성능이 더 좋은 것을 통해, 구체적이고 실제로 실행이 가능한 피드백을 주는 것이 중요하다는 것을 알 수 있다.
반복 횟수의 중요성
반복을 할 수록 점수가 좋아지긴 하지만, 그 폭이 조금씩 줄어들게 된다. 여러 측면을 고려해야 하는 피드백(e.g. Acronym Generation)의 경우 특정 측면에서는 좋아지지만 다른 측면에서는 낮아질 수 있기 때문에, 여러 개의 점수를 사용해서 output을 고르게 한다.
Refine없이 여러 번 생성해서 성능이 나아진 것 아닐까?
Refinement가 아니라 그저 여러 번 output을 생성해서 점수가 좋아진 것이 아닌지를 확인하는 섹션이다. Self-Refine을 통해 만들어진 output 1개가 k개의 initial output들보다 전부 좋았기 때문에 refinement의 중요성을 볼 수 있었다.
모델이 약하거나 사이즈가 작은 경우에도 적용할 수 있을까?
논문에서는 Vicuna-13B 모델을 활용했는데, 피드백을 잘 생성하지 못하고, 피드백을 제공해도 답변을 개선하지 못하는 것을 확인했다.
Qualitative Analysis : Error case들을 보면 refine을 못하는 경우보다 feedback 자체가 잘못되어서 에러가 발생한 경우가 많았다. 피드백이이 다소 틀린 부분이 있어도 refine을 한 경우처럼, sub-optimal한 피드백에 대해서 refiner가 robust한 모습도 보였다.
※ 벤치마크는 없지만, 웹페이지 개발도 동일한 프로세스로 개선할 수 있다.
5. Related Work
Source of feedback : 기존의 방식은 인간이 피드백을 하거나 별도의 모델이 있었지만, Self-Refine은 자기 자신의 output에 대해서 feedback을 한다는 점에서 차이가 있다.
Representation of feedback : 피드백의 형태는 자연어(NL) 형태나 Non-NL(숫자나 specific format)형태를 취할 수 있는데, Self-Refine은 모델이 더 쉽게 피드백을 생성하기 위해서 자연어 형태를 사용한다.
Refiners 유형 : 기존의 방식들은 Supervised refiner처럼 별도의 refiner를 학습시킨다.
Non-refinement 강화학습 : 강화학습은 ① 생성 단계의 중간에 피드백을 사용하지 않고, ② 모델의 파라미터를 변경한다는 차이가 있다.
6. Limitations and Discussion
- 모델 자체가 few-shot modeling이나 instruction-following할 만큼 강력해야 한다는 한계가 있다.
- 영어인 데이터셋만 활용해서 다른 언어들에 대해서는 확인되지 않았다.
- 모델을 악용하기 위한 수단으로 사용될 수 있다.
7. Conclusion
Self-Refine을 통해 self-피드백과 개선을 할 수 있는 접근 방식을 소개하였다. 별도의 추가적인 데이터나 학습이 필요하지 않다는 점, 그 단순함과 확장성이 장점이다.
논문 링크 :
https://arxiv.org/abs/2303.17651
'AI > Paper Review' 카테고리의 다른 글
[논문 리뷰] Dense Passage Retrieval for Open-Domain Question Answering (0) | 2025.01.08 |
---|---|
[논문 리뷰] Retrieval-Augmented Generation for Large Language Models: A Survey (0) | 2025.01.06 |
[논문 리뷰] ReAct: Synergizing Reasoning and Acting in Language Models (0) | 2025.01.02 |
[논문 리뷰] Toolformer: Language Models Can Teach Themselves to Use Tools (0) | 2024.12.31 |
Augmented Language Models: a Survey (1) | 2024.12.30 |