Fine-Tuning Language Models from Human Preferences
Daniel M. Ziegler, Nisan Stiennon, Jeffrey Wu, Tom B. Brown, Alec Radford, Dario Amodei, Paul Christiano Geoffrey Irving(OpenAI)
https://arxiv.org/abs/1909.08593
오늘은 강화학습 기반의 파인튜닝 방법론을 통해 인간의 선호를 언어 모델에 통합하는 방법인 RLHF를 제안한 시초격의 논문, OpenAI의 "Fine-Tuning Language Models from Human Preferences"를 리뷰해보며, 앞으로 진행해나갈 LLM Alignment 공부의 시작을 열도록 하겠습니다!
📌 Introduction
세상에는 룰 기반으로 이러한 상태일 때, 이러한 가치를 지닌다라고 명확하게 판단할 수 있는 비교적 단순한 문제들도 있지만, 매우 추상적이거나 모호하여 인간의 판단을 통해서만 결과의 좋고 나쁨을 판단할 수 있는 상당히 복잡한 문제들도 있다.
예를 들어, 'LLM의 응답이 얼마나 중성적인가' 와 같은 문제들은 아무래도 우리 인간들이 가치 판단을 내려야하는 문제일 것이다.
저자들은 강화학습을 통해 이러한 복잡한 문제들에 접근하고자 시도한다. 더 자세히는 인간의 라벨을 활용해 리워드 모델을 학습시키고 이를 최적화하는 방식을 활용한다. 이렇게 되면 리워드 모델은 내가 원하는 방향이 더 높은 리워드를 가지도록 학습하기 때문에, 이 리워드를 Policy 모델, LLM 학습과정에 통합시킬 때 모델 역시 내가 원하는 방식으로 조정할 수 있다는 것이다.

자연어는 가치 판단이 포함된 개념을 표현하기에 그 표현력이 매우 풍부한 수단이라서 이러한 위와 같은 과정들을 수행하기에 상당히 효율적이다. 문맥에 자연스럽게 그러한 의미들이 내재되기 때문이다.
강화학습을 자연어에 적용하기 위한 기존 시도들도 물론 있었다.
첫번째는, BLEU, ROUGE 스코어처럼 어떤 룰에 의거하여 텍스트에 점수를 매기거나, 특정 도메인에서 해당 도메인의 이론을 기반으로 보상 함수를 직접 설계하여 강화학습을 진행하는 경우이다. 하지만 이 경우 왜 문제가 되냐? -> 해당 보상함수가 실제 목표는 잘 반영하지 못할 수 있다.
두번째는, 이 논문과 같이 인간의 선호를 반영하려는 시도들도 있었지만, 다음과 같은 한계들이 있다.
- 오프라인 환경에서만 동작(오프라인 -> 사전에 가치 라벨링된 데이터만 활용하고, Policy 모델이 새로 생성한 데이터는 동적으로 다시 가치 매겨서 순환시키지 못하는 문제)
- 암묵적 피드백(직접적인 선호가 아니라, 대화와 같은 행동에서 간접적으로 드러나는 선호를 추론해야 하는 문제)
- 리워드 스무딩(강화학습이 아니라, 리워드를 일종의 수도 라벨로 활용하여 지도학습 진행)
다시 종합하면 본 논문에서는 기존 방법론들과 다르게, 자연어 사전학습 모델을 인간 선호 데이터를 통해 강화학습으로 파인튜닝하는 방법론을 사용했다. 추가로 이 과정에서 KL-Divergence 기반의 제약 항을 걸어주어, 특정 방향으로 파인튜닝을 하더라도 기본적인 사전학습 모델로부터 너무 멀어지지는 않도록 강제해 안정성을 높였다.
또한 온오프라인 방식을 모두 진행하여 실험을 진행했다. 정책 LLM이 개선될수록, 추가 데이터를 계속적으로 수집해서 리워드 모델을 재학습시키고 업데이트하는 방식이 온라인에 해당한다.
방법론에 대한 검증은 다음과 같은 두 가지 다운스트림 태스크를 통해 진행되었는데, 자세한 결과는 아래에서 살펴보도록 하겠다.
- 스타일 기반 텍스트 이어쓰기(긍정적으로, 묘사가 생생하게)
- 텍스트 요약(CNN/DailyMail, TL;DR 데이터셋)
📌 Methods
가장 먼저, 어휘 집합 ∑와 언어 모델 ρ를 정의하고, 토큰 시퀀스에 대한 확률 분포를 정의한다.

