이 게시글은 서울대학교 데이터사이언스대학원 조요한 교수님의
거대언어모델과 대화형 인공지능 강의를
학습을 위해 재구성하였습니다

오늘 수업에 들어가기에 앞서서 지난 시간에 배운
InstructGPT와 PPO 내용을 다시 한 번 복습해보고 못다한 부분을 마무리해보자

지난 시간의 내용이었다
총 3가지의 스텝이 있었는데
일반적인 SFT model을 만들고
리워드 모델을 만들고
학습된 리워드 모델을 바탕으로 강화학습을 시키는 과정이었다

강화학습은 크게 3가지의 objective가 있었다
expected reward를 단순히 높이는 방식으로만 하면 모델이 reward hacking을 수행한다
단순히 리워드를 잘 받기 위해서 의미없는 텍스트를 내뱉는 경향이 생기기 때문에
기존에 SFT를 시켜놓은 모델로부터 너무 멀어지지않도록
KL Divergence를 penalty로 줘서 이를 줄이는 방식으로 학습을 수행한다
이렇게 모델을 학습시키다보니까 pretraining에서 배웠던 유용한 지식과 NLP skills들을 잊어버려서
그 부분의 보충을 위해 pretrain 때 했던 학습을 추가로 시키는게 세번째 objective이다
그런데 지난시간에도 배웠듯이 이런식으로 objective가 있었는데
이론적으로는 REINFORCE algorithm을 이용해서 학습을 수행했었는데 (sample by sample)
학습이 불안정해진다는 문제가 있었다
그래서 instructGPT 같은 경우에는 REINFORCE algorithm을 쓰지않고
PPO라는 방식을 사용하였다

기존 식의 문제는 training이 시작할 당시에는
모델이 어려운 프롬프트에 대해서 좋은 답변을 낼 수가 없었다는 것이다
이렇게 되면 조금 어려운 문제에 대한 답변들의 리워드는 대부분 음수가 될 것이고
리워드가 음수다보면 모델이 y를 생성하는 확률을 낮추는 방향으로 학습이 되기때문에
무엇을 생성하든 확률을 낮추는 방향으로만 학습이 될 수가 있다
반대로 얘가 어느정도 풀 수 있는 그런 프롬프트가 주어진다면
그런 프롬프트는 아주 좋은 퀄리티의 답변이 아니더라도
그냥 평범한 답변을 내더라도 리워드가 양수일 가능성이 크기 때문에
그냥 평범한 답변을 생성할 확률은 또 계속해서 높아지는 문제가 발생하는 것이다
우리가 원하는 것은 모델이 정말 좋은 답변만 골라서 생성하길 바라는 것인데
이 평범한 답변의 확률이 양수가 되니까 이 확률이 계속해서 올라가는 문제가 발생한다
그리고 결국 이러한 것들이 모델의 collapse를 일으켰다
그래서 PPO에서는 3가지를 개선하고자 했다
첫 번째는 expected reward에서 reward를 advantage function으로 바꾸자는 것이다
advantage function = reward - value function인데
value function은 이 모델에게 어떤 프롬프트를 주었을 때 이 모델에게서 받을 수 있는 기댓값이다
이걸 seperate prediction model이라고 하는데 얘는 RL을 학습시킬 때
동시에 같이 학습을 시킨다
그럼 우리가 그냥 리워드를 쓰지않고 이 advantage를 쓰게되면 어떤 장점이 있었냐?
리워드가 음수더라도 기대했던것보다 잘했으면 advantage function의 값은 양수가 된다
그래서 그런 답변의 확률은 높이도록 학습이 된다
반대로 모델이 내뱉은 y가 양수라고해서 무조건 확률을 높이는게 아니고
기대했던것보다 못했으면 advantage function의 값은 음수가 되기 때문에 확률을 낮추도록 학습시킨다
결국 이렇게 학습을 안정시키는 것이다

