Large language model — 대형 언어 모델

From Systems analysis Wiki
Jump to navigation Jump to search

대형 언어 모델 (large language model, LLM)— 이는 대규모 매개변수(일반적으로 수십억 개 이상)를 가진 심층 신경망으로 구현되고, 대량의 텍스트 데이터로 학습된 Machine Learning 모델의 한 유형입니다. 여기서 「대형」이란 매개변수의 규모와 학습 코퍼스의 크기 모두를 의미하며, 현대 시스템에서 학습 코퍼스는 수 페타바이트, 수조 개의 token에 달합니다. LLM은 주로 자기지도(self-/semi-supervised) 방식으로 학습되며, 시퀀스에서 다음 token을 예측함으로써 언어의 통계적 패턴을 습득합니다. 매개변수, 데이터, 연산 단계의 증가는 품질의 예측 가능한 향상으로 이어지며, 이는 scaling laws에 의해 뒷받침됩니다.

BERT(2017) 등장 이후, 특히 GPT-3(2020) 이후 LLM 접근법은 자연어 처리 분야에서 지배적인 위치를 차지하게 되었습니다. 현대의 모델(GPT-4o, Claude 3, Gemini 1.5, LLaMA 3 등)은 별도의 특수 설정 없이 텍스트 및 프로그램 코드 작성, 번역, 요약, 질의응답, 추론 체인 구성이 가능하며, 멀티모달 버전은 이미지, 음성, 영상도 분석합니다. 응용 과제에 대한 적응은 fine-tuning 또는 prompt engineering, in-context learning을 통해 이루어집니다. LLM의 뛰어난 성능과 함께, 원본 데이터의 편향과 오류를 계승하고 「환각(hallucination)」 현상이 발생하며 대규모 연산 자원이 필요하다는 문제가 있어, 현재 연구는 행동 정렬(alignment), 코퍼스 필터링, 에너지 효율적인 아키텍처에 집중되고 있습니다.

아키텍처

현대 LLM에서는 거의 항상 Transformer(트랜스포머) 아키텍처, 즉 자기주의(self-attention) 메커니즘을 갖춘 신경망이 사용됩니다. Transformer 모델은 2017년 Google 연구팀이 발표한 논문 Attention is All You Need에서 처음 제안되었습니다.

Transformer 아키텍처는 시퀀스를 처리하기 위한 기본 신경망 구조로, 인코더(입력을 인코딩)와 디코더(출력을 생성)라는 두 가지 논리 모듈로 구성됩니다. 입력으로 시퀀스를 받아 벡터 표현(embedding)을 생성하고, 위치 인코딩 벡터를 더한 후, 순서를 고려하지 않은 요소들의 집합이 인코딩 컴포넌트(병렬 처리)에 입력되고, 이후 디코딩 컴포넌트가 해당 시퀀스의 일부와 인코딩 컴포넌트의 출력을 입력으로 받습니다. 그 결과 새로운 출력 시퀀스가 생성됩니다.

Transformer의 인코딩 컴포넌트는 동일한 여러 인코더 레이어로 구성되며, 디코딩 컴포넌트도 마찬가지입니다. Transformer 자체는 원래 벡터 시퀀스를 각 요소가 나머지 요소들의 맥락을 반영한 새로운 시퀀스로 변환하는 attention 모델들의 연속입니다. 인코더는 요소 간 상호 관계 정보를 보존하면서 입력 데이터의 잠재 표현을 형성합니다. 디코더는 잠재 표현을 기반으로 출력 token에 대한 새로운 embedding 시퀀스를 생성합니다. 이후 이 embedding들을 바탕으로 언어 모델을 통해 최종 출력 요소가 생성됩니다.

Transformer는 원래 기계 번역과 같은 과제를 위해 개발되었기 때문에, 아키텍처에는 인코더(입력 텍스트, 예: 원문 문장을 처리)와 디코더(출력, 예: 번역문을 생성)가 포함됩니다. 그러나 많은 언어 모델에서는 디코더 부분만 사용하여 자기회귀 방식으로 동작합니다.

