[Home] AI로 돌아가기
...
Transformer and Attention

Transformer란 무엇인가?


[LINK][YouTube] Transformer Explainer: Learn how transformer works in LLM like GPT!

...

1. 개요

Transformer는 자연어 처리(NLP) 및 인공지능 모델에서 가장 널리 사용되는 아키텍처 중 하나다.

Transformer는 인공지능 접근 방식을 근본적으로 변화시킨 신경망 아키텍처(architecture)이다. Transformer는 2017년 논문 "Attention is All You Need" 에서 처음 소개되었으며, 이후 OpenAI의 GPT, Meta의 Llama, Google의 Gemini와 같은 텍스트 생성 모델을 구동하는 대표적인 딥러닝 아키텍처가 되었다. 또한, Transformer는 텍스트뿐만 아니라 오디오 생성, 이미지 인식, 단백질 구조 예측, 게임 플레이 등 다양한 분야에서도 활용되며 그 다재다능함을 입증하고 있다.

본질적으로, 텍스트 생성 Transformer 모델은 다음 단어 예측(next-word prediction) 원리에 기반하여 작동한다. 즉, 사용자로부터 입력된 텍스트 프롬프트(prompt)에 대해 가장 가능성이 높은 다음 단어를 예측하는 방식이다. Transformer의 핵심 혁신과 강점은 셀프 어텐션 메커니즘(Self-Attention Mechanism) 을 활용하여 전체 시퀀스를 처리하고, 이전 아키텍처보다 더 효과적으로 장기 의존성(Long-range Dependency)을 포착할 수 있다는 점에 있다.

GPT-2 모델 계열은 대표적인 텍스트 생성 Transformer 모델이다. Transformer Explainer는 1억 2400만 개의 매개변수(parameters)를 가진 GPT-2 (소형) 모델을 기반으로 작동한다. 이 모델은 최신이거나 가장 강력한 Transformer 모델은 아니지만, 현재 최첨단 모델에서 사용되는 많은 아키텍처적 요소와 원리를 공유하고 있어 Transformer의 기초를 이해하는 데 이상적인 출발점이 된다.



트랜스포머는 크게 인코더(encoder)와 디코더(decoder)라는 2개의 주요 블록으로 구성되어 있다. 겉으로 보면 기존의 Seq2Seq(인코더-디코더) 구조와 비슷해 보이지만, 내부에서는 RNN 없이도 더 유연하고 강력하게 문장을 처리할 수 있는 비밀이 숨어 있다.


...
트랜스포머 구조도
출처: https://doi.org/10.3390/a18070414

1) 인코더: 문장을 정밀하게 분석하는 똑똑한 요약가

인코더(그림의 좌측)는 입력된 문장을 받아 그 안에 담긴 의미와 관계를 분석한다. 그 정보를 정리해서 깊이 있는 표현(벡터)으로 바꾸는 역할을 한다.


a) 문장 전체를 동시에 바라보는 셀프 어텐션

예전 RNN은 단어를 하나씩 순서대로 읽었기 때문에 앞부분 내용을 잘 잊어버리는 단점이 있었다. 하지만 트랜스포머의 셀프 어텐션은 문장 안의 모든 단어가 서로 어떤 관계를 맺고 있는지 한 꺼번에 살펴볼 수 있다.

"나는 어제 영화를 봤는데 정말 재미있었다"
이 문장에서 다음 단어들이 어떻게 연결되어 있는지 모두 동시에 계산해서 문맥을 파악한다.

"나는"과 "봤는데"
"영화"와 "재미있었다"

b) 다양한 시선을 활용하는 멀티헤드 어텐션

트랜스포머에서는 문장을 위을 때 다 하나의 시선으로만 바라보지 않는다. 하나의 어텐션만 사용하면 문장을 한 가지 방식으로 해석할 수 있는데, 이렇게 하면 놓치는 정보가 생길 수도 있다. 그래서 트랜스포머는 멀티헤드 어텐션(multi-head attention)이라는 구조를 사용한다. 구조도에서 'Multi-Head Attention'이라고 적힌 부분이다. 말 그대로 여러 개의 어텐션 헤드(head)가 동시에 문장을 바라보며 각기 다른 관점에서 정보를 처리하는 방식이다. 그렇다면 이 '헤드(head)'는 정확히 무엇일까?

