Large Language Model

[핸즈온 LLM] 대규모 언어모델 소개 (1.1 ~ 1.3)

대치동명강사 2025. 6. 14. 16:15
728x90
반응형

인공지능(Artificial Intelligence, AI)이란 음성 인식, 언어 번역, 시각 인식과 같이 인간 지능에 가까운 작업을 수행하는 컴퓨터 시스템.

[인공 지능은] 지능적인 기계, 특히 지능적인 컴퓨터 프로그램을 만드는 과학과 공학입니다. 인공지능 분야는 컴퓨터를 활용해 인간 지능이 어떻게 작동하는지 이해하려고 연구합니다. 하지만 AI가 생물학적으로 관찰되는 방법에만 국한되지 않습니다.
                                                                                                                                                       - 존 매카시, 2007

언어 AI(Language AI)는 인간 언어를 이해, 처리, 생성할 수 있는 기술을 개발하는 데 초점을 맞춘 AI의 하위 분야.
종종 자연어 처리(Natural Language Processing, NLP)와 혼용되어 사용됨.

텍스트는 태생적으로 비구조적이라 언어AI의 역사에는 컴퓨터가 쉽게 사용할 수 있도록 언어를 구조적인 방식으로 표현하는 데 많은 관심이 집중되었음.

  • 텍스트 출력 : 생성 모델링
  • 임베딩 : 수치 값
  • 분류 : 타깃 식별

1.2.1 BoW(Bag of Words)로 언어 표현하기

BoW 모델의 작동방식은

  1. 토큰화(Tokenization) : 문장을 개별 단어나 부분단어(subword), 토큰(token)으로 분할하는 과정
  2. 각 문장의 고유한 단어를 모두 합쳐서 어휘사전(vocabularary) 만들기
  3. 각 문장에 어휘사전 내 단어가 얼마나 많이 등장하는 지 횟수를 헤아려 문장을 벡터화 하기.

위와 같은 모델을 표현 모델 (Representation Model)이라고 칭함.

1.2.2. 밀집 벡터 임베딩으로 더 나은 표현 만들기

임베딩(Embedding) : 데이터의 의미를 포착하기 위한 벡터 표현.

Word2vec : 임베딩으로 텍스트의 의미를 포착하는 데 성공한 첫 번째 시도.
신경망을 사용해 주어진 문장에서 다음에 어떤 단어가 등장하는 지를 살펴봄으로 써 단어 임베딩을 생성함.
먼저 어휘사전 내 모든 단어에 대해 랜덤한 값의 단어 임베딩 부여
학습 데이터에서 단어 쌍을 가져와 모델이 문장 안에서 단어 쌍이 이웃에 나타날 가능성이 있는 지 예측하게끔 학습함.

1.2.3 임베딩의 종류

임베딩의 종류는 많음. (Ex. 문서, 문장, 단어, 토큰 등)
또한, 분류, 클러스터링, 시멘틱 검색(Semantic Search), RAG(Retrieval Augmented Generation) 등 많은 곳에서 활용 됨.

표현 모델(Representation Model)은 입력 텍스트를 임베딩하는 모델을 의미함.

1.2.4 어텐션을 사용한 문맥 인코딩과 디코딩

word2vec은 정적임. 예를 들어 'take' 이라는 단어는 문맥에 상관없이 항상 임베딩이 동일함.
하지만, take는 문맥에 따라 의미가 달라질 수 있음. 즉, 임베딩은 문맥에 따라 달라져야함.

이런 텍스트를 인코딩하는 단계는 순환 신경만 (Recurrent Neural Network, RNN)으로 달성됨.
RNN은 연속적인 입력, 시퀀스(sequence)를 모델링할 수 있는 신경망의 한 종류.
RNN은 두 개의 작업에 주로 사용됨.
입력 문장을 인코딩(Encoding) 또는 표현하고, 출력 문장을 디코딩(Decoding) 또는 생성하는 작업.