그리고 또 practically 학습을 시킬 때는 매 step마다 시키지 않는다
실제로 그냥 pure한 방식은 x하나에 대해서 모델의 답변을 샘플하고
reward model로 점수를 생성한 다음
그 reward로 PM을 update 시키고 이 과정을 계속해서 반복하는 것인데
이게 practically 너무 힘들다
이걸 하라고 하면 학습 중인 모델도 띄워놔야하고
리워드 모델도 띄워놔야하고
reference model도 띄워놔야하고 ..
이 3개의 모델을 다 띄워놓고 sampling하고 inference하는 과정이 너무 힘이든다
그래서 실제로는 우리가 갖고있는 모든 x들에 대해서
한번에 y를 다 샘플링을 하고 리워드를 계산한 다음
모델을 1step, 2step 업데이트를 시키고 이게 practical한 방법이다
그렇다면 이렇게 했을 때 어떤 문제가 발생할까?
실제로 학습할 당시에 그 모델이 이 샘플을 생성할 확률을 기반으로해서 objective를 만들었는데
모델이 한스텝 두스텝 업데이트가 조금씩 조금씩 진행되다보면
처음에 샘플을 해놨을 당시와 이 당시에 조금 업데이트가 되어있는 모델은
y가 될 확률이 달라져있는 상황이기 때문에 오차가 발생한다
어떤 주어진 y sample은 우리가 미리 뽑아놨을 때의 확률과 학습할 당시의 확률값이 멀어져있게 되는 것이다
그래서 우리가 이문제를 해결하기 위해서 앞에서 사용하기로 했던
advantage function에 weight를 시키는데
이 샘플의 중요도에 따라서 weight를 곱해주는 importance sampling 값을 곱해준다
만약에 우리가 미리 샘플을 해놓는 y라는 텍스트가
업데이트할 당시의 확률이 샘플할 당시의 확률보다 조금 더 올랐으면
y는 조금 더 중요해진 샘플이므로 A에 가중치를 둬서 1보다 빡세게 학습을 하겠다는 뜻이다
반대로 확률이 낮아져있는 상태면 덜 중요해졌기 때문에 학습의 magnitidue를 낮추겠다는 뜻이다

또 이런 문제도 있었다
advantage function의 값이 양수인 경우에 y의 확률을 높이도록 학습을 시키는데
만약에 y의 확률이 샘플링 할 당시의 확률보다 너무 높아져있으면
저 값이 너무 커져서 학습이 극단적으로 높아질 가능성이 있다
반대로 저 값이 음수면 기본적으로 저 y의 생성확률을
극단적으로 낮추는 방향으로 학습을 할 수가 있다
이런 케이스가 발생하는 케이스는 그리고 대부분이 노이지한 케이스이다
그래서 이런 두 상황이 발생하면 아예 업데이트를 건너뛰어버린다
이를 조금 더 수식적으로 풀면 advantage값이 양수이고 importance weight의 값이
우리가 설정한 threshold보다 크면 이러한 문제가 발생할 수 있기 때문에
학습을 하지 않고 건너뛴다는 것이다
음수면 그 반대가 된다
따라서 이 앞의 3개의 개선점을 합쳐놓은 식이 바로

이렇게 되는 것이다

그렇다면 이렇게 해서 instruction GPT의 학습이 끝이 났다
그래서 이렇게 학습이 된 GPT를 가지고 human이 평가를 진행했다
가로축이 model size이고 y축이 performance이다
SFT보다 잘한 비율을 floating한 것이다
PPO-ptx가 PPO 방식으로 학습을 시켰고 3개의 방식을 (instruction + RL + LM)
다 넣은 방식으로 학습을 시킨 것이라고 한다
노란색은 objective model 2개만 갖고(LM 부분을 빼고)
학습을 시킨 것이라고 한다
결과만 봤을 때는 위의 2개가 가장 잘했다고 한다

두번째 plot은 주어진 지시에 대해서 얼마나 잘했는지를 본 것이다
우리가 보통 지시를 넣을 때는 구체적인 constraint를 넣는 경우가 많다
그런걸 얼마나 잘 따랐는지를 보는 것이다
결과적으로는 PPO가 제일 잘했다고 한다
세번째 plot은 할루시네이션인데 SFT가 가장 낮고
그 다음이 PPO-ptx, PPO 순이다
마지막 plot은 학습된 GPT가 customer assistant로써
얼마나 적합한 언어를 사용하는지를 본 것인데
다 비슷비슷한데 PPO가 제일 잘했다고한다