바로 이전 포스팅에서 본 형태인데, 좌변의 시퀀스 결합확률은 우변의 스텝마다의 조건부 확률을 곱해나가는 형식으로 표현할 수 있고, 일반적인 언어 모델 목표와 크게 다를바 없어 보인다.
이러한 언어 모델을 특정 작업에 적용할 수 있다. 이때 입력 공간을 X, 데이터를 D, 출력 공간을 Y로 표현한다. 이 논문에서처럼 요약, 이어쓰기가 될 수도 있고, 어떠한 언어 활용 작업이 될지 모른다.
언어 모델 ρ는 확률적 policy를 다음과 같이 정의한다. 쉽게 말하면 LLM이 무엇을 위해 동작해야 하는지 그 목적을 표현한 것이다. 결국 단순한 곱법칙으로 보이지만, 샘플의 시작을 x로 두고 그 다음 토큰을 예측하라는 단순한 의미이다.

학습의 기본적인 틀은 Policy를 주어진 언어 모델로 초기화하고, 강화학습을 통해 주어진 작업을 수행하도록 트레이닝 하는 것이다.

이 때, 보상 함수가 주어져 있다면, RL을 통해서 보상의 기댓값을 최적화함으로써 위 목표를 달성할 수 있다. 따로 강화학습 공부하면서 포스팅을 하겠지만, 강화학습의 기본 골자 자체가 이 전체 시나리오의 평균 보상, 기댓값을 높이는 것을 최우선 목표로 함을 알 수 있다.

하지만, 본 논문에서는 별다른 보상 함수가 주어지지 않은 작업을 처리하는 것을 목표로 하고 있기 때문에, 인간이 부여한 라벨을 통해 reward model을 학습하고, 강화학습으로 최적화하는 두 단계 트랙을 활용한다.
본 논문의 전체 학습과정에 대해 살펴보겠다.
먼저 데이터 수집이다. 여기서는 말한것처럼 인간 라벨러의 개입이 필요하다. 입력 x에 대해 출력 (y0, y1, y2, y3)을 뽑고, 이 중에서 인간이 가장 좋은 것을 선택하도록 한다.
옵션 개수를 적절히 선택하는 것이 중요하다고 하는데, 선택을 하게 하기 위한 프롬프트, 부연 설명을 잃는 시간이 옵션 고르는 거보다 월등히 오래 걸리기 때문에 한 질문에 여러 옵션을 끼워넣는 것이 비용적으로 이득이기 때문이다.
최종 데이터셋을 S라고 한다면, S는 아래와 같은 샘플들로 이루어진다. 입력, 선택지들, 선택한 선택지 b이다.

다음으로 reward 모델 학습이다. 아래와 같은 loss term을 통해 학습이 되어지는데, 결국 식을 뜯어보면 (입력, y선택지들, 가장 좋은 b 선택지)가 있을 때, softmax를 취해 총 probability 합이 1인 상황에서, b의 preference를 다른 후보 선택지들보다 높아지게 유도하는 것이다.

