AI VIDEO BRIEFING

트랜스포머 신경망 쉽게 이해하기: ChatGPT 기반 원리와 셀프 어텐션

ChatGPT의 토대인 트랜스포머가 영어 문장을 스페인어로 번역하는 과정을 통해 워드 임베딩, 위치 인코딩, 셀프 어텐션, 인코더-디코더 어텐션을 한 단계씩 풀어 설명한다.

ChatGPT의 토대, 트랜스포머 신경망을 한 단계씩 쉽게 이해하기 영상 대표 이미지

핵심 메시지

  • 트랜스포머는 단어를 숫자로 바꾸는 '워드 임베딩'에서 출발하며, 같은 임베딩 네트워크를 모든 단어에 재사용해 길이가 다른 문장도 처리한다.
  • 사인·코사인 곡선을 활용한 '위치 인코딩'으로 단어 순서를 기록하는데, 'Squatch eats pizza'와 'pizza eats squash'처럼 순서가 의미를 바꾸기 때문이다.
  • '셀프 어텐션'은 query·key·value와 내적(dot product) 유사도, 소프트맥스를 이용해 한 문장 안 단어들 사이의 관계를 파악한다.
  • '인코더-디코더 어텐션'은 입력 문장의 중요한 단어가 번역에서 누락되지 않도록 입력과 출력 사이의 관계를 추적한다.
  • 모든 단어의 계산을 동시에 수행할 수 있어 GPU 같은 병렬 하드웨어에서 빠르게 학습·추론할 수 있다.

쉽게 이해하기

이 영상은 통계·머신러닝 교육 채널 StatQuest의 조시 스타머가 ChatGPT의 토대인 트랜스포머 신경망을 단계별로 설명하는 강의다. 그는 'let's go'라는 영어 문장을 스페인어 'vamos'로 번역하는 단순한 예시를 따라가며 트랜스포머의 핵심 구성 요소를 하나씩 보여준다.

첫 단계는 워드 임베딩이다. 신경망은 숫자만 입력으로 받기 때문에, 어휘의 각 토큰(단어·단어 조각·기호)을 가중치를 거쳐 숫자 벡터로 변환한다. 이때 가중치는 처음에 무작위 값으로 시작해 영어 문장과 알려진 스페인어 번역을 학습시키는 역전파(back propagation) 과정을 통해 최적화되며, 같은 임베딩 네트워크를 모든 단어에 복사해 재사용한다.

다음은 단어 순서를 다루는 위치 인코딩이다. 트랜스포머는 교대로 나타나는 사인·코사인 곡선의 y값을 임베딩에 더해 각 단어의 위치를 표시한다. 곡선이 반복되어 값이 겹칠 수 있지만, 임베딩 차원이 커질수록 곡선이 넓어져 단어마다 고유한 위치값 묶음을 얻게 된다.

핵심은 셀프 어텐션이다. 각 단어에 대해 query·key·value 값을 만들고, query와 key의 내적으로 단어 간 유사도를 계산한 뒤 소프트맥스로 0~1 사이 비율로 바꿔 어떤 단어를 얼마나 반영할지 결정한다. 예컨대 'the pizza came out of the oven and it tasted good'에서 'it'을 oven이 아니라 pizza와 올바르게 연결하는 역할을 한다. 원논문은 이런 셀프 어텐션 셀을 8개 쌓은 '멀티헤드 어텐션'을 사용했고, 잔차 연결(residual connection)을 더해 학습을 쉽게 만들었다.

마지막으로 디코더가 인코딩 결과를 스페인어로 풀어낸다. 디코더는 EOS(문장 끝) 토큰에서 시작해 자체 셀프 어텐션과 인코더-디코더 어텐션을 거치고, 완전 연결 계층과 소프트맥스로 출력 단어를 고른다. 'vamos'를 출력한 뒤 다시 디코더에 넣어 EOS가 나올 때까지 반복한다. 실제 모델에서는 단계마다 값을 정규화하고 내적을 스케일링하는 등 추가 장치가 더해진다고 설명한다.

주요 인사이트

  • 트랜스포머의 속도 비결은 모든 단어의 query·key·value와 셀프 어텐션을 순차적이 아니라 동시에 계산할 수 있다는 점이며, 이는 GPU나 클라우드의 병렬 처리에 잘 맞는다.
  • query·key·value를 만드는 가중치 세트는 입력 단어 수와 무관하게 동일한 것을 재사용하기 때문에, 길이가 서로 다른 입력과 출력을 유연하게 처리할 수 있다.
  • 잔차 연결은 셀프 어텐션 같은 하위층이 임베딩·위치 정보를 보존하는 부담 없이 '한 가지 문제'에만 집중하게 해 복잡한 신경망의 학습을 수월하게 한다.
  • 원래 트랜스포머 논문은 약 37,000개의 토큰을 사용했고, 위치 인코딩과 셀프 어텐션 등 각 단계 뒤에 값을 정규화하고 내적을 임베딩 수의 제곱근으로 나눠 스케일링했다.
  • 인코더-디코더 어텐션이 없으면 'don't eat the pizza'에서 'don't'를 놓쳐 정반대 의미가 될 수 있어, 번역에서 입력의 중요한 단어를 지키는 장치가 필수적이다.

자주 묻는 질문

트랜스포머는 단어를 어떻게 숫자로 바꾸나?

워드 임베딩을 사용한다. 어휘의 각 토큰에 입력을 두고 가중치를 곱해 활성화 함수를 거쳐 숫자 값으로 변환하며, 이 가중치는 역전파로 학습된다.

위치 인코딩은 왜 필요한가?

단어 순서가 의미를 바꾸기 때문이다. 'Squatch eats pizza'와 'pizza eats squash'는 같은 단어를 쓰지만 뜻이 정반대이며, 사인·코사인 곡선 값으로 각 단어의 순서를 기록한다.

셀프 어텐션은 무엇을 하나?

문장 안에서 각 단어가 자신을 포함한 모든 단어와 얼마나 유사한지 계산해 단어들 사이의 관계를 파악한다. 예를 들어 'it'이 oven보다 pizza와 더 자주 연관된다면 pizza가 'it'의 인코딩에 더 큰 영향을 준다.

트랜스포머가 빠르게 동작하는 이유는?

단어를 하나씩 순서대로 처리하지 않고 임베딩·위치 인코딩·query·key·value·셀프 어텐션을 모든 단어에 대해 동시에 계산할 수 있어, GPU 같은 다수의 연산 코어에서 병렬로 빠르게 처리할 수 있다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식

#트랜스포머#셀프어텐션#워드임베딩#ChatGPT#딥러닝