우리가 앞에서 배웠던 FLAN과 비교한 것이다
FLAN보다 본인들의 모델이 더 잘했던 이유로 저자들이 말하기는
FLAN이라는 데이터셋은 NLP task로만 구성이 되어있는데
실제로 GPT prompt labeler들이 본 건 그 중에서 NLP task는 8프로밖에 없었다고 한다
사람들은 NLP task말고 다른 task를 더 많이 하는 경향이 있었기 때문에
NLP task만 학습한 FLAN은 상대적으로 결과가 안좋을 수 밖에 없었다

다음은 신뢰도로 모델에게 질문을 하는데
모르면 모른다고 대답을 하는지에 대한 것이다
위 plot에서 회색이 truthfulness라서 모델이 거짓말을 하지 않는 것이고
모델이 그냥 답을 모르겠다고 하는 것을 True로 판단한다
그런데 이게 모른다고한게 정답은 아니니까 정답률은 떨어진다
그래서 이 회색으로 shading한게 truthfulness이고 색으로 된게 정답을 맞춘 횟수이다
PPO가 상대적으로 신뢰도가 꽤나 높았다
오른쪽은 동일한 setting인데 instruction을 explicit하게 주어서
모르면 모른다고 대답하라고 알려준 것이다
회색으로 된 막대가 왼쪽에 비해서 많이 올라간 것을 볼 수 있다
그리고 답을 맞추는 비율은 많이 떨어지는 것도 볼 수 있다

다음으로는 toxicity이다
zeroshot GPT와 SFT, PPO를 비교했다
SFT가 가장 낮은 경향이 있었고
그 다음이 PPO 그 다음이 vanilla GPT이다
오른쪽의 respectful은 모델에게 직접 respectful해야한다고 지시를 포함한 것을 말한다
이렇게 했을 때 vanilla GPT의 비율은 오히려 올라가고
SFT, PPO는 낮아진다

학습 때 보지 않았던 task에 대해서 얼마나 잘하는지를 보는 것인데
일반화가 얼마나 잘 되는 것인지를 보는 것이다
저 list의 목적이 무엇이냐고 질문을 했고
왼쪽이 GPT의 답변
오른쪽은 instructGPT의 답변이다

그렇다면 이 친구가 실수한 것을 살펴보자
첫 번째 mistake는 false premise가 들어갔는데
이걸 아니라고 대답하지 않고 그대로 받아들인 뒤 대답을 하는 점이었다

두번째는 모델이 hedge를 너무 많이 한다는 점이었다
hedge란 모델이 확신을 하지 않고 it might ~~~ 이런식으로 대답을 하는 것인데
왜 이럴까하고 저자들이 해석을 한 것은
이건 학습 데이터를 만든 레이블러들이 답변자체를 이렇게 해서라고 한다
즉, 겸손한 표현을 레이블러들이 선호하는 경향이 있기 때문에
모델도 그걸 배워온 것이고
그렇기 때문에 겉으로 보기에 겸손한 답변을 생성하는 경향이 있다고한다

그래서 지난 시간까지 배운 부분에 대한 요약이다
instructGPT는 NLP task 이외의 다른 task들에도 효과가 있었고
truthful하고 less hallucinate한 경향도 있었따
그런데 이렇게 RL을 하다보면 한계점들이 발생했었는데
RLHF를 하다보면 모델의 퍼포먼스가 몇몇 NLP task에 대해서 줄어든다
이걸 alignment tax라고 부르는데
모델을 alignment를 하다보면 어쩔수없이 감내해야하는 부분이다
그래서 instructGPTsms pretraining 때 썼떤 데이터를 다시 학습시키면서
이런 부분들을 보완하고자 했다
또한 instructGPT는 사람들이 보기에 너무 단순한 실수를 하는 경향도 있었다
없는 내용을 지어낸다거나
hedge한 말들을 한다거나 premise에 있는 false를 발견하지 못하기도 했다