Transformer는 세 가지 주요 구성으로 사용되며, 각각 인코더와 디코더를 다르게 활용하고 서로 다른 과제에 특화됩니다:

  • 인코더-트랜스포머 (양방향)는 의도적으로 숨겨진 텍스트 조각을 복원하는 방식으로 학습되므로, 분류, 사실 추출, 의미론적 검색 등 「이해」 과제에 적합합니다.
  • 디코더-트랜스포머 (자기회귀)는 다음 token 예측에 최적화되어 있으며, 대화형 에이전트, 코드 자동완성, 창의적 생성 등 스트리밍 출력이 필요한 곳에 사용됩니다.
  • 「인코더 + 디코더」 완전 구조는 두 가지 접근법을 결합합니다: 인코더가 전체 입력 텍스트의 표현을 구성하고, 디코더가 이를 바탕으로 단계적으로 결과를 생성합니다. 이 구성은 기계 번역, 요약, 질의응답 시스템에 가장 효과적입니다.

토큰화

토큰화(Tokenization)는 대형 언어 모델에서 텍스트 처리의 핵심적인 초기 단계입니다. 이 단계에서 연속된 문자열이 token이라는 개별 단위로 분리됩니다. 토큰화는 문자 시퀀스를 신경망이 효율적으로 처리할 수 있는 구조화된 요소들의 시퀀스로 변환하는 역할을 합니다.

언어학적 관점에서 토큰화는 단어, 형태소 또는 그 단편과 같이 독립적인 의미나 기능적 역할을 가진 언어의 최소 단위를 추출하는 과정에 어느 정도 대응할 수 있습니다. 그러나 token은 종종 단순히 통계적으로 자주 등장하는 문자 시퀀스에 불과하기 때문에, 모든 token의 언어학적 의미를 과대평가하지 않는 것이 중요합니다. 선택된 방식에 따라 token은 전체 단어, 하위 단어(subword), 개별 문자, 또는 서비스 마커(예: 시퀀스 시작 및 끝 마커)가 될 수 있습니다.

토큰화를 통해 다음이 가능합니다:

  • 어휘 크기를 적정 규모로 제한;
  • 희귀 단어 및 신조어의 정확한 처리;
  • 텍스트를 숫자 식별자 시퀀스로 명확하게 매핑.

텍스트 분할에는 하위 단어(subword) 알고리즘이 사용되며, 가장 일반적인 것은 Byte Pair Encoding (BPE), WordPiece, UnigramLM입니다. 각각 코퍼스에서 가장 빈번한 단편으로 어휘를 구축하고, 이를 사용하여 임의의 입력 텍스트를 순차적으로 분절합니다.

토큰화 단계 이후, 각 텍스트 단위인 token은 신경망이 이해할 수 있는 숫자 표현으로 변환됩니다. 이 과정은 여러 순차적 단계를 포함합니다:

  • token을 식별자로 변환: 각 token은 미리 구축된 token 어휘를 기반으로 고유한 숫자 인덱스에 매핑됩니다. 텍스트 token은 고유한 숫자 식별자(ID)로 대체됩니다. 각 ID는 미리 구축된 어휘에서 token의 번호로, 신경망이 단어 대신 숫자를 처리할 수 있게 합니다.
  • 식별자를 embedding으로 변환: 각 token 식별자에 대해 고정된 차원의 벡터, 즉 embedding이 추출되거나 계산됩니다. 이 다차원 숫자 표현이 ID를 대체하며, token의 의미 및 문맥적 속성에 관한 정보를 이미 포함합니다. 모든 embedding은 처리의 편의를 위해 동일한 길이를 가집니다.
  • 위치 인코딩 추가: Transformer 아키텍처 자체는 요소의 순서를 고려하지 않기 때문에, embedding에 시퀀스 내 token의 위치 정보를 제공하는 위치 인코딩(positional encodings)이 추가됩니다. 즉, 이를 통해 모델은 문장에서 어떤 token이 첫 번째, 두 번째, 세 번째 순서로 오는지 "알게" 됩니다.
  • 입력 행렬 구성: 출력으로 [длина последовательности × размерность эмбеддинга] 차원의 행렬이 생성되며, 이는 텍스트의 초기 표현으로서 신경망, 특히 Transformer의 self-attention 블록에 입력됩니다. 이 행렬의 각 행은 하나의 token에 해당하며, 포함된 벡터는 token의 의미적 값(embedding)과 텍스트 내 위치 정보(위치 인코딩) 모두를 담고 있습니다.