셀프 어텐션에서는 각 단어(토큰)가 세 가지 정보, 즉 쿼리(Query), 키(Key), 밸류 (Value)를 만들어 서로 관계를 계산했다. 멀티헤드 어텐션에서도 마찬가지로 쿼리, 키, 밸류를 사용하지만, 중요한 차이는 '여러 개의 서로 다른 쿼리, 키, 밸류'가 동시에 만들어진다는 점이다.

예를 들어 특정한 하나의 단어에서

이렇게 서로 시선이 다른 여러 헤드가 동시에 동작하면서 하나의 문장을 훨씬 풍부하게 이해할 수 있게 되었다.

한 명의 팀원이 하나의 시선이 아니라 여러 개의 시선으로, 즉 여러 부캐(부캐릭터)의 존재, 여러 명의 자신이 있는 모습)가 되어 내용을 분석한다고 상상해 보자.

이 모든 분석 결과를 합쳐서 최종 어텐션 결과를 만들어 내는 것, 그것이 바로 멀티헤드 어텐션의 핵심이다.

하나의 시선만 가진 때보다 훨씬 더 다양한 문맥 정보를 얻을 수 있어 트랜스포머는 번역, 질문 응 답, 요약 같은 작업에서 놀라운 성능을 낼 수 있다.


c) 어텐션 이후 정보를 정제하고 안정화

어텐션으로 중요한 정보를 골라낸 후 트랜스포머는 그 정보를 곧바로 사용하지 않고 한 번 더 정 리하고 다듬는 과정을 거친다. 이때 등장하는 것이 바로 '피드포워드 신경망(feed-forward network)'이다. 구조도에서 'Feed Forward'라고 적힌 부분이다. 어텐션이 문장에서 핵심 정보를 보아 왔다면, 피드포워드는 그 정보를 깔끔하게 정리하고 요약하는 역할을 한다. 마치 중요한 내용에 밑줄을 그어 그것을 다시 노트에 정리하는 느낌이다.

하지만 정보를 계속 가공하다 보면 원래 의미가 사라지거나 지나치게 왜곡되는 문제가 생길 수도 있다. 그래서 트랜스포머는 '잔차 연결(residual connection)'이라는 장치를 함께 사용한다. 구조도에서 'Add'라고 적힌 부분이다. 새로운 정보만 쓰지 않고, 원래 정보도 같이 더해서 '처음에 말했던 내용도 잊지 말자'는 식으로 정보를 함께 전달하는 방식이다. 마치 발표자가 '요약하기는 했지만, 처음 이야기한 핵심은 꼭 기억해 주세요'라고 덧붙이는 것과 비슷하다.

또 하나 계산 중에 값이 너무 커지거나 작아지면 학습이 불안정해질 수 있다. 그래서 레이어 정규화(layer normalization)도 함께 적용된다. 구조도에서 'Norm'이라고 적힌 부분이다. 마치 회의에서 어떤 사람은 너무 크게 말하고, 어떤 사람은 너무 작게 말할 때 모든의 목소리를 적절하게 맞추어 주는 조율자 역할이라고 할 수 있다.

이처럼 어텐션 → 피드포워드 → 잔차 연결 → 정규화의 과정은 트랜스포머 인코더 안에서 한 블록처럼 묶여서 작동한다. 이 구조가 층(layer) 단위로 반복되면서 모델은 문장 의미를 점점 더 깊고 정교하게 이해한다. 하지만 복잡한 내부 구조를 전부 외우지 않아도 괜찮다. 결국 인코더는 입력 문장의 의미와 구조를 잘 요약한 벡터들을 만들어 다음 단계인 디코더에 전달한다. 다음 핵심만 기억해 두면 충분하다.


"인코더는 문장을 한꺼번에 보고 의미를 분석해서 디코더에 전달한다"


2) 디코더: 인코더의 정보를 바탕으로 새로운 문장을 생성하는 '작가'

트랜스포머에서 인코더가 입력 문장을 정밀하게 분석했다면, 디코더(구조도 오른쪽)는 그 분석 결과를 바탕으로 새로운 문장을 만들어 내는 작가와 같은 역할을 한다. 디코더 역시 어텐션 메커니즘을 사용하지만, 인코더와는 조금 다르게 두 종류의 어텐션을 결합하여 활용한다. 바로 디코더 셀프 어텐션(decoder self-attention)인코더-디코더 어텐션(encoder-decoder attention)이다.


