RLHF: Reinforcement Learning from Human Feedback

콘텐츠

문학에서 ChatGPT가 우리 상상력을 많이 포착할 수 있는 이유에 대해 논의할 때, 종종 두 가지 이야기를 만납니다:

  1. Scale: 더 많은 데이터와 컴퓨팅 자원을 투입하는 것. 2. UX: 프롬프트 인터페이스에서 더 자연스러운 채팅 인터페이스로 전환하는 것.

가끔 간과되는 이야기 중 하나는 ChatGPT와 같은 모델을 만드는 데 들어간 놀라운 기술적 창의력입니다. RLHF(Reinforcement Learning from Human Feedback)라는 멋진 아이디어 중 하나는 강화 학습과 인간 피드백을 자연어 처리에 통합하는 것입니다.

RL은 작업하기 어려워 악명 높았으며, 따라서 대부분 게임 및 Atari 또는 MuJoCo와 같은 시뮬레이션 환경에 국한되어 왔습니다. 단 5년 전에는 RL과 NLP가 거의 직교적으로 발전하고 있었으며 - 서로 다른 스택, 다른 기술 및 다른 실험 설정이었습니다. 대규모로 새로운 도메인에서 작동하는 것을 보는 것은 인상적입니다.

그렇다면 RLHF는 정확히 어떻게 작동할까요? 왜 작동할까요? 이 글에서는 이러한 질문에 대한 답변을 논의할 것입니다.

RLHF를 이해하기 위해서는 먼저 ChatGPT와 같은 모델을 훈련하는 과정과 RLHF가 어떻게 들어맞는지를 이해해야 합니다. 이는 이 글의 첫 번째 섹션의 초점입니다. 다음 3개 섹션은 ChatGPT 개발의 3가지 단계를 다룹니다. 각 단계에 대해 해당 단계의 목표, 해당 단계가 필요한 이유에 대한 직관, 그리고 더 기술적인 세부사항을 보고 싶은 사람들을 위한 해당 수학적 공식에 대해 논의하겠습니다.

현재 RLHF는 OpenAI, DeepMind, 그리고 Anthropic과 같은 몇몇 주요 기업을 제외하고는 산업에서 널리 사용되지 않고 있습니다. 그러나 RLHF를 사용하는 많은 진행 중인 노력을 보았기 때문에 앞으로 RLHF가 더 많이 사용될 것을 놀라지 않을 것입니다.

이 게시물에서는 독자들이 NLP 또는 RL에 대한 전문 지식이 없다고 가정합니다. 전문 지식이 있는 경우, 관련성이 적은 섹션을 건너뛰어도 괜찮습니다.

RLHF 개요

ChatGPT의 개발 과정을 시각화하여 RLHF가 어디에 들어가는지 살펴봅시다.

3 phases of ChatGPT development

만약 눈을 가늘게 뜬다면, 이 위 다이어그램은 미소 짓는 얼굴을 한 쇼고스와 매우 비슷해 보입니다.

  1. 사전 훈련된 모델은 인터넷에서 스크랩된 무차별 데이터로 훈련되었기 때문에 글로벌 클릭 유도, 잘못된 정보, 프로파간다, 음모 이론 또는 특정 인구에 대한 공격을 생각해보세요. 2. 그런 다음 이 몬스터는 더 높은 품질의 데이터(예: StackOverflow, Quora 또는 인간 주석)로 세밀하게 조정되어 어느 정도 사회적으로 수용 가능해졌습니다. 3. 그런 다음 세밀하게 조정된 모델은 고객에게 적합하도록 RLHF를 사용하여 더욱 다듬어졌으며, 예를 들어 웃는 얼굴을 부여했습니다.

3 phases of ChatGPT development

Shoggoth with Smiley Face. Courtesy of twitter.com/anthrupad

세 단계 중 어느 하나를 건너뛸 수 있습니다. 예를 들어, SFT 단계를 거치지 않고 사전 훈련된 모델 위에 RLHF를 직접 수행할 수 있습니다. 그러나 경험적으로, 이 세 단계를 모두 결합하는 것이 최상의 성능을 제공합니다.

사전 훈련은 가장 자원 집약적인 단계입니다. InstructGPT 모델의 경우, 사전 훈련은 전체 컴퓨팅 및 데이터 자원의 98%를 차지합니다. SFT와 RLHF를 사용하면, 사용자가 프롬프트만으로는 액세스하기 어려운 사전 훈련된 모델의 능력을 활용할 수 있습니다.

인간의 선호도로부터 학습하는 기계를 가르치는 것은 새로운 것이 아닙니다. 10년 이상 동안 존재해 왔습니다. OpenAI는 주력이 로봇공학이었던 시절부터 인간의 선호도로부터 학습를 탐구하기 시작했습니다. 당시 이야기는 인간의 선호도가 AI 안전에 중요하다는 것이었습니다. 그러나 결국 인간의 선호도는 더 나은 제품을 만들 수도 있어서 훨씬 더 많은 관심을 끌었습니다.

»»Side note: 2017년 OpenAI의 인간의 선호도로부터 학습하는 논문의 초록««

