7. 오차 역전파법

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

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

경사하강법은 모델에 포함된 모든 파라미터에 대해 손실함수의 기울기를 계산해야 합니다. 예를 들어, GPT-3에는 1750억(175B)개의 파라미터가 있습니다. 이를 역전파법(Backpropagation)입니다.

오차 역전파법의 기본 개념은 문제를 여러 개의 하위 문제로 분할하고, 하위 문제들 간의 의존관계를 활용하여 문제를 해결하는 것입니다. 몇번 계산하고 그 결과를 저장하고 재사용함으로써 계산량을 줄일 수 있습니다. 동적계획방법에 대한 이해는 필요하지 않지만, 동일한 접근 방식으로 문제를 해결해 봅시다. 먼저 문제를 분할하는 방법과 종속성을 활용하여 어떻게 해결하는지 설명합니다.


(1) 문제의 정리

여기서 해결해야 할 문제는 모델에 포함된 모든 파라미터에 대한 손실함수의 미분을 계산하는 것입니다. 매우 어려워 보일 수 있지만, 하나의 블록에 집중하여 정리하면 쉽게 접근할 수 있습니다.

복잡한 모델이라도 간단하게 정리할 수 있음을 보여주는 예로 앞서 소개했던 Transformer의 주의 메커니즘에 존재하는 WQ의 기울기를 계산하는 것을 생각해 WQ를 사용하는 식은 다음과 같습니다.

llm-langchain58-1.png


여기 X는 입력데이터(토큰 임베딩 행렬), WQ는 주의 메커니즘에 사용되는 가중치 행렬입니다. 이때 우리는 함수 F(WQ) = L로서, WQ에 대한 기울기를 구하는 것을 목표로 합니다.

llm-langchain58.png 주의 매커니즘 WQ에 초점을 맞춘 함수분할

이와 같이 위 그림과 같습니다. F(WQ)는 WQ이후 블록을 모두 포함하는 거대한 함수이지만 이는 2개의 함수로 분해할 수 있습니다. WQ포함하는 부분만을 추출한 함수 f(WQ)이고, 두번째 함수는 그 후의 부분을 포함하는 함수 g(Q), 여기서는 Q = XWQ의 계산에 초점을 맞추었지만, 다른 계산에서도 동일하게 해당계산과 그 이후의 계산으로 분해할 수 있습니다. 블록으로 구성된 함수로 분해할 수 있습니다.


(2) 의존관계의 추출

함수를 분할한 시점에서 이제 문제를 살펴봅시다. WQ에 대한 F(WQ)의 기울기입니다. F(WQ)는 f(WQ)와 g(Q)로 이루어진 함성함수이므로 연쇄법칙을 사용하여 다음과 같이 계산할 수 있습니다.

llm-langchain58-2.png


(3) 하위문제를 해결하는 순서

지금까지 살펴본 과정을 통해 의존관계가 명확해졌습니다. f(WQ)의 기울기를 계산하기 위해서는 먼저 X와

llm-langchain58-3.png

를 계산해 두어야 합니다.


먼저 X가 값은 손실함수를 계산할 떄 이미 필요한 값이므로 손실함수를 계산할 때 X 어딘가에 저장해두면 이후에 재사용할 수 있습니다. 다음으로

llm-langchain58-3.png

를 살펴봅시다. 앞서 F(WQ)의 기울기를 구하기 위해 F(WQ)을 f(WQ)와 g(Q)로 분할했는데, 이제 g(Q)의 기울기를 계산하기 위해서는 g(Q)를 구성하는 각 블록을 다시 세분화하여 해당 블록들의 기울기를 구해야 합니다.

마지막 블록의 미분을 해석적으로 구할 수 있으면, 그 결과를 이용해 바로 전단계 블록의 기울기를 계산할 수 있고, 같은 방식으로 전 단계의 블록 기울기를 차례대로 구해나가면, 블록까지 기울기를 확장해 나갈 수 있습니다.



(4) 오차역전파법의 알고리즘

계산의 의존성을 아래 그림과 같이 나타냅니다. 이 그림에서는 모델이 여러 개의 블록으로 나뉘어 생성하고, 손실함수의 각 블록에 대한 편미분은 해당 블록의 출력에 대한 편미분과 그 블록의 입력을 이용하여 계산됩니다. 과정을 '순전파(Forward Propagation)'라고 부릅니다. 이때 계산 결과를 저장해 두면 나중에 재사용할 수 있습니다.

각 블록의 기울기를 계산할 때는 해당 블록이 나타내는 함수의 미분을 구해야 합니다. 편미분은,

