AI시대를 준비하기에 완벽한 아이펠 코어 과정
#인공지능 

Human 피드백을 통한 언어 모델 강화학습하기

인간의 피드백을 받은 강화학습 으로 언어모델을 훈련 및 보상하는 과정에 대해 소개합니다. RLHF와 같은 다양한 기법들이 현재 LLM 트렌드에 적합하며 특히 채팅시스템에서 유용하게 사용되고 있습니다.

2024-07-09 | 신유진

아마 이 기술에 대해 들어본 적은 있어도, PPO 관련하여 완벽하게 이해하지 못했을 수 있습니다. 이 설명이 도움이 되길 바랍니다. 이번에는 GPT-3, BLOOM, T5와 같은 텍스트 대 텍스트 언어 모델 에 초점을 맞출 것입니다. BERT와 같은 인코더만 있는 모델은 다루지 않습니다. 인간 피드백에서 강화 학습 (RLHF) 기법은 ChatGPT에서 성공적으로 적용되어 인기를 끌고 있습니다.

RLHF는 특히 다음 두 가지 시나리오에서 유용합니다:

  • 좋은 손실 함수를 만들 수 없을 때
    • 예: 모델의 출력이 웃긴지 측정하는 메트릭을 어떻게 계산할까요?
  • 제작 데이터로 훈련하려면서 제작 데이터를 쉽게 라벨링할 수 없을 때
    • 예: ChatGPT에서 어떻게 라벨이 달린 제작 데이터를 얻을까요? 누군가가 ChatGPT가 정확히 대답해야 할 정답을 작성해야 합니다.

RLHF 알고리즘:
1. 언어 모델(LM) 사전 훈련
2. 보상 모델 훈련
3. 강화 학습을 통한 언어 모델(LM) 세부 튜닝

1- 언어 모델 사전학습하기 (LM)

Figure1: 사전훈련된 언어 모델

이 단계에서는 언어 모델을 처음부터 훈련하거나, GPT-3와 같은 사전 훈련된 모델을 사용할 수 있습니다.

사전 훈련된 언어 모델을 갖춘 후에는 추가적으로 선택 가능한 지도 학습 세밀 튜닝(SFT) 단계를 수행할 수 있습니다. 이는 인간이 라벨링한 (입력, 출력) 텍스트 쌍을 사용하여 언어 모델을 미세 조정하는 것입니다. SFT는 RLHF에 대한 고품질 초기화로 간주됩니다.

이 단계가 끝나면 우리는 훈련된 언어 모델 (LM) 을 얻게 되며, 이는 RLHF를 통해 추가로 훈련하고자 하는 주요 모델입니다.

2- 보상 모델 훈련하기

Figure 2: 보상 모델 훈련용 데이터 수집 파이프라인

이 단계에서는 (입력 텍스트, 출력 텍스트, 보상) 삼중항 데이터셋을 수집하는 데 관심이 있습니다.
그림 2에는 데이터 수집 파이프라인의 표현이 있습니다. 입력 텍스트 데이터를 사용하여 (제작 데이터라면 더 좋음) 모델을 통해 전달하고, 사람이 생성된 출력 텍스트에 보상을 부여하는 방식입니다.

Figure 3: ChatGPT에서의 간단한 👍/👎 보상 수집

보상은 보통 0에서 5 사이의 정수이지만, 👍/👎 경험에서는 간단히 0 또는 1일 수도 있습니다.

Figure 4: 더 완전한 보상 수집 경험: 모델이 두 개의 텍스트를 출력하고, 사용자는 어떤 것이 더 좋았는지 선택하고 전반적인 평가와 함께 의견을 제공합니다.이 새로운 데이터셋을 사용하여 (입력, 출력) 텍스트를 받아 보상 스칼라를 반환하는 또 다른 언어 모델을 훈련할 것입니다. 이것이 우리의 보상 모델이 될 것입니다.
여기서 주요 목표는 보상 모델을 사용하여 인간의 보상 라벨링을 모방하고, 따라서 인간의 개입 없이 오프라인으로 RLHF 훈련을 할 수 있게 하는 것입니다.

Figure 5: 훈련된 보상 모델, 인간이 제공한 보상을 모방할 것입니다.

 

3- 강화학습으로 LM Fine-Tuning하기

이 단계에서 실제로 마법이 일어나며 강화학습 (줄여서 RL) 이 본격적으로 사용됩니다.

이 단계의 목표는 보상 모델이 제공한 보상을 사용하여 주요 모델인 훈련된 언어 모델(LM)을 훈련하는 것입니다. 그러나 보상이 미분 가능하지 않기 때문에, RL을 사용하여 LM에 역전파할 수 있는 손실을 구성해야 합니다.