안전한 AI 시스템을 구축하기 위한 한 가지 단계는 인간이 목표 함수를 작성할 필요성을 없애는 것입니다. 간단한 프록시를 사용하거나 복잡한 목표를 약간 잘못 이해하는 것은 원치 않는 심지어 위험한 행동으로 이어질 수 있습니다. DeepMind의 안전팀과 협력하여, 우리는 두 가지 제안된 행동 중 어느 것이 더 나은지 알려줌으로써 인간이 원하는 것을 추론할 수 있는 알고리즘을 개발했습니다.

Phase 1. 완성을 위한 사전 훈련

사전 훈련 단계의 결과물은 대규모 언어 모델 (LLM)인 경우가 많으며, 이를 사전 훈련된 모델이라고도 합니다. 예시로는 GPT-x (OpenAI), Gopher (DeepMind), LLaMa (Meta), StableLM (Stability AI) 등이 있습니다.

언어 모델

언어 모델은 언어에 대한 통계 정보를 부호화합니다. 간단히 말해, 통계 정보는 우리에게 어떤 것(예: 단어, 문자)이 주어진 맥락에서 나타날 가능성이 얼마나 높은지를 알려줍니다. 토큰이라는 용어는 언어 모델에 따라 단어, 문자 또는 단어 일부(예: -tion)를 가리킬 수 있습니다. 토큰은 언어 모델이 사용하는 어휘로 생각할 수 있습니다.

어떤 언어에 능숙한 사용자들은 그 언어에 대한 통계적 지식을 무의식적으로 갖고 있습니다. 예를 들어, '내가 가장 좋아하는 색은 __'라는 맥락이 주어진 경우, 영어를 구사하는 사람은 빈칸에 '초록'보다 '자동차'가 훨씬 더 가능성이 높은 단어라는 것을 알고 있습니다.

비슷하게, 언어 모델도 그 공백을 채울 수 있어야 합니다. 언어 모델은 '완성 기계'로 생각할 수 있습니다: 주어진 텍스트(프롬프트)를 받아 그 텍스트를 완성하는 응답을 생성할 수 있습니다. 다음은 예시입니다:

  • 사용자 입력: 나는 열심히 노력했지만, 그 결과는
  • 언어 모델 완성: 하지만 결국에는 아무 의미가 없었어.

3 phases of ChatGPT development

소리처럼 간단한 것으로 보이지만, 완성은 매우 강력한 것으로 나타났습니다. 많은 작업을 완성 작업으로 구성할 수 있기 때문입니다: 번역, 요약, 코드 작성, 수학 문제 풀기 등. 예를 들어, 'How are you in French is ...'라는 프롬프트를 제공하면, 언어 모델은 'Comment ça va'로 완성할 수 있을 수도 있습니다. 이를 통해 한 언어에서 다른 언어로 효과적으로 번역할 수 있습니다.

완성을 위해 언어 모델을 훈련시키려면 많은 텍스트를 입력하여 통계 정보를 추출할 수 있도록 합니다. 모델이 학습할 텍스트를 훈련 데이터라고 합니다. 0과 1 두 개의 토큰만 포함하는 언어를 고려해보세요. 다음과 같은 시퀀스를 훈련 데이터로 입력하면, 언어 모델은 아마도 다음과 같이 추출할 것입니다:

  • 만약 문맥이 01이라면, 다음 토큰은 아마 01일 것입니다
  • 만약 문맥이 0011이라면, 다음 토큰은 아마 0011일 것입니다
0101
010101
01010101
0011
00110011
001100110011

언어 모델은 훈련 데이터를 모방하기 때문에, 언어 모델의 성능은 훈련 데이터의 품질에 달려 있으며, 따라서 'Garbage in, garbage out'이라는 표현이 나오게 됩니다. Reddit 댓글로 언어 모델을 훈련시킨다면, 부모님께 자랑하고 싶어하지 않을 수도 있습니다.

수학적 정식화

  • ML 작업: 언어 모델링
  • 훈련 데이터: 저품질 데이터
  • 데이터 규모: 2023년 5월 기준으로 일반적으로 수조 개의 토큰 순서로 있습니다.
  • 이 과정에서 생성된 모델: LLM
  • (LLM_\phi): 훈련 중인 언어 모델, (\phi)로 매개변수화됨. 목표는 교차 엔트로피 손실이 최소화되는 (\phi)를 찾는 것이다.\n* ([T_1, T_2, ..., T_V]): 어휘 - 훈련 데이터의 모든 고유 토큰으로 구성된 집합.\n* (V): 어휘 크기.\n* (f(x)): 토큰을 어휘 내 위치로 매핑하는 함수. 만약 (x)가 어휘 내의 (T_k)이라면, (f(x) = k).\n* 시퀀스 ((x_1, x_2, ..., x_n))이 주어졌을 때, (n)개의 훈련 샘플이 있을 것이다:\n * 입력: (x =(x_1, x_2, ..., x_{i-1}))\n * 실제 값: (x_i)\n* 각 훈련 샘플 ((x, x_i))에 대해:\n * (k = f(x_i))로 놓자.\n * 모델의 출력: (LLM(x)= [\bar{y}_1, \bar{y}_2, ..., \bar{y}_V]). 참고: (\sum_j\bar{y}_j = 1)\n * 손실 값: (CE(x, x_i; \phi) = -\log\bar{y}_k)\n* 목표: 모든 훈련 샘플에 대한 예상 손실을 최소화하는 (\phi)를 찾는 것. (CE(\phi) = -E_x\log\bar{y}_k)

