[Paper Review] 2401 Self-Rewarding Language Models
Yuan, 조경현 교수 Meta, NYU
👨🏽💻 Title & Authors (Affiliation)
- Self-Rewarding Language Models
- Yuan, 조경현 교수, Meta, NYU
- 24.01
✍🏼 요약
- Reward Model을 따로 두지 않고, LLM을 답변도 만들고 답변을 평가까지 같이 해본 결과.
- AI 피드백은 RLAIF 연구에서 이미 있었으나, 자기 스스로 답변하고 평가하고, 그 데이터로 다시 학습까지 하는 연구는 없었음
- 중요한 점은 LLM을 Judge로 활용하기 위해 저자들이 사용한 프롬프트
🔒 Problem
- Human Preference로 Reward Model을 학습하면 사실 Super Human Level에는 도달하기 어렵다.
- 또한 Reward Model을 일단 학습하면 Agent를 학습할 때는 Frozen 형태로 사용하기 때문에 더 향상되지 못한다.
- DPO 방식은 일반적으로 Iterative 학습하지 않는다.
🔑 Main Ideas
- LLM 자체를 Reward Model로 활용해서 학습해보자.(RLAIF랑 컨셉은 비슷?)
- (1) Self-Instruction Creation: 질문에 대한 답변을 Agent 생성
- (2) 답변을 Agent 스스로 평가하여 답변에 대한 Reward를 생성(평가를 위한 Prompt 중요)
- (3) 위에서 생성한 답변 Pair를 DPO로 학습하여 새로운 Agent 생성하고, 해당 모델을 다시 (1)에서 사용
- M0는 완전 순수한 pretraining 모델이므로, 이 친구를 가지고 시작할 순 없다. 따라서 IFT, EFT로 일단 초벌구이를 한다.
- IFT(instruction FT): General Domain Instruction에 대한 Human Annotation Supervised Finetuning Data(질문-답변)
- EFT(Evaluation FT): 인간의 질문, 챗봇 답변, 답변에 대한 점수, 그리고 LLM을 통해 답변에 대한 점수를 만들어내기 위해 적합한 프롬프트
![image](https://github.com/oglee815/oglee815_old.github.io/assets/18374514/87d4f8c8-62fd-449b-92e1-cf3421007127)
- AIFT(AI Feedback Training): AI가 만든 데이터(질문-답변)로, 다음 2가지 Variants 존재
- Preference Pairs: 1개의 질문에 대하여 N개의 답변을 뽑고, 그 중 최고점과 최하점 데이터를 Pair로 만들어서 DPO로 학습
- Positive Examples Only: 만점을 받은 답변만 뽑아서 SFT로 함.(pair 데이터가 아니므로 DPO 못함).
- 뒤에서 나오지만 DPO 방식이 훨씬 성능이 좋음
- Experimental Setup
- Base Model : Llama2 70B
- IFT seed data: Open Assistant 데이터, 3200개(사람이 만듦, 가장 좋은 답변만 추림), 얘로 학습한 모델을 SFT baseline이라고 부름.
- EFT seed data: IFT 데이터와 안겹치는 샘플(질문-답변)을 Open assistant 데이터에서 추출하고, SFT baseline을 통해서 점수와 justification(위 그림 참조)을 생성함. 근데 SFT가 뱉은 점수가 틀릴 수도 있으므로 인간이 매긴 점수(정확히는 ranking)와 동일한 샘플만 추출함. 그럼 학습용 1775개, 평가용 531개만 남게 됨.
- Evaluation
- Instruction Following 능력 평가:GPT4를 evaluator로 활용, 256개 test 질문, AlpacaEval Evaluation Prompt 사용(우리도 따라해도 될 듯?), 805개의 AlpacaEval 2.0 prompt도 사용
- Reward Modeling 능력 평가: LLM이 매긴 답변 랭킹과 사람이 매긴 랭킹 사이의 exact match, Spearman Correlation and Kendall’s T 등으로 평가
- Training Details
- 특이한 점은, DPO 할 때 200 스텝마다 모델을 Claude 2를 활용하여 평가함(why???)
- Self Instruction Creation: 희한하게 Llama 2 Chat으로 새로운 질문(new prompt)를 생성하여 학습에 활용(여기에 쓰인 프롬프트나 자세한 사항은 다른 논문을 참조했다고 나와 있어서 해당 논문을 봐야 알듯). 응답을 생성할 때는 4개까지 만들었고, M1을 위해 3964 pair, M2를 학습하기 위해 6942 pair를 사용.
📈 Results
- Instruction Following 능력 평가
- EFT+IFT와 IFT만 학습한 모델의 성능이 비슷하다. 즉 EFT가 IFT 성능에 영향을 끼치지 않는다. 즉 Evaluation 능력이 향상됐는데 IFT 능력은 하락되지 않았다는게 중요.(근데 반대로 EFT가 IFT를 향상시키지는 않았다는 거네)
![image](https://github.com/oglee815/oglee815_old.github.io/assets/18374514/95bcb0b7-5b02-40b7-9244-0dbaf24395bb)
- M2가 M1, SFT Baseline 보다 좋음
- M3가 M2보다 좋음
- GPT-4-turbo 대비 성능비교
- iteration이 늘어날수록 성능이 좋아지고, 많은 모델들 대비해서 M3 모델이 더 좋았다.
- Reward Modeling 능력 평가
![image](https://github.com/oglee815/oglee815_old.github.io/assets/18374514/16c17dcd-def0-496f-a0a0-205419e10e9c)
- M2, M3에서 Evaluation 능력이 소폭이지만 향상되는데, 이것은 general instruction following 능력이 향상되므로 따라서 같이 향상되는 걸로 보임
- 근데 왜케 Spearman, Kendall 저점수가 낮냐;;
- Importance of the LLM-as-a-Judge Prompt
- 개인적으로 이 부분이 제일 중요하다고 생각함
- 다른 논문에서 제시한 프롬프트(5점 중 선택하는 프롬프트)를 사용하면 점수가 pairwise accuracy가 20점대임.
- 그러나 본 논문에서 제시하는 것처럼 점수를 +1점씩 더하는 프롬프트를 사용하면 60점대 이상
![image](https://github.com/oglee815/oglee815.github.io/assets/18374514/599a8065-6086-43c2-b62f-7ca51d8c020a)
- 데이터 분포
![image](https://github.com/oglee815/oglee815_old.github.io/assets/18374514/d2219dcc-6669-4862-b9c1-8ef529485e31)
- 굉장히 흥미로운 그림
- instruction과 response에 대한 임베딩을 t-SNE로 뽑아본 그림
- AI가 만든 데이터인 AIFT와 사람이 만든 IFT의 임베딩이 유사한 것으로 보임
Limitations
- 이건 내 생각
- 70B 모델을 사용했기 때문에 LLM-as-a-Judge도 되고 instruction following도 되는게 아닌가 싶음.
- 이터레이션을 왜 2번만 했는지에 대한 설명이 없는 것 같음.
- 학습 데이터셋이 상대적으로 적은데, 이건 이 실험의 장점이자 단점이 될 수도 있을 것 같음.
- 페이퍼에 기술 된 한계점
- 답변의 길이가 길어지는 현상 발생. 즉, Reward Hacking이 여전히 일어나기 쉬움.
- GPT4를 활용한 평가방법에 한계가 있고, 사람이 평가하거나 다른 방식으로 평가하는게 중요함.
- Safety Evaluation에 대한 결과가 없음.
✏️ Conclusion
- LLM 자체를 Judge로 사용해서 자기의 답변을 평가하고 그 결과로 학습을 하면 성능이 더 좋아진다.
❔ Questions
- 작은 모델도 이렇게 Judge로도 활용이 가능 할까?