RNN은 문장을 순서대로 읽어야 했다
RNN 계열 모델은 앞 단어의 계산이 끝나야 다음 단어를 처리할 수 있었습니다.
이전 Hidden State가 준비되지 않으면 다음 단어를 계산하기 어렵습니다.
앞쪽 정보가 뒤까지 오려면 여러 단계를 거쳐야 합니다.
GPU가 잘하는 대규모 병렬 계산을 충분히 활용하기 어렵습니다.
Self-Attention은 문장 전체를 함께 볼 수 있었다
Self-Attention에서는 각 단어가 다른 모든 단어를 직접 참고합니다. 앞 계산이 끝날 때까지 기다릴 필요가 없습니다.
멀리 떨어진 단어도 중간 단계를 거치지 않고 바로 참고할 수 있습니다.
문장 속 여러 단어 관계를 한꺼번에 계산할 수 있습니다.
Multi-Head Attention으로 다양한 관계를 동시에 살펴볼 수 있습니다.
Self-Attention을 한 번 계산하면 문장을 충분히 이해한 걸까?
지금까지 만든 Self-Attention은 매우 강력했습니다. 멀리 떨어진 단어도 바로 참고할 수 있었고, 문장 전체의 관계를 한꺼번에 살펴볼 수도 있었습니다.
하지만 연구자들은 여기서 한 가지 질문을 던졌습니다.
사람도 문장을 한 번만 읽고 끝내지 않는다
다음 문장을 처음 읽었을 때는 He가 Tom을 가리킨다는 관계를 먼저 이해할 수 있습니다.
그런데 문장을 다시 살펴보면 더 많은 관계가 보입니다.
He는 Tom을 가리킨다.
Tom은 New York에 산다.
Tom은 그 도시를 좋아한다.
그래서 Attention을 여러 층으로 쌓았다
연구자들은 한 번의 Self-Attention으로 부족하다면 같은 구조를 여러 번 통과하게 하면 된다고 생각했습니다.
하지만 계산을 계속 반복하면 또 다른 문제가 생깁니다.
여러 계산을 거치면서 처음 입력된 단어 정보가 약해질 수 있습니다.
층이 깊어질수록 계산값의 크기가 들쭉날쭉해질 수 있습니다.
앞쪽 층까지 학습 신호가 안정적으로 전달되지 않을 수 있습니다.
원래 정보를 다시 더해 주자
계산 결과만 다음 층으로 넘기지 않고, 처음 들어온 정보도 함께 다시 더해 주면 원래 의미를 잃지 않고 다음 계산으로 전달할 수 있습니다.
계산 결과만 전달
원래 입력을 다시 더함
계산값의 크기도 안정적으로 정리하자
여러 층을 통과하면 어떤 값은 너무 커지고, 어떤 값은 너무 작아질 수 있습니다. 그래서 각 층의 값을 일정한 범위로 정리하는 과정이 필요했습니다.
층을 지날수록 값의 크기가 불안정해질 수 있습니다.
다음 층이 다루기 좋은 안정적인 범위로 맞춥니다.
그리고 단어의 순서도 알려줘야 했다
Self-Attention은 단어들 사이의 관계를 잘 찾지만, 단어가 문장의 몇 번째 위치에 있는지는 따로 알려줘야 합니다.
Tom이 Mary를 좋아합니다.
Mary가 Tom을 좋아합니다.
들어 있는 단어는 비슷하지만 순서가 달라지면 의미도 달라집니다. 그래서 각 단어에 “나는 첫 번째 위치다”, “나는 두 번째 위치다”라는 정보를 함께 넣었습니다.
이제 필요한 부품이 모였다
필요한 부품을 Self-Attention 중심으로 묶자
Transformer는 입력 표현을 계속 바꾸는 모델이다
Transformer의 각 층은 입력 토큰의 벡터를 받아 문맥이 더 풍부한 새로운 벡터로 바꿉니다.
입력 표현
각 단어의 기본적인 벡터 표현
변환된 표현
문장을 처리하는 생각 자체가 달라졌다
앞에서 뒤로 순서대로 읽습니다.
정보를 Hidden State에 담아 다음 단계로 전달합니다.
긴 거리 정보가 여러 단계를 통과해야 합니다.
Self-Attention으로 문장 전체 관계를 직접 계산합니다.
각 단어가 필요한 다른 단어를 바로 참고합니다.
행렬 연산으로 여러 관계를 병렬 처리할 수 있습니다.
지금까지의 학습이 모두 Transformer로 이어진다
문제를 선택해 Transformer의 해결 방향을 확인해 보자
아래 버튼을 눌러 RNN의 문제와 Transformer가 바꾼 방식을 연결해 보세요.
기존 문제
Transformer의 해결 방향
이제 Transformer 안을 직접 들여다볼 차례다
Transformer가 왜 등장했는지는 이해했습니다. 다음 질문은 자연스럽습니다.
다음 페이지에서는 Transformer의 전체 구조를 먼저 큰 그림으로 살펴봅니다.
핵심 정리
- RNN은 문장을 순서대로 처리해야 해 병렬 계산이 어렵습니다.
- 긴 거리 정보가 여러 Hidden State를 거치며 전달되어야 했습니다.
- Self-Attention은 모든 단어가 필요한 위치를 직접 참고하게 했습니다.
- Multi-Head Attention은 문장을 여러 관점으로 동시에 볼 수 있게 했습니다.
- 하지만 Self-Attention 하나만으로는 완전한 모델이 될 수 없습니다.
- 순서 정보, 추가 계산 층, 안정적인 연결 구조가 함께 필요했습니다.
- 이 부품들을 Self-Attention 중심으로 묶은 모델이 Transformer입니다.
- Transformer는 입력 토큰 표현을 문맥이 풍부한 새 표현으로 계속 변환합니다.