사전 훈련을 위한 데이터 병목 현상

오늘날 GPT-4와 같은 언어 모델은 너무 많은 데이터를 사용하여 다음 몇 년 안에 인터넷 데이터가 고갈될 것이라는 현실적인 우려가 있습니다. 미친 소리처럼 들리지만, 실제로 그렇게 되고 있습니다. 1조 토큰이 얼마나 큰지 감을 잡기 위해: 책은 약 5만 단어 또는 6만 7천 토큰을 포함합니다. 1조 토큰은 1천 5백만 권의 책과 동등합니다.

RedPajama vs. LLaMa data

RedPajama와 LLaMa 데이터의 나란히 비교, RedPajama가 수행함.

학습 데이터셋 크기의 증가 속도는 새 데이터 생성 속도보다 훨씬 빠릅니다 (Villalobos et al, 2022). 인터넷에 어떤 것을 올린 적이 있다면, 동의하든 말든 어떤 언어 모델의 학습 데이터에 이미 포함되어 있거나 포함될 것으로 가정해야 합니다. 이는 인터넷에 무언가를 게시하면 Google에 인덱싱될 것으로 예상해야 하는 것과 유사합니다.

We're at the risk of running out of Internet data

게다가, 인터넷은 ChatGPT와 같은 대규모 언어 모델에 의해 생성된 데이터로 빠르게 채워지고 있습니다. 기업들이 계속해서 인터넷 데이터를 사용하여 대규모 LLM을 훈련시킨다면, 이러한 새로운 LLM은 기존 LLM에 의해 생성된 데이터로 훈련될 수도 있습니다.

공개 데이터를 모두 사용한 후에는, 더 많은 훈련 데이터를 얻는 가장 현실적인 방법은 독점 데이터를 활용하는 것입니다. 저는 저작권이 있는 책, 번역, 비디오/팟캐스트 대본, 계약서, 의료 기록, 유전체 서열, 사용자 데이터 등 대규모 독점 데이터를 어떤 식으로든 손에 넣는 기업은 경쟁 우위를 가질 것으로 의심합니다. ChatGPT를 고려할 때 다수의 기업이 LLMs를 위해 다른 기업이 데이터를 스크래핑하는 것을 막기 위해 데이터 약관을 변경했다는 것은 놀라운 일이 아닙니다. 자세한 내용은 Reddit, StackOverflow를 참조하십시오.

Phase 2. 대화를 위한 지도된 미세 조정 (SFT)

왜 SFT

Pretraining은 완성을 최적화합니다. 사전 훈련된 모델에 '피자 만드는 방법'과 같은 질문을 제공하면 다음 중 어느 것이든 유효한 완성일 수 있습니다.

  1. 질문에 더 많은 맥락을 추가하기: 여섯 명 가족을 위해 2. 후속 질문 추가: ? 필요한 재료는 무엇인가요? 얼마나 시간이 걸릴까요? 3. 실제로 답변하기

세 번째 옵션은 답변을 찾고 있다면 선호됩니다. SFT의 목표는 미리 학습된 모델을 최적화하여 사용자가 찾는 응답을 생성하는 것입니다.

그것을 어떻게 할까요? 모델이 훈련 데이터를 모방한다는 것을 알고 있습니다. SFT 중에는 언어 모델에게 다양한 사용 사례의 프롬프트에 적절히 응답하는 방법을 보여줍니다(예: 질문 응답, 요약, 번역). 이 예시들은 (프롬프트, 응답) 형식을 따르며, 이를 시범 데이터라고 합니다. OpenAI는 지도 미세 조정을 '행동 복제'라고 부릅니다: 모델이 어떻게 행동해야 하는지를 보여주고, 모델은 이 행동을 복제합니다.

3 phases of ChatGPT development

InstructGPT를 세밀하게 조정하는 데 사용된 프롬프트의 분포

모델이 데모 데이터를 모방하도록 훈련시키려면, 사전 훈련된 모델을 사용하여 파인튜닝하거나 처음부터 훈련시킬 수 있습니다. 사실, OpenAI는 1.3B 파라미터 InstructGPT 모델의 출력이 175B GPT-3의 출력보다 선호된다는 것을 보여 주었습니다. 그러나 파인튜닝 접근 방식이 훨씬 우수한 결과를 얻습니다.

데모 데이터

인공지능 연구기관 OpenAI가 InstructGPT와 ChatGPT에서 수행한 것과 같이, 데모 데이터는 인간에 의해 생성될 수 있습니다. 전통적인 데이터 라벨링과 달리, 데모 데이터는 스크린 테스트를 통과한 고도로 교육된 라벨러에 의해 생성됩니다. InstructGPT를 위해 데모 데이터를 라벨링한 사람들 가운데 약 90%가 대학 학위를 소지하고 3분의 1 이상이 석사 학위를 보유하고 있습니다.

3 phases of ChatGPT development

OpenAI의 40명의 라벨러가 InstructGPT를 위해 약 13,000개의 (프롬프트, 응답) 쌍을 생성했습니다. 여기에 몇 가지 예시가 있습니다:

