13P by GN⁺ 2일전 | ★ favorite | 댓글 1개
  • 트랜스포머 모델의 구조와 작동 원리를 시각적으로 설명하며, 어텐션 메커니즘이 어떻게 병렬 학습과 번역 성능을 향상시키는지 보여줌
  • 모델은 인코더와 디코더 스택으로 구성되며, 각 인코더는 셀프 어텐션피드포워드 신경망 두 층으로 이루어짐
  • 셀프 어텐션 계산 과정을 벡터와 행렬 수준에서 단계별로 설명하고, 멀티헤드 어텐션이 다양한 표현 공간을 학습하도록 확장함
  • 포지셔널 인코딩, 잔차 연결, 레이어 정규화, 디코더의 마스킹 어텐션 등 핵심 구성 요소를 구체적으로 시각화함
  • 이 글은 트랜스포머의 기본 개념을 쉽게 이해하도록 돕는 대표적 자료로, MIT·Stanford 등 주요 대학 강의와 교재에서도 활용됨

트랜스포머 개요

  • 트랜스포머는 어텐션 기반 신경 기계 번역 모델로, 기존 Google Neural Machine Translation보다 특정 작업에서 더 높은 성능을 보임
    • 주요 장점은 병렬화가 용이하다는 점이며, Google Cloud TPU의 참조 모델로 권장됨
  • 모델은 인코더와 디코더 스택으로 구성되며, 각 인코더는 동일한 구조를 가지되 가중치를 공유하지 않음
  • 인코더 입력은 셀프 어텐션 층을 거쳐 문맥 정보를 통합하고, 이후 피드포워드 신경망을 통과함
  • 디코더는 인코더 구조에 더해 인코더-디코더 어텐션 층을 포함하여 입력 문장의 관련 부분에 집중함

텐서 흐름과 임베딩

  • 입력 문장은 워드 임베딩 알고리듬을 통해 각 단어를 512차원 벡터로 변환
  • 인코더의 각 층은 동일한 크기의 벡터 리스트를 입력받아 처리하며, 문장 길이는 하이퍼파라미터로 설정
  • 피드포워드 층은 각 위치의 벡터를 독립적으로 처리하므로 병렬 연산이 가능

셀프 어텐션의 개념

  • 셀프 어텐션은 각 단어가 문장 내 다른 단어를 참조해 더 나은 표현을 학습하도록 함
    • 예: “The animal didn’t cross the street because it was too tired”에서 “it”은 “animal”과 연관됨
  • RNN의 은닉 상태 유지와 달리, 트랜스포머는 셀프 어텐션으로 문맥 정보를 통합

셀프 어텐션 계산 단계

  • 각 단어 임베딩으로부터 Query, Key, Value 벡터를 생성 (차원 64)
  • Query와 Key의 내적(dot product) 으로 각 단어 간의 관련 점수를 계산
  • 점수를 √64로 나눈 뒤 소프트맥스를 적용해 확률 분포로 정규화
  • 각 Value 벡터에 소프트맥스 점수를 곱하고 합산해 최종 어텐션 출력을 생성
  • 실제 구현에서는 이 과정을 행렬 연산으로 수행해 효율성을 높임

멀티헤드 어텐션

  • 여러 개의 어텐션 헤드(기본 8개) 를 사용해 다양한 표현 공간을 학습
    • 각 헤드는 독립적인 Q/K/V 가중치 행렬을 가짐
  • 여러 헤드의 출력을 연결(concat) 후 추가 가중치 행렬 WO로 결합
  • 이를 통해 모델은 문맥의 다양한 측면을 동시에 포착

포지셔널 인코딩

  • 트랜스포머는 순서를 직접 처리하지 않으므로, 각 단어 임베딩에 위치 벡터를 더함
  • 위치 벡터는 사인(sin)코사인(cos) 함수를 이용해 생성되며, 단어 간 상대적 거리 정보를 제공
  • 이 방식은 훈련 데이터보다 긴 문장에도 확장 가능
  • 2020년 업데이트에서는 두 신호를 교차(interleave) 하는 방식도 소개됨

잔차 연결과 정규화

  • 각 서브층(셀프 어텐션, 피드포워드)에는 잔차 연결(residual connection)레이어 정규화(layer normalization) 가 적용
  • 이러한 구조는 기울기 소실 방지학습 안정성 향상에 기여

디코더 구조

  • 디코더는 인코더 출력으로부터 Key/Value 벡터를 받아 인코더-디코더 어텐션을 수행
  • 마스킹(masking) 을 통해 미래 단어를 참조하지 않도록 제한
  • 마지막에는 Linear 층Softmax 층을 통해 단어 확률 분포를 생성
    • 예: 어휘 크기가 10,000일 경우, 각 출력 벡터는 10,000차원 확률 분포로 변환