a) 지금까지 생성한 문장 관계를 파악하는 디코더 셀프 어텐션

트랜스포머 구조에서 디코더는 문장을 한 단어씩 생성해 나간다. 이때 앞에서 자신이 만든 단어들을 참고하여 다음 단어를 자연스럽게 이어 가야 한다. 예를 들어 첫번째 다음 문장을 작성하고 있다고 하자.


"오늘 날씨가 정말..."
그다음에 어떤 단어가 올지 결정하기 위해 '오늘', '날씨', '정말'이라는 앞 단어들의 흐름을 되짚어 보아야 한다. 바로 이때 디코더는 셀프 어텐션을 활용하여 앞에서 생성한 단어들과 관계를 살펴 본다. 즉, 스스로 생성 중인 문장 흐름을 이해하고, 다음 단어를 더 잘 예측하려는 것이다.

그런데 여기에는 중요한 장치가 필요하다. 트랜스포머는 원래 문장 전체를 동시에 바라보는 구조이다. 아무런 조치 없이 사용하면, 디코더가 아직 생성하지 않은 미래의 단어까지 미리 참고해 버릴 수 있다. 마치 글쓰기 연습을 하는 학생이 다음 문장을 미리 보고 나서 지금 쓸 문장을 결정하는 것과 같다. 이러한 방식에 의숙해지면 실제로 예측하는 능력을 기르기가 어렵다.

그래서 디코더에는 '마스킹(Masking)'이라는 장치가 도입되었다. 자신보다 뒤에 나올 단어는 가려서 보지 못하게 만드는 기능이다. 이 마스킹 덕분에 디코더는 현재까지 생성된 단어들까지만 참고해서 다음 단어를 예측하는 연습을 할 수 있다.

이 과정을 마스크드 셀프 어텐션(masked self-attention)이라고 한다. 구조도에서 'Masked Multi-Head Attention'이라고 적힌 부분이다. 이 장치를 통해 디코더는 마치 글을 차례대로 써 내려가는 사람처럼 논리적이고 순차적인 문장을 만들어 낼 수 있다.


b) 인코더가 분석한 내용을 참고하는 인코더-디코더 어텐션

디코더는 자신이 쓰고 있는 문장 흐름만 보는 것이 아니라, 입력 문장의 의미도 함께 참고해야 한다. 예를 들어 번역 작업을 한다고 해보자. 인코더는 입력된 영어 문장을 정밀하게 분석해서 '무슨 말을 하고 있는지'를 요약한 벡터로 정리해 두었다. 이제 디코더는 그 벡터를 참고하여 '어떤 영어 문장을 한국어로 자연스럽게 바꾸려면 어떤 단어를 써야 할까?'를 판단해야 한다. 이를 위해 디코더는 생성 중인 문장의 각 단어를 만들 때마다 인코더가 만든 의미 벡터 전체를 다시 한 번 살펴본다. 그리고 그중 어떤 정보가 지금 가장 필요한지 동적으로 판단한다.

이 과정에서 사용되는 것이 바로 인코더-디코더 어텐션이다. 이 어텐션은 마치 디코더가 인코더를 바라보는 창문과 같다. 그 창문을 통해 입력 문장을 들여다보면서 "지금 이 단어를 만들려면 어떤 문장의 어떤 부분을 참고해야 할까?"를 실시간으로 결정한다. 즉, 디코더는 앞서 자신이 만든 문장 흐름을 스스로 점검하고(마스크드 셀프 어텐션), 인코더가 이해한 입력 문장을 다시 훑어보며(인코더-디코더 어텐션), 가장 자연스럽고 적절한 다음 단어를 하나씩 생성해 나간다. 이 부분은 디코더 구조에서 'Multi-Head Attention'이라고 적힌 부분이다. 인코더에서 2개의 화살표가 연결되어 있고, 디코더의 Masked Multi-Head Attention에서 하나의 화살표가 연결된 것이 바로 그 의미이다.


c) 정보를 다듬고 안정화하는 마지막 단계

