SFT를 넘어 RLHF가 관심의 대상이 되면서 RLHF를 위한 수많은 방법들이 등장하고 있다. 여기서는 PPO와 같이 피드백을 사용해 모델을 학습시키는 방법 자체의 흐름을 정리해보고자 한다.
이 방법들을 정확하게 비교한다는 것은 쉽지 않은 일이다. 한 가지 원인은 ImageNet과 같이 이 방법들을 비교하기 위한 잘 구축된 데이터셋이 드물다는 것이다. 다른 원인은 잘 튜닝된 베이스라인들이 없으며 그것을 평가하는 것도 까다롭다는 것이다. 예를 들어 RLHF의 가장 기본적인 방법인 PPO의 경우 제대로 튜닝하는 것이 만만치 않고 그에 따라 각 연구에 등장한 PPO 베이스라인이 적절하게 튜닝된 결과인지를 확인하는 것이 쉽지 않다.
ImageNet의 경우에도 시간이 지남에 따라 베이스라인과 최신 방법들에서 사용된 트릭들에서 괴리가 발생하면서 공정한 비교가 어려워지는 문제가 발생했는데 RLHF의 경우에는 애초에 시작할 베이스라인 자체가 존재하지 않는 상황이라고 할 수 있을 것이다.
이런 상황에서 연구들을 비교하며 어떤 방법이 더 나은가를 논하는 것이 의미가 있을까? 아무래도 조심스러워지게 마련이다. 그러나 전반적인 흐름을 살펴보면서 개별 사례들에서 발생하는 노이즈들을 줄이고 여러 연구자들이 주목하는 문제와 해결 방식에서 통찰력을 얻을 수 있으리라는 것은 분명하다고 생각한다. 그런 측면에서 최근의 동향을 정리해보고자 한다.
N개 샘플 사용으로의 확장
최근 가장 두드러지는 흐름은 하나 혹은 둘을 넘어서는 숫자의 샘플을 사용하는 방법이라고 보인다. 예를 들어 기본적인 PPO에서는 모델이 프롬프트에 대해 하나의 응답을 생성하고 이 응답에 대한 보상(Reward) 모델의 스코어를 보상으로 사용해 학습시킨다. (https://arxiv.org/abs/2203.02155, https://arxiv.org/abs/2204.05862) SLiC-HF (https://arxiv.org/abs/2305.10425) 혹은 DPO (https://arxiv.org/abs/2305.18290) 와 같은 오프라인 방법에서는 채택(Accepted)되는 샘플과 거절(Rejected)되는 샘플 두 개를 사용한다. 물론 이런 방법들에서도 이 이상의 샘플을 사용하는 것이 가능하지만 그것을 기본적으로 전제하지는 않는다.
세 개 이상의 샘플을 사용하는 것이 요구되는 한 가지 상황은 순위(Ranking)를 사용하는 경우이다. RRHF (https://arxiv.org/abs/2304.05302) 이후로 순위를 사용해 모델을 튜닝하는 시도는 계속해서 등장하고 있다. (https://arxiv.org/abs/2306.17492, https://arxiv.org/abs/2402.01878)
채택 vs 거절이라는 이진적인 분류 대신 순위를 사용하는 것이 어떤 의미가 있는가? 일단 순위는 이진 분류의 일반화라고 볼 수 있고 사람의 피드백을 수집하는 과정에서 세 개 이상의 샘플에 대해 선호도 순위를 매기는 시나리오와 부합한다는 측면 등을 생각해볼 수도 있다.
좀 더 나아가면 모델에서 여러 샘플을 생성하는 과정에서 나타나는 특성에 대해 주목할 수도 있다. 모델에서 여러 샘플을 생성하고 보상 모델로 스코어를 추정해보면 하나의 프롬프트에서 생성된 샘플에 대해 스코어가 꽤 다른 경우를 볼 수 있다. 이런 경우에 모델에서 나온 첫 두 샘플을 선택하는 것보다 더 많은 샘플을 관찰하는 것이 의미가 있을 수 있다.

예를 들어 RSO (https://arxiv.org/abs/2309.06657)는 보상 스코어를 사용한 Rejection Sampling으로 최적 정책(Policy) 모델에서 생성된 샘플을 근사해 모델을 학습시킨다. 최적 정책에서 나온 샘플, 즉 보상 스코어가 높은 샘플들을 사용하는 것이 모델을 학습시키는 것에 더 유리할 것이다.
비슷하게 SuperHF (https://arxiv.org/abs/2310.16763)에서는 여러 샘플을 생성한 이후 보상 스코어로 K개의 샘플을 선정해 학습시킨다. 이 또한 여러 샘플들 중에서 보상 스코어가 높은 샘플들을 추려낼 수 있고 이 샘플들을 사용해 더 최적 데이터로 모델을 학습시킬 수 있다는 아이디어이다.
West-of-N (https://arxiv.org/abs/2401.12086)의 경우에는 여러 샘플 중 스코어가 가장 높은 샘플과 가장 낮은 샘플을 한 쌍으로 사용해 학습시킨다. 여기에서는 최선/최악의 샘플을 대비함으로써 노이즈와 오류의 가능성을 줄이다는 것에 주목한다.
그런데 여러 샘플을 사용하다 보면 여러 샘플들 사이의 순위가 필요하게 되고, 데이터 자체가 순위 형태인 시나리오가 아니라면 보상 모델의 스코어를 사용해 순위를 매기게 된다. 여기서 보상 모델의 스코어를 순위로 바꾸는 것이 아니라 스코어의 크기 자체에도 주목하게 되면 (https://arxiv.org/abs/2402.02479) DPO와 같은 심플한 방법에서는 점점 멀어져 다시 좀 더 전통적인 RL의 형태로 돌아오게 된다. (온라인 방법으로 회귀한다면 더더욱. https://arxiv.org/abs/2402.04792)
PPO의 너머가 아니라 PPO의 이전, 보다 기본으로
PPO에서도 추가 샘플을 사용하는 방법들이 등장했다. 여기에서는 Advantage 계산에서 Value 함수를 사용하는 대신 다른 샘플의 보상 스코어를 사용하는 형태로 사용되는 것을 볼 수 있다. (https://arxiv.org/abs/2310.00212, https://arxiv.org/abs/2402.03300) 결과적으로는 위와 비슷하게 특정 샘플이 정책 모델이 생성하는 다른 샘플에 대해 얼마나 더 나은지를 샘플 자체를 통해 추정하는 흐름이 된다.
여기서 Value 함수를 샘플의 스코어로 대체하게 되면서 토큰을 액션의 단위로 생각했던 것에서 생성된 시퀀스, 궤적을 액션의 단위로 간주하게 된다. 여기서 더 나아가면 굳이 PPO일 필요가 없다는 생각에 이르게 된다.
사실 굳이 PPO가 아니어도 된다는 것은 절대 PPO를 쓰지 않는 구글의 존재가 증명해주고 있다고 할 수 있겠다. (https://arxiv.org/abs/2209.14375, https://arxiv.org/abs/2402.04229, https://storage.googleapis.com/deepmind-media/gemma/gemma-report.pdf)
PPO가 아니라면 무엇이 좋은가? 구글도 그렇고 지금 나오고 있는 연구들에서 가장 인기 있는 것은 REINFORCE로 돌아가는 것이다. REINFORCE로 돌아가면서 베이스라인으로 다른 샘플들의 스코어를 사용하게 된다. 하나의 샘플을 추가로 뽑아서 사용할 수도 있고 (https://arxiv.org/abs/2310.10505), 추가 샘플을 더 뽑아 평균을 사용할 수도 있다 (RLOO, https://arxiv.org/abs/2402.14740).
이 방법들이 전제하고 있는 아이디어는 다음과 같다. 일단 RLHF 상황에서 보상 스코어는 EOS 토큰 시점에 단 한 번 주어진다. 프롬프트에서 응답, 보상까지 결정론적이기에 이는 Contextual Bandit 상황으로 볼 수 있다. 따라서 토큰 단위가 아니라 시퀀스 단위로 생각하는 것이 적절하다고 생각할 수 있다. (물론 토큰 단위로 보상을 잘 부여하는 것을 고민하는 연구도 나오고 있긴 하다. https://arxiv.org/abs/2402.00782)
추가적으로 프리트레이닝과 SFT를 거친 LLM을 사용한다는 것이 지나치게 큰 업데이트 등의 문제를 줄여준다. 따라서 분산의 감소보다 편향(Bias)의 감소가 의미가 있을 수 있다. 이와 같은 조건들이 일반적인 RL과 LLM에 대한 RLHF의 상황이 달라지게 만들고 심플한 방법이 잘 작동할 수 있는 환경을 제공한다.
방법에 너무 심취하지는 말게
그동안 다양한 연구들이 등장하면서 방법들이 다양성의 측면에서 확산하는 것처럼 보이지만 동시에 공통된 아이디어를 발견할 수 있을 정도로 수렴하고 있는 측면도 나타나고 있는 듯 하다. 단순한 알고리즘, 여러 샘플에 대한 사용, 보상 모델이 다시 등장하는 등. 물론 이는 DPO 같은 지극히 단순한 세팅이 스펙트럼의 가장 단순한 지점에서 성공을 거뒀기에 그 반대 방향으로 탐색해 나아간 결과일 수도 있다.
언제나 그렇지만 이러한 방법들에 지나치게 천착할 필요는 없지 않을까 싶다. 실용적으로는 좋은 데이터를 구축하는데 더 조직적인 노력을 기울이는 것에 관심을 쏟는 것이 바람직할 수 있다. 그러나 마냥 이러한 방법들을 제쳐놓을 필요 또한 없을 것이다. 목적 함수는 탐구할 가치가 있는 대상이고 더 단순한 방법으로 안정적인 고성능을 달성할 수 있다면 그건 실용적으로도 중요한 의미가 있다.
마찬가지로 선호(Preference) 데이터의 퀄리티를 높이는 것에 관심을 기울이고 있다는 것을 전제한다면 보상 모델을 개선하는 방법적인 측면을 탐색해보는 것도 가치 있는 일일 것이다. (https://arxiv.org/abs/2310.02743, https://arxiv.org/abs/2312.09244, https://arxiv.org/abs/2401.16635, https://arxiv.org/abs/2401.06080, https://arxiv.org/abs/2401.12187, https://arxiv.org/abs/2401.16335)
어떻게 보면 데이터는 당연한 전제라고 할 수 있을지도 모르겠다. 데이터의 퀄리티를 높게 유지하는 것은 지극히 당연한 문제이다. 우리가 방법에 대해 논한다면 그것은 곧 데이터 퀄리티에 대해 충분한 노력을 기울이고 성과를 거둔 이후라는 것을 함의해야 한다.