트랜스포머 내부를 GPT-2로 임베딩부터 마스크드 어텐션까지 해부한다

Hacker News19일 전조회 4

트랜스포머는 2017년 한 편의 논문에서 처음 제안된 신경망 구조로, 지금은 딥러닝 모델의 사실상 표준으로 자리 잡았다. 핵심은 자기어텐션(self-attention)이다. 시퀀스 전체를 한꺼번에 바라보고 토큰 사이의 장거리 의존성을 잡아내는 이 방식 덕분에, 트랜스포머는 GPT·라마·제미나이 같은 텍스트 생성 모델은 물론 단백질 구조 예측이나 게임 플레이 같은 전혀 다른 영역까지 넘나든다. 이번 설명은 그 내부를 시각적으로 뜯어보는 것을 목표로 한다.

텍스트 생성 트랜스포머의 동작 원리는 단순하다. 사용자가 프롬프트를 넣으면, 모델은 그 뒤를 이을 가장 확률 높은 다음 토큰(단어 또는 단어의 일부)을 고른다. 이를 위해 모델은 임베딩, 트랜스포머 블록, 출력 확률이라는 세 가지 구성요소를 순서대로 거친다.

임베딩 단계는 텍스트를 숫자로 바꾸는 과정이다. 먼저 입력을 토큰으로 쪼개고(토크나이즈), 각 토큰을 벡터로 변환한 뒤, 토큰의 위치 정보를 더해 최종 표현을 만든다. GPT-2의 어휘는 50,257개 토큰으로 구성되며, GPT-2 small은 토큰 하나를 768차원 벡터로 표현한다. 이 임베딩 행렬의 크기는 (50,257, 768)로, 그것만 약 3,900만 개의 파라미터를 차지한다. 의미가 비슷한 토큰은 이 고차원 공간에서 서로 가까이 놓인다.

트랜스포머 블록은 모델의 실제 처리 엔진이다. 멀티헤드 자기어텐션과 MLP(다층 퍼셉트론)로 이루어지며, 대부분의 모델은 이런 블록을 여러 겹 쌓는다. 토큰 표현은 첫 블록에서 마지막 블록으로 넘어가며 계속 정교해지고, 층이 깊어질수록 더 고차원적인 이해가 쌓인다. GPT-2 small의 경우 이 블록이 12개 들어 있다.

자기어텐션은 각 토큰이 다른 토큰과 소통하게 만드는 장치다. 토큰 임베딩은 학습된 가중치를 거쳐 Query·Key·Value 세 벡터로 변환된다. Query는 정보를 찾는 주체, Key는 후보, Value는 실제로 가져올 내용에 대응한다고 보면 이해가 쉽다. GPT-2 small은 이 벡터를 12개의 헤드로 나눠 병렬로 처리하는데, 헤드마다 짧은 구문 관계를 잡거나 넓은 의미 맥락을 추적하는 식으로 서로 다른 역할을 맡는다.

각 헤드에서는 마스크드 자기어텐션이 계산된다. Query와 Key의 점곱으로 어텐션 점수를 만들고, 스케일을 조정한 뒤 상삼각 영역을 마스킹해 미래 토큰을 볼 수 없게 막는다. 다음 토큰을 예측하는 모델이 정답을 미리 엿보면 학습이 성립하지 않기 때문이다. 이후 소프트맥스로 점수를 확률로 바꾸고 드롭아웃으로 정규화한다. 마지막으로 선형 계층과 소프트맥스가 처리된 임베딩을 확률로 변환해 다음 토큰 예측을 완성한다.

배경을 보면, 트랜스포머는 2017년 등장 이후 텍스트 생성 모델의 기본 골격이 됐다. GPT-2 small은 최신 모델도, 가장 강력한 모델도 아니지만 현재 최상위 모델들과 같은 구성요소와 원리를 공유한다. 그래서 기본기를 익히는 출발점으로 적합하다는 평가를 받는다.

개발자 입장에서 이 구조를 뜯어보는 실익은 하이퍼파라미터 감각에 있다. 임베딩 차원, 블록 수, 어텐션 헤드 수는 모델의 메모리 사용량과 연산량을 직접 좌우한다. 임베딩 행렬 하나가 3,900만 파라미터라는 사실은 파라미터 예산을 어디에 얼마나 쓰는지 가늠하는 기준이 된다. 또한 위치 인코딩을 학습으로 익히는 방식 등 모델마다 세부 구현이 다르다는 점도 함께 기억해 둘 만하다.

관련 글