프롬프트

응답

Serendipity는 우연히 행복하거나 유익한 방식으로 사건이 발생하고 발전하는 것을 의미합니다. 이 단어를 한 문장에 사용해 보세요.

마가렛을 만나고 톰을 소개받은 것은 운이 좋은 우연의 일치였다.

ELI5: 스트레스나 좌절적인 경험 중에 가슴에 '불안의 덩어리'가 생기는 원인은 무엇인가요?

목구멍에 있는 불안은 근육 긴장으로 인해 기도를 확장시켜 호흡량을 최대화하는 것입니다. 가슴이 조이거나 가슴이 아픈 느낌은 신경근촉촉신이 장기에 혈액을 빠르게 펌핑하도록 지시하고 소화를 멈추며 아드레날린과 코르티솔을 생성하도록 하는 것입니다.

이 레시피로 쇼핑 목록을 작성하세요: 쥬니퍼의 끝을 자르세요. 쥬니퍼를 반으로 길게 자르고, 씨를 제거하여 1/2인치 두께의 껍질을 남기세요. 쥬니퍼 펄프를 잘게 다져주세요. 프라이팬에 소고기, 쥬니퍼 펄프, 양파, 버섯, 피망을 중불에서 고기가 분홍색이 사라질 때까지 조리하세요. 기름을 빼주세요. 불에서 제거한 후 1/2컵 치즈, 케첩, 소금, 후추를 넣고 잘 섞어주세요. 쥬니퍼 껍질에 넣어주세요. 기름친 13x9인치 베이킹용 접시에 담아주세요. 남은 치즈를 뿌려주세요.

Zucchini, beef, onion, mushroom, peppers, cheese, ketchup, salt, pepper

OpenAI의 방식은 고품질의 데모 데이터를 생성하지만 비용이 많이 들고 시간이 많이 소요됩니다. 대신 DeepMind는 모델 Gopher를 위해 인터넷 데이터에서 대화를 필터링하기 위해 휴리스틱을 사용했습니다(Rae et al., 2021).

»» Side note: DeepMind의 대화를 위한 휴리스틱 ««

_Concretely, we find all sets of consecutive paragraphs (blocks of text separated by two newlines) at least 6 paragraphs long, with all paragraphs having a prefix ending in a separator (e.g., Gopher: , Dr Smith - , or Q. ). The even-indexed paragraphs must have the same prefix as each other, and the same for the odd-indexed paragraphs, but both prefixes should be different (in other words, the conversation must be strictly back-and-forth between two individuals). This procedure reliably yields high-quality dialogue.

»» Side note: 대화에 대한 세부 조정 대신 지시 사항 따르기에 대한 세부 조정 ««

OpenAI의 InstructGPT는 지시를 따르도록 세밀하게 조정되었습니다. 각각의 데모 데이터 예시는 (프롬프트, 응답) 쌍입니다. DeepMind의 Gopher는 대화를 진행하도록 세밀하게 조정되었습니다. 각각의 데모는 번갈아가며 이뤄지는 다수의 대화 턴입니다. 지시는 대화의 부분집합입니다 - ChatGPT는 InstructGPT의 강화된 버전입니다.

수학적 정식화

수학적 정식은 1단계와 매우 유사합니다.

  • ML 작업: 언어 모델링
  • 훈련 데이터: (프롬프트, 응답) 형식의 고품질 데이터
  • 데이터 규모: 10,000 - 100,000 (프롬프트, 응답) 쌍
    • InstructGPT: 약 14,500 쌍 (레이블러 13,000 + 고객 1,500)
    • Alpaca: 52,000 ChatGPT 지침
    • Databricks’ Dolly-15k: 약 15,000 쌍, Databricks 직원이 작성
    • OpenAssistant: 10,000 대화에서 161,000 메시지 -> 약 88,000 쌍
    • Dialogue-finetuned Gopher: 약 50억 토큰, 약 10백만 메시지로 추정. 그러나 이들은 인터넷에서 휴리스틱을 사용하여 걸러졌으므로 최상의 품질은 아님.
  • 모델 입력 및 출력
    • 입력: 프롬프트
    • 출력: 이 프롬프트에 대한 응답
  • 훈련 과정 중 최소화할 손실 함수: 교차 엔트로피, 그러나 응답의 토큰만이 손실에 포함됨.

Phase 3. RLHF

실험적으로, RLHF는 SFT만 사용하는 것보다 성능을 현저히 향상시킵니다. 그러나 나는 확실한 주장을 보지 못했습니다. Anthropic은 다음과 같이 설명했습니다: "우리는 사람의 피드백(HF)이 다른 기술들보다 가장 큰 비교적 이점을 가질 것으로 기대합니다. 특히 사람들이 쉽게 유도할 수 있지만 형식화하고 자동화하기 어려운 복잡한 직관을 가질 때". (Bai et al., 2022)

3 phases of ChatGPT development

InstructGPT (SFT + RLHF)가 SFT만으로는 능가합니다

대화는 유연합니다. 프롬프트가 주어지면 많은 타당한 응답이 있으며, 일부는 다른 것보다 나을 수 있습니다. 데모 데이터는 모델에게 주어진 맥락에서 어떤 응답이 타당한지를 알려줍니다. 그러나 모델에게 어떤 응답이 좋은지 나쁜지를 알려주지는 않습니다.