지금까지 지난시간에 못다한 내용을 마무리했고
이젠 오늘의 내용인 Direct preference optimzation에 대해 배워보자

우리의 lecture series에서 alignment의 두번째 부분에 해당한다

우선 이것의 motivation이 뭐냐
앞에서 봤던 RLHF에서는 기본적으로 2개의 모델이 학습이 되고
서로 interaction하면서 작용을 했다
학습을 시키려고하는 policy model과 reward 모델이 서로 상호작용을 하면서
학습이 발생하였다
이런 여러 개의 모델들을 학습하고 샘플을 생성했다가 그걸 리워드 메기고 하는 과정들이
사실 굉장히 computation도 비싸고 구현도 복잡하다

우리가 이전에 배웠던 프롬프트 x가 주어졌을 때
yw을 yl보다 사람들이 더 선호할 확률은

이런식으로 계산이 되었었다
이걸 optimize를 시키는건데 여기에 리워드 모델이 관여하게 된다
그런데 만약에 저 reward 부분을 phi에 대한
direct한 함수로 표현을 할 수 있으면
reward model이 얘를 optimize를 할 때 굳이 개입하지 않고
direct하게 optimize를 수행할 수 있지 않을까?
하는게 이 논문의 기본 idea이다
즉 리워드 모델을 학습하는 그 과정을 bypassing 할 수 있게해서
리워드를 주는 과정도 bypassing 할 수 있게 하자는 것이다
이걸 direct preference optimizing 방식이라고 한다

policy model과 reward model은 서로 다른 모델인데
이걸 어떻게 같은 phi에 대한 함수로 나타낼 수 있을까?
이게 사실은 가능하다는 것이다
두 모델은 서로 연결이 되어있기 때문이다

그렇다면 phi와 reward의 연결고리를 살펴보자
결국에 학습하려고 하는 모델의 파라미터는 phi이다
그 objective가 결국 expected reward - KL Divergence였고
이걸 최적화 시키는 것이었다
그 때의 phi의 값은 closed form으로 계산을 할 수가 있었다

그래서 결국 이 phi는 KL Divergence를 줄이는 방향으로 최적화가 된다
그리고 우리는 이 objective를 최적화 시키는 phi를 계산을 할 수 있다
위 풀이과정을 전개를 하지 않을건데
저 objective를 최대화하는 phi는 closed form으로 계산을 할 수가 있고
이렇게 계산을 했을 때 P(y|x)는 아래와 같은 식으로 최대화가 되어야한다

high level에서 이 식이 무엇을 의미하는지만 살펴보자
총 3개의 컴포넌트가 들어가는데
제일 오른쪽의 reward는 결국 주어진 y가 reward를 높게 받을수록
최적화된 phi가 y를 생성할 확률이 올라가게한다
KL Div가 있기 때문에 SFT가 y를 생성할 확률과
최적화된 phi가 y를 생성할 확률도 비례하게 된다
그래서 결국 저게 확률로 계산이 되어야한다
확률로 맞춰주기 위한 partition function이 z분의 1이 된다
그래서 phi를 최적화시키면 최적화된 policy model은
리워드와 SFT의 확률에도 비례를 해야한다
그래서 위와 같은 식을 슥삭슥삭 이동 시켜서 리워드 부분만 남게 정리를 하면
아래와 같은 식이 나오게 된다


우리가 앞에서 하고싶었던 것은 리워드 자체를
phi의 형태로 나타냈으면 좋겠다고 해서 시작한 것이다
우리가 RLHF에서 저 phi를 Bradely model을 통해서 계산을 했었고
그래서 저 R 부분을 아래와 같이 대체를 할 수가 있었다

둘다 log를 갖고 있기 때문에 logZ는 상쇄가 되기 때문에
이 preference라는 것을 reward model을 거치지 않고
phi에 대한 direct한 function으로 나타낼 수가 있는 것이다
그래서 결국 우리의 objective는 이 preference 데이터의 확률을 높이는 것은 동일한데
그 과정에서 리워드 모델을 개입시키지 말고 저걸 direct하게 높이자는게 우리의 objective이다
결국 저 값의 expectation을 높이도록 phi를 학습을 시키자는 것이다
제일 밑의 식의 의미를 잘 짚고 넘어가보자

