본문 바로가기
  • AI와 함께 세상을 아름답게
생성형 인공지능(Generative AI; GAI)/생성형 AI의 주요 기술 및 알고리즘

ChatGPT의 자연어 처리(NLP) - 인코딩 프로세스(Encoding Process)와 토큰화(Tokenization) 과정

by neo-Lee 2023. 7. 10.

    ChatGPT에 사용되는 모델은 Word2Vec과 다른 트랜스포머 아키텍처(Transformer Architecture)를 기반으로 합니다. 입력된 문장은 먼저 토큰화 과정을 거칩니다. 토큰화 과정을 거친 입력 문장은 변환기(transformer) 모델, 특히 GPT-3.5 아키텍처를 통해 처리된다고 합니다. 먼저 ChatGPT의 인코딩 프로세스에 대해 알아보고, 토큰화(Tokenization) 과정을 살펴보겠습니다.

1. ChatGPT의 인코딩 프로세스 개요

1)  토큰화(Tokenization)

    입력 문장이나 텍스트를 토큰화하여 토큰(Token)이라는 더 작은 단위로 나눕니다. 이러한 토큰은 사용된 특정 토큰화 설계 방식에 따라 단어, 하위 단어 또는 문자를 나타낼 수 있습니다.

2) 위치 인코딩(Positional Encoding)

    토큰은 입력 시퀀스에서 토큰의 상대적 위치에 대한 정보를 제공하는 위치 인코딩으로 보강됩니다. 이는 모델이 토큰의 순차적 처리의 순서를 이해하는데 도움이 됩니다.

3) 임베딩 조회(Embedding Lookup)

    각각의 토큰은 임베딩 벡터와 연계됩니다. 임베딩 조회에는 각 토큰을 학습된 임베딩 메트릭스의 해당 임베딩 벡터에 매핑하는 작업이 포함됩니다. 이러한 임베딩은 토큰에 대한 의미 체계 및 콘텍스트 정보를 캡처합니다.

4) 인코딩 계층(Encoding Layers)

    임베딩과 함께 토큰은 Transformer 모델 내에서 일련의 인코딩 계층(a series of encoding layers)을 통과합니다. 각각의 인코딩 layer는 다수의 셀프 어텐션 메커니즘(Self-Attention Mechanisms)과 Feed-Forward 신경망으로 구성됩니다.

  • Self-Attention: Self-Attention을 통해 모데른 입력 시퀀스 내의 관계를 기반으로 다양한 토큰의 중요성을 평가할 수 있습니다. 이를 통해 모델은 콘텍스트의 종속성(dependencies)을 캡처하고 단어 또는 토큰 간의 관계를 이해할 수 있습니다.
  • Feed-Forward Networks: Feed-Forward 신경망(Neural Network)은 self-attention 메커니즘의 정보를 처리하고 비선형 변환을 토큰 표현에 적용합니다.

5) 인코딩 레이어 더미(Stacked Encoding Layers)

    인코딩 레이어들은 서로의 위로 쌓이므로 Transformer 모델이 점점 더 복잡해지는 패턴들과 입력 텍스트의 종속성(dependenciies)을 캡처할 수 있습니다. 인코딩 레이어의 정확한 수는 모델의 특정 아키텍처 및 구성에 따라 달라질 수 있습니다.

6) 문맥에 맞는 표현 생성(Contextualized Representations)

    입력된 단어나 토큰들이 인코딩 레이어들을 통과할 때 Transformer 모델은 각 토큰에 대한 문맥에 맞는 표현(representations)을 생성합니다. 이러한 표현은 전체 입력 시퀀스의 내에서 토큰의 문맥상의 정보를 표현해 내는 것입니다.

    그런 다음 이렇게 인코딩 된 표현들을 응답의 생성 또는 기타 NLP작업 수행과 같은 다양한 다운스트림 작업에 사용할 수 있습니다.

 

    ChatGPT에서 사용되는 Transformer 모델의 특정 부분에 구현되는 세부적인 내용은 일반적인 트랜스포머 모델들과 차이가 있을 수 있지만, 전체적인 개요는 위에 설명한 바와 같습니다.

Transformer모델의 인코더 (출처. Wikidocs)

2. 토큰화(Tokenization) 과정

    토큰화는 문장이나 단락과 같은 텍스트 입력을 토큰이라는 작은 단위로 나누는 과정입니다. 일반적으로  ChatGPT를 비롯한 여러 자연어 처리(NLP) 모델에서는 아래와 같은 이유 때문에 토큰화 과정이 필요합니다.

1) 다양한 길이의 텍스트(Variable-Length Text) 처리

    토큰화(Tokenization)를 통해 길이가 다른 여러 가지 텍스트(문장)를 처리하기가 용이합니다. 텍스트를 토큰이라는 작은 단위로 나눔으로써 길이가 다른 시퀀스를 보다 효율적으로 처리할 수 있습니다.   

2) 어휘 표현(Vocabulary Representation) 

    토큰화를 통해 모델은 어휘 또는 모델이 이해하는 고유한 토큰 세트를 생성할 수 있습니다. 각 토큰은 일반적으로 단어, 하위 단어 또는 문자를 나타냅니다. 이러한 토큰은 모델이 작동하는 텍스트의 기본 단위를 형성합니다.

3) 입력 표현(Input Representation) 

    입력을 토큰화하여 텍스트를 모델에서 이해할 수 있는 숫자 표현으로 변환합니다. 각 토큰은 일반적으로 고유 인덱스에 매핑(mapping)되어 모델이 텍스트 데이터를 수학적으로 처리하고 조작할 수 있도록 합니다.

4) 임베딩 조회(Embedding Lookup) 

    토큰화는 각 토큰과 관련된 단어 임베딩 또는 문맥화된 표현의 조회를 용이하게 합니다. 이러한 임베딩은 단어 또는 토큰의 의미 및 콘텍스트 정보를 캡처하고 모델이 이들 사이의 의미와 관계를 이해하도록 돕습니다.

5) 효율적인 계산(Efficient  Computation) 

    토큰화는 모델의 계산 효율성을 최적화하는데 도움이 됩니다. 텍스트를 더 작은 토큰으로 분해함으로써 모델은 특히 GPU 가속 환경에서 계산을 보다 효과적으로 처리하고 병렬화할 수 있습니다.

 

    ChatGPT에서는 입력된 문장이나 텍스트를 토큰화(Tokenization) 과정을 거쳐 일련의 토큰으로 변환됩니다. 이후 토큰은 응답을 생성하거나 다른 NLP 작업을 수행하기 위해 처리되어 모델에 공급됩니다. 토큰화는 구조화되고 의미 있는 방식으로 모델이 텍스트 입력과 함께 작동할 수 있도록 하는 필수적인 전처리(preprocessing) 단계입니다.

 

2023.07.06 - [생성형 AI(Generative AI; GAI)] - 자연어처리(NLP) 알고리즘 - Word2Vec vs Transformer 모델

728x90

댓글