아이디어: 만약 우리가 프롬프트와 응답을 제공하면, 그 응답이 얼마나 좋은지에 대한 점수를 출력하는 점수 기능이 있다면 어떨까요? 그럼 이 점수 기능을 사용하여 우리의 LLMs를 더 높은 점수를 받는 응답을 제공하도록 추가로 훈련시킬 수 있습니다. RLHF가 정확히 그것을 합니다. RLHF는 두 부분으로 구성되어 있습니다:

  1. 보상 모델을 훈련하여 점수 기능으로 작동하도록 합니다. 2. 보상 모델이 높은 점수를 부여할 응답을 생성하기 위해 LLM을 최적화합니다.

»»부가 설명: RLHF가 작동하는 이유에 대한 가설««

Yoav Goldberg은 RLHF가 작동하는 세 가지 가설에 대한 훌륭한 노트를 가지고 있습니다.

  • 다양성 가설: SFT 중에는 모델의 출력이 어느 정도로 시연된 응답과 일치할 것으로 예상됩니다. 예를 들어, '언어의 예시는 무엇인가?'라는 프롬프트가 주어졌을 때, 시연된 응답이 '스페인어'이고 모델의 응답이 '자바'인 경우, 모델의 응답은 틀린 것으로 표시될 수 있습니다.
  • 부정적 피드백 가설: 시연은 모델에게 긍정적인 신호만을 제공하며(예: 모델에게 좋은 응답만 보여줌), 부정적인 신호(예: 모델에게 나쁜 응답이 어떻게 보이는지 보여주는 것)는 제공하지 않습니다. 강화 학습은 모델에게 부정적인 신호를 보여줄 수 있게 합니다.
  • 환각 가설: RLHF는 환각에 도움을 줄 것으로 기대되며, 이에 대해 RLHF와 환각 섹션에서 자세히 다룰 것입니다.

3.1. 보상 모델 (RM)

RM의 역할은 (프롬프트, 응답) 쌍에 대한 점수를 출력하는 것입니다. 주어진 입력에 대해 점수를 출력하는 모델을 훈련하는 것은 기계 학습에서 매우 흔한 작업입니다. 이를 간단히 분류 또는 회귀 작업으로 구성할 수 있습니다. 보상 모델을 훈련하는 데 어려운 점은 신뢰할 수 있는 데이터를 얻는 데 있습니다. 서로 다른 라벨러들에게 동일한 응답에 대해 일관된 점수를 부여하도록 하는 것이 상당히 어렵다는 것이 밝혀졌습니다. 라벨러들에게 두 응답을 비교하고 어느 쪽이 더 나은지 결정하도록 하는 것이 훨씬 쉽습니다.

라벨링 프로세스는 다음과 같은 데이터를 생성할 것입니다: (프롬프트, 우승 응답, 패배 응답). 이를 비교 데이터라고 합니다.

Anthropic의 HH-RLHF 데이터셋에서 비교 데이터 예시가 있습니다. 저는 개인적으로 losing_response를 선호합니다. 이는 인간의 선호도로부터 학습하는 과제를 강조합니다. 인간의 선호도는 다양하며 단일 수학적 공식으로 포착하기 불가능합니다.

프롬프트

winning_response

losing_response

내 개를 어떻게 해서 고조시킬 수 있을까요?

나는 당신이 그 의미하는 바를 확실히 모르겠어요.

우리가 개를 마약에 취하게 해야 하는지 모르겠어요. 개가 세상을 술 취하지 않은 상태로 경험하는 것이 중요하다고 생각해요.

이제 이 비교 데이터만을 가지고 모델을 어떻게 구체적인 점수를 매기도록 훈련시킬까요? 적절한 인센티브가 주어진다면 인간에게 (기본적으로) 무엇이든 할 수 있는 방법과 같이, 적절한 목표(즉, 손실 함수)가 주어진다면 모델에게 (기본적으로) 무엇이든 할 수 있습니다.

InstructGPT의 목표는 우승 응답과 패배 응답 간의 점수 차이를 극대화하는 것입니다(자세한 내용은 수학적 공식 섹션 참조).

사람들은 RM을 초기화하는 다양한 방법을 실험해 왔습니다. 예를 들어, RM을 처음부터 훈련하거나 SFT 모델을 시드로 사용하여 시작하는 등입니다. SFT 모델에서 시작하는 것이 최상의 성능을 제공하는 것으로 보입니다. 직관적으로, RM은 LLM과 적어도 같은 성능을 가져야 LLM의 응답을 잘 평가할 수 있어야 합니다.

수학적 정식화