Текст → Токены → Идентификаторы → Эмбеддинги + Позиционные кодировки → Вход в модель

주의 메커니즘

주의 메커니즘(attention mechanism)은 Transformer 아키텍처의 핵심 구성 요소로, 시퀀스 내 token 간의 거리에 관계없이 의존 관계를 고려할 수 있게 합니다. 입력 텍스트가 벡터 시퀀스로 변환된 후, 이 시퀀스는 트랜스포머의 중심 요소인 주의 블록(attention block)에 입력됩니다.

주의 메커니즘은 신경망이 각 시퀀스 요소를 처리할 때 입력 데이터의 어느 부분에 더 주목해야 하는지를 결정하는 방법입니다. 이를 통해 텍스트의 개별 단편 벡터들이 서로 상호작용하며, 주변 맥락을 반영하여 정보를 풍부하게 하고 값을 업데이트할 수 있습니다. 덕분에 모델은 token 간의 국소적 및 장거리 의존 관계를 효과적으로 포착할 수 있으며, 복잡한 텍스트 구조를 해석하는 능력이 크게 향상됩니다.

자연어에서 단어나 표현의 의미는 고립적으로 결정되지 않으며, 주변의 다른 단어나 구조인 맥락에 따라 달라집니다. 신경망에서 텍스트는 token의 어휘적·문법적 속성을 수치적으로 반영하는 벡터 표현인 embedding을 통해 인코딩됩니다. (Transformer에서처럼) 직접적인 주의 메커니즘 없이는 맥락 정보가 장거리에서 손실되거나(단순 모델에서처럼), 순차적으로 전달되어 장거리 연결 포착에 덜 효율적일 것입니다. 그러나 자연어에서 단어나 문법 구조의 의미는 동적이며, 그 해석은 맥락에 따라 적응해야 합니다. 주의 메커니즘은 벡터 표현의 문맥화(contextualization)를 수행하며, 이는 다음을 의미합니다' (또는 단순히 :):

  • 각 token은 문장 내 다른 token들에 대한 자신의 중요도를 「평가」합니다.
  • 업데이트 과정에서 벡터 표현들이 상호 정보로 풍부해지며, 문법적 의존 관계, 의미론적 역할, 화용론적 맥락을 반영합니다.


이러한 정보 교환의 결과로 업데이트된 벡터들은 token 자체의 의미뿐만 아니라 문법적 연결(통사론), 묘사된 상황에서의 역할(의미론), 맥락에서의 전체적 의미(화용론)까지 인코딩하게 됩니다.

Входные векторы токенов (с позициями) → Механизм Внимания (Взаимодействие векторов) → Контекстуализированные векторы токенов (Векторы обогащенные информацией о связях с другими токенами)

주의 메커니즘의 기술적 구현

주의 메커니즘의 내부 구조는 여러 핵심 연산 단계와 구성 요소를 포함합니다. 각 입력 벡터에 대해 세 가지 벡터가 생성됩니다: 쿼리(Query), 키(Key), 값(Value). 이들의 상호작용을 기반으로 주의 가중치가 계산되며, 이 가중치는 업데이트된 문맥화 벡터 표현을 얻는 데 사용됩니다. 정보의 병렬 처리를 위해 다중 헤드 아키텍처(Multi-Head Attention)를 사용하는 것이 일반적인 접근법입니다.

쿼리(Query), 키(Key), 값(Value)

주의 메커니즘 계산의 기초는 각 입력 벡터(token embedding과 위치 인코딩의 합)를 세 가지 서로 다른 벡터 표현으로 변환하는 것입니다: 쿼리(Query, Q), 키(Key, K), 값(Value, V).

