5. 지시튜닝과 RLHF

LLM 시대, LangChain(랭체인)으로 배우는 AI 소프트웨어 개발

by AI개발자
gaebalai-blog_ai-v3-1.jpg

(1) 지시튜닝

지시튜닝(Instruction Tuning)은 특정 지시나 명령에 따라 응답하는 능력을 언어모델에 부여하기 위한 파인튜닝 기법입니다. 지시튜닝은 다양한 지시와 응답 페어를 사용하여 모델을 추가학습하는 방식으로 구현됩니다. 지시튜닝에서는 구조화된 데이터세트를 이용해 모델 학습을 진행합니다. 예를 들어, 데이터세트에서는 지시, 추가입력, 기대되는 출력으로 구성된 다음과 같은 데이터가 포함됩니다.

llm-langchain50-20.png

지시튜닝에 사용되는 손실함수는 일반사전학습과 동일하게 교차 엔트로피 손실함수를 사용합니다. 모델은 주어진 지시와 입력(있는 경우)에 기반하여 적절한 응답을 생성하도록 학습됩니다. 교차 엔트로피 손실함수를 사용함으로써, 모델이 생성한 응답과 기대 출력 간의 차이를 최소화하도록 파라미터를 업데이트합니다.


지시튜닝은 대화형 AI의 기본적인 지시 따르기 능력을 향상시키는 중요한 기법입니다. 다만, 보다 복잡한 인간의 선호나 윤리적 고려사항을 반영하기 위해서는 다른 깁법들도 필요합니다. 이제 고급 파인튜닝 기법 중 하나인 RLHF(Reinformcement Learning from Human Feedback)에 대해 설명합니다.



(2) RLHF(Reinforcement Learning from Human Feedback)

RLHF(Reinforcement Learning from Human Feedback)은 인간의 피드백을 활용하여 언어모델의 동작을 최적화하는 파인튜닝 기법ㅂ입니다. RLHF에서는 지시튜닝을 통해 어느 정도 지시 따르기 능력을 획득한 모델을 더욱 개선합니다. 지시튜닝만으로는 인간의 선호를 완벽하게 반영하기에 한계가 있는데, 이는 고정된 훈련 데이터세트기반의 학습으로는 ㅂ복잡하고 문맥에 의존하는 인간의 선호나 긴 대화의 품질을 완전히 포착하기 어렵기 때문입니다. 따라서, RLHF에서는 강화학습을 사용하여, 보상 모델을 통해 인간의 피드백을 반영하고 모델의 동작을 개선합니다.


① 강화학습의 기본개념

RLHF의 기반이 되는 강화학습(Reinforcement Learning)의 기본 개념을 간단히 설명합ㅂ니다. 강화학습은 에이전트가 환경과 상호작용하면서, 시행착오를 통해 최적의 행동을 학습하는 과정입니다.

강화학습의 주요 요소는 다음과 같습니다.


에이전트(Agent): 학습하고 결정을 내리는 주체

환경(Environment): 에이전트가 상호작용하는 외부 세계

상태(State): 환경의 현재 상황

행동(Action): 에이전트가 취할 수 있는 선택지

보상(Reward): 에어전트의 행동에 대한 피드백

정책(Policy): 에이전트의 행동선택 전략


강화학습의 기본 단계는 다음과 같습니다.


관찰(Observation): 에이전트가 환경의 상태를 관찰합니다.

행동선택(Action Selection): 현재 정책에 기반하여 행동을 선택합니다.

행동실행(Action Execution): 선택한 행동을 환경에 실행합니다.

결과 관찰(Result Observation): 환경의 변화로 인해 새로운 상태와 보상을 얻습니다.

학습(Learning): 얻은 경험을 바탕으로 정책을 업데이트합니다.


강화학습은 1부터 5까지의 과정을 반복하며 점진적으로 더 나은 정책을 학습해 나갑니다.


② 강화학습의 LLM 적용

RLHF에서는 강화학습의 프레임워크에 LLM을 다음과 같이 적용합니다.


에이전트: LLM

환경: 텍스트 생성 태스크

상태: 현재의 텍스트 문맥

행동: 다음 토큰의 선택

보상: 보상 모델의 출력