변형이 있을 수 있지만, 여기에 핵심 아이디어가 있습니다.

  • 훈련 데이터: (프롬프트, 우승 응답, 패배 응답) 형식의 고품질 데이터
  • 데이터 규모: 100K - 1M 예시
    • InstructGPT: 50,000개의 프롬프트. 각 프롬프트에는 4에서 9개의 응답이 있으며, (우승 응답, 패배 응답) 쌍이 6에서 36개 형성됩니다. 이는 (프롬프트, 우승 응답, 패배 응답) 형식의 훈련 예시가 30만 개에서 180만 개 사이라는 것을 의미합니다.
    • Constitutional AI, Claude (Anthropic)의 백본으로 의심되는 31.8만 개의 비교 - 인간이 생성한 13.5만 개와 AI가 생성한 18.3만 개. Anthropic은 이전 버전의 데이터를 오픈소스로 제공하고 있으며(hh-rlhf), 대략 17만 개의 비교로 구성되어 있습니다.
  • (r_\theta): 훈련 중인 보상 모델, (\theta)로 매개변수화됨. 훈련 과정의 목표는 손실을 최소화하는 (\theta)를 찾는 것입니다.
  • 훈련 데이터 형식:
    • (x): 프롬프트
    • (y_w): 이기는 응답
    • (y_l): 지는 응답
  • 각 훈련 샘플 ((x, y_w, y_l))에 대해
    • (s_w=r_\theta(x, y_w)): 이기는 응답에 대한 보상 모델의 점수
    • (s_l=r_\theta(x, y_l)): 지는 응답에 대한 보상 모델의 점수
    • 손실 값: (-\log(\sigma(s_w - s_l)))
  • 목표: 모든 훈련 샘플에 대한 기대 손실을 최소화하는 (\theta)를 찾기. (-E_x\log(\sigma(s_w - s_l)))

이 손실 함수가 어떻게 작동하는지 더 직관적으로 이해하기 위해 시각화해 봅시다.

(d = s_w - s_l)로 정의합니다. 여기에 (f(d) = -\log(\sigma(d))) 함수의 그래프가 있습니다. 손실 값은 음수 (d)에 대해 크며, 이는 보상 모델이 이긴 응답에 낮은 점수를 부여하지 않도록 하는 동기를 제공합니다.

3 phases of ChatGPT development

비교 데이터 수집을 위한 UI

OpenAI의 레이블러가 InstructGPT의 RM을 위한 훈련 데이터를 생성하는 데 사용한 UI 스크린샷이 아래에 있습니다. 레이블러는 1에서 7까지의 구체적인 점수를 부여하고 응답을 선호도 순으로 순위를 매기지만, 훈련에는 순위만 사용됩니다. 그들의 레이블러 간 합의율은 약 73% 정도이며, 이는 10명에게 2개의 응답을 순위 매달라고 요청하면 그 중 7명이 동일한 순위를 가질 것을 의미합니다.

3 phases of ChatGPT development

라벨링 프로세스를 가속화하기 위해, 각 주석 달기 작업자에게 여러 응답을 순위 매기도록 요청합니다. 예를 들어 A > B > C > D와 같이 4개의 순위가 매겨진 응답은 (A > B), (A > C), (A > D), (B > C), (B > D), (C > D)와 같이 6개의 순위 쌍을 생성합니다.

3.2. 보상 모델을 사용한 파인튜닝

이 단계에서는 SFT 모델을 추가로 훈련하여 RM에 의해 점수를 최대화하는 출력 응답을 생성할 것입니다. 오늘날 대부분의 사람들은 2017년 OpenAI에 의해 출시된 강화 학습 알고리즘인 Proximal Policy Optimization(PPO)를 사용합니다.

이 과정에서 프롬프트는 분포에서 무작위로 선택됩니다. 예를 들어, 우리는 고객 프롬프트 중에서 무작위로 선택할 수 있습니다. 이러한 각 프롬프트는 LLM 모델에 입력되어 응답을 받아들이고, 이 응답은 RM에 의해 점수가 매겨집니다.

OpenAI는 또한 제약 조건을 추가해야 한다는 것을 발견했습니다: 이 단계에서 생성된 모델은 SFT 단계에서 생성된 모델(아래 목적 함수의 KL 발산 항으로 수학적으로 표현됨) 및 원래 사전 훈련 모델에서 너무 멀리 벗어나서는 안 됩니다. 이 직관은 주어진 프롬프트에 대해 많은 가능한 응답이 있으며, 그 중 대부분은 RM이 이전에 본 적이 없습니다. 이러한 알려지지 않은 (프롬프트, 응답) 쌍 중 많은 경우, RM은 실수로 극히 높거나 낮은 점수를 줄 수 있습니다. 이 제약 조건이 없으면, 극도로 높은 점수를 받는 응답에 편향될 수 있으며, 그 응답이 좋은 응답이 아닐 수도 있습니다.

OpenAI는 InstructGPT의 SFT와 RLHF를 설명하는 훌륭한 다이어그램을 가지고 있습니다.

3 phases of ChatGPT development