그리고 이 때, 처음 reward 모델 초기화는 언어 모델 마지막 레이어 임베딩을 입력으로 받는 linear 모델로 진행한다. 언어 이해 능력이 없기 때문에, 아래 트랜스포머를 돌면서 언어 이해 능력이 생기고, FCN처럼 선형 모델로 가치 판단 기능을 추가하는 뉘앙스이다.
또, reward 모델 학습할 때 reward 스케일이 너무 들쑥날쑥하면, 특정 reward를 맞추기 위해 해당 방향으로만 모델이 오도될 수 있기 때문에 reward scale을 평균 0, 분산 1로 맞춘다. reward가 main 목표이기 때문에 실 태스크 수행 능력을 일부 배제하고, 단순히 reward만 높이는 방향으로 잘못 학습되는 문제를 reward hacking 이라 부른다고 한다.
reward 모델을 만졌으니, 다음은 Policy 최적화이다. 정책 언어 모델의 모델 응답이 평균적으로 좋은 보상을 내뱉게끔 강화학습으로 트레이닝을 해야하는데, 사전 학습된 언어 모델과 아예 다른 방향으로 움직이면 언어 능력을 잃을 수도 있고, 위와 같은 reward hacking 문제가 발생할 수 있기 때문에 안정성을 위해 KL Divergence 기반의 페널티 항을 넣어 아래와 같이 보상을 수정한다.

log 항이 기본 ρ모델과 정책 ㅠ모델 간 차이를 조정하는 KL 페널티항이고, β항은 일종의 가중치 계수로 목적에 맞게 조정될 수 있다.
이 Loss Term을 활용해, PPO2 강화학습 알고리즘을 통해 Policy를 최적화한다.
현재 강화학습 알고리즘들도 따로 공부 중이라, 여기서는 자세한 PPO 알고리즘에 대한 내용은 생략하고, PPO, DPO, GRPO 등의 학습 메커니즘들은 따로 이후 포스팅하도록 하겠다.
마지막으로 Online 트레이닝 방식에 관한 내용이다. 계속 훈련을 반복해서 정책이 초기 언어 모델과 크게 달라질 때, reward model이 정적이라면 Distribution Shift 문제를 겪을 수 있다.
따라서, 훈련 과정 중에도 정책 LLM에서 뽑힌 답변을 추가 라벨링해서 보상 모델 재학습을 시켜야 한다. 이것을 온라인 방식으로 부르고, 이렇게 하면 보상 모델이 새로운 분포 변화에도 자연스럽게 대응할 수 있다.
실험 파트로 넘어가기 전에, 몇 가지 부분들만 추가로 살펴보겠다.
본 논문은 나온지 조금 오래되어서, 백본으로는 GPT-2를 활용하였고, RL 튜닝을 하기 전에 특정 작업에 맞게 지도학습 파인튜닝을 하고 이를 정책 초기 모델로 쓸 수 있다.
예를 들어 스타일 생성에서는 문학에서 많이 쓰이는 어투를 적응시키기 위해서 BookCorpus 데이터셋으로 먼저 학습시킨다. 단순히 별다른 목적 없이 LM과 동일하게 다음 토큰 예측 목적하에서 학습시켜도 스타일, 어휘 등을 잘 익힐 수 있다.
그리고, temperature를 1 미만으로 하여 클래스 품질을 높인다. 이는 클래스 로짓을 1로 나누게 된다는 것인데, 이 경우 실제 Softmax 확률 차이가 커져서 확신을 더 높이는 것이기 때문이다.
추가로, KL 값은 Seed에 따라 달라질 수 있다. 생성 결과가 달라지면 원본 모델과의 차이도 그때그때 달라질 수 있기 때문에, 아래와 같은 장치를 두어 보정한다. 어느 정도의 KL 타겟값을 정해놓고 KL 값이 일정 구간을 벗어나면 지정 값으로 Clipping 해주는 방식이다. 아래식 까지 포함하면, 이는 KL 값 상황에 따라 β값을 동적으로 조정하는 컨트롤러 역할을 한다.

