성장通

트랜스포머 기반 LLM 동작 원리 톺아보기 본문

카테고리 없음

트랜스포머 기반 LLM 동작 원리 톺아보기

백악기작은펭귄 2024. 4. 14. 22:03

트랜스포머 기반 LLM의 동작 원리 톺아보기

트랜스포머(Transformer)는 자연어 처리(NLP) 분야에서 사용되는 심층 신경망 아키텍처의 한 종류로, 2017년 Google에서 발표한 "Attention is All You Need" 논문에서 처음 등장했다. 이러한 트랜스포머 기반으로 BERT, GPT와 같은 거대 NLP 모델들이 등장했고, 현재는 다양한 변형을 거쳐 NLP 도메인뿐만 아니라 Vision 도메인 등에서도 활발하게 사용되고 있는 알짜배기 아키텍처이다.

 

이번 포스팅에서는 이 트랜스포머를 깊이 있게 설명하기보다는, 트랜스포머 아키텍처를 가볍게 살펴보고, 이러한 트랜스포머를 기반으로 하는 LLM이 어떻게 동작하는지 단계별로 톺아볼 것이다. 트랜스포머를 좀 더 깊이 있게 알고 싶다면 아래 포스팅을 참고하자.

 

(포스팅 작성이 완료되면 해당 부분이 링크로 대체됩니다)

 

트랜스포머 기본

- 트랜스포머는 RNN, LSTM과 같은 기존의 순차적인 데이터 처리 방식에서 벗어나 전체 입력 데이터를 한 번에 처리하는 병렬 처리 방식을 사용하여 더 빠른 학습 속도와 효율성을 제공한다.

 

- 트랜스포머의 핵심은 셀프 어텐션(Self-Attention) 메커니즘으로, 이 메커니즘을 통해 모델은 입력된 텍스트의 각 부분이 다른 부분과 어떻게 관련되는지를 학습하고, 이를 바탕으로 문장 내 단어 간의 관계를 이해하고 강조한다. 예를 들어, "The animal didn't cross the street because it was too tired"라는 문장에서 "it"이 "animal"을 가리키는 것을 모델이 정확히 인식할 수 있게 돕는 것이다.

 

- 트랜스포머 모델은 크게 인코더디코더 두 부분으로 구성된다. 인코더는 입력 문장을 처리하고, 디코더는 인코더의 출력을 바탕으로 새로운 문장을 생성한다. 이 두 부분은 모두 여러 개의 층으로 구성되어 있으며, 각 층은 Self-Attention 블록과 Feed-Forward 신경망으로 이루어져 있다.

 

그렇다면 이러한 아키텍처가 LLM에서는 어떻게 동작하는지를 살펴보도록 하자.

 

LLM 동작 방식 톺아보기

트랜스포머 기반 아키텍처의 뛰어난 성능과 효율성 덕에, 대량의 데이터를 학습하고 이를 통해 추론을 수행하는 LLM에서 매우 중요한 역할을 한다.

 

LLM은 트랜스포머의 기본 구성 요소인 인코더와 디코더를 사용한다. 이때 BERT와 같이 인코더만을 활용하는 모델이 있고, GPT와 같이 디코더 부분만을 활용하는 모델이 있다.

 

  1. 토큰화(Tokenization):
    텍스트가 입력되면 해당 텍스트는 가장 먼저 토큰화를 통해 토큰(Token)으로 분할된다. 토큰이란 단어 혹은 단어의 일부나 구두점과 같이 기본적인 텍스트의 단위를 의미한다. 예를 들어, "Don't Stop"이라는 문장은 토큰화를 거쳐 ["Don", "'", "t", "stop"]과 같이 분리될 수 있다.
  2. 임베딩(Embedding):
    각 토큰은 임베딩 레이어를 거쳐 고차원의 실수 벡터(numerical vector)로 변환된다. 임베딩 레이어는 학습 가능한 벡터 임베딩 공간으로, 데이터에 따라 학습되어 토큰 간의 의미론적 거리를 추정할 수 있게 된다. 예를 들어, "big"과 "large"는 비슷한 맥락에서 많이 사용되므로 근접한 거리에 위치하게 된다. 이러한 임베딩 과정을 거쳐 각 토큰을 고차원의 공간에 배치함으로써 단어 간 의미론적인 관계를 생성하고 이를 활용할 수 있게 되는 것이다.

  3. 포지셔널 인코딩(Positional Encoding):
    트랜스포머 구조에서는 각 토큰 임베딩에 포지셔널 인코딩을 추가하게 된다. 포지셔널 인코딩이란 문장 내 토큰의 위치에 따라 달라지는 벡터로, 단어의 순서를 유지하여 모델이 어순을 이해하도록 한다. 이와 같이 의미론적인 정보를 담는 임베딩 벡터와 위치적 정보를 담는 포지셔널 인코딩이 합쳐짐으로써 의미론적 정보와 위치적 정보를 모두 포함하는 벡터를 만들게 된다.

  4. 셀프 어텐션 메커니즘(Self-Attention Mechanism):
    앞서 만들어진 벡터는 셀프 어텐션 레이어로 전달되게 된다. 셀프 어텐션 가중치는 학습 가능한 파라미터로, 시퀀스 내 각 단어의 중요도를 반영한다. 이 단계는 단어를 처리할 때 모델이 문장의 다른 부분에 얼마나 집중해야 하는지를 결정하는 Attention score를 계산하게 된다. 예를 들어, "The cat that sat on the mat ate food"라는 문장에서 모델은 누가 음식을 먹었는지를 이해하기 위해 "ate"를 처리할 때 "cat"과 더 많이 연관시키도록 학습된다.

  5. Attention to Feed-Forward Networks:
    어텐션 가중치를 적용한 후, 벡터는 일련의 피드포워드 신경망에 입력된다. 이 네트워크는 Dense layer로, 각 토큰 벡터는 독립적으로 같은 네트워크를 통과하게 된다. 일련의 층을 거치면서 어텐션 가중치에 비선형 변환을 수행하고 이를 통해 입력 데이터의 복잡한 특징을 추출하고 학습하게 된다. 최종 피드포워드 계층의 출력은 로짓(logit) 벡터로, 각 로짓은 모델의 vocab에서 가능한 모든 다음 토큰의 가능성 점수를 나타낸다.

  6. 소프트맥스(Softmax Layer):
    이후 이 로짓 값은 소프트맥스 층을 거쳐 확률 분포로 정규화된다. 이는 각 단어가 다음 토큰이 될 확률을 정량화한 값으로, 모두 합하였을 때 1이 된다. 예를 들어, "The cat is on the"라는 문장 뒤에 "mat"나 "floor"과 같은 단어들이 올 확률이 "rocket"과 같은 단어보다 높게 할당된다.

  7. 다음 토큰 예측:
    최종적으로, 앞서 계산된 확률 중 가장 높은 확률에 해당하는 토큰을 다음 출력으로 선택하게 된다. 이 과정을 반복적으로 반복함으로써 트랜스포머 기반 LLM은 일관되고 맥락에 맞는 문장과 단락을 생성할 수 있다.