수학적 정식화

  • ML 작업: 강화 학습
    • 행동 공간: LLM이 사용하는 토큰 어휘. 행동을 취한다는 것은 생성할 토큰을 선택하는 것을 의미합니다.
    • 관측 공간: 모든 가능한 프롬프트에 대한 분포.
    • 정책: 관측(프롬프트)이 주어졌을 때 취할 모든 행동(생성할 모든 토큰)에 대한 확률 분포. LLM은 정책을 구성하는데, 다음에 생성될 토큰이 얼마나 가능성 있는지를 결정하기 때문입니다.
    • 보상 함수: 보상 모델.
  • 훈련 데이터: 무작위로 선택된 프롬프트
  • 데이터 규모: 10,000 - 100,000 프롬프트
  • (RM): 3.1단계에서 얻은 보상 모델입니다.\n* (LLM^{SFT}): 2단계에서 얻은 지도학습으로 세밀하게 조정된 모델입니다.\n * 주어진 프롬프트 (x)에 대해 응답 분포를 출력합니다.\n * InstructGPT 논문에서 (LLM^{SFT})는 (\pi^{SFT})로 표현됩니다.\n* (LLM^{RL}_\phi): 강화 학습으로 훈련되는 모델로, 매개변수가 (\phi)로 매개변수화됩니다.\n * 목표는 (RM)에 따라 점수를 최대화하기 위해 (\phi)를 찾는 것입니다.\n * 주어진 프롬프트 (x)에 대해 응답 분포를 출력합니다.\n * InstructGPT 논문에서 (LLM^{RL}_\phi)는 (\pi^{RL}_\phi)로 표현됩니다.\n* (x): 프롬프트\n* (D_{RL}): 명시적으로 강화 학습 모델에 사용된 프롬프트의 분포입니다.\n* (D_{pretrain}): 사전 훈련 모델의 훈련 데이터 분포입니다.

각 학습 단계에서 (D ext{RL})에서 (x ext{RL})의 배치를 샘플링하고 (D ext{pretrain})에서 (x ext{pretrain})의 배치를 샘플링합니다. 각 샘플의 목적 함수는 샘플이 어느 분포에서 왔는지에 따라 달라집니다.

  1. 각 (x ext{RL})에 대해, 우리는 응답을 샘플링하기 위해 (LLM^{RL} ext{_}\phi)를 사용합니다: (y \sim LLM^{RL} ext{_}\phi(x ext{RL})). 목적은 다음과 같이 계산됩니다. 이 목적의 두 번째 항은 RL 모델이 SFT 모델에서 너무 멀리 벗어나지 않도록 KL 발산을 보장하는 것에 유의하십시오.
\\[\text{목적함수}_1(x_{RL}, y; \phi) = RM(x_{RL}, y) - \beta \log \frac{LLM^{RL}_\phi(y \vert x)}{LLM^{SFT}(y \vert x)}\\]

2. 각 (x_{pretrain})에 대해 목적함수는 다음과 같이 계산됩니다. 직관적으로, 이 목적은 사전학습된 모델이 최적화된 작업인 텍스트 완성에서 RL 모델이 성능이 나빠지지 않도록 하는 것입니다.

\\[\text{목적}\_2(x\_{pretrain}; \phi) = \gamma \log LLM^{RL}\_\phi(x\_{pretrain})\\]

최종 목표는 위의 두 목표의 기대값의 합입니다. RL 환경에서는 이전 단계에서 수행한 것과는 달리 목표를 최소화하는 대신 목표를 최대화합니다.

[\text{목적 함수}(\phi) = E_{x \sim D_{RL}}E_{y \sim LLM^{RL}_\phi(x)} [RM(x, y) - \beta \log \frac{LLM^{RL}_\phi(y \vert x)}{LLM^{SFT}(y \vert x)}] + \gamma E_{x \sim D_{pretrain}}\log LLM^{RL}_\phi(x)]

참고:

사용된 표기법은 InstructGPT 논문에서 사용된 표기법과 약간 다릅니다. 여기서 사용된 표기법이 더 명확하다고 생각하지만, 두 표기법은 정확히 동일한 목적 함수를 가리킵니다.

RLHF objective function The objective function as written in the InstructGPT paper.

RLHF and hallucination

AI 모델이 허구를 만들 때 환각이 발생합니다. 이것이 많은 기업이 LLM을 업무 프로세스에 통합하는 데 주저하는 큰 이유 중 하나입니다.

LLM이 환각하는 이유를 설명하는 두 가지 가설을 발견했습니다.

Pedro A. Ortega 등이 2021년 10월 DeepMind에서 처음 제시한 가설은 LLMs가 '행위의 원인과 결과에 대한 이해가 부족하기 때문에 환각을 경험한다'라는 것입니다(당시 DeepMind는 '환각'을 '환각'으로 사용했습니다). 그들은 이를 인과 개입으로 응답 생성을 처리함으로써 해결할 수 있다는 것을 보여주었습니다.

두 번째 가설은 환각이 LLM의 내부 지식과 라벨러의 내부 지식 간의 불일치로 인해 발생한다는 것입니다. UC 버클리에서의 John Schulman의 발표 (2023년 4월)에서, OpenAI 공동 창업자이자 PPO 저자인 John Schulman은 행동 복제가 환각을 유발한다고 제안했습니다. SFT 중에, LLM은 인간이 작성한 응답을 모방하도록 훈련됩니다. 우리가 LLM에게 우리가 가진 지식을 사용하여 응답을 제공하면, LLM에게 환각을 가르치는 것입니다.

이 견해는 또한 2021년 12월에 다른 OpenAI 직원인 Leo Gao에 의해 잘 표현되었습니다. 이론적으로는, 인간 레이블러는 각 프롬프트와 함께 알고 있는 모든 맥락을 포함하여 모델이 기존 지식만 사용하도록 가르칠 수 있습니다. 그러나 실제로는 이것은 불가능합니다.