📌 Stylistic Continuation tasks
먼저, 방법론 검증을 위해 시도한 작업은 스타일 텍스트 이어쓰기이다. BookCorpus에서 발췌한 32~64토큰 문장 뒤에 올 24토큰 분량의 텍스트를 Policy LLM이 이어쓰는 것이다. 위에서 말했던 것 처럼 고품질을 위해 T는 1보다 작은 0.7로 설정한다.
실제 인간 preference 데이터로 학습하기에 앞서, 통제된 환경에서 preference의 효과를 알아보기 위해 임의의 설계된 보상함수를 사용한다. 아마존 리뷰 데이터셋으로 분류기를 학습시켜서, 리뷰의 긍부정을 판단하게끔 한다. 이 때, reward model을 리뷰가 긍정일 로그 오즈로 정의한다.
해당 리워드를 최적화할 때도, 역시 그냥 최적화하면 긍정에만 타겟팅 맞춰져서 기본적인 글 논리나 이런것들이 깨질 수 있기 때문에 KL Term을 붙인다.
이 가상 실험의 목표는 최대한 적은 수의 인간 쿼리로 보상 최적화를 진행하는 것인데, 당연하게도 인간은 항상 보상이 높은 것만 고른다고 가정한다. 아래 Figure 보면, direct 즉 로그 오즈로 대표되는 실제 리워드 값을 기반으로 최적화하는 때랑 비교했을 때, 20k ~ 60k 개의 선호 라벨 만으로도 평균 리워드가 거의 동일한 성능을 보이는 것을 관찰할 수 있다.
한마디로 A 얼마, B 얼마 이런 실제 reward 값들이 아니더라도 A보다 B가 더 좋다라는 선호도만 있더라도 리워드 최적화가 손쉽게 가능하다는 것을 보이고자 했던 것이다.

위와 같이 보상 함수가 명시적으로 주어진 경우, Optimal Policy를 계산할 수 있다. KL항이 있을 때 다음과 같은 형태를 가진다.

기존 모델 확률에 리워드 가중치 항을 곱한 형태인데, 이렇게 되면 비례 꼴이기 때문에 좋은 리워드를 가지는 샘플은 등장 확률이 높아지고, 나쁜 문장이 덜 생성되도록 최적의 형태로 작동한다.
최적 정책이 명확하게 있을테지만, 해당 정책에서 샘플링을 하는게 어렵기 때문에, 기존 모델의 데이터를 많이 샘플링해 각각에 대해 reward로 가중치를 매기면 위와 같이 최적 정책의 성능을 추정할 수 있다.
아래 그림을 보면 추정된 최적 보상과 논문의 저자들이 설계한 정책 보상 간 차이를 보여주는데, 2M Episode 학습 할 때에도 Optimal과 차이가 있지만, 더 많은 양을 학습시키며 점차 줄어두는 모습을 보인다. 또, KL 항을 조금 유하게 차이를 많이 허용할수록, 모델 더 많이 바꿀 수 있어 reward적으로는 커질지 몰라도, 분포가 reward 최대화 하는데에만 집중하여 완전 뾰족해지기 때문에 샘플링으로 Optimal을 추정하기 어려워진다.(그냥 reward에 좋은거 몇개만 계속 고르니까)

실제 이어쓰기 태스크는 크게 두 가지로 이루어진다. 긍정적으로 이어쓰기, 묘사가 자세하도록 이어쓰기
상세 세팅 같은 경우에는, BookCorpus 문구를 보고 목표에 따라 이어질 문장 4개 옵션 중 가장 최적을 선택하는 방식으로 라벨링이 진행되었다. 또한 문장의 시작과 끝이 마침표인 경우만 사용하고, 이어쓰기를 했을 때 16~24 토큰 안에 마침표가 있어 딱 문장이 길이에 맞는 경우에만 마침표 뒤를 truncate해서 사용하는 방식을 차용하였다.
또한, β값을 동적으로 조정해서 자세한 이어쓰기는 KL항이 6 nats, 긍정적 이어쓰기는 10 nats가 되도록 하였다. KL항의 log를 ln으로 밑을 조정하면 단위가 nats가 된다고 한다.