SFT 모델이 wining을 낼 확률 대비 현재 내가 학습하고자 하는 모델이 yw를 낼 확률과
SFT 모델이 losing response를 낼 확률 대비 내가 학습시키고자하는 모델이 losing response를 낼 확률
위 2개의 확률의 간극을 최대한 벌리자는 것이다
그래야 전체 값이 커지기 때문이다
SFT 모델 대비 좋은 답변을 낼 확률은 많이 올라가있어야하고
SFT 모델 대비 나쁜 답변을 낼 확률은 많이 낮아져야
이게 optimize가 되는 것이다
단순히 wining response가 많이 높은 것이 중요한게 아니고
SFT 대비 많이 높은 것이 중요한 것이다
이건 나쁜 답변도 마찬가지이다
그래서 여기에 시그모이드를 취하고 로그를 취한 이 값을 optimize를 하는게
DPO의 main objective가 된다

그래서 이 objective를 가지고 학습을 수행하려면 gradient를 계산해야한다
전개 과정을 다 적지는 않았는데 전개방식은 꽤나 starightforward하다고 한다
위 우리가 위에서 봤던 objective 함수를 미분을 하면 그냥 저렇게 나온다고 하는데
베타가 밖으로 빠지고 시그모이드 안에 베타 log SFT분의 P(phi) .. 이런식으로 식이 있는데
앞이 losing을 생성할 확률, 뒤에가 wining을 생성할 확률이 나온다
그 다음에 곱하기를 하고 gradient의 방향이 나오는데
log phi의 좋은 답변 방향 - log phi의 나쁜 답변의 gradient를 낮추는 방향으로 학습이 된다
각각의 항목에 대해서 조금 해석을 해보자면
앞의 값은 상수값이고 뒤가 방향을 나타내는 값이다
얼마나 세게 방향을 적용할 것인지는 앞 부분에 달려있다
일단은 방향부분부터 살펴보자
결국에 좋은 답변을 생성할 확률이 이 objective의 방향이 된다
거기에 마이너스가 붙었으니까 나쁜 확률의 답변을 생성할 확률은 낮추는 방향인 것이다
그런데 여기서 재밌는 부분은 저 앞에 나와있는 coefficient는
저 rate가 실제로 저 방향만큼 얼마나 모델을 업데이트 시켜줄 것인지 결정을 해주는 부분인데
시그모이드라는게 기본적으로 0에서 1사이의 값이다
그래서 저 값이 0이면 사실 업데이트가 안되는 것이고
저 값이 1이면 완전히 업데이트가 되는 것이다
그럼 저 앞에 있는 weight가 0이 될지 1이 될지 그 사이 값이 될지 결정하는 요인은 무엇일까
저 시그모이드의 인ㅇ자로 들어가는 부분을 보면 losing이 먼저 나오는데
SFT 대비 현재 모델이 losing을 생성할 확률이 높아져있는 상태면
이 업데이트를 빡세게 걸겠다는 뜻이다
반대로 SFT 모델 대비 현재 모델이 좋은 답변을 생성할 확률이 많이 높아져있으면
학습을 덜 걸어주겠다는 것이다
저 앞부분이 클수록 시그마는 1에 가까워지고 앞부분이 작을수록 0에 가까워진다
그래서 이부분을 통해서 DPO를 실제 모델에다 적용을 시키면서 인사이트를 얻은 부분이 많다
이런 부분을 잘 모르고 DPO를 적용시키면 아무리 학습을 시켜도
왜 학습이 잘 안되지?하는 부분들이 있다
그런데 언제 학습이 강하게 되고 언제 학습이 강하게 안되는지를 잘 알고있어야한다
우리가 DPO로 학습을 시킬 때 pair를 가지고 학습을 시키는데
우리가 갖고있는 이 preference data가 모델이 나쁜 답변을 생성할 확률이 거의 없는 답변이면
앞이 0에 가깝기 때문에 아무리 좋은 데이터로 학습을 해도 학습이 잘 안된다
물론 그 반대도 마찬가지
좋은 답변이 있는데 모델이 이 좋은 답변을 생성할 확률이 굉장히 높은 상태여도 학습이 잘 안된다