디코더도 인코더와 마찬가지로 어텐션으로 얻은 정보를 그대로 사용하는 것이 아니라, 피드포워드 신경망을 통해 한 번 더 정리한다. 그 과정에서 인코더와 마찬가지로 잔차 연결과 레이어 정규화 를 적용하여 정보가 왜곡되거나 뒤틀 현상이 생기지 않도록 안정화시킨다. 이러한 구조가 여러 층(layer)으로 반복되면서 디코더는 문장 의미를 점점 더 깊이 이해하고, 더 정확하고 자연스러운 문장을 만들어 낸다.


3) 인코더와 디코더가 함께 만드는 '파이프라인'

정리하자면 트랜스포머 구조에서 인코더-디코더 흐름은 다음 표와 같이 요약할 수 있다.

트랜스포머 인코더-디코더 역할 정리

표 20-3 트랜스포머 인코더-디코더 역할 정리
인코더 디코더
역할 셀프 어텐션으로 입력 문장을 이해 셀프 어텐션으로 새로운 문장을 생성
세부 내용
  • 셀프 어텐션으로 입력 문장의 단어 간 관계를 파악
  • 각 단어를 문맥에 맞게 표현하는 의미 벡터를 생성
  • 마스킹된 셀프 어텐션으로 지금까지 생성한 단어만 참고하여 다음 단어를 예측
  • 인코더-디코더 어텐션으로 입력 정보를 반아와 문장을 점진 완성함

디코더는 이렇게 한 단어씩(혹은 한 토큰씩) 만들어 나가면서 문장을 완성한다. 매 단계마다 인코더가 만들어 준 입력 문장의 풍부한 의미 벡터를 끊임없이 참조하므로 한 문장 안의 장기 문맥도 쉽게 놓치지 않는다. 이는 앞에서 배운 RNN 기반인 Seq2Seq 구조보다 훨씬 더 우연하고 효율적이라는 점이 이미 다양한 연구로 입증되었다.

먼저 트랜스포머는 모든 단어(토큰)를 동시에(병렬) 살펴볼 수 있으므로 긴 문장에서도 빠른 학습이 가능하고, 하드웨어 효율도 좋다. 그리고 셀프 어텐션 덕분에 문장 맨 앞쪽 단어와 맨 뒤쪽 단어 사이의 연관성도 쉽게 계산할 수 있다. 멀티헤드 어텐션으로 풍부한 표현을 얻을 수 있는 것도 장점이다. 이것은 여러 '헤드(head)'가 각각 다른 관점으로 단어 간 관계를 살피므로 단어가 갖는 다채로운 의미와 문맥을 놓치지 않기 때문이다. 마지막으로 RNN처럼 순환 구조가 없어 구현이 상대적으로 간단하고, 레이어를 쌓아 올리기 쉬워서 대규모 모델로 확장하기 좋다. 실제로 GPT나 BERT, T5 같은 유명한 모델은 모두 트랜스포머 기반이다.

이처럼 트랜스포머는 "어텐션만으로도 충분하다(Attention is all you need, 2017)"라는 논문에서 처음 소개된 이후, 자연어 처리(NLP)의 판도를 바꾼 핵심 모델이 되었다. 앞으로 또 한 번 인공지능 기술이 혁신된다면 그것은 아마 트랜스포머를 대체할 알고리즘이 개발되었을 때일 것이다.


2. 아키텍처

모든 텍스트 생성 Transformer 모델은 다음의 세 가지 핵심 구성 요소로 이루어져 있다.


1) 임베딩 (Embedding)

임베딩은 입력 데이터를 벡터 표현으로 변환하는 과정이다.


Transformer 모델을 사용하여 텍스트를 생성한다고 가정해 보자. 예를 들어, 다음과 같은 프롬프트를 입력한다고 가정해 보자.

➡ “Data visualization empowers users to”

이러한 입력은 모델이 이해하고 처리할 수 있는 형식으로 변환되어야 한다. 여기서 임베딩(embedding)이 중요한 역할을 하며, 텍스트를 수치적 표현(numerical representation)으로 변환하여 모델이 학습하고 예측할 수 있도록 한다.

프롬프트를 임베딩으로 변환하는 과정은 다음 네 단계로 이루어진다.

a) 토큰화(Tokenization)

b) 토큰 임베딩(Token Embedding)

c) 위치 인코딩(Positional Encoding)

d) 최종 임베딩(Final Embedding)

...
[그림 1] 임베딩 레이어를 확장하여 입력 프롬프트가 벡터 표현으로 변환되는 과정을 시각적으로 나타내었다. 이 과정은 (1) 토큰화 → (2) 토큰 임베딩 → (3) 위치 인코딩 → (4) 최종 임베딩 순서로 진행된다.