위의 결과를 보면, 원래 언어모델의 Zero-Shot 성능보다 현 논문의 방식으로 offline 학습시킨 것이 훨씬 성능 좋았고, 분류기 학습시켜서 선호를 모방한 것 보다 실제 인간 데이터가 더 좋았다. 온오프라인 성능에는 큰 차이가 없었고, 데이터의 양은 5k 밑으로는 차이가 있지만, 그 위로는 수렴하는 모습을 보였다.
📌 Summarization
이어쓰기 뿐 아니라 CNN/Daily Mail, TL;DR 두 가지 데이터셋을 활용한 요약 작업에도 RLHF를 적용했다. 길이에 맞게 자르고 접미사, 접두사 등을 붙이는 전처리 과정이 완료된 데이터에 대해 Policy 모델이 최대 75토큰 까지 요약을 생성하는 방식이다.
위와 마찬가지로 temperature와 KL 계수는 각 데이터셋에 맞게 설정하였고 아래와 같은 Variation의 모델들을 테스트하였다.
- 온라인 : 15k ~ 60k개의 인간 라벨, 점진적 재학습
- 오프라인 : 60k개 인간 라벨 한번에 학습
- 제로샷 기본 사전학습 모델
- 지도학습 파인튜닝 베이스라인
- lead-3 베이스라인(문서의 첫 세 문장을 그대로 복사하는 방식)
- 지도학습 + 인간 RL 파인튜닝

위의 ROUGE 스코어 결과를 보면 이어쓰기 작업에서와 다르게, 온라인 방식이 오프라인보다 좋고, 데이터 수가 많아질수록 더 좋은 성능을 보임을 알 수 있다. 또한 양쪽에서 지도학습을 먼저 진행하고 RL 파인튜닝을 하는것이 가장 성능이 좋았다.

하지만 위처럼 일종의 사전 정의된 ROUGE 스코어가 아니라 실제 인간 평가를 보면, 60k로 학습된 온라인 학습 방식이 대체적으로 더 좋은 결과를 보여 서로 다른 경향성을 보였다. 이상한 결과도 있었는데, TL;DR 셋에서는 30k보다 60k에서 더 좋지 못한 성능을 보였고, 인간의 정답에 해당하는 referece 요약과는 비교도 안될 정도로 60k 모델이 우위에 있었다.
그 이유는 60k 모델이 문서를 실제로 인간이 생각한 것처럼 요약하는 것이 아니라, 문서의 어떤 문장을 복사할지만 선택해서 그대로 복사하기 때문이었다.


위의 두 차트는 생성된 n-gram의 novelty, 즉 얼마나 원문에 없는 새로운 표현을 많이 만들어내는지, 그리고 반복된 문장 비율이 어느정도 되는지를 보여준다. 이를 보면 그냥 RL 파인튜닝은 모델이 단순히 원문을 더 많이 복사하여 요약을 생성하게끔 학습이 되는데, 지도학습을 하고 이어서 RL을 적용하면 복사 비율이 훨씬 적어지고 내부 반복도 거의 없어지는 모습을 보인다.

