본문 바로가기
AI · 인공지능/AI 뉴스

ChatGPT의 동작 원리 - 기계 학습 모델 「Transformer」가 자연스러운 문장을 생성하는 구조

by 두우우부 2023. 5. 4.
반응형

ChatGPT 등 대화형 채팅 AI의 기반이 되는 대규모 언어 모델은 Google이 개발한 기계 학습 아키텍처인 'Transformer'를 채용하고 있습니다. 그런 Transformer가 문맥에 따른 자연스러운 문장을 출력하는 구조에 대해서, AI 전문가 Luis Serrano 씨가 해설하고 있습니다.

What Are Transformer Models and How Do They Work?
https://txt.cohere.com/what-are-transformer-models/

 

What Are Transformer Models and How Do They Work?

TL;DR: Transformers are a new development in machine learning that have been making a lot of noise lately. They are incredibly good at keeping track of context, and this is why the text that they write makes sense. In this blog post, we will go over their

txt.cohere.com


Transformer는 간단히 말하자면 문장의 맥락에 따라 다음을 생성하는 기술입니다. 「문장의 다음을 생성하는 기술」은 예전부터 연구되어 왔으며, 스마트폰 등에도 예측 입력 기능이 탑재되어 있습니다만, 이러한 예측 기능은 과거의 입력 이력으로부터 빈출 어구를 선택하고 있는 것뿐이며, 문맥을 무시한 후보 문구가 선출되는 경우가 많습니다. 

예를 들어, 스마트폰의 문자 보내기 앱에서 '이거'를 입력한 다음 예측 입력 후보의 첫 단어만 계속 선택해 보겠습니다.

 



그렇게 완성된 문장은 의미 불명의 문장이 되어버렸습니다.


한편, Transformer는 문맥을 유지하면서 문장의 다음을 생성할 수 있습니다. 

예를 들어 'Write a story.'라는 문장을 입력하면 'Once'가 계속될 것으로 예측하고,
'Write a story. Once'를 입력하면 'upon'이 계속될 것으로 예측,
'Write a story. Once upon'을 입력하면 'a'가 계속될 것으로 예측합니다.


Transformer는 크게 나누어
1.「Tokenization(토큰화)」
2.「Embedding(임베딩)」
3.「Positional encoding(위치 인코딩)」
4.「Transformer block(트랜스포머 블록)」
5.「Softmax(소프트 맥스)」
라는 5단계의 조작을 거쳐 문장을 인식 및 생성하고 있습니다.
 


각 조작의 상세는 아래와 같습니다.

◆ 1. 토큰화

Transformer에서는, 문장을 「토큰」이라고 불리는 단위로 세분화하고 나서 처리를 실시합니다. 

예를 들어 "Write a story."라는 문장은 "Write", "a", "story", "."과 같이 세분화됩니다.


영문의 경우는 1 단어가 1 토큰이 되는 경우가 많습니다만, 단어의 종류나 언어에 의해 토큰의 나누는 방법은 다릅니다. 

ChatGPT가 어떻게 문장을 인식하는지 한눈에 알 수 있는 'Tokenizer'

 

ChatGPT가 어떻게 문장을 인식하는지 한눈에 알 수 있는 'Tokenizer'

AI는 문장을 읽고 쓸 때, 「토큰」이라는 단위로 인식을 실시합니다만, 보통의 문장이 토큰으로 어떻게 분해되는지를 한눈에 보여주는 툴, 「Tokenizer 」를 OpenAI가 게시했습니다. OpenAI API https://pla

doooob.tistory.com

 

◆ 2. 임베딩

토큰화가 완료되면 각 토큰을 수치로 변환하는 "임베딩"이 수행됩니다.
임베딩은 토큰을 "토큰과 숫자의 대응 목록(벡터)"과 비교하여 수행됩니다.



벡터는 본래 여러 종류가 존재하지만, 벡터가 2종류라고 가정했을 경우, 토큰의 매입 후의 상태는 아래와 같습니다.

