200줄 파이썬 코드로 이해하는 LLM의 모든 것!

by DD
3개월 전
조회수 8

200줄 파이썬 코드로 구현된 마이크로GPT(microGPT)를 통해 LLM의 핵심 알고리즘을 시각적으로 설명함

토큰화(Tokenization), 임베딩(Embedding), 어텐션(Attention) 등 LLM의 주요 구성 요소들을 단계별로 분석

손실 함수(Loss Function) 계산 및 역전파(Backpropagation) 과정을 상세히 설명하여 모델 학습 원리 제시

생성된 이름(Generated Names) 예시를 통해 모델의 학습 과정을 직관적으로 보여주고, 추론(Inference) 과정 설명

마이크로GPT(microGPT)의 토큰화(Tokenization) 과정

마이크로GPT(microGPT)는 텍스트를 숫자로 변환하는 토큰화(Tokenization) 과정을 통해 모델 학습을 시작한다. 각 문자를 고유한 정수로 매핑하는 단순한 방식을 사용하며, BOS(Beginning of Sequence) 토큰을 추가하여 이름의 시작과 끝을 표시한다. 실제 LLM에서는 서브워드 토큰화(Subword Tokenization)를 사용하여 어휘 크기를 줄이고 효율성을 높인다. 이 과정은 텍스트 데이터를 모델이 이해할 수 있는 형태로 변환하는 핵심 단계이다.

임베딩(Embedding)을 통한 의미 부여

마이크로GPT(microGPT)는 각 토큰에 임베딩(Embedding) 벡터를 할당하여 의미를 부여한다. 각 토큰은 16차원의 벡터를 가지며, 모델 학습을 통해 이러한 벡터가 조정된다. 위치 임베딩(Position Embedding)을 추가하여 토큰의 순서를 고려하며, 토큰 임베딩과 위치 임베딩을 더하여 네트워크의 입력으로 사용한다. 이 과정을 통해 모델은 토큰 간의 관계와 문맥을 학습하고, 단어의 의미를 파악한다.

어텐션(Attention) 메커니즘의 작동 원리

마이크로GPT(microGPT)는 어텐션(Attention) 메커니즘을 사용하여 토큰 간의 관계를 파악한다. 각 토큰은 쿼리(Query), 키(Key), 밸류(Value) 벡터를 생성하고, 쿼리와 키 간의 내적을 통해 관련성을 계산한다. 소프트맥스(Softmax) 함수를 적용하여 어텐션 가중치를 계산하고, 가중 합을 통해 출력값을 생성한다. 인과 마스크(Causal Mask)를 사용하여 각 토큰이 이전 위치의 토큰에만 접근하도록 제한하여, 모델이 자기 회귀적으로 작동하도록 한다.

역전파(Backpropagation)를 통한 학습

마이크로GPT(microGPT)는 역전파(Backpropagation) 알고리즘을 사용하여 모델을 학습시킨다. 모델의 예측과 실제 값 사이의 오차를 계산하고, 손실 함수(Loss Function)를 최소화하는 방향으로 모델의 파라미터를 업데이트한다. 각 연산 노드는 로컬 미분을 기억하고, 역방향으로 그래디언트를 전파하여 각 파라미터의 기여도를 계산한다. 아담(Adam) 옵티마이저를 사용하여 학습률을 조절하고, 모델의 수렴 속도를 높인다.

추론(Inference) 과정 및 온도 조절

학습된 모델은 추론(Inference) 과정을 통해 새로운 이름을 생성한다. BOS 토큰으로 시작하여, 모델은 다음 토큰을 예측하고, 예측된 토큰을 다시 입력으로 사용하여 다음 토큰을 생성하는 과정을 반복한다. 온도(Temperature) 조절을 통해 생성 결과의 다양성을 제어하며, 온도가 높을수록 더 다양한 결과를, 낮을수록 더 일관된 결과를 얻을 수 있다. 이 과정을 통해 모델은 학습된 패턴을 기반으로 새로운 데이터를 생성한다.

Microgpt explained interactively