LLM 관련 리서치를 하던 중에,
특정 도메인을 위한 LLM의 fine-tuning 학습 기법인 ORPO를 알게되었고, fine-tuning 관련 공부가 부족했던 지라 일단 발견한 개념부터 정리해보고자 한다.
즉, 선호 데이터(Preference data)를 기반으로 승산비(Odds Ratio, OR)을 활용하여 모델을 최적화 하는 비법
(1) RLHF(Reinforce learning from human feedback)
(2) DPO (Direct Preference Optimization)
(3) ORPO
step 1. 데이터 준비 (Preference Data)
chosen
)과 더 나쁜 응답(rejected
)의 쌍을 수집step 2. 승산비 (Odds ratio) 계산
chosen
과 나쁜 응답 rejected
비율 (승산비, OR)을 조정함승산비 정의
OR = P(chosen) / P(rejected) = 0.8/0.2 = 4.0
P(chosen) : 모델이 chosen
응답을 생성할 때
P(rejected) : 모델이 rejected 응답을 생성할 확률
이러한 승산비(OF)를 최대화 하는 방식으로 모델 업데이트
step 3. 로짓 조정 (Logit Adjustment)
chosen
응답을 더 선호하기 위해 모델의 로짓(logit) 출력 조정chosen
응답의 모델 점수(logit)rejected
응답의 모델 점수(logit)step 1. 데이터 수집
pairs:
- prompt: "뉴턴의 제1법칙을 쉽게 설명해줘."
chosen: "뉴턴의 제1법칙은 물체가 외부 힘을 받지 않으면 현재의 운동 상태를 유지한다는 뜻이에요."
rejected: "뉴턴의 제1법칙은 아이작 뉴턴이 만든 세 가지 운동 법칙 중 하나예요."
- prompt: "‘안녕하세요, 잘 지내세요?’를 프랑스어로 번역해줘."
chosen: "Bonjour, comment ça va?"
rejected: "Bonjour, comment es-tu?"
- prompt: "서울의 수도는 어디야?"
chosen: "서울은 대한민국의 수도입니다."
rejected: "서울은 한국의 한 도시입니다."
chosen
응답이 더 자연스럽고 정확한 문장rejected
응답은 틀리지는 않았지만 덜 선호됨step 2. 모델이 각 응답할 확률에 대해 예측
chosen
과 rejected
응답을 보고 각각의 확률 계산
예제 : "뉴턴의 제1법칙을 쉽게 설명해줘"
chosen : "뉴턴의 제1법칙은 물체가 외부 힘을 받지 않으면
현재의 운동 상태를 유지한다는 뜻이에요."
→ P(chosen) = 0.8
rejected: "뉴턴의 제1법칙은 아이작 뉴턴이 만든
세 가지 운동 법칙 중 하나예요."
→ P(rejected) = 0.2
OR = 0.8/0.2 = 4.0
-> 모델이 chosen
을 rejected
보다 4배 더 선호한다는 의미
step 3. 손실 및 계산 및 모델 업데이트
chosen
의 점수를 높이이고 rejected
의 점수를 낮추는 방식으로 모델을 학습시킴
chosen 응답의 로짓 점수 Schosen = 2.5
rejected 응답의 로짓 점수 Srejected = 1.0
온도 파라미터 τ= 1.0
chosen
의 응답 확률이더 높아지도록 만듦 ORPO에서 로짓(Logit) 점수의 계산 방법
로짓 점수(Logit)
즉, 로짓 점수가 클수록 모델이 해당 응답을 더 선호한다는 뜻
로짓 점수 계산에 대한 것은 아래 포스팅 참고
-> https://velog.io/@heyggun/LLM-logit-%EA%B3%84%EC%82%B0
ORPO은 승산비 기반 최적화(odds ratio-based optimization)을 이용해, 보상 모델 없이도 효과적으로 LLM을 미세조정 하는 방법이다.
DPO와 비슷하지만 더 간단한 로짓 조정 방식을 이용해 가볍게 하면서도 성능을 유지하는 것이 특징