위는 각 데이터셋에서 생성된 30개의 요약 중 라벨러가 적절하다고 판단한 개수를 나타낸다. 이에서 중요한 사실을 관찰할 수 있는데, 60k로 파인튜닝된 모델이 정확도가 가장 높다. 왜냐하면 문장 복사 비율이 가장 높기 때문에, 진짜 요약을 안하고 그대로 문장을 가져오면 거짓 정보가 생길 가능성이 낮기 때문이다.
지도학습과 제로샷 모델은 신박한 응답이 나올 수 있지만 그만큼 잘못된 정보를 추가하거나 이상한 뉘앙스로 바뀔 수 있기 때문에 그 리스크가 높다고 볼 수 있다.
여기서 주의할 점은 인간이 라벨링을 할 때 요약의 문맥적, 뉘앙스적인 면을 모두 파악하기에는 매우 모호하고 비용도 높기 때문에 단순히 사실 관계나 정보만 맞으면 O를 했을 가능성이 높다. 따라서 실제 정보가 왜곡되지 않는 복사 방법의 효율이 높은 것이다.
하지만, 우리가 요약 작업을 의도하고 강화학습을 시켰을 때 우리가 원하는 실제 방향성이 이런 방향일까? 그렇진 않을 것이다. 따라서 본 논문의 방법론 효과가 명확한 것은 맞지만, 우리가 원하는 방향으로 조금이나마 더 정교하게 정책 모델이 작동하길 원한다면 온라인 수집 데이터와 라벨링 과정의 품질을 훨씬 높여야 할 필요성이 있어보인다. 다시 말하면 우리가 원하는 방향이 잘 반영되도록 적절한 라벨링 기준과 리워드를 설계하고 평가해야 할 것 같다.
📌 Challenges
온라인 방식은 데이터 수집, 보상 모델 학습, 강화학습을 동시에 수행하는데 이 경우 분산 처리와 디버깅이 매우 어려워, 논문의 저자들은 실시간 보다는 오프라인 온라인의 중간 형태로 해당 문제를 해결했다고 한다. 정책에서 데이터 배치 뽑고, 보상 모델 학습하고, 보상 고정한 상태에서 정책 학습하고, 다시 정책에서 데이터 수집하고, 사실 결국 각각을 독립적으로 순서대로 진행 하는 것이긴 하다.
인간의 선호에 해당하는 데이터셋은 보상 모델을 위한 지도 학습에만 사용되기 때문에 Active learning 기법을 그대로 적용할 수 있다고 한다. 모든 데이터를 라벨링 시킨다기 보다 엔트로피나 gradient를 기반으로 이득이 더 되는 일부 샘플만 라벨링을 하면 효율성을 높일 수 있다.
보상 모델과 정책에 쓰이는 LM을 공유해서 쓰면 계산 효율성도 높아지고 좋을텐데 라는 의문을 남기는데, 얼추 그럴싸하다. 왜냐면 위에서 보면 결국 보상 모델도 언어 이해 때문에 LM Representation을 입력으로 받아야하고 Linear layer만 추가하는 형식이기 때문이다. 하지만, Policy 학습과 리워드 모델 학습의 스케일이 달라서 Policy는 훨씬 큰 스케일에서 업데이트가 빨리 되기 때문에 distribution shift가 생길 수 있고 보상 모델을 왜곡할 수 있다. 따라서 본 논문의 연구진들도 이 문제는 해결하지 못하고 Future work로 남겼다고 한다.
📌 Conclusion & My Insight
결국 본 논문은 LLM을 어떻게 사람이 원하는 입맛에 맞게 바꿀 수 있을까에 대해 고민하고, 그 방법론을 제시한 논문이다.
내가 기존에 아는 방식은 위 논문의 베이스라인으로 잠시 나온 것처럼, 특정 포맷의 입력을 설계하고 Supervised 파인 튜닝하는 것이었는데, 이 경우 모호하고 복잡한 작업을 수행하기 비교적 어려워 보인다. 인간이 좋아하는 것보다는 그냥 주어진 정답을 잘 흉내 내는데에만 포커싱이 잡힐 수 밖에 없다. 따라서 본 논문에서는 A>B와 같은 선호 데이터셋과 보상 모델, 강화학습을 통한 정책 최적화로 해결을 보려한 것 같다.
하지만 여전히 다음과 같은 문제가 있어 보인다. 리뷰에서도 계속 말했지만, 리워드 해킹 문제가 가장 클 것 같다. 그냥 리워드 좋으면 장땡인 메커니즘이라, 리워드가 정교하지 않다면 리워드는 좋아도 모델의 동작이 좋지 못할 수 있다.
그래서 오히려 처음 Alignment 논문을 보다 보니, 학습 알고리즘 보다 명확한 태스크 정의와 라벨링이 오히려 더 중요한가 싶은 생각도 든다.
물론 RLHF 거의 초기 논문이라 이후에 다른 논문들에서 많은 보완법들이 나왔겠지만, 앞으로 이 계열 논문을 읽을 때, 리워드 해킹 해결, 데이터 규모의 효율성, 보상 모델 및 정책 최적화 방식(강화학습 알고리즘) 요런 섹션들에 더욱 포커스를 맞춰서 보면 갈래를 이해하기에도, 이후 새로운 아이디어를 생각하기에도 좋을 것 같다는 생각이 드는 것 같다.