각 토큰의 좌표를 확인하면, "사과(5,5)", "바나나(6,5)", "딸기(5,4)", "체리(6,4)"와 같이 의미가 가까운 토큰이 가까운 좌표에 위치하고 있음을 알 수 있습니다. 이와 같이, 임베딩에 의해 토큰을 수치화하는 것으로, 각 토큰이 비슷한지 어떤지를 알 수 있게 됩니다.



◆ 3. 위치 인코딩

각 토큰을 수치화하면, 다음으로 문장 전체를 1개의 벡터로 변환할 필요가 있습니다. 문장 전체를 하나의 벡터로 하려면, 각 토큰의 좌표의 합계를 도출하면 됩니다. 

예를 들어, 문장에 포함되는 토큰의 좌표가 「2, 3」, 「2, 4」, 「1, 5」인 경우, 문장 전체의 좌표는 「2+2+1, 3+4+5」=「5, 12」가 됩니다.

다만, 단순히 좌표를 합하는 수법의 경우, 「I'm not sad, I'm happy」, 「I'm not happy, I'm sad」처럼 「같은 단어가 다른 순서로 늘어선 문장」이 동일 좌표에 존재하게 되어 버립니다. 이 동일한 좌표 문제를 해결하기 위해 Transformer는 각 토큰에 정렬 순서를 나타내는 위치 토큰을 추가합니다. 

예를 들어 "Write a story."라는 문장은 "Write", "a", "story", "."로 나뉘어 위치 벡터가 추가되어 "Write(1)", "a(2)", "story(3)", ".(4)"가 됩니다.

 

◆ 4. Transformer 블록

토큰의 매입과 위치 인코딩이 완료되면 「콘텍스트에 맞추어 다음을 생성한다」라는 처리가 실행됩니다. 이 처리는 「Transformer 블록」이라고 불리는 처리를 몇 개나 통과하는 것으로 실행됩니다.



Transformer 블록 중에서도 중요한 것은, 문맥을 고려할 수 있도록 토큰에 가중치를 주는 「Attention(주의)」라고 불리는 공정입니다. 

예를 들어, 'bank'라는 단어에는 '둑'과 '은행'이라는 두 가지 의미가 있으며, 'bank'라는 단어만 표시되면 어느 의미인지 판단하기 어렵습니다. 그러나 'The bank of the river(강의 둑)', 'Money in the bank(은행의 돈)'과 같이 'bank'와 세트가 되는 단어에 의해 'bank'의 의미를 파악할 수 있습니다. 그래서 Transformer에서는 '둑'을 의미하는 'bank'를 'river' 근처의 좌표에, '은행'을 의미하는 'bank'를 'Money' 근처의 좌표에 배치하여 문장을 해치지 않고 단어를 연결할 수 있습니다.


위와 같은 문맥에 따른 가중치 처리를 실시한 뒤, Transformer 블록에서는 문장의 다음으로서 적절한 단어를 복수 도출해, 각각의 단어에 스코어를 부여합니다.


◆ 5. 소프트 맥스

Transformer 블록에서 문장에 이어질 적절한 단어 후보를 도출하면, 각 후보의 스코어를 확률로 변환하는 소프트 맥스 처리를 실행합니다. 그리고 가장 확률이 높은 단어가 문장에 이어서 출력됩니다. 다음 예제의 경우 "Write a story."라는 문장을 입력한 결과 "Once", "Somewhere", "There"라는 단어가 후보로 도출되고, 이 후보 중 가장 확률이 높은 "Once"가 다음 단어로 출력됩니다. 그리고 "Once"를 출력하면 "Write a story. Once"가 새롭게 입력되어 차례로 문장의 연속이 생성된다는 것입니다. 그러나, 어디까지나 가장 높은 확률의 단어가 출력되기 때문에, 항상 옳은 단어가 출력되는 것은 아니며, ChatGPT가 거짓을 사실인 것처럼 말하고 있는 '환각' 문제가 바로 여기에서 시작되는 것입니다.

 

반응형