https://www.coursera.org/learn/generative-ai-with-llms/lecture/9uWab/course-introduction

 

코스 소개 - 1주차 | Coursera

Video created by DeepLearning.AI, Amazon Web Services for the course "대규모 언어 모델을 통한 생성형 AI". 제너레이티브 AI 사용 사례, 프로젝트 수명 주기 및 모델 사전 학습

www.coursera.org


들어가며

전 직장 동료가 운영하는 모여서 각자 글쓰기 동아리에 함께 참여하게 되면서, 그동안 미뤄왔던 LLM에 대한 기초 공부를 포스팅으로 남기고자 한다. 총 3주차로 짜여진 코스를 주차 별로 수강하면서 LLM 전반에 대한 흐름을 이해하고 간단한 예제를 직접 구현하는 것이 목표이다. 각 강의의 내용을 정리하고 이해를 돕기위해 영상에 나오는 그림들을 첨부할 예정이다.


➡️ Generative AI & LLMs

  • LLM에 입력값으로 전달하는 텍스트를 Prompt라고 함
    • 일반적으로 수천 단어를 입력할 수 있지만, 모델마다 상이함
  • LLM의 결과값은 Completion이라고 함
    • 즉, LLM의 inference값
    • 원래 입력한 Prompt 텍스트와 생성된 텍스트를 포함

➡️ LLM use cases and tasks

  • 최근 LLM과 Generative AI는 chat bot 개발에 집중됨
  • Prompt를 기반으로 에세이를 작성하거나, 텍스트를 요약하거나, 서로 다른 두 언어간의 번역 작업을 수행할 수 있음
  • 자연어를 기계 코드로 번역할 수 있음
  • 뉴스 기사를 입력하여 모든 사람과 장소를 식별하는 작업을 할 수 있음 (NER: Named Entity Recognition)
  • 외부 데이터 소스와 연동해서 LLM을 강화하는 작업을 할 수 있음
    • Pretrain하는 과정에서 알지 못하는 정보를 모델에 제공하여 추가로 학습시키는 과정

➡️Text generation before transformers

  • 생성 알고리즘은 새로운 기술이 아님
    • 기존 RNN은 당시에 잘 수행되었지만, 부족한 계산 자원과 많은 메모리 사용으로 인해 제한적이었음
    • RNN의 단점을 해결한 Transformer 아키텍쳐의 등장으로 오늘날의 Generative AI 발전이 가능했음
      • GPU를 사용할 수 있도록 효율적인 확장이 가능함
      • 입력 데이터를 병렬처리하여 더 큰 학습데이터를 활용할 수 있음 

➡️Transformers architecture

Transformer 아키텍처의 RNN과 다른 특징들을 통해 언어 모델 성능이 크게 향상되었음

  • 문장 내에서 단어와 인접한 단어들 뿐만 아니라 다른 모든 단어와의 관련성을 학습함 (Self-Attention, 향후 강의에서 자세히 다룸)

 

Transformer 구조는 EncoderDecoder로 분리할 수 있으며, 서로 연동되어 작동하고 여러 유사점을 가짐

Transformer의 구조 예

 

텍스트를 Transformer에 Inputs으로 전달하기 위해서는 토큰화가 선행되어야 함

토큰화 방식 예

  • 토큰화는 단어 문자열을 모델의 Input으로 사용하기 위해 숫자(Token IDs)로 변환하는 방법
  • 토큰화를 통해 얻는 숫자(Token IDs)는 모델이 받아드릴 수 있는 모든 단어의 사전 내 위치를 나타냄
  • 모델을 학습시킬 때와 추론(텍스트 생성)할 때 사용하는 토큰화 방식이 같아야 함

 

변환된 각 토큰은 Embedding 레이어에 전달됨

Embedding 구조 예

  • Embedding 레이어는 학습 가능한 벡터 임베딩 공간
  • 숫자로 표현된 토큰은 Embedding 레이어를 통과함으로써 다차원 벡터로 변환됨 
  • 다차원 벡터로 Embedding하는 과정을 통해 단어 토큰의 의미와 문맥을 학습함

Embedding 방식 예

  • 위 예를 보면, 각 단어 토큰들이 512크기의 벡터로 Embedding 되었음을 볼 수 있음
    • 512는 Transformer 원본 논문에서 제시한 Embedding 벡터 크기이고, 상황에 따라 조절해서 사용할 수 있음

 

Embedding된 다차원 토큰 벡터가 Encoder 및 Decoder의 Input으로 사용되기 전에 마지막으로 Positional Encoding 과정을 거치게 됨

 