이 DPO를 positive review generation task로 평가를 진행했따
IMDb라는 영화리뷰 데이터로 진행을 했는데
앞의 5글자와 어울리는 positive한 답변을 생성해야하는 태스크이다
SFT 모델은 IMDb를 가지고 일단 모델을 finetuning을 했는데
positive negative를 떠나서 모델이 그럴싸한 리뷰를 만들 수가 있어야하기 때문에
그걸 수행하기 위한 과정이었다
그 다음에 DPO를 쓸거면 preference data가 있어야하는데 이걸 어떻게 만드냐
25000개의 prefix를 가지고 모델에게 4개의 completion을 만들라고 한 뒤
각각에 대해서 sentiment classifier로 생성한 답변이 얼마나 positive인지 negative인지
점수를 매기게 하였다
그럼 그 Ranking이 나올텐데 이 조합을 가지고 6개의 pair를 만들었다

이 데이터를 가지고 모델을 학습을 시켰다
여기서 unlikelihood는 중요한건 아니고 모델한테 나쁜걸 뱉게하지않는 방식이라고 한다
여기서 두번째 방식이 PPO와 비교한 것인데
RLHF를 preference data를 리워드모델을 이용해 학습을 시켜서 그걸로 RLHF를 한 모델이다
그 다음에는 RLHF에서 리워드 모델이 있어야 하는데
sentiment classifier를 RM처럼 학습을 해서 보상을 하는 방식이고
마지막 preferred-FT는 앞에서 만들어놨던 모든 샘플에다가
preference sample에 대해서만 추가로 학습을 시킨 모델이다
즉 좋은것만 추가로 학습을 시킨 모델이다

x축이 KL Divergence인데
reward와 KL divergence간에는 trade-off가 존재한다
모델이 학습을 시키다보면 SFT 모델에서 멀어지기 때문이다
여기서 y축이 reward이고 여러가지 색들이 모델들인데
노란색인 DPO만 보면 KL Divergence가 이렇게 멀어지게 전에는
리워드가 쭉쭉쭉 올라간다
모델이 덜 망가지는 상황에서도 리워드가 만들어지고
KL Divergence가 멀어진다는 것은
SFT 모델과 멀어진다는 것인데
즉 자연스러운 리뷰를 생성할 확률이 떨어진다는 것이다
DPO같은 경우는 자연스러운 리뷰를 생성할 능력을 좀 덜 잃으면서도
positive review를 생성할 능력이 굉장히 빨리 올라가는 것을 확인할 수 있다
다른 모델들은 이거에 비해서 굉장히 천천히 올라간다
preferred 모델은 좋은 것만 추가학습 시킨건데 성능 자체가 많이 올라가지는 않았다

두번쨰는 summarization으로 평가를 수행했다
레딧에 가면 TL;DR이라는 데이터가 있는데 그게 한줄요약 같은 데이터이다
post의 글과 TLDR summary 인데
모델에 레딧 포스트가 들어가면 TLDR을 생성하도록 학습을 수행했다
SFT 모델은 GPT-J라는 모델에 학습을 수행했다
DPO를 시키기 위해서는 preference data가 있어야하기때문에
각각의 포스트에 대해서 여러 개의 모델을 이용해 summary를 generation했다
그리고 실제 사람이 보면서 이게 좋은 summary인지 label을 해서 preference data를 만들었다

PPO모델이 있고 preferred-FT는 앞의 SFT 모델에다가
이 preference data에서 wining만 모아놓은 데이터로 추가 학습을 시킨 것이다
GPT-J는 GPT zeroshot으로 요약 과제를 수행했고
BEst 128은 SFT 모델에다가 response 생성을 하는 것인데
random성을 줘서 128개의 response를 만들었다
그 중에서 가장 높은 점수를 받는 애를 최종 output으로 삼은 것이다
이건 상당히 비싼 방법이다