2) Transformer 블록

Transformer는 다층 인코더-디코더 구조로 구성되며, 각 블록은 어텐션 메커니즘을 포함한다.


Transformer 모델의 핵심 처리 단위는 Transformer 블록이니다. 이 블록은 멀티헤드 셀프 어텐션(Multi-Head Self-Attention)와 다층 퍼셉트론(MLP, Multi-Layer Perceptron) 레이어로 구성된다. 대부분의 Transformer 모델은 이러한 블록을 여러 개 쌓아 순차적으로 처리하며, 입력된 토큰의 표현을 각 층을 거치며 점진적으로 정교하게 발전시킨다. 이러한 층(layer) 기반 접근법은 입력에 대한 더 높은 수준의 표현을 구축하게 만든다.


a) 멀티헤드 셀프 어텐션 (Multi-Head Self-Attention)

셀프 어텐션(self-attention) 메커니즘은 입력 시퀀스 내에서 토큰 간의 복잡한 관계와 의존성을 포착할 수 있도록 모델이 중요한 부분에 집중(focus)할 수 있게 한다. 다음은 이 셀프 어텐션가 계산되는 단계별 과정이다.


Step 1: Query, Key, Value 행렬 생성
...
[그림 2] Query, Key, Value(Q, K, V) 행렬이 입력 임베딩에서 생성되는 과정
Q, K, V의 역할을 이해하기 위한 예시: 웹 검색

이러한 Q, K, V 벡터를 사용해 어텐션 스코어(attention scores) 를 계산한다. 이 스코어는 예측을 생성할 때 각 토큰이 얼마나 중요한지(얼마나 집중해야 하는지)를 결정한다.


Step 2: 마스킹(Masked Self-Attention)

마스킹된 셀프 어텐션는 시퀀스를 생성할 때 미래의 토큰을 보지 않고(next token prediction) 입력의 중요한 부분에 집중할 수 있도록 모델을 학습시키는 기법이다.

...
[그림 3] Query, Key, Value를 사용하여 마스킹된 셀프 어텐션를 계산하는 과정

Step 3: 출력(Output)

마지막으로, 마스킹된 셀프 어텐션 스코어를 Value 행렬과 곱하여 최종 셀프 어텐션 출력을 얻는다.


b) MLP (다층 퍼셉트론)

...
[그림 4] MLP 레이어는 셀프 어텐션 표현을 더 높은 차원으로 투영하여 모델의 표현력(representational capacity)을 강화한다.

MLP 동작 과정
  1. 첫 번째 선형 변환: 입력의 차원을 768에서 4배(3072) 로 증가시켜 더 풍부한 표현을 만든다.
  2. GELU 활성화 함수: 비선형성을 추가하여 모델이 더 복잡한 패턴을 학습할 수 있도록 한다.
  3. 두 번째 선형 변환: 차원을 다시 768로 줄여 다음 레이어로 전달한다.
  4. 독립적 처리: MLP는 토큰을 독립적으로 처리하며, 단순히 한 표현을 다른 표현으로 매핑하는 역할을 한다.

Transformer 블록의 멀티헤드 셀프 어텐션(Multi-Head Self-Attention)와 MLP 레이어는 함께 작동하여 입력 시퀀스에서 중요한 관계를 학습하고, 더 높은 수준의 표현을 구축한다.
이러한 구조 덕분에 Transformer는 텍스트, 이미지, 오디오 등 다양한 데이터 유형에 대해 뛰어난 성능을 발휘한다.


3) 출력 확률 (Output Probabilities)

Softmax 함수를 사용하여 최종 출력을 확률 분포로 변환한다.


Transformer 블록을 모두 거친 후, 최종 출력을 선형(Linear) 레이어를 통해 처리하여 토큰 예측을 준비한다.


a) 확률 기반 토큰 선택

...
[그림 5] 각 어휘(vocabulary) 내의 토큰은 모델의 logit 값에 따라 확률이 할당된다. 이 확률은 해당 토큰이 다음 단어가 될 가능성(likelihood)을 나타낸다.

b) 온도(Temperature) 하이퍼파라미터

온도(temperature) 값은 출력 확률 분포의 형태를 조절하여 생성된 텍스트의 다양성과 결정론적 성향을 조정하는 중요한 요소이다.