Figure 6: 보상 모델과 PPO 손실 계산을 사용하여 주요 언어 모델(LM)을 세밀하게 튜닝하는 과정

파이프라인의 시작 부분에서 우리는 LM의 정확한 복사본을 만들고, 그 가중치를 고정시킵니다. 이 고정된 모델은 학습 가능한 LM이 가중치를 완전히 바꿔서 보상 모델을 속이기 위해 의미 없는 텍스트를 출력하는 것을 방지하는 데 도움이 됩니다.

그렇기 때문에 고정된 LM과 비고정된 LM의 텍스트 출력 확률 사이의 KL 발산 손실을 계산합니다. 이 KL 손실은 보상 모델이 생성한 보상에 추가됩니다. 실제로, 만약 모델을 프로덕션 중에 훈련하고 있다면(온라인 학습), 이 보상 모델을 인간의 보상 점수로 직접 대체할 수 있습니다. 보상과 KL 손실을 가지고, 이제 RL을 적용하여 보상 손실을 미분 가능하게 만들 수 있습니다. 보상이 미분 가능하지 않은 이유는 무엇일까요? 이는 보상 모델이 텍스트를 입력으로 받아 계산되기 때문입니다. 이 텍스트는 LM의 출력 로그 확률을 디코딩하여 얻어집니다. 이 디코딩 과정은 미분 불가능합니다.손실을 미분 가능하게 만들기 위해, 마지막으로 Proximal Policy Optimization (PPO)이 등장합니다! 이제 자세히 살펴보겠습니다.

 

Figure 7: 강화학습 RL 업데이트 상자 확대 -PPO 손실 계산

 

PPO 알고리즘은 다음과 같이 손실을 계산하여 LM에 작은 업데이트를 합니다:

  1. “초기 확률(Initial probs)”을 “새로운 확률(New probs)”과 같게 설정하여 초기화합니다.
  2. 새로운 출력 텍스트 확률과 초기 출력 텍스트 확률 사이의 비율을 계산합니다.
  3. 아래 공식에 따라 손실을 계산합니다:
    loss = -min(ratio*R, clip(ratio, 0.8, 1.2) *R)

    여기서 R은 보상 + KL (또는 0.8 * 보상 + 0.2 * KL과 같은 가중 평균)으로 이전에 계산된 값이며, clip(ratio,0.8,1.2)는 비율을 0.8에서 1.2 사이로 제한합니다. 0.8과 1.2는 일반적으로 사용되는 하이퍼파라미터 값입니다. 보상을 최대화하려는 목표로 인해 손실에 -를 추가하여, 손실의 부정을 최소화하기 위해 그라디언트 디센트를 사용합니다.

  4. 손실을 역전파하여 LM의 가중치를 업데이트합니다.
  5. 새로 업데이트된 LM을 사용하여 “새로운 확률(New probs)” (즉, 새로운 출력 텍스트 확률)을 계산합니다.
  6. 2단계부터 N번 반복합니다 (일반적으로 N=4).

이것이 Text-to-Text 언어 모델에서 RLHF를 사용하는 방법입니다!
여기에 제시된 기본 손실에 다른 손실을 추가할 수도 있기 때문에 더 복잡해질 수 있지만, 이것이 핵심 구현입니다.

 

마치며

PPO 알고리즘을 사용하여 텍스트-투-텍스트 언어 모델을 훈련하는 방법을 설명합니다. 초기 확률을 설정하고, 새로운 확률과 비교하여 손실을 계산한 후, 이 손실을 역전파하여 모델의 가중치를 업데이트합니다. 이 과정을 여러 번 반복하여 모델을 최적화합니다. 이 방법은 RLHF를 통해 인간의 보상을 반영하여 모델의 성능을 향상시킵니다.

앞으로의 방향성

RLHF와 PPO를 활용한 텍스트-투-텍스트 언어 모델 훈련은 더욱 발전할 가능성이 큽니다. 추가적인 손실 함수나 개선된 알고리즘을 도입하여 모델의 성능을 더욱 향상시킬 수 있습니다. 또한, 이 접근법은 다양한 응용 분야에서 효율적으로 활용될 수 있으며, 인간의 피드백을 효과적으로 반영하여 더 자연스럽고 유용한 텍스트 생성 모델을 개발하는 데 기여할 것입니다.

 

Reference

https://github.com/JoaoLages—fine-tuning-the-lm-with-rl
위 글을 번역한 글입니다.