Positional Encoding 방식 예

  • 모델의 Input은 병렬적으로 처리되기 때문에, 문장에서의 단어 순서 정보가 누락되게 됨
  • Positional Encoding을 통해 단어 순서의 정보를 더해줌으로써 단어 위치의 관계성을 잃지 않게 됨

 

토큰 벡터와 Positional Encoding 벡터를 합산한 벡터는 Encoder 및 Decoder에 전달되어 Self-Attention 레이어로 전달됨

 

  • 모델 학습 중 학습되는 Attention Weight는 해당 입력 문장 내에서 각 단어가 다른 모든 단어에 미치는 중요도를 대변함

 

Self-Attention을 통해서 모델은 문장 내 각 단어의 문맥적 종속성을 잘 포착할 수 있지만, 이러한 일련의 과정을 여러 다른 주체가 수행하도록 하는 방법이 Multi-headed Self-Attention

  • Multi-headed Self-Attention은 여러 세트(head)의 Self-Attention 과정을 서로 독립적으로 병렬적으로 학습하는 방법
  • 여러 head에서 입력 문장을 각기 다른 각도에서 바라보며 학습을 진행한다고 해석할 수 있음
    • 각 head의 Attention weight는 무작위로 초기화 되고 충분한 Train데이터와 시간이 주어져 입력 문장에 대한 다양한 측면을 학습하는 것
  • head의 수는 모델마다 상이하지만 12~100개가 일반적

 

모든 head의 Attention weight가 계산 되고 나면, Fead forward 레이어를 통해서 모든 토큰의 Logit 벡터를 얻을 수 있음

이후에 Logit벡터를 Softmax 레이어를 통과시켜 문장 내의 모든 단어에 대한 확률값을 구할 수 있음

Softmax 값 예

  • Softmax 출력값에는 입력 문장에 있는 모든 단어에 대한 확률이 포함됨
  • 가장 높은 확률을 갖는 단어가 모델이 예측하는 단어가 됨
  • Task에 따라서 이 최종 벡터를 활용하는 방법이 다양할 수 있음

 

➡️Generating text with transformers

이전 lecture에서 Transformer의 아키텍처 주요 구성 요소들에 대해 개요를 소개했고, 이번 lecture에서는 전체 프로세스에 대한 설명을 진행

 

Example) 프랑스어를 영어로 번역하는 Transformer

  1. Transformer를 학습시킬 때 사용한 토큰화 방식을 사용해서 입력 문장(프랑스어)의 단어들을 토큰화
  2. 토큰들은 Embedding 레이어를 통과하여 다차원 벡터로 변환됨
  3. 변환된 벡터는 Encoder의 Multi-headed Self-Attention 레이어와 Feed forward 네트워크를 통과하여 출력됨
    1. 이때의 Encoder 출력값은 입력 문장의 구조와 의미를 심층적으로 표현함
  4. Encoder의 출력값은 Decoder의 중간에 삽입되어 Decoder의 Self-Attention의 일부 입력값으로 사용됨
  5. 문장의 시작을 알리는 토큰이 Decoder의 입력에 추가됨
  6. 이 상태가 되면 Decoder가 다음 토큰을 예측하도록 트리거되고, Encoder의 출력값을 바탕으로 다음 토큰을 예측함
    1. Decoder의 Self-Attention 출력은 Feed forward 네트워크와 Softmax를 거쳐서 첫 번째 토큰을 예측하게 됨
  7. 모델이 문장 종료를 알리는 토큰을 예측할 때 까지 Decoder의 출력 토큰을 Decoder의 입력 토큰으로 다시 전달하여 다음 토큰 예측을 트리거하며 이 루프를 계속함
  8. 이 시점에서 최종 예측된 토큰들을 해독해서 다시 단어로 변환하여 최종 출력을 생성함

 

위의 번역 예제에서는 Encoder와 Decoder를 모두 사용했지만, Encoder만을 사용하는 등의 아키텍처 변형을 할 수 있음

  • Encoder만을 사용하는 모델
    • 입력 시퀀스와 출력 시퀀스의 길이가 같지 않도록하는 레이어를 추가함으로써 감정 분석이나 분류 문제를 풀 수 있음
    • e.g. BERT
  • Encoder와 Decoder를 모두 사용하는 모델
    • 번역 문제와 같이 시퀀스 간 작업에서 잘 작동함
    • e.g. BART, T5
  • Decoder만을 사용하는 모델
    • 오늘날 가장 일반적으로 사용됨
    • e.g. GPT, BLOOM, Jurassic, Lama

 

 

+ Recent posts