이 구조에서 각 단계는 자기회귀(Autoregressive)적임. 이전에 생성한 모든 단어를 사용해 다음 단어를 생성하기 때문임.
(이전에 출력된 단어를 입력으로 사용하여 다음 단어를 생성함.)

인코딩 단계의 목표는 입력을 가능한 한 잘 표현하여 디코더의 입력으로 사용되는 임베딩의 형태로 문맥을 생성하는 것.
이 표현을 생성하기 위해 단어에 대한 입력으로 임베딩을 사용. 즉, 초기 표현으로 word2vec을 사용.
하지만, 문맥 임베딩은 하나의 임베딩으로 전체 입력을 표현하기 때문에 긴 문장을 처리하기 어려움.

이 구조를 크게 개선한 어텐션(Attention)이란 방법이 소개됨.
입력 시퀀스에서 서로 관련 있는 부분에 모델이 초점을 맞추고 해당 신호를 증폭할 수 있음.
어텐션은 주어진 문장에서 어떤 단어가 가장 중요한지 선택적으로 결정함.

어텐션 메커니즘을 디코더 단계에 추가함으로써 RNN이 입력 시퀀스의 각 단어에 대해 출력 가능성에 관련된 신호를 생성. 문맥 임베딩을 디코더에 전달하는 대신 모든 입력 단어의 은닉 상태가 전달됩니다. 결과적으로 RNN이 번역을 수행하기 위해 가장 주의를 기울일 단어를 추적함으로써 단순히 단어 벡터를 사용하는 것보다 더 풍부한 문맥 정보를 반영할 수 있음.

하지만, RNN 구조 자체는 앞 단어가 처리되어야 다음 단어를 처리할 수 있는 구조. 이런 순차적 특징은 모델 훈련을 병렬화 하는데 방해가 됨.

1.2.5. Attention Is All You Need.

2017년, 어텐션의 진정한 힘과, LLM의 놀라운 능력을 만들어 낸 동력, 어텐션 메커니즘만 사용하고 RNN은 제거한 트랜스포머(Transformer)라는 신경망 구조가 소개됨. 일단 병렬로 훈련가능 한 게 킥임. 또한, 트랜스포머도 Autoregressive해서 이전에 생성된 모든 단어를 사용해서 새로운 단어를 생성함.

트랜스포머의 인코더와 디코더 블록은 어텐션을 중심으로 구동됨.

  • 인코더 블록 : 셀프 어텐션 (Self-attention) + 피드 포워드 신경망 (feedforward neural network, FFNN)
    - 셀프 어텐션 : 말 그대로 셀프, 입력 시퀀스의 각 단어가 그 시퀀스 안의 다른 모든 단어를 바라보며 중요도를 판단함.
    또한, 기존 RNN 처럼 순차적으로 단어를 처리하는 것이 아니라 한 번에 전체 시퀀스를 보고, 현재 단어를 기준으로 앞도 보고 뒤도 봄. 이에, 병렬 처리도 가능하고, 문맥 전체에 대한 표현력이 좋아짐.
    - Feedforward Neural Network (FFNN) : 각각의 단어의 표현을 강화. Self-Attention Layer에서 나온 각 단어의 출력값을을 한 번 더 강화 or 가공하기 위해 간단한 2-Layer 신경망을 거침.
  • 디코더 블록 : 마스크드 셀프 어텐션 (Masked Self-Attention) + 인코더 어텐션 + FFNN
    - 마스크드 셀프 어텐션 (Masked Self-Attention) : 뒤 쪽의 위치를 마스킹함. 앞 쪽의 토큰에만 주의를 기울임.
    따라서, 출력을 생성할 때 정보 누출을 방지하기 위해 앞선 위치에만 주의를 기울일 수 있음.
    - 인코더 어텐션 : 트랜스포머 인코더의 출력에 주의를 기울이는 별도의 층. RNN의 어텐션 디코더와 유사함.

이 외에도 Multi-Head Attention, Positional Embedding, Layer Normalization 등 알아야 하는 것이 많지만,
글이 너무 길어질 것 같아서 다른 게시글에서 정리 예정.

1.2.6 Representation Model : Encoder 기반 모델.