슐만은 LLMs가 무언가를 알고 있는지 알 수 있다고 믿었습니다 (내 의견으로는 큰 주장이지만), 이는 환각이 LLMs가 알고 있는 정보만 포함하는 답변만 제공하도록 강제하는 방법을 찾는다면 환각을 해결할 수 있다는 것을 의미합니다. 그런 다음 그는 몇 가지 해결책을 제안했습니다.

  1. 검증: LLM에게 답변을 얻는 소스를 설명하도록 요청합니다. 2. RL. 3.1 단계의 보상 모델은 단순히 비교만을 사용하여 훈련됩니다: 응답 A가 응답 B보다 더 나은 것으로 판명되었을 때, 얼마나 더 나은지 또는 왜 A가 더 나은지에 대한 정보는 없습니다. Schulman은 더 나은 보상 함수를 가지고 환각을 해결할 수 있다고 주장했습니다. 예를 들어, 모델이 무언가를 만들어 내는 것에 대해 더 많이 처벌함으로써.

4월 2023년 John Schulman의 강연에서 스크린샷이 있습니다.

Fix hallucination with R

슐만의 강연에서 RLHF가 환각을 돕는 것으로 알았지만, InstructGPT 논문은 RLHF가 실제로 환각을 악화시켰음을 보여줍니다. RLHF가 환각을 악화시켰지만, 다른 측면을 개선하고, 전반적으로, 인간 라벨러들은 SFT 단독 모델보다 RLHF 모델을 선호합니다.

RLHF makes hallucination worse

Hallucination is worse for InstructGPT (RLHF + SFT) compared to just SFT (Ouyang et al., 2022)

LLM이 자신이 무엇을 알고 있는지를 알고 있다는 가정에 따라, 일부 사람들은 'Answer as truthfully as possible, and if you're unsure of the answer, say "Sorry, I don't know"'와 같은 프롬프트로 환각을 줄이려고 노력합니다. LLM이 간결하게 응답하도록 하는 것도 환각을 줄이는 데 도움이 되는 것으로 보입니다. LLM이 생성해야 하는 토큰이 적을수록, 허구를 만들 가능성이 적어집니다.

결론

이 글을 쓰는 것이 정말 즐거웠습니다. 독자 여러분도 즐겁게 읽으셨으면 좋겠습니다. RLHF의 한계에 대한 또 다른 전체 섹션도 있었는데, 예를 들어 인간의 선호도 편향, 평가의 어려움, 그리고 데이터 소유 문제 등이 있었습니다. 하지만 글이 너무 길어졌기 때문에 다음 글에 보관하기로 결정했습니다.

RLHF에 관한 논문을 살펴보면서 세 가지에 감명을 받았습니다:

  1. ChatGPT와 같은 모델을 훈련하는 것은 꽤 복잡한 과정입니다 - 그것이 전혀 작동했다는 것이 놀라운 일입니다. 2. 규모가 엄청납니다. LLMs가 많은 데이터와 컴퓨팅을 필요로 한다는 것은 항상 알고 있었지만, 전체 인터넷 데이터!!?? 3. 기업들이 (이전에) 자신들의 프로세스에 대해 얼마나 많은 정보를 공유하는지. DeepMind의 Gopher 논문은 120 페이지입니다. OpenAI의 InstructGPT 논문은 68 페이지이며, Anthropic은 161K hh-rlhf 비교 예제를 공유했고, Meta는 연구용 LLaMa 모델을 제공했습니다. 또한 OpenAssistant와 LAION과 같은 오픈 소스 모델과 데이터셋을 만들기 위해 커뮤니티로부터 엄청난 선의와 열정이 있습니다. 흥미로운 시기입니다!

LLM의 초기 단계에 여전히 있습니다. 세계의 나머지는 LLM의 잠재력에 각별히 관심을 갖기 시작했으므로 경쟁은 이제 막 시작되었습니다. RLHF를 포함한 LLM에 대한 많은 것들이 진화할 것입니다. 그러나 이 게시물이 LLM이 어떻게 내부적으로 훈련되는지 더 잘 이해하도록 도와줬으면 좋겠습니다. 이는 여러분이 필요에 맞는 최상의 LLM을 선택하는 데 도움이 되기를 바랍니다!

요약하다
ChatGPT가 우리의 상상력을 많이 포착하는 이유에 대한 논의에서, 데이터와 컴퓨팅 자원을 더 투입하는 규모와 자연스러운 채팅 인터페이스로의 전환이 주로 언급되지만, RLHF(Reinforcement Learning from Human Feedback)와 같은 기술적 창의성도 중요하다. RLHF는 강화 학습과 인간 피드백을 자연어 처리에 통합하는 것이다. 이 기술은 게임 및 시뮬레이션 환경에서 주로 사용되던 RL을 NLP로 확장한 것으로, 최근 몇 년 동안 두 분야가 협력하여 발전했다. RLHF는 ChatGPT 모델의 세 가지 개발 단계를 설명하며, 각 단계의 목표, 진행 이유, 수학적 공식을 다룬다. RLHF는 아직 산업에서 널리 사용되지 않지만, OpenAI, DeepMind, Anthropic 등 일부 주요 기업에서 사용 중이며, 앞으로 더 많이 사용될 것으로 예상된다.