LLM 시대, LangChain(랭체인)으로 배우는 AI 소프트웨어 개발
LLM이 성능을 충분히 발휘하려면, 파라미터가 적절히 설정되어야 합니다. 이러한 파라미터 설정은 학습(Traninig)이라는 프로세스를 통해 이루어지며, LLM의 파라미터는 여러 학습 기법을 거쳐 최종적으로 결정됩니다. 이번에는 이러한 학습 기법들의 종류와 각 기법 간의 차이점 및 공통점에 대해 설명합니다.
LLM의 최종 파라미터 값은 다양한 학습기법을 순차적으로 적용함으로써 결정됩니다. 아래 그림은 LLM학습의 전반적인 흐름을 보여주며, 사각형으로 표시된 박스가 각각의 학습 기법을 나타냅니다.
사전학습(Pre-training) : 대규모 텍스트 데이터를 활용하여, 모델이 일반적인 언어 이해 능력을 습득하도록 합니다.
지시튜닝(Instruction Tuning) : 모델이 특정지시나 명령에 따라 적절히 응답할 수 있는 능력을 부여합니다.
RLHF(Reinforcement Learning from Human Feedback): 사람의 피드백을 활용하여 인간의 선호도에 부합하는 응답을 생성하도록 모델 파라미터를 조정합니다.
지시튜닝과 RLHF는 파인튜닝(Fine-Tuning) 기법에 해당하며, 이는 이미 사전학습된 모델의 파라미터를 특정 태스크에 맞추어 미세조정하는 과정을 의미합니다. 한편, 사전학습은 무작위로 초기화된 파라미터에서 시작하는 학습과정입니다.
각 학습기법마다 사용하는 데이터세트나 학습목표는 다르지만, LLM의 파라미터를 조정한다는 점은 공통적입니다. 사전학습부터 시작해 점차 파라미터를 조정함으로써, LLM은 높은 성능을 발휘할 수 있게 됩니다. 이 파라미터 조정 과정에서는 훈련용 데이터세트 전체에 대한 손실함수를 최소화하는 것을 목표로 합니다.
아래 그림은 손실함수(Loss Function) 최소화를 통한 학습과정을 나타냅니다. 손실 함수는 모델 예측과 실제 값의 차이를 수치화하는 것으로, 이 차이가 작을수록 모델의 예측이 정확함을 의미합니다. 각 학습기법에서는 서로 다른 데이터세트와 손실함수를 사용할 수 있습니다. 예를 들어, 지시튜닝(Instruction Tuning)에서는 태스크 지시와 답변 페어로 구성된 데이터세트를 사용하며, 손실함수로 교차 엔트로피(Cross-Entropy) 손실함수를 적용합니다. 그러나, 손실함수가 달라도 파라미터를 업데이트하는 메커니즘 자체는 모든 학습 기법에서 공통적으로 사용됩니다.
파라미터 업데이트는 '경사하강법(Gradient Descent)'을 기반으로 하는 알고리즘에 의해 이루어집니다. 경사하강법에서는 손실함수의 경사를 계산하고, 그 경사에 따라 개별 파라미터를 갱신합니다. 또한, 이 경사를 효율적으로 계산하기 위해 '오차역전파(Backpropagation)'이라는 알고리즘이 사용됩니다. 오차역전파은 손실(오차)을 역방향으로 전파해 각 층의 경사를 계산하는 기법입니다.
이제부터 각 학습 기법에 대해 자세히 설명하고, 그 다음에 파라미터 업데이트의 공통 메커니즘인 경사하강법과 오차역전파법에 대해 다룹니다.
머신러닝(기계학습)의 목적은 모델이 데이터세트에서 학습한 지식을 바탕으로 미지의 데이터에 대해서도 좋은 성능을 내도록 파라미터를 조정하는 것입니다. 이러한 능력을 '범용성(또는 일반화 성능, Generalization Performance)'이라고 부릅니다. 일반화 성능을 평가하기 위해, 머신러닝에서는 데이터세트를 훈련(Training)데이터, 검증(Validation)데이터, 테스트(Test)데이터로 나누어 사용합니다.
훈련 데이터: 모델의 파라미터를 학습하기 위해 사용되는 데이터입니다. 모델은 훈련 데이터를 통해 손실함수를 최소화하도록 파라미터(가중치, 편향)를 업데이트합니다.
검증 데이터: 하이퍼파라미터의 조정이나 모델 선택을 위해 사용되는 데이터입니다. 여러 모델이나 하이퍼파라미터 조합을 시도한 뒤, 검증 데이터에서 가장 좋은 성능을 보이는 모델이나 하이퍼파라미터를 선택합니다.
테스트 데이터: 모델의 일반화 성능을 평가하기 위해 사용되는 데이터로 모델의 학습이나 선택과정에는 전혀 사용되지 않습니다.
하이퍼파리미터(Hyperparameters)는 모델의 구조나 학습 알고리즘을 제어하는 파라미터로 보통 사람이 직접 설정합니다. 훈련 데이터로부터 학습되는 파라미터(가중치, 편향)와는 구분하여 하이퍼파라미터라고 부릅니다. 예를 들어, Transformer의 디코스택 갯수, 멀티헤드 어텐션의 헤드수, 임베딩 벡터차원뿐만 아니라, 이번에 다룰 학습률(learning rate), 배치크기(batch size)등도 하이퍼파라미터에 포함됩니다. 하이퍼파라미터 평가는 모델을 훈련데이터로 학습시킨뒤, 검증 데이터를 이용해 이뤄집니다.
데이터세트를 분할하는 것은 모델의 일반화 성능을 올바르게 평가하기 위해 중요합니다. 모델이 훈련 데이터에서는 높은 성능을 내더라도, 실제로 새로운 데이터에 대해 성능이 저하될 수 있습니다. 이렇게 훈련 데이터에만 과도하게 적합된 상태를 '과적합(overfitting)'이라고 합니다. 모델이 과적합되지 않고 미지의 데이터에 대해서도 우수한 성능을 발휘하는지 확인하기 위해 학습에 사용하지 않은 테스트 데이터를 사용합니다.
데이터세트 분할 비율은 과제나 데이터세트의 크기에 따라 달라집니다. 일반적으로 훈련:검증:테스트 = 6:2:2 또는 8:1:1등의 비율이 자주 사용됩니다. 다만, 데이터세트의 규모가 매우 큰 경우에는 검증 데이터와 테스트 데이터의 비율을 더 작게 설정하기도 합니다.
사전학습(Pre-training)은 LLM학습과정에서 가장 먼저 이루어지는 단계로, 대규모 텍스트 데이터를 사용하여 언어의 일반적인 특징과 구조를 학습합니다. 사전학습의 주요 목적은 모델에 다양한 범용 능력을 부여하는 것입니다. 예를 들어, LLM을 웹페이지에서 수집한 방대한 텍스트 데이터로 학습하면, 질문응답, 번역, 언어이해, 요약등의 태스크를 수행할 수 있게 된다고 알려져 있습니다.
사전학습에는 주로 인터넷에 존재하는 웹페이지, 서적, 논문 등 다양하고 방대한 코퍼스가 사용됩니다. 코퍼스(corpus)는 언어 학습을 위해 수집된 텍스트 데이터 집합을 의미합니다. 아래 표는 여러 LLM의 사전학습에 사용되는 코퍼스 예시를 보여줍니다.
사전학습용 코퍼스의 예시
LLM의 학습ㅂ에는 자기지도학습ㅂ(Self-supervised Learning) 기법이 사용됩니다. 자기지도학습은 대량의 라벨이 없는 데이터로부터 자동으로 지도신호를 생성하는 방법입니다. LLM의 경우, 다음 토큰을 예측하는 태스크를 학습함으로써 언어에 관한 지식을 획득합니다. 이 다음 토큰 예측 태스크는 자기 회귀 언어 모델링 (Autoregressive Language Modeling) 또는 NTP(Next Token Prediction)라고도 불립니다. LLM의 Transformer는 각 i번째 토큰에 대해 i + 1번째 토큰의 확률 분포를 생성하며, 실제 i + 1번째 토큰이 지도신호로 사용됩니다.
교차신호(ground truth)에 기반하여 다음 토큰이 올밥르게 예측되었는지를 평가하기 위해 손실함수가 사용됩니다. LLM의 사전학습에서는 주로 교차 엔트로피 손실(Cross-entropy Loss) 함수를 사용합니다. 이번에는 우선 기초가 되는 정보량, 엔트로피, 교차 엔트로피에 대해 설명한 다음, 교차 엔트로피 손실함수를 소개합니다.
▣ 정보량
정보량(Information Content)은 어떤 사건이 발생할 때 얻는 정보의 양을 나타내는 지표입니다. 정보량은 그 사전이 얼마나 예측하기 어려운지(즉, 예상치 못할 정보로 드문 정도)를 나타내며, 사건 발생 확률이 낮을수록 정보량은 커집니다. 정보량은 다음 식으로 표현됩니다.
여기서 p(x)는 사건 x가 발생할 확률을 의미합니다. 예를 들어, 주사위의 눈이 2가 나오는 사건과 주사위 눈이 짝수인 사건을 비교해 보겠습니다.
주사위의 눈이 2가 나오는 사건의 정보량
주사위 눈이 짝수인 사건의 정보량
이처럼 사건의 발생확률이 낮을수록 정보량은 커지게 됩니다.
▣ 엔트로피
엔트로피는 확률변수의 예측 가능성을 나타내는 지표로 정보량의 기댓값으로 정의됩니다. 즉, 엔트로피는 확률분포가 얼마나 불확실성을 내포하고 있는지를 나타냅니다. 엔트로피는 다음과 같은 식으로 표현됩니다.
여기서 p(x)는 사건 x가 발생할 확률을 의미합니다. 엔트로피가 높다는 것은 사건의 발생을 예측하기 어려워 정보의 불확실성이 크다는 것을 뜻합니다. 예를 들어, 주사위의 각 눈이 모두 동일한 확률(1/6)을 가질 경우, 어떤 눈이 나올지 예측하기 가장 어려워지므로 엔트로피는 최대가 됩니다. 직관적으로 전체 확률 분포가 얼마나 많은 예측 불가능한 사건을 포함하고 있는지를 나타내는 지표라고 볼 수 있습니다.
▣ 교차 엔트로피
교차 엔트로피는 두 확률 분포 p와 q사이의 차이를 나타내는 지표입니다. 교차 엔트로피 값이 작을수록 두 확률 분포가 유사함을 의미합니다. 교차 엔트로피 H(p, q)는 예측한 확률분포 q의 정보량(즉 해당 사건이 얼마나 예측하기 어려운지 예상치 못한 정도)을 실제 확률 분포 p로 평균(기댓값)한 값으로 정의됩니다. 수식은 아래와 같습니다.
여기서, p(x)와 q(x)는 각각 사건 x의 확률로 0에서 1사이의 값을 갖습니다. 또한, log q(x)의 범위는 대략 -3에서 0까지가 됩니다. 직관적으로 자주 발생하는 사건의 예측이 어려워 (예: p(x)가 큰데 q(x)가 작은 경우) -p(x)logq(x)는 큰 값을 가지게 됩ㅂ니다. 반대로 자주 발생하는 사건에 대해 모델이 정확히 예측하는 경우 log q(x)의 값이 0에 가까워져 -p(x)log q(x)는 작아집니다.
다음으로 p(x)가 작은 경우를 고려해봅니다. 이 경우, q(x)의 값이 어떻든 -p(x)log q(x)는 그리 크게 나오지 않습니다. 예를 들어, p(x) = 0인 경우, q(x) = 1이라고 하더라도 -p(x) log q(x) = 0이 되어, 해당 사건은 손실에 직접적으로 기여하지 않습니다.
하지만, 전체 확률의 합은 1이 되어야 하므로, 발생하지 않는 사건에 높은 확률을 할당하면, 실제 발생하는 사건의 예측 확률이 낮아집니다. 그 결과, 실제로 발생하는 사건에 대해 -p(x) log q(x)값이 커져 전체 손실이 증가하게 됩니다.
▣ 교차 엔트로피의 예시
예를 들어, 언어모델이 "내가 좋아하는 과일은 사과입니다."라는 학습 데이터를 기반으로 "내가 좋아하는 과일은" 다음 토큰을 예측한다고 가정해 봅시다. 정답은 "사과"이므로, 실제 확률 분포는 p(x = 사과) = 1로 간주합니다. 여기서 모델의 예측 확률 분포가 p(x = 사과) = 0.9, q(x = 귤) = 0.1이라고 가정합니다.
이 예시에서 교차 엔트로피 H(p, q)의 계산은 다음과 같이 이루어집니다.
여기서 p(귤) = 0이므로, p(귤)log q(귤)항은 0이 됩니다. 따라서 교차 엔트로피는
한편 q(x = 사과)가 1에 가까워질수록 log q(사과)의 절대값은 작아지며, 이에 다라 손실도 작아집니다. 즉, 모델의 예측확률분포가 실제 확률 분포에 가까워질수록 교차 엔트로피값은 작아집니다.
▣ 언어모델의 교차 엔트로피 손실
언어모델의 사전학습에서는 실제 확률분포 p(x)가 정답 토큰에 대해서는 1, 그 외 토큰에 대해서는 0인 특별한 분포로 설정됩니다. 이를 일반적인 교차 엔트로피 식에 적용하면 다음과 같이 단순화할 수 있습니다.
'정답 토큰에 대해서만 p(x) = 1, 나머지 토큰에 대해서는 p(x) = 0'이라는 조건을 대입했을 때의 과정입니다.
정답 토큰에 대해서만 p(정답토큰) = 1, 나머지 토큰은 0이라고 가정하면,
따라서,
즉, 확률분포 p가 '정답 토큰에 대해서만 1, 그외에는 0'인 특별한 경우에 위 식을 대입하면 교차 엔트로피 H(p, q)는 단순히 -log q(정답토큰) 형태가 됩니다.
©2024-2025 GAEBAL AI, Hand-crafted & made with Damon Jaewoo Kim.
GAEBAL AI 개발사: https://gaebalai.com
AI 강의 및 개발, 컨설팅 문의: https://talk.naver.com/ct/w5umt5