개념적으로 이 세 벡터는 주의 메커니즘에서 다음과 같은 역할을 수행합니다:

  • 쿼리(Query): 시퀀스에서 관련 정보를 탐색하는 과정을 시작하는 현재 token의 벡터를 나타냅니다. 현재 token을 기준으로 다른 token들의 중요도를 평가하기 위해 사용되는 「질문」 또는 「탐침」으로 볼 수 있습니다.
  • 키(Key): 각 token 내용의 한 측면을 설명하는 식별자 또는 「레이블」 역할을 합니다. 현재 token의 쿼리 벡터(Q)는 시퀀스 내 모든 키 벡터(K)(자신의 것 포함)와 비교되어 상호 일치도 또는 관련성을 결정합니다.
  • 값(Value): 이후로 전달될 각 token과 연관된 실제 정보 또는 표현을 포함합니다. 쿼리와 키의 상호작용을 기반으로 주의 가중치가 계산된 후, 이 가중치들이 값 벡터에 적용되어 해당 token에 대한 주의 메커니즘의 출력인 최종 가중 표현이 형성됩니다.

대형 언어 모델의 학습

LLM 학습은 주로 두 단계로 이루어집니다:

  1. 사전 학습(Pretraining) 이 단계에서 모델은 자기지도 학습(self-supervised learning) 방식으로 대규모 비레이블 텍스트 코퍼스를 학습합니다. 과제는 시퀀스에서 다음 token을 예측하는 것(자기회귀)이거나 숨겨진 단편을 복원하는 것(마스킹 학습)입니다. 사전 학습을 통해 모델은 광범위한 언어 통계 패턴, 문법, 세계에 대한 사실, 기본적인 추론 형태를 습득합니다.
  2. 파인튜닝(Fine-tuning) 사전 학습 후 모델은 특정 과제 수행을 위해 전문화된 데이터로 추가 학습됩니다. 예를 들어 답변 생성, 텍스트 분류, 지시 수행 등이 있습니다. 현대적인 접근법에는 다음이 포함됩니다:
    • 레이블된 dataset을 이용한 지도 fine-tuning(supervised fine-tuning).
    • 품질, 안전성, 유용성의 목표 지표에 따라 모델 행동을 교정하기 위한 인간 피드백 기반 강화 학습(RLHF, reinforcement learning from human feedback).

문제점 및 한계

인상적인 발전에도 불구하고, 현대의 대형 언어 모델(LLM)은 여러 문제점과 한계를 가지고 있습니다:


I. 연산 및 아키텍처적 한계

  1. 높은 연산 비용: LLM의 학습 및 운영에는 상당한 연산 능력, 시간, 에너지가 필요하여 높은 경제적·환경적 비용이 수반됩니다. 또한 자기회귀 생성 방식(순차적인 token 생성)은 병렬화를 제한하고, 비자기회귀 접근법에 비해 추론 속도를 저하시킵니다.
  2. 컨텍스트 길이 제한: Transformer 아키텍처는 시퀀스 길이에 대해 연산 비용과 메모리 요구사항이 이차적(quadratic)으로 증가합니다. 이로 인해 모델이 한 번에 처리할 수 있는 텍스트 양에 고정된 한계(컨텍스트 윈도우)를 설정해야 하며, 긴 문서가 잘리거나 윈도우 밖의 정보가 손실되는 문제가 발생합니다.