정책: LLM의 파라미터


또한 강화학습의 기본단계들을 RLHF에 적용하면 다음과 같습니다.


관찰: LLM이 현재의 텍스트 문맥(프롬프트와 생성된 텍스트)을 관찰합니다.

행동 선택: LLM이 다음 토큰을 생성합니다.

행동 실행: LLM이 생성한 토큰을 텍스트에 추가합니다.

결과 관찰: 생성된 전체 텍스트에 대해 보상모델이 점수를 계산합니다.

학습: 보상 모델의 점수를 최대화하도록 LLM의 파라미터를 업데이트합니다.


RLHF는 이 1부터 5까지의 과정을 반복함으로써, 인간의 선호에 더 적합한 출력을 얻을 수 있도록 LLM의 파라미터를 조정합니다.


llm-langchain51.png RLHF에서 에이전트와 환경의 상호작용

위 그림은 RLHF에서 에이전트와 환경이 상호작용하는 모습을 보여줍니다. 에이전트가 특정 행동을 선택하면 환경이 이에 대한 보상을 제공하고 에이전트는 그 보상을 최대화하도록 학습합니다. RLHF에서는 보상모델을 사용하여 인간의 피드백을 수치화한 점수를 보상으로 활용합니다. 따라서 강화학습을 진행하기 전에 보상 모델을 구축하고 사전학습하는 과정이 필요합니다.


다음은 보상모델에 대해 설명한 뒤, RLHF의 학습 프로세스를 자세히 다룹니다.


③ 보상 모델

강화학습에서는 보상을 최대화하는 것을 목표로 합니다. LLM의 경우, 인간의 선호에 부합하는 출력일수록 더 높은 보상을 받도록 설정합니다. 그러나, 매번 사람이 직접 해당 출력이 인간의 선호에 맞는지 확인하는 것은 비현실적이므로 자동으로 보상을 계산하기 위해 '보상모델(Reward Model)'을 사전에 준비해 사용합니다.


보상모델은 프롬프트와 LLM이 생성한 텏스트를 입력으로 받아, 그 텍스트의 품질이나 적절성을 평가하는 점수를 출력합니다. 이 점수가 높을수록 인간의 선호에 부합한다는 의미이고, 낮을수록 부합하지 않는다는 의미입니다. RLHF에서는 강화학습 이전에 보상모델을 미리 학습시켜두고, 이 모델이 산출하는 스코어를 활용하여 LLM을 학습시킵니다.


일반적으로 보상모델은 사전학습된 언어모델을 기반으로 마지막에 '회귀층(Regression Layer)'을 추가하여 학습합니다. 회귀층은 스코어와 같은 연속값을 출력하기 위해 설계된 층입니다. 이떄 보상모델로 사용하는 언어모델은 RLHF로 학습되는 LLM과 다른 모델일 수 있으며, 반드시 동일한 아키텍처를 쓸 필요가 없습니다. 보통 더 작은 모델을 사용하는 경우가 많지만, Transformer를 기반으로 한다는 점은 같습니다.


회귀층의 출력은 0에서 1사이로 정규화된 스코어입니다. 보통 시그모이드(Sigmoid)함수를 활성화 함수로 사용하는 FFNN(Feed-Forward Neural Network)로 구성하며, 회귀층의 입력으로 특정 토큰의 임베딩 벡터나 전체 토큰 시퀀스의 평균 또는 풀링(Pooling)된 임베딩 벡터를 사용하는 경우가 많습니다. 풀링은 여러 토큰의 임베딩 벡터에서 중요한 정보를 추출해 고정길이 벡터로 요약되는 기법으로, 대표적인 방법으로 평균 풀링과 최대 풀링이 있습니다.


보상모델 학습 절차

데이터 수집: 동일한 프롬프트에 대해 여러 응답을 생성하고, 인간 평가자가 각 응답을 순위화(랭킹)합니다.

페어와이즈 랭킹 학습: 순위가 매겨진 데이터를 사용해 학습합니다.


이후 본 항목에서는 데이터 수집과 페어와이즈 랭킹 학습에 대해 자세히 설명합니다.


▣ 데이터 수집