원본 트랜스포머 모델은 인코더-디코더 구조라서 번역 작업에는 잘 맞지만 텍스트 분류와 같은 작업에는 못 씀.

BERT(Bidirectional Encoder Representations from Transformers) : 2018년 소개된, 인코더 기반 구조 언어 표현 모델.
인코더만 사용하고 디코더는 사용하지 않음. 인코더 블록은 이전에 보았던 것과 같음. 셀프 어텐션 다음에 FFNN.

입력에는 추가적으로 [CLS] 토큰 (또는 분류 토큰) 이 포함됨. 이 토큰을 전체 입력에 대한 표현으로 사용함. 종종 classification 같은 특정 작업에서 모델을 미세 튜닝(Fine-Tuning)하기 위해 [CLS]토큰을 입력의 임베딩으로 사용함.

BERT는 Masked Language Modeling이라는 기법을 적용. 모델이 예측할 입력의 일부분을 마스킹해서 더 정확한 입력에 대한 표현을 만들 수 있또록 도움.

BERT와 같은 모델은 일반적으로 전이학습(Transfer Learning)에 사용됨. 먼저 언어 모델링을 위해 모델을 사전 훈련(Pretraining)하고 그 다음 구체적인 작업을 위해 미세조정(Fine-Tuning)하는 방식. 예를 들어, 위키백과 전체로 BERT를 사전훈련해서 텍스트의 의미와 맥락을 이해하는 방법을 학습한 뒤에 사전 훈련된 모델을 사용해 텍스트 분류, 유사 문장 식별과 같은 특정 작업을 위해 파인튜닝.

이와 같은 Pre-trained model의 장점은 대부분의 학습이 이미 완료 되었다는 점. 특정 작업을  위한 파인튜닝은 일반적으로 컴퓨팅 자원과 데이터를 적게 사용함. 또한 BERT 같은 모델은 거의 모든 단계에서 임베딩을 생성합니다. 따라서 BERT 모델을 특정작업에서 파인튜닝할 필요 없이 Feature Extractor로 사용할 수 있습니다.  


1.2.7. Generative Model : Decoder 기반 모델

GPT(Generative Pre-trained Transformer)-1 : 디코더 블록"만" 쌓아서 구성됨. 파라미터 1.17억개
GPT-2 는 15억개, GPT-3은 1750억개. 지금은 무슨 2B, 7B, 13B 이카고 있음 ㅋㅋ
파라미터 수 많아져서 대규모 언어 모델 (Large Language Model, LLM) 이라고 함.

Sequence-to-sequence 모델로서 생성 LLM은 어떤 텍스트를 받아 이를 자동으로 완성함. 이걸 대화가 가능하게 파인튜닝해 질문에 대답하도록 훈련한 것이 챗봇 형태의 instruct model, chat model임.
사용자 쿼리(or 프롬프트)를 입력 받고, 이 프롬프트를 따르는 응답을 출력할 수 있음.

이러한 모델에서 중요한 부분은 문맥, 컨텍스트의 길이(context length) 그리고 문맥 윈도(context window)임. 문맥 길이는 모델이 처리할 수 있는 최대 토큰 수를 나타냄. 문맥 윈도는 하나의 토큰을 예측하거나 처리할 때 참조할 수 있는 앞쪽 토큰들의 범위. 즉, 문맥의 폭을 의미함. 이런 모델들은 자기회귀 성질을 가지고 있기 때문에 새로운 토큰이 생성됨에 따라 현재의 문맥 길이가 늘어나고, 하나의 토큰을 예측할 때 이전 토큰들만 사용함.

  GPT, Llama, Gemini, Gemma, DeepSeek 등 오픈 소스 베이스 모델을 파운데이션 모델(Foundation Model)이라고 하며 명령 수행과 같은 특정 작업을 위해 미세튜닝 할 수 있음.

 

본 게시글은

  • [핸즈온 LLM] 박해선 옮김, 한빛미디어, p27-49. 

을 참조하여 작성되었습니다.



728x90
반응형