llm-langchain58-4.png

와 같이 구할 수 있습니다. 역전파시에는 이미

llm-langchain58-5.png

가 계산되어 있으므로,

llm-langchain58-6.png

각각을 계산할 수 있습니다. 아래 표에서는 소프트맥스와 교차 엔트로피의 순전파 및 역전파식이 제시되어 있습니다. 소프트맥스-교차 엔트로피의 역전파식은 정답 라벨의 원-핫 벡터를 행으로 하는 행렬Y와 소프트맥스 함수의 출력P의 차이가 계산되는 점에 주목해야 합니다. 또한, 각 연산의 역잔파식은 연쇄법칙과 행렬 및 벡터 미분의 기본공식을 조합하여 유도할 수 있으며, PyTorch나 TensorFlow등의 자동미분(AutoGen) 라이브러리를 사용 하면 역전파 계산을 자동화할 수 있습니다.

llm-langchain59.png 계산 종속성


기본 연산 목록

llm-langchain59-1.png


(5) 학습과정에서 발생하는 문제와 대응책

뉴럴 네트워크 학습 과정에서는 다양한 문제가 발생합니다.


과적합(Overfitting)

기울기 소실(Vanishing Gradient)

기울기 폭발(Exploding Gradient)


이번에는 이런 문제를 설명하고 이에 대한 간단한 대처방안을 소개합니다.


① 과적합 (Overfitting)

과적합이란 모델이 훈련 데이터에 과도하게 적합하여 미디의 데이터에 대한 일반화 성능이 저하되는 현상을 말합니다. 과적합이 발생하면 모델은 훈련 데이터에 대해서는 정확도를 보이지만, 테스트 데이터나 실제 어플리케이션 상황에서는 성능이 떨어지게 됩니다.


예를 들어, Zhang의 실험에서는 LLM평가에 자주 사용되는 데이터세트인 GSM8K에 대해 과적합이 발생하고 있음을 시사하고 있습니다. 데이터세트인 GSM1K에 대해 최대 13%의 성능저하가 보고되었습니다.


일반적으로 과적합을 방지하기 위한 대책으로는 다음과 같은 기법이 사용됩니다.


정규화(Regularization, Ng 2004): 모델의 복합도에 패널티를 부여하여 과도한 적합을 방지하는 기법입니다. L1정규화나 L2정규화가 주로 사용됩니다.

드롭아웃(Dropout, Srivastava 2014): 학습시 뉴런을 무작위로 비활성화하여 과도한 적합을 방지하는 방법입니다.

얼리스토핑(Early Stopping, Prechelt 2002): 검증 데이터에서 예측성능이 향상되지 않는 시점에서 학습을 중단하는 방법입니다.



② 기울기 소실(Vanishing Gradient)

기울기 소실(Hochreiter 1998)은 오차 역전파법(Backpropagation)에서 기울기가 각층을 거칠 때마다 지수 함수적으로 작아지는 현상을 말합니다. LLM(대규모언어모델)에서는 많은 층을 사용하기 때문에 기울기 소실을 방지하는 대책이 매우 중요합니다.

기울기 소실을 방지하기 위해 다음과 같은 방법이 사용됩니다.


ReLU 활성화 함수(Nair et al, 2010): 기울기 소실이 발생하기 어려운 활성화 함수입니다.

잔자연결(He et al, 2015): 각 층의 입력을 출력에 직접 추가하는 방식으로 기울기가 직접 전달되어 기울기 소실을 방지할 수 있습니다.

Layer Normalization(Ba et al, 2016): 각 층의 입력을 정규화하는 방법으로 기울기 소실을 완화할 수 있습니다.


이러한 방법은 이전에 소개한 Transformer에도 적용되어 기울기 소실문제를 효과적으로 방지하는데 기여합니다.


③ 기울기 폭발 (Exploding Gradient)

기울기 폭발(Pascanu et al. 2013)은 오차 역전파법에서 기울기가 각층을 거칠 때마다 지수함수적으로 커지는 현상을 의미합니다. LLM(대규모언어모델)은 많은 층을 사용합니다.

기울기 폭발을 방지하기 위한 대책으로는 다음과 같은 방법이 사용됩니다.


기울기 클리핑(Pascanu et al, 2013): 기울기의 노름(벡터의 크기)이 임계값을 초과하는 경우 해당 기울기를 정규화하는 방법입니다.

Layer Normalization(Ba et al, 2016): 각 층의 입력을 정규화하여 기울기 폭발을 방지하는 방법입니다.




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

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

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


keyword
이전 07화6. 경사하강법(Gradient Descent)