보상 모델 학습에서는 인간 평가자가 랭킹을 매긴 데이터를 사용합니다. 여기서는 ChatGPT의 기반 기술인 InstructGPT의 데이터 수집 프로세스를 예로 들어 설명합니다.

InstructGPT에서는 LLM API를 통해 사용자가 제공한 프롬프트를 수집하고, 해당 프롬프트에 대해 여러 응답을 생성합니다. 사용된 프롬프트의 예로는 다음과 같은 것들이 있습니다.

llm-langchain51-1.png

이와 관련하여 4개에서 9개의 응답이 생성됩니다.

다음으로 이 응답들을 인간 평가자에게 제시하여 순위를 매기도록 합니다. 예를 들어, 응답으로 A, B, C, D의 네가지가 있을 경우, 평가자는 이들을 순윕별로 정하여 가장 적절하다고 생각하는 응답에 1위를 그 다음으로 적절한 응답에 2위를 부여하는 방식으로 순위를 매깁니다.


▣ 페어와이즈 랭킹 학습

보상 모델의 학습은 페어와이즈 랭킹 학습을 기반으로 진행됩니다. 이 방법을 통해 보상 모델이 응답의 좋고 나쁨을 수치로 평가할 수 있게 됩니다. 이 수치를 스코어라고 하며, 좋은 응답에서 높은 스코어, 나쁜 응답에는 낮은 스코어를 부여합니다. 또한, 이 스코어는 시그모이드 함수로 0에서 1 범위로 정규화되어, 강화학습의 보상으로 사용됩니다.


페어와이즈 랭킹 학습에서는 페어와이즈 랭킹 손실함수를 사용해 모델을 학습합니다. RLHF의 경우, 페어와이즈 랭킹 손실 함수는 다음과 같이 정의됩니다.


직관적으로 페어와이즈 손실 함수는 평균적으로 볼 때 좋은 응답의 스코어가 나쁜 응답의 스코어보다 높을수록 손실값이 작아지며, 반대로 그렇지 않으면 손실값이 커지는 함수입니다.


예를 들어, 어떤 프롬프트 x에 대해 3가지 응답 A, B, C가 생성되고. 인간평가자에 의해 A > B > C의 순위가 매겨졌다고 가정합시다. 이 겨ㅑㄹ과로 생성되는 데이터세트는 (A, B), (A, C), (B, C)와 같이, 왼쪽에 좋은 응답, 오른쪽에 나쁜 응답이 위치하는 쌍들로 구성됩니다.


학습 전 보상 모델 ri가 각 페어에 대해 다음과 같은 스코어를 출력했다고 합시다.

llm-langchain52-1.png

이 스코어는 C > B > A의 순위를 의미하며, 이는 인간의 선호와 일치하지 않습니다. 이때 각 페어에 대한 페어와이즈 랭킹 손실은 다음과 같이 계산됩니다.

llm-langchain52-2.png

손실함수의 전체값은 이들 손실의 평균(기댓값)으로 계산되며,

이 손실값이 클수록 보상모델이 인간의 선호와 멀어져 있다는 것을 의미합니다. 이후 보상 모델의 파라미터를 업데이트한 결과 다음과 같이 스코어를 출력한다고 가정해 봅시다.

llm-langchain52-4.png

이 스코어는 인간의 선호와 일치합니다. 각 페어에 대한 손실은 다음과 같이 계산됩니다.

이들 손실의 평균은

손실값이 0.76에서 0.49로 감소한 것을 확인할 수 있으며ㅑ, 이는 보상모델이 인간의 선호를 더 정확히 반영하도록 개선되었음을 의미합니다.


④ 강화학습

보상 학습이 학습을 통해 인간의 선호를 적절히 반영할 수 있게 되면, 그 보상모델을 활용하여 언어 모델 자체를 강화학습으로 최적화합니다. RLHF에서는 Proximal Policy Optimization (PPO)이라는 알고리즘을 사용합니다. PPO는 다음 목적 함수를 최대화하도록 언어모델의 파라미터 z를 업데이트합니다.

llm-langchain52-7.png

여기서,

이 목적 함수는 보상항과 정규화항 두 부분으로 구성되어 있으며, 보상항은 보상모델이 산출한 점수를 최대화하는 한편, 정규화항은 원래 지도학습ㅂ된 모델과의 차이가 과도하게 커지는 것을 억제하는 역할을 합니다.