학습과 손실 함수

  • 학습 시 모델 출력 확률 분포를 정답 분포(원-핫 인코딩) 와 비교
  • 크로스 엔트로피(cross-entropy) 또는 KL 발산을 사용해 오차를 계산하고 역전파로 가중치를 조정
  • 빔 서치(beam search) 를 통해 여러 후보 번역을 유지하며 정확도를 높임

후속 연구 및 참고 자료

  • 관련 논문: Attention Is All You Need, Training Tips for the Transformer Model, Self-Attention with Relative Position Representations
  • 구현 자료: Tensor2Tensor 패키지, Harvard NLP PyTorch 가이드, Colab Notebook
  • 트랜스포머는 이후 LLM-book.com의 확장판(Chapter 3)으로 발전했으며, Multi-Query AttentionRoPE 위치 임베딩 등 최신 모델을 다룸

결론

  • 트랜스포머는 병렬화 가능한 어텐션 기반 구조로, 현대 딥러닝의 핵심 모델로 자리잡음
  • 본 글은 트랜스포머의 구조·수학·직관을 시각적으로 설명한 대표 자료로, Stanford·MIT·Harvard 등 주요 대학 강의에서 참고 자료로 사용됨
Hacker News 의견들
  • 트랜스포머의 기초를 배울 때 이 글을 읽었음. 시각화가 정말 도움이 되었음
    하지만 실제 LLM을 적용하는 업무에서는 트랜스포머 구조를 아는 게 거의 쓸모가 없었음. 다만 내부 동작을 어렴풋이 이해하고 있다는 심리적 안정감은 있었음
    LLM의 행동을 구조로 설명하려는 시도는 함정임. 최신 모델들은 강화학습 등으로 인해 예측 불가능한 emergent phenomena를 보이기 때문임
    예전엔 LLM이 수학이나 코딩을 잘 못할 거라 확신했지만 완전히 틀렸음. 결국 구조만으로 모델의 능력을 추론하는 건 한계가 있음
    요즘 휴가 중에 PyTorch로 트랜스포머를 직접 구현하며 복습 중임. 흥미롭고 재미있음
    입문하려면 Sebastian Raschka의 LLMs from Scratch 자료를 추천함.
    혹시 Jay Alammar의 2024년 출간된 책을 읽어본 사람이 있다면 최신 관점에서 추천할 만한지 궁금함

    • 나도 동의하면서도 일부는 다르게 생각함. AI 엔지니어로 일하면서 “고전적인” 딥러닝을 직접 쓸 일은 거의 없지만, LLM 내부를 깊이 이해하는 능력이 상위 1% 엔지니어를 구분한다고 믿음
      모델의 제약을 직관적으로 파악할 수 있는 감각이 생기기 때문임. 예전에 Hugging Face의 Clem Delangue에게 직접 들은 조언인데, 그 이후로 LLM 구조를 깊이 공부했고 큰 도움이 되었음
      코딩 부트캠프 졸업생에게도 같은 조언을 함 — Python과 React만으로도 충분히 일할 수 있지만, 컴퓨터 아키텍처와 저수준 언어를 이해하면 장기적으로 훨씬 강력한 개발자가 될 수 있음
    • 대부분의 튜토리얼이 attention 메커니즘을 단어 중심으로 설명하는 게 문제라고 생각함. 실제로 트랜스포머 내부에는 단어에 직접 대응하는 토큰이 없음
      토큰은 단어 조각이 아니며, 언어 처리나 이미지 처리는 입력 단계에서만 의미가 있음. 이런 오해가 트랜스포머의 잠재력을 과소평가하게 만든 원인이라 봄
    • 기본적인 이해가 왜 중요한지 예를 들면, HN에서 LLM이 코드에 주석을 너무 많이 생성한다는 불만이 많음
      하지만 이건 오히려 코드 품질을 높이는 현상임. causal transformer의 positional encoding 덕분에 모델이 지역적 추론을 위한 임시 토큰을 남기고 쉽게 잊을 수 있음
      즉, 일종의 일회용 스크래치패드처럼 작동함. 해결책은 LLM의 출력을 후처리하는 것이지, 모델이 주석 생성을 억제하게 하는 게 아님
    • Welch Labs의 mechanistic interpretability 관련 좋은 영상이 있음: YouTube 링크
    • LLM에 대한 사람들의 인식은 세 부류로 나뉜다고 느낌
      1. LLM은 쓸모없는 단순 생성기라고 믿는 사람
      2. 이미 AGI가 도달했다고 믿는 사람
      3. LLM이 5년 내 세상을 파괴할 거라 믿는 사람
        ChatGPT 출시 이후 이 세 그룹의 비율은 거의 변하지 않았고, 증거로 설득되는 일도 드묾
  • Transformer Explainer 팀의 시각화가 정말 훌륭했음.
    Transformer Explainer와 3blue1brown 영상을 함께 보니 이해가 확실히 됨

    • 지금까지 본 시각화 중 가장 뛰어난 자료 중 하나였음
  • 저자 Jay Alammar가 직접 남긴 댓글에서 다른 좋은 트랜스포머 학습 자료를 소개함
    관련 링크

  • 트랜스포머 설명 자료가 너무 많아져서 모나드 튜토리얼처럼 느껴짐.
    어떤 사람은 깨달음을 얻었다고 생각하지만 실제로는 여전히 혼란스러운 상태에서 그걸 널리 공유하려 함

    • 그렇지만 이 블로그 글은 여전히 가장 명확한 트랜스포머 설명 중 하나라고 생각함
    • 인터넷에는 하나의 설명만 존재해야 할 이유가 없음. 자신에게 맞는 설명을 찾으면 됨
      수학이나 전자공학 개념을 배울 때도 첫 설명은 어렵지만, 여러 버전을 접하면 결국 이해가 깊어짐
  • 혹시 내가 시대에 뒤처진 걸지도 모르겠지만, 트랜스포머가 기존의 U-net 같은 딥러닝 구조를 완전히 대체했는지 궁금함

    • 전혀 그렇지 않음. 트랜스포머에 대한 과도한 집착이 실제 성능 데이터를 뒷받침하지 못함
      예를 들어 CNN은 여전히 강력하며, 특히 의료 영상 등 특수한 비전 작업에서는 더 적합함
      회전 불변 모델, 그래프 신경망, 포인트 클라우드 모델 등에서는 트랜스포머가 오히려 부적합할 수도 있음
      즉, 여전히 다양한 대체 아키텍처가 존재함
      관련 논문: CNNs can still do just as well
  • 이 책을 가지고 있는데, 팀이 LLM을 시스템에 도입하기로 했을 때 정말 생명줄 같은 자료였음

    • 하지만 트랜스포머 구조를 이해해야만 LLM을 다룰 수 있는 건 아니라고 생각함
      LLM은 결국 인간적 추론을 모방하는 합성 시스템이므로, 내부 구조를 알아도 오류 패턴을 예측하긴 어려움
      경험과 실험으로 감을 잡는 게 더 중요함
  • 트랜스포머의 내부는 결국 컴파일러 내부처럼 덜 중요해질 것이라 생각함.
    대부분의 개발자는 내부 구현보다 “어떻게 활용할지”에만 관심을 가질 것임

    • 실제로 많은 실무자들은 LLM을 쓰면서도 기초적인 머신러닝 개념조차 모름. bias와 variance의 차이를 아는 사람도 드묾
    • 하지만 누군가는 여전히 내부를 깊이 이해해야 함. SOTA를 갱신하고 유지보수하려면 내부 구조를 아는 전문가가 필요함
      운영체제, 컴파일러, GPU/TPU 같은 하드웨어처럼 트랜스포머도 지속적으로 개선되어야 하므로, 이런 지식을 가진 사람들의 역할은 오히려 더 중요해짐
  • 훌륭한 글이며, 최근의 Illustrated Evo 2 프로젝트에 영감을 준 듯함
    NVIDIA Research 블로그 링크

  • 사람들은 Key/Query/Value를 특별한 개념으로 생각하지만, 사실 트랜스포머는 행렬 곱셈의 확장 구조일 뿐임
    일반적인 신경망의 한 층이 matrix * input이라면, 트랜스포머는 input * MatrixA, input * MatrixB, input * MatrixC를 계산하고 이를 조합함
    결국 모든 것은 행렬 연산의 반복임. 자세한 내용은 PyTorch 블로그 참고

    • 나는 convolution을 K/Q/V 메커니즘의 정신적 모델로 떠올림.
      attention도 위치와 무관하게 학습되고, 입력의 큰 구간을 새로운 값으로 변환하며, 여러 헤드가 병렬로 다른 측면을 학습함. convolution의 커널과 유사한 개념임
  • 이 가이드는 정말 방대함. Claude Code 같은 도구와 함께 사용해 PyTorch 의사코드를 생성해보면 개념을 시각적으로 이해하는 데 큰 도움이 됨
    몇 시간 동안 몰입해서 배우기 좋은 자료임