AI VIDEO BRIEFING
디코더 온리 트랜스포머 완전 해설: 워드 임베딩부터 마스크드 셀프 어텐션까지 ChatGPT 구조 파헤치기
ChatGPT가 사용하는 디코더 온리 트랜스포머의 동작을 워드 임베딩, 위치 인코딩, 마스크드 셀프 어텐션, 잔차 연결 순서로 차근히 따라가고, 인코더와 디코더를 나누는 일반 트랜스포머와 구조가 어떻게 다른지까지 한국어로 정리했습니다.

핵심 메시지
쉽게 이해하기
신경망은 숫자만 입력으로 받기 때문에, 트랜스포머가 문장을 다루려면 먼저 단어를 숫자로 바꿔야 합니다. 이때 쓰이는 방법이 워드 임베딩으로, 어휘에 들어 있는 단어와 기호마다 입력 하나를 두고 해당 위치에만 1을 넣은 뒤 연결 가중치를 곱해 값을 뽑아냅니다. 단어뿐 아니라 단어 조각이나 문장 끝을 뜻하는 EOS 같은 기호도 함께 다루기 때문에, 각 입력 단위를 통틀어 토큰이라고 부릅니다. 같은 임베딩 신경망을 단어마다 반복해서 쓰기 때문에 프롬프트 길이가 달라져도 그대로 처리할 수 있습니다.
숫자로 바뀐 단어에는 순서 정보가 없다는 문제가 남습니다. 영상은 '스쿼치가 피자를 먹는다'와 '피자가 스쿼치를 먹는다'처럼 같은 단어를 쓰고도 뜻이 정반대가 되는 예를 들어 순서 추적의 중요성을 설명합니다. 트랜스포머는 위치 인코딩으로 이 문제를 풀며, 널리 쓰이는 방식은 사인과 코사인 곡선을 번갈아 두고 각 단어 위치에 해당하는 y값을 임베딩에 더하는 것입니다. 곡선이 반복되어 값이 겹칠 수 있지만, 임베딩 차원이 늘어날수록 곡선의 폭도 넓어져 단어마다 고유한 위치 값의 조합이 만들어집니다.
문장 안에서 단어들이 서로 어떻게 얽혀 있는지를 담당하는 것이 마스크드 셀프 어텐션입니다. 계산은 각 단어의 위치 인코딩된 값에 가중치를 곱해 쿼리를 만들고, 다른 가중치로 키를, 또 다른 가중치로 값을 만든 다음, 쿼리와 키의 내적으로 유사도를 구하는 순서로 진행됩니다. 유사도를 소프트맥스에 통과시키면 0과 1 사이의 비율이 나오고, 이 비율만큼 각 단어의 값 벡터를 섞어 그 단어의 어텐션 결과를 얻습니다. 핵심은 마스킹으로, 어떤 단어든 자기 자신과 그 앞에 나온 단어까지만 유사도를 계산하며 이런 성질 때문에 자기회귀 방식이라고도 불립니다.
어텐션 결과에는 위치 인코딩된 원래 값을 다시 더해 주는 우회 경로가 붙는데, 이것이 잔차 연결입니다. 덕분에 어텐션 층은 임베딩과 위치 정보를 보존하는 부담을 덜고 단어 사이 관계를 찾는 데 집중할 수 있어 학습이 쉬워집니다. 마지막으로 완전 연결 층과 소프트맥스를 거치면 어휘에 있는 각 토큰이 다음에 올 확률로 바뀌고, 가장 높은 토큰이 다음 단어로 뽑힙니다. 원래 GPT 논문에서는 새 완전 연결 층 대신 앞서 쓴 워드 임베딩 신경망을 뒤집어 재사용했다고 영상은 덧붙입니다.
응답 생성은 프롬프트를 처리할 때와 완전히 같은 부품을 그대로 다시 쓰는 방식으로 진행됩니다. 프롬프트 인코딩이 끝나면 EOS 토큰에서 출발해 임베딩·위치 인코딩·마스크드 셀프 어텐션·잔차 연결·완전 연결 층을 거쳐 첫 단어를 만들고, 그 단어를 다시 입력에 넣어 EOS가 나올 때까지 반복합니다. 이때 어텐션 범위에 프롬프트까지 포함시키는 것이 중요한데, '먹지 마'처럼 앞쪽의 결정적인 단어를 놓치면 정반대 뜻의 답이 나오기 때문입니다. 일반 트랜스포머와의 차이도 여기서 갈립니다. 일반 트랜스포머는 인코더와 디코더를 따로 두고 추론 때 셀프 어텐션과 인코더-디코더 어텐션 두 가지를 쓰며 마스크드 셀프 어텐션은 학습 중 출력 토큰에만 적용하지만, 디코더 온리는 단위 하나로 입력과 출력을 모두 처리하고 언제나 마스크드 셀프 어텐션만 씁니다.
주요 인사이트
- 임베딩 신경망과 쿼리·키·값 가중치를 단어마다 새로 만들지 않고 재사용한다는 점이 길이가 다른 프롬프트를 같은 모델로 처리할 수 있게 하는 실질적인 장치다.
- 마스킹은 성능을 위한 장식이 아니라, 다음 단어를 만드는 모델이 정답을 미리 보고 학습하는 부정행위를 구조적으로 막는 제약이다.
- 프롬프트 안 단어들의 인코딩은 서로 순차적으로 기다릴 필요가 없어 동시에 계산할 수 있고, 연산 코어가 여러 개일 때 속도 이점이 생긴다.
- 어텐션 셀 하나로는 잡히지 않는 관계가 있어 원래 GPT 논문에서는 각자 다른 가중치를 가진 마스크드 셀프 어텐션 셀 12개를 쌓았다.
- 잔차 연결은 성능 지표보다 학습 난이도의 문제로, 어텐션 층에서 원래 정보를 지켜야 하는 짐을 덜어 주는 역할을 한다.
자주 묻는 질문
마스크드 셀프 어텐션과 일반 셀프 어텐션은 무엇이 다른가요?
일반 셀프 어텐션은 입력의 모든 단어를 앞뒤 구분 없이 보고 관계를 계산하지만, 마스크드 셀프 어텐션은 각 단어가 자기 자신과 그 앞에 나온 단어까지만 볼 수 있습니다. 뒤에 오는 단어를 볼 수 없다는 성질 때문에 자기회귀 방식이라고도 부릅니다.
쿼리, 키, 값은 각각 무슨 역할을 하나요?
쿼리는 지금 계산 중인 단어를 대표하는 숫자이고, 키는 비교 대상이 되는 단어들을 대표하는 숫자입니다. 쿼리와 키의 내적으로 유사도를 구한 뒤 소프트맥스로 비율을 만들고, 그 비율만큼 각 단어의 값 숫자를 섞어 최종 어텐션 결과를 만듭니다.
응답 생성은 어디서 시작하나요?
프롬프트 인코딩이 끝난 뒤 EOS 토큰을 넣어 첫 단어를 만들어 내는 방식이 흔히 쓰입니다. 문장 시작을 뜻하는 SOS를 쓰는 경우도 있으며, 어느 쪽이든 이후에는 방금 만든 단어를 다시 입력에 넣어 EOS가 나올 때까지 반복합니다.
일반 트랜스포머와 비교했을 때 구조상 차이는 무엇인가요?
일반 트랜스포머는 입력을 처리하는 인코더와 출력을 만드는 디코더를 따로 두고, 추론 때 셀프 어텐션과 인코더-디코더 어텐션 두 종류를 씁니다. 디코더 온리 트랜스포머는 단위 하나가 입력 인코딩과 출력 생성을 모두 맡고, 입력과 출력 양쪽에 항상 마스크드 셀프 어텐션 한 종류만 적용합니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