그래서 어떤게 더 좋은 summary인지는 누가 평가를 하나?
GPT4가 수행한다
모델이 생성한 summary와 실제 사람이 생성한 summary를 바탕으로
GPT4에게 보여주게 하였고 그 결과는 오른쪽 plot에 있다
x축은 sampling temperature이고 0은 greedy decoding이다
y축은 win rate이다
DPO가 노란색 가장 상단이고
PPO 방식은 temperature가 낮았을 때는 잘했는데
그러지 않았을 때는 랜덤한 성능을 보였다
Best of 128은 꽤나 좋은 성능을 보였는데 문제는 너무 비싼 방식이라는 점이다
preferred-FT는 SFT와 유사한데 DPO보다는 못한다
그래서 여기서 중요한 점은 잘하는 것만 보여주는 것은 학습에 도움이 안되고
못하는것까지 보여주는것이 훨씬 더 좋은 결과를 볼 수 있다는 것이다

레딧 데이터 말고도 다른 데이터에 대해서 얼마나 summarization을 잘하는지도 봤다고 한다
CNN/DailyMail이라는 데이터셋을 활용했고
일반화를 보기 위해서라고 한다
DPO가 PPO보다 더 일반화를 잘했다..~고 한다

Dialogue Generation에 대해서도 학습을 수행했다
user query가 들어왔을 때 모델의 답변을 봤는데
SFT는 pythia-2.8B를 가지고 이미 preference를 매겨놓은 데이터셋에서
prefer한것만 학습을 시키는 방식을 수행했다
즉 좋은 것만 학습시킨 모델인 것이다
preference data는 각각의 user query에 대해서 큰 언어모델이 두개의 답변을 생성하는 것이고
그걸 사람이 어떤게 더 좋고 어떤게 더 나쁘다라고 태킹한 것을 모은 것이다
정확히 어떤 언어모델을 썼는지는 안나와있다

baseline은 이런 모델들이 있었다 .. ~
pythia-2.8B는 퓨샷 프롬프팅을 한 방식이고
Best of 128은 위에서 설명한것과 동일

이것 역시 temperature에 따라서 win rate를 계산했고
Best of 128이 제일 잘했지만 너무 비싼 방식이고
DPO가 이어서 가장 잘 수행하는 것을 볼 수 있다

그럼 이번시간에 배운 DPO를 요약해보자
DPO motivation은 reward model을 쓰고싶지않고
어떻게하면 bypassing 할 수 있을까에서 motivation을 얻었다
LM을 direct하게 최적화시키자는 것이다
RLHF와 비교했을 때 많은 태스크들에 대해서 좋은 성능을 보였다
DPO는 RLHF 모델이 아니다
오히려 SFT 모델에 더 가까운 학습 방식이다
그래서 어떤 사람들은 DPO를 offline reinforcement learning이라고 부르기도 한다
샘플들을 한꺼번에 다 모아놓고 모아놓은 샘플들을 바탕으로 진행을 해서 그렇게 부르긴 하는데
그냥 그렇다..~
DPO에도 몇 가지 한계들이 있는데
DPO에서 보였던 실험들은 대부분 small scale에서 이뤄졌다
또한 복잡한 output format에 대해서 얼마나 robust한지 잘 나와있지않고
그리고 DPO로 학습할 때 가장 힘든 부분 중 하나가
기대했던 output이 잘 나오지 않는다는 점이다
자연스럽게 나오지 않고 막 답변이 깨진다던지..
아니면 학습하려는 task가 포맷을 맞춰야하는 태스크라던지
json으로 나와야한다던지 하면 그 포맷자체가 깨져버리는 문제가 발생했다
'강의 > NLP' 카테고리의 다른 글
| [NLP] Alignment - Learning from AI Feedback (1) | 2026.04.26 |
|---|---|
| [NLP] Alignment - Advanced Algorithms (0) | 2026.04.13 |
| [NLP] Alignment - Reinforcement Learning from Human Feedback (InstructGPT) (1) | 2026.04.11 |
| [NLP] Supervised Fine-tuning (Instruction Tuning and Reasoning) (1) | 2026.04.11 |
| [NLP] Supervised Fine-tuning (Dialogue Fine-tuning) (0) | 2026.04.05 |