II. 신뢰성 및 생성 정확도 문제

  1. 환각(Hallucination): 사실적으로 틀리지만 그럴듯하게 들리는 정보를 생성하는 현상입니다. 이는 모델이 세계에 대한 실제 이해가 없고 데이터의 통계적 패턴에 의존하며 생성되는 주장을 검증할 수 없기 때문입니다.
  2. 오류 누적(Error Propagation): 생성 초기 단계에서 발생한 오류가 증폭되어 이후 단계에서 부정확성이 누적되고, 전체적인 텍스트 품질과 일관성이 저하되는 과정입니다.
  3. 제한된 합성 능력: 다단계 논리 추론이나 정확한 계산(예: 여러 자리 수 곱셈, 퍼즐 풀기)이 필요한 과제에서 어려움을 겪습니다. 이러한 과제에서 모델의 정확도는 자기회귀 생성 방식의 특성으로 인해 복잡도가 증가함에 따라 급격히 저하됩니다.
  4. 반복: 단어나 구절을 과도하게 반복하는 경향으로 텍스트의 정보량과 가독성을 저하시킵니다. 학습 및 디코딩 알고리즘(다음 token 선택)의 특성과 관련이 있습니다.
  5. 역전 저주(Reversal Curse): 모델이 지식을 역방향으로 자동으로 일반화하지 못하는 현상: 「A는 B이다」라는 명제로 학습한 후 「B는 A이다」를 도출하지 못하는 경우가 많습니다.
  6. 「창의성-정확성」 균형: 다양하고 독창적인 응답 생성과 사실적 정확성 유지 사이의 균형을 맞추어야 하는 문제입니다. 한 측면을 높이면 다른 측면에 부정적인 영향을 미치는 경우가 많으며, 예를 들어 높은 창의성은 환각 증가와 상관관계를 가질 수 있습니다.

III. 상호작용 및 제어 문제:

  1. 낮은 제어 가능성: 생성된 텍스트의 스타일, 어조, 내용이나 복잡한 지시 사항 준수를 정확하게 제어하기 어렵습니다. 제어 가능성은 입력 지시(「프롬프트」)의 품질과 fine-tuning 방법에 크게 의존합니다.
  2. 표현 방식에 대한 민감성: 입력 쿼리(프롬프트)의 미묘한 변화가 쿼리의 의미가 유지되더라도 크게 다른 응답을 초래할 수 있습니다. 이로 인해 안정적이고 예측 가능한 결과를 얻기 어렵습니다.


IV. 윤리적 및 사회적 측면:

  1. 편향성 및 공정성 문제: 모델이 학습 데이터에 존재하는 사회적 고정관념, 편향 또는 독성을 재현하고 증폭할 수 있습니다. 모델의 공정성과 안전성을 보장하는 것은 복잡한 과제입니다.
  2. 정렬 문제(LLM Alignment): 이전 항목을 포함하는 더 일반적인 문제입니다. 이는 모델의 행동이 인간의 가치, 의도, 윤리 규범에 부합하도록 보장하는 과제입니다. 편향성, 환각, 유해 콘텐츠 생성 방지 및 제어 가능성 향상이 포함됩니다.
  3. 악의적 사용 위험: LLM을 허위 정보의 생성 및 대량 유포, 피싱, 스팸, 악성 코드 생성, 또는 설득력 있는 가짜 텍스트 생성에 활용할 가능성이 있으며, 이는 정보 보안 및 개인 안전에 위협이 되고 사회적 신뢰를 훼손합니다.

참조:

  • 「대형 언어 모델」 // 위키백과 (러시아어 버전)
  • Large Language Model // Wikipedia (English version)
  • Grand Modèle de Langage // Wikipédia (Version française)
  • Sprachmodell // Wikipedia (Deutsche version)
  • Naveed H. 외. // A Comprehensive Overview of Large Language Models // arXiv:2307.06435, 2023

문헌

  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Brown, T. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Kaplan, J. et al. (2020). Scaling Laws for Neural Language Models. arXiv:2001.08361.
  • Hoffmann, J. et al. (2022). Training Compute-Optimal Large Language Models. arXiv:2203.15556.
  • Ouyang, L. et al. (2022). Training Language Models to Follow Instructions with Human Feedback. arXiv:2203.02155.
  • Bai, Y. et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
  • Bubeck, S. et al. (2023). Sparks of Artificial General Intelligence: Early Experiments with GPT-4. arXiv:2303.12712.
  • OpenAI. (2023). GPT-4 Technical Report. arXiv:2303.08774.
  • Touvron, H. et al. (2024). The Llama 3 Herd of Models. arXiv:2407.21783.