GitHub: https://github.com/huggingface/blog/blob/main/rlhf.md
지난 몇 년 동안 언어 모델은 인간 입력 프롬프트에서 다양하고 설득력 있는 텍스트를 생성하여 인상적인 성능을 보여주었습니다. 그러나 "좋은" 텍스트를 만드는 것은 본질적으로 주관적이고 맥락에 따라 다르기 때문에 정의하기 어렵습니다. 창의성이 필요한 이야기 쓰기, 진실해야 하는 정보성 텍스트, 실행 가능해야 하는 코드 조각 등 다양한 응용 분야가 있습니다.
이러한 특성을 포착하기 위한 손실 함수를 작성하는 것은 어려워 보이며, 대부분의 언어 모델은 여전히 간단한 다음 토큰 예측 손실(예: 크로스 엔트로피)로 학습됩니다. 손실 자체의 단점을 보완하기 위해 사람들은 BLEU 또는 ROUGE와 같은 인간의 선호도를 더 잘 포착하도록 설계된 메트릭을 정의합니다. 이러한 메트릭은 성능을 측정하는 데 손실 함수 자체보다 더 적합하지만 단순히 생성된 텍스트를 간단한 규칙으로 참조와 비교하기 때문에 한계가 있습니다. 생성된 텍스트에 대한 인간의 피드백을 성능 측정에 사용하거나 한 걸음 더 나아가 그 피드백을 모델을 최적화하는 손실로 사용하면 좋지 않을까요? 이것이 바로 인간 피드백을 통한 강화 학습(RLHF)의 개념입니다. 강화 학습 방법을 사용하여 인간의 피드백을 직접 언어 모델에 적용하여 최적화합니다. RLHF는 일반 텍스트 데이터로 학습된 모델을 복잡한 인간의 가치에 맞추는 것을 가능하게 했습니다.
RLHF의 가장 최근 성공 사례는 ChatGPT에서 사용된 것입니다. ChatGPT의 인상적인 성능을 고려하여 RLHF에 대해 설명해달라고 요청했습니다.:
놀랍게도 잘하지만 모든 것을 다루지는 않습니다. 그 간격을 채우겠습니다!
인간 피드백을 통한 강화 학습(인간의 선호도를 통한 RL로도 참조됨)은 다중 모델 학습 프로세스와 배포의 다양한 단계를 포함하기 때문에 어려운 개념입니다. 이 블로그 게시물에서는 학습 프로세스를 세 가지 핵심 단계로 나누어 살펴보겠습니다.
먼저, 언어 모델이 사전 학습되는 방법을 살펴보겠습니다.
시작점으로 RLHF는 고전적인 사전 학습 목표(자세한 내용은 이 블로그 게시물을 참조)로 이미 사전 학습된 언어 모델을 사용합니다. OpenAI는 첫 번째 인기 있는 RLHF 모델인 InstructGPT에 GPT-3의 소형 버전을 사용했습니다. 공유 논문에서 Anthropic은 이 작업을 위해 학습된 1천만에서 5천2백억 개의 매개변수를 가진 트랜스포머 모델을 사용했습니다. DeepMind는 최대 2,800억 개의 매개변수를 가진 모델인 Gopher를 사용한 것으로 문서화했습니다. 이 모든 회사는 RLHF 기반 제품에 훨씬 더 큰 모델을 사용하는 것으로 보입니다.
이 초기 모델은 추가 텍스트 또는 조건에 대해 미세 조정할 수 있지만 반드시 그럴 필요는 없습니다. 예를 들어 OpenAI는 "선호되는" 인간 생성 텍스트에 대해 미세 조정을 수행했으며 Anthropic은 "도움이 되고, 정직하고, 해가 없는" 기준에 대한 맥락 단서를 기반으로 원래 LM을 증류하여 RLHF를 위한 초기 LM을 생성했습니다. 이들은 모두 우리가 고가의 증강 데이터라고 부르는 소스이지만 RLHF를 이해하는 데 필수적인 기술은 아닙니다. RLHF 프로세스를 시작하는 핵심은 다양한 지시에 잘 반응하는 모델을 갖는 것입니다.
일반적으로 "어떤 모델"이 RLHF의 시작점으로 가장 좋은지에 대한 명확한 답은 없습니다. 이 블로그에서 자주 다루게 될 주제이기도 한데, RLHF 학습 옵션의 설계 공간은 충분히 탐구되지 않았습니다.
다음으로 언어 모델을 사용하여 인간의 선호도를 시스템에 통합하는 방법인 보상 모델을 학습하기 위한 데이터를 생성해야 합니다.
인간의 선호도에 맞게 조정된 보상 모델(RM, 선호도 모델로도 불림)을 생성하는 것은 RLHF의 상대적으로 새로운 연구가 시작되는 지점입니다. 기본 목표는 텍스트 시퀀스를 입력하면 숫자로 인간의 선호도를 나타내는 스칼라 보상을 반환하는 모델 또는 시스템을 얻는 것입니다. 이 시스템은 엔드 투 엔드 LM일 수도 있고, 보상을 출력하는 모듈형 시스템(예: 모델이 출력을 순위화하고 순위를 보상으로 변환)일 수도 있습니다. 스칼라 보상을 출력하는 것은 기존 RL 알고리즘이 RLHF 프로세스 후반에 원활하게 통합될 수 있도록 하는 데 중요합니다.
보상 모델링을 위한 이러한 LM은 또 다른 미세 조정된 LM 또는 선호도 데이터로 처음부터 학습된 LM일 수 있습니다. 예를 들어 Anthropic은 사전 학습 후 이러한 모델을 초기화하기 위해 특수한 미세 조정 방법(선호도 모델 사전 학습, PMP)을 사용했는데, 이는 미세 조정보다 샘플 효율성이 더 높다는 것을 발견했기 때문입니다. 그러나 보상 모델에 대한 기본 모델은 명확한 최고의 선택으로 간주되지 않습니다.
보상 모델의 프롬프트 생성 쌍에 대한 학습 데이터셋은 미리 정의된 데이터셋(Anthropic의 아마존 메커니컬 터크의 채팅 도구로 생성된 데이터는 허브에서 사용할 수 있으며, OpenAI는 GPT API에 제출된 프롬프트를 사용)에서 샘플링하여 생성됩니다. 프롬프트는 초기 언어 모델을 통과하여 새로운 텍스트를 생성합니다.
인간 주석자들은 LM에서 생성된 텍스트 출력을 순위화하는 데 사용됩니다. 처음에는 인간이 각 텍스트에 직접 스칼라 점수를 적용하여 보상 모델을 생성해야 한다고 생각할 수 있지만, 이는 실제로는 어려운 일입니다. 인간의 상이한 가치로 인해 이러한 점수는 보정되지 않고 노이즈가 발생합니다. 대신, 순위를 사용하여 여러 모델의 출력을 비교하고 훨씬 더 잘 정규화된 데이터셋을 생성합니다.
다양한 방법으로 텍스트를 순위화할 수 있습니다. 성공적인 방법 중 하나는 사용자가 동일한 프롬프트에 대해 두 개의 언어 모델에서 생성된 텍스트를 비교하도록 하는 것입니다. 헤드 투 헤드 매치업에서 모델 출력을 비교함으로써 Elo 시스템을 사용하여 모델과 출력을 서로 상대적으로 순위화할 수 있습니다. 이러한 다양한 순위화 방법은 학습을 위한 스칼라 보상 신호로 정규화됩니다.
이 과정에서 흥미로운 결과물은 지금까지 성공한 RLHF 시스템은 텍스트 생성에 비해 다양한 크기의 보상 언어 모델을 사용했다는 점입니다(예: OpenAI 175B LM, 6B 보상 모델, Anthropic은 LM과 보상 모델로 10B에서 52B를 사용, DeepMind는 LM과 보상 모델 모두에 70B Chinchilla 모델을 사용). 직관적으로는 이러한 선호도 모델이 생성된 텍스트를 이해하는 데 필요한 모델과 유사한 용량을 가져야 한다고 생각할 수 있습니다.
이 시점에서 RLHF 시스템에는 텍스트를 생성하는 데 사용할 수 있는 초기 언어 모델과 인간이 인식하는 정도를 점수로 매기는 선호도 모델이 있습니다. 다음으로, 강화 학습(RL)을 사용하여 보상 모델에 따라 원래 언어 모델을 최적화합니다.
강화 학습을 사용하여 언어 모델을 학습하는 것은 오랫동안 기술적 및 알고리즘적 이유로 불가능하다고 여겨졌습니다. 여러 조직이 작동하도록 만든 것은 정책 기울기 RL 알고리즘인 Proximal Policy Optimization(PPO)을 사용하여 초기 LM(a copy of the initial LM)의 일부 또는 모든 파라미터를 미세 조정하는 것입니다. LM의 일부 파라미터는 전체 10B 또는 100B 이상의 파라미터 모델을 미세 조정하는 것이 비용이 많이 들기 때문에 동결됩니다(자세한 내용은 LM에 대한 Low-Rank Adaptation(LoRA) 또는 DeepMind의 Sparrow LM 참조). 모델 및 인프라의 규모에 따라 동결할 파라미터의 수 또는 수는 미해결 연구 문제로 간주됩니다. PPO는 상대적으로 오래전부터 사용되어 왔으며 작동 방법에 대한 많은 가이드가 있습니다. 이 방법의 상대적 성숙도는 RLHF에 대한 분산 학습의 새로운 응용 분야로 확장하는 데 유리한 선택이었습니다. RLHF를 수행하기 위한 핵심 RL 발전의 대부분은 익숙한 알고리즘으로 이러한 대규모 모델을 업데이트하는 방법을 찾는 것이었습니다(나중에 자세히 설명).
먼저 이 미세 조정 작업을 RL 문제로 공식화하겠습니다. 먼저 정책은 프롬프트를 입력하고 텍스트 시퀀스(또는 텍스트에 대한 확률 분포)를 반환하는 언어 모델입니다. 이 정책의 행동 공간은 언어 모델의 어휘에 해당하는 모든 토큰(일반적으로 50k개의 토큰 정도)이며, 관측 공간은 가능한 입력 토큰 시퀀스의 분포로, 이전의 RL 사용을 고려하면 상당히 큽니다(차원은 어휘 크기 ^ 입력 토큰 시퀀스의 길이). 보상 함수는 선호도 모델과 정책 변화에 대한 제약 조건의 조합입니다.
보상 함수는 시스템이 지금까지 논의한 모든 모델을 하나의 RLHF 프로세스로 결합하는 곳입니다. 데이터셋에서 프롬프트 x를 받으면 현재 미세 조정된 정책의 텍스트 y가 생성됩니다. 이 텍스트는 원래 프롬프트와 결합되어 선호도 모델에 전달되며, "선호 가능성"의 스칼라 개념을 반환합니다. 또한 RL 정책의 토큰별 확률 분포를 초기 모델의 분포와 비교하여 차이에 대한 패널티를 계산합니다. OpenAI, Anthropic, DeepMind의 여러 논문에서 이 패널티는 토큰에 대한 분포 시퀀스 간의 Kullback-Leibler(KL) divergence의 스케일 버전으로 설계되었습니다. KL divergence 항은 학습 배치마다 초기 사전 학습 모델에서 크게 벗어나는 RL 정책에 패널티를 부과하여 모델이 합리적으로 일관된 텍스트 조각을 생성하는 데 유용합니다. 이 패널티가 없으면 최적화는 횡설수설하지만 보상 모델을 속여 높은 보상을 제공하는 텍스트를 생성하기 시작할 수 있습니다. 실제로 KL divergence는 두 분포에서 샘플링하여 근사합니다(John Schulman이 여기에서 설명). RL 업데이트 규칙에 전달되는 최종 보상은 입니다.
일부 RLHF 시스템은 보상 함수에 추가 항목을 추가했습니다. 예를 들어, OpenAI는 InstructGPT에서 성공적으로 추가 사전 훈련 그라디언트(인간 주석 세트에서)를 PPO의 업데이트 규칙에 혼합하는 것을 실험했습니다. RLHF가 더 조사됨에 따라, 이 보상 함수의 공식화가 계속 진화할 가능성이 높습니다.
마지막으로, 업데이트 규칙은 현재 데이터 배치의 보상 메트릭을 극대화하는 PPO의 매개변수 업데이트입니다(PPO는 온-폴리시이며, 이는 매개변수가 현재 배치의 프롬프트-생성 쌍으로만 업데이트된다는 것을 의미합니다). PPO는 학습 과정을 불안정하게 만들지 않도록 그라디언트에 제약을 사용하는 신뢰 영역 최적화 알고리즘입니다. DeepMind는 Gopher에 대해 유사한 보상 설정을 사용했지만, 그라디언트를 최적화하기 위해 동기화된 이점 액터-크리틱(synchronous advantage actor-critic, A2C)을 사용했으며, 이는 현저하게 다르지만 외부에서 재현되지 않았습니다.
기술적 세부 사항 참고: 위의 다이어그램은 두 모델이 동일한 프롬프트에 대해 서로 다른 응답을 생성하는 것처럼 보이지만, 실제로 일어나는 일은 RL 정책이 텍스트를 생성하고, 그 텍스트가 KL 패널티를 위해 초기 모델에 입력되어 상대적인 확률을 생성하는 것입니다. 이 초기 모델은 학습 중에 경사도 업데이트를 받지 않습니다.
선택적으로, RLHF는 이 시점부터 보상 모델과 정책을 함께 반복적으로 업데이트하여 계속할 수 있습니다. RL 정책이 업데이트됨에 따라 사용자는 모델의 이전 버전에 비해 이러한 출력을 계속해서 순위를 매길 수 있습니다. 이러한 유형의 데이터를 수집하기 위해 필요한 배포 모드가 대화형 에이전트에 참여하는 사용자 기반에 액세스할 수 있는 경우에만 작동하기 때문에 대부분의 논문은 아직 이러한 작업을 구현하는 방법을 논의하지 않았습니다. Anthropic은 이 옵션을 반복 온라인 RLHF(원래 논문 참조)로 설명하는데, 여기서 정책의 반복은 모델 간 ELO 랭킹 시스템에 포함됩니다. 이는 정책과 보상 모델의 진화를 나타내는 복잡한 동적을 도입하며, 이는 복잡하고 미해결된 연구 문제입니다.
LM에 대한 RLHF를 수행하기 위한 첫 번째 코드는 2019년 OpenAI에서 TensorFlow로 공개되었습니다.
현재는 이 코드에서 발전한 PyTorch에서 RLHF를 위한 몇 가지 활성 레포지토리가 있습니다. 주요 레포지토리는 Transformers Reinforcement Learning(TRL), TRL에서 포크된 TRLX, 언어 모델을 위한 강화 학습(RL4LMs)입니다.
TRL은 PPO를 사용하여 Hugging Face 생태계에서 사전 학습된 LM을 미세 조정하기 위해 설계되었습니다. TRLX는 CarperAI가 온라인 및 오프라인 학습을 위해 더 큰 모델을 처리하기 위해 TRL에서 포크한 확장 버전입니다. 현재 TRLX는 LLM 배포에 필요한 규모(예: 33억 개의 파라미터)에서 PPO 및 암시적 언어 Q-학습 ILQL을 사용하여 프로덕션 준비가 된 RLHF를 수행할 수 있는 API를 가지고 있습니다. TRLX의 향후 버전에서는 최대 200B 파라미터의 언어 모델을 지원할 예정입니다. 따라서 TRLX와의 인터페이스는 이 규모의 경험이 있는 머신 러닝 엔지니어를 위해 최적화되어 있습니다.
RL4LMs는 다양한 RL 알고리즘(PPO, NLPO, A2C 및 TRPO), 보상 함수 및 메트릭을 사용하여 LLM을 미세 조정하고 평가하는 빌딩 블록을 제공합니다. 또한 라이브러리를 쉽게 커스터마이징할 수 있어 사용자가 지정한 임의의 보상 함수를 사용하여 인코더-디코더 또는 인코더 트랜스포머 기반의 LM을 학습할 수 있습니다. 특히, RL4LMs는 최근의 작업에서 2000개의 실험에 이르는 광범위한 작업에 대해 잘 테스트되고 벤치마크되었으며, 데이터 예산 비교(전문가 데모 대 보상 모델링), 보상 해킹 및 학습 불안정성 처리 등에 대한 몇 가지 실용적인 통찰력을 강조합니다. RL4LMs의 현재 계획에는 더 큰 모델과 새로운 RL 알고리즘의 분산 학습이 포함됩니다.
TRLX와 RL4LMs는 모두 계속해서 개발 중이므로 곧 이 기능 외에도 더 많은 기능이 추가될 것으로 예상됩니다.
Anthropic에서 만든 대규모 데이터셋이 허브에서 제공됩니다.
이러한 기술은 매우 유망하고 영향력이 있으며 AI 분야의 대형 연구소의 관심을 끌고 있지만 여전히 명확한 한계가 있습니다. 모델은 개선되었지만 여전히 불확실성 없이 유해하거나 사실과 다른 텍스트를 출력할 수 있습니다. 이러한 불완전성은 RLHF의 장기적인 과제이자 동기로 작용합니다. 본질적으로 인간의 문제 영역에서 작동한다는 것은 모델이 완전하다고 분류되기 위해 넘어야 할 명확한 최종 선이 결코 존재하지 않는다는 것을 의미합니다.
RLHF를 사용하여 시스템을 배포할 때, 훈련 루프 외부의 다른 인간 작업자를 직접 통합해야 하기 때문에 인간 선호도 데이터를 수집하는 것은 매우 비용이 많이 듭니다. RLHF의 성능은 인간 주석의 품질에 따라 결정되며, 두 가지 종류가 있습니다: InstructGPT에서 초기 LM을 미세 조정하는 것과 같은 인간이 생성한 텍스트와 모델 출력 간의 인간 선호도에 대한 레이블입니다.
특정 프롬프트에 대한 답변으로 잘 작성된 인간 텍스트를 생성하는 것은 매우 비용이 많이 듭니다. 이는 종종 제품 사용자나 크라우드 소싱에 의존할 수 없기 때문에 파트 타임 직원을 고용해야 하기 때문입니다. 다행히도 RLHF의 대부분의 응용 프로그램에서 보상 모델을 학습하는 데 사용되는 데이터의 규모는 크지 않습니다(약 50,000개의 레이블이 있는 선호 샘플). 그러나 이는 여전히 학계 연구소가 감당할 수 있는 비용보다 높습니다. 현재 일반적인 언어 모델에 대한 RLHF를 위한 대규모 데이터셋은 Anthropic에서 제공하는 것이 유일하며, OpenAI의 요약 데이터와 같은 소규모 작업별 데이터셋이 몇 개 있습니다. RLHF의 두 번째 데이터 문제는 인간 주석자가 종종 의견을 달리할 수 있어 지상 기준 없이 학습 데이터에 큰 잠재적 변동성을 추가할 수 있다는 점입니다.
이러한 한계에도 불구하고, 아직 탐구되지 않은 설계 옵션이 많이 남아 있어 RLHF가 큰 발전을 이룰 수 있습니다. 이러한 개선 사항 중 상당수는 RL 최적화기의 개선 영역에 속합니다. PPO는 비교적 오래된 알고리즘이지만, 다른 알고리즘이 기존의 RLHF 워크플로우에 이점과 변형을 제공하지 못할 이유는 없습니다. LM 정책을 미세 조정하는 피드백 부분의 큰 비용 중 하나는 정책에서 생성된 모든 텍스트가 보상 모델(표준 RL 프레임워크에서 환경의 일부로 작동하기 때문에)에서 평가되어야 한다는 것입니다. 이러한 비용이 많이 드는 대형 모델의 전방 패스를 피하기 위해 오프라인 RL을 정책 최적화기로 사용할 수 있습니다. 최근에는 암시적 언어 Q-학습(ILQL)[Talk on ILQL at CarperAI] on ILQL at CarperAI과 같은 새로운 알고리즘이 등장하여 이러한 유형의 최적화에 특히 적합합니다. RL 프로세스의 다른 핵심 트레이드 오프, 예를 들어 탐험-활용 균형과 같은 것들도 아직 문서화되지 않았습니다. 이러한 방향을 탐색하면 RLHF가 어떻게 작동하는지에 대한 실질적인 이해를 얻을 수 있으며, 그렇지 않더라도 성능을 향상시킬 수 있습니다.
2022년 12월 13일 화요일에 이 게시물에 대한 강의를 진행했습니다. 여기에서 시청하실 수 있습니다!
현재까지 RLHF에 관한 가장 널리 알려진 논문 목록입니다. 딥 RL(2017년경)의 등장으로 최근에 대중화되었으며, 많은 대형 기술 기업에서 LLM의 응용에 대한 광범위한 연구로 발전했습니다. LM에 초점을 맞추기 전의 RLHF에 관한 논문은 다음과 같습니다.