수학적으로, 온도는 다음과 같이 동작한다.

logit÷temperature\text{logit} \div \text{temperature}logit÷temperature

즉, 모델의 logit 값을 온도로 나누는 간단한 연산을 수행한다.


온도 조절이 미치는 영향

가. 온도 = 1 (기본값)

나. 온도 < 1 (낮은 온도)

다. 온도 > 1 (높은 온도)

👉온도를 조정하면서 결정론적(예측 가능한) 출력과 다양한(창의적인) 출력 사이에서 균형을 맞출 수 있다!


3. 고급 아키텍처 기능 (Advanced Architectural Features)

Transformer 모델의 성능을 향상시키는 몇 가지 고급 아키텍처 기능이 있다. 이러한 요소들은 모델의 전체적인 성능에 중요한 영향을 미치지만, Transformer의 핵심 개념을 이해하는 데는 필수적이지 않다.

특히, 레이어 정규화(Layer Normalization), 드롭아웃(Dropout), 잔차 연결(Residual Connections) 은 훈련 과정에서 중요한 역할을 한다.


1) 레이어 정규화 (Layer Normalization)

훈련 과정의 안정성을 높이고 수렴 속도를 개선하는 역할

👉결과적으로, 모델이 초기 가중치에 덜 민감해지고 훈련 과정이 더 안정적으로 진행된다.


2) 드롭아웃 (Dropout)

과적합(overfitting)을 방지하여 모델의 일반화 성능을 향상

👉추론(Inference) 과정에서는 드롭아웃이 비활성화되며, 학습된 서브네트워크(sub-networks)의 앙상블(ensemble) 효과를 통해 성능이 향상된다.


3) 잔차 연결 (Residual Connections)

기울기 소실(vanishing gradient) 문제 해결 & 깊은 신경망 학습 가능

GPT-2에서는 Transformer 블록 내에서 두 번 사용된다.
1) MLP 레이어 전에 적용
2) MLP 레이어 후에 한 번 더 적용

👉 이렇게 하면 그래디언트가 더 원활하게 흐르고, 초기 레이어까지 충분한 업데이트가 이루어질 수 있습니다.


Layer Normalization, Dropout, Residual Connections 는 Transformer 모델의 훈련 안정성과 일반화 성능을 높이는 데 중요한 역할을 한다.

👉 이러한 요소들이 결합되어 Transformer 모델이 더 강력하고 효과적으로 동작할 수 있다! 


4. 인터랙티브 기능 (Interactive Features)

Transformer Explainer는 사용자가 Transformer 모델의 내부 동작을 직접 탐색할 수 있도록 설계된 인터랙티브한 도구이다.
다음과 같은 기능을 활용하여 Transformer의 작동 방식을 실험해 볼 수 있다.


1) 입력 텍스트 실험

✅ 자신만의 텍스트 시퀀스를 입력하여 모델이 어떻게 처리하는지 확인


2) 온도(Temperature) 슬라이더 조절

✅ 모델의 예측 결과를 더 결정론적(deterministic) 또는 더 창의적(creative)으로 조절 가능


3) 어텐션 맵(Attention Maps) 상호작용

✅ Transformer 모델이 특정 입력 토큰에 얼마나 집중하는지(어텐션 가중치)를 시각적으로 확인 가능


Transformer Explainer는 단순한 모델이 아니라, 직접 실험하고 이해할 수 있는 도구이다.

👉 이러한 기능들을 활용하여 Transformer 모델의 작동 원리를 더 깊이 이해할 수 있다! 🚀


5. Transformer Explainer의 구현 방식

Transformer Explainer는 브라우저에서 실시간으로 작동하는 GPT-2 (소형) 모델을 사용하여 사용자 입력에 따라 즉각적으로 시각적 변화를 보여주는 도구이다.

1) 모델 및 백엔드

2) 프론트엔드 구성 요소


6. 개발팀

이 프로젝트는 조지아 공과대학교(Georgia Institute of Technology) 소속의 다음 연구자들에 의해 개발되었다.

이들은 Transformer의 내부 작동 원리를 직관적으로 이해할 수 있도록 설계된 인터랙티브 도구를 개발함으로써 교육과 연구 분야에서 Transformer 모델의 접근성을 크게 향상시켰다. 🚀