▣ KL 다이버전스

KL(Kullback-Leibler) 다이버전스는 두 확률 분포 간의 차이를 측정하는 지표입니다. 이 이름은 Solomon Kullback과 Richard Leibler라는 두 통계학자의 이름에서 유래되었습니다. KL 다이버전스 DKL(P||Q)는 교차 엔트로피와 정보량의 차이로 정의됩니다.

여기서 P와 Q는 두 확률 분포를, x는 확률 변수(사건)를 나타냅니다. 직관적으로 KL 다이버전스는 Q가 P에 얼마나 가까운지를 나타내는 지표로 이해할 수 있습니다. 실제로, Q가 P와 완전히 일치하는 경우 KL 다이버전스는 0이 됩니다.


언어 모델의 문맥에서는 어떤 입력 x에 대해 현재 모델의 정책 rz와 지도학습(Supervised Fine-tuned)된 모델의 정책 rSFT가 생성하는 출력확률 분포의 차이를 측정하는데 KL 다이버전스가 사용됩니다. 수식으로는 다음과 같습니다.

여기서 rz(y|x)는 현재 모델이 입력 x에 대해 토큰 y가 등장할 확률을 예측한 값이며, rSFT(y|x)는 지도 학습된 모델이 예측한 값에 해당합니다. KL 다이버전스는 0이상의 값을 가지며, 두 분포가 완전히 일치할 때만 0이 됩니다. 값이 클수록 두 분포 간의 차이가 크다는 것을 의미합니다.


▣ 목적 함수에서의 KL 다이버전스

목적 함수 J(z)의 두번째 항에서는 KL 다이버전스에 음수를 곱함으로써, 현재 정책이 지도학습된 모델, 즉, RLHF 학습 이전의 정책으로부터 크게 벗어나지 않도록 합니다. 이를 통해 언어모델로서의 기본 능력을 유지하면서도 인간의 선호에 맞게 최적화할 수 있습니다.


여기서 β (또는 b)는 두번째 항의 가중치를 조절하는 하이퍼파라미터입니다. β 의 값을 크게 설정하면, 지도학습된 모델의 정책과의 차이에 대한 패널티가 강해져 현재의 정책이 지도학습된 모델의 정책에 더 가까워지도록 학습됩니다. 반대로, β 의 갓을 작게 설정하면, 사전 학스된 정책과의 차이에 대한 패널티가 약해져 현재 정책이 보상모델의 스코어를 최대화하는 것을 우선시하게 됩니다.


따라서 β 의 값은 태스크나 목적에 따라 적절히 설정되어야 하며, 적절한 β 값 설정을 통해 인간의 선호를 반영하면서도 언어모델로서의 성능을 유지하는 정책을 학습할 수 있다고 할 수 있습니다.


▣ PPO 손실 함수

RLHF에서는 보상 모델로부터 얻은 보상과 현재 정책과 지도학습(슈퍼바이즈드 파인튜닝)된 모델의 정책 간의 KL 다이버전스를 활용하여, 다음과 같은 목적 함수 J(z)를 정의합니다.

여기서

학습의 목적은 이 목적 함수 J(z)를 최대화하는 것입니다. 그러나 많은 머신러닝 프레임워크에서는 손실함수의 최소화를 목표로 합니다. 따라서, 목적함수 J(z)의 부호를 반전시켜 손실함수 L(z)를 다음과 같이 정의합니다.

이 손실함수 L(z)를 최소화하는 것은 목적함수 J(z)를 최대화하는 것과 동일합니다. 직관적으로 이 방법은 보상 모델로부터 얻은 보상을 최대화하면서 현재의 정책이 사전학습된 (지도학습된) 정책과 크게 벗어나지 않도록 하는 것을 목표로 합니다.



©2024-2025 GAEBAL AI, Hand-crafted & made with Damon Jaewoo Kim.

GAEBAL AI 개발사: https://gaebalai.com

AI 강의 및 개발, 컨설팅 문의: https://talk.naver.com/ct/w5umt5


keyword
이전 05화4. LLM 학습과 LLM 사전학습