"LLM 핵심 학습 (4/6) — 고급 개념: RAG·CoT·MoE·In-Context Learning"

사전학습된 LLM 위에 외부 지식, 추론 단계, 희소 활성, 프롬프트 학습을 얹어 능력을 확장한다. 이 네 가지는 서로 직교하지만 실무 시스템에서는 흔히 함께 쓰인다.


0. 학습 목표

  • RAG 파이프라인의 retriever / reader 두 단을 그림으로 그리고 각 단의 학습·평가 지표를 안다.
  • Chain-of-Thought(Wei 2022)와 Self-Consistency(Wang 2022)의 차이를 한 줄로 적는다.
  • Sparse MoE(Switch, Mixtral)의 라우팅 식capacity factor를 안다.
  • Zero-shot/Few-shot/Instruction Tuning이 같은 모델에서 무엇을 다르게 하는지 설명한다.
  • 각 기법이 언제 통하지 않는지를 두 개씩 든다.

1. 핵심 요약

  • RAG: 외부 코퍼스에서 관련 문서를 검색해 프롬프트에 동봉. 환각·신선도·도메인 격차를 줄인다.
  • CoT: "생각의 단계"를 명시적으로 생성해 추론 정확도를 끌어올린다. Self-Consistency는 여러 추론을 다수결.
  • MoE: 토큰마다 일부 전문가만 활성화. 같은 파라미터 예산으로 더 큰 표현력을 얻는다.
  • ICL: 모델 가중치를 바꾸지 않고 프롬프트에 예시를 넣어 행동을 조정한다.

2. RAG — Retrieval-Augmented Generation

2.1 동기

LLM은 사전학습 시점의 지식만 갖는다. 사용자가 어제 발표된 정보내부 문서를 물으면 모델은 그럴듯한 거짓(환각)을 만들 위험이 크다. RAG는 이 격차를 추론 시 외부 검색으로 메운다.

2.2 파이프라인

diagram-1

2.3 검색기 학습 (Bi-Encoder)

쿼리·문서를 같은 임베딩 공간에 매핑한다.

$$ \mathrm{sim}(q, d) = \frac{f_q(q)^\top f_d(d)}{\|f_q(q)\|\|f_d(d)\|}. $$

학습은 대조 학습(contrastive): 정답 문서 \(d^+\)를 가깝게, 어려운 음예 \(d^-\)를 멀게.

$$ \mathcal{L} = -\log \frac{\exp(\mathrm{sim}(q, d^+)/\tau)}{\exp(\mathrm{sim}(q, d^+)/\tau) + \sum_{d^-} \exp(\mathrm{sim}(q, d^-)/\tau)}. $$

\(\tau\)는 온도 하이퍼파라미터. 대표 모델: DPR(Karpukhin 2020), E5, BGE, GTE.

2.4 Cross-Encoder Reranker

Top-k 검색 결과를 더 정밀하게 재순위. 쿼리와 문서를 동시에 트랜스포머에 넣어 단일 관련성 스코어를 출력한다. 비싸지만 강력. 보통 bi-encoder로 top-100 검색 → cross-encoder로 top-5 재순위 패턴.

2.5 Reader: 생성기 RAG

원논문(Lewis et al., 2020)은 RAG-Sequence와 RAG-Token 두 변형을 제시. 산업 구현은 프롬프트 동봉형이 압도적: 검색된 문서를 컨텍스트로 넣고 일반 LLM이 답변한다.

2.6 평가 지표

  • Retriever: Recall@k, MRR(Mean Reciprocal Rank), nDCG.
  • Reader: 사실성(Faithfulness), Answer Relevancy, Context Precision/Recall(예: RAGAS).
  • 시스템: latency, 단가, 환각률, citation 정확도.

2.7 한계와 실패 양상

  • 청크 분할 실패: 문서를 너무 잘게 자르면 문맥 손실, 너무 크면 비용 증가.
  • 중간 망각: 컨텍스트에 많이 넣을수록 중간 정보 회상력 저하(1편 6장 참조).
  • 검색-답변 정렬 실패: retriever가 관련 문서를 찾았어도 LLM이 무시하고 사전학습 지식으로 답할 수 있음.
  • 다국어·도메인 mismatch: 임베딩 모델이 한국어 법률 텍스트에 약하면 좋은 LLM도 무용.

2.8 실습 과제

  1. FAISS로 1만 문서를 BGE-M3 임베딩으로 인덱싱한 뒤 쿼리 100건의 Recall@10을 측정한다.
  2. 동일 쿼리에 (a) 검색 결과 그대로 (b) cross-encoder 재순위 후 LLM에 넣어 답변 사실성을 비교한다.
  3. 청크 크기 256/512/1024 토큰으로 같은 코퍼스를 다시 인덱싱하고 Recall과 답변 품질을 비교한다.

3. Chain-of-Thought (CoT)

3.1 정의

Wei et al., 2022은 LLM에게 답을 바로 말하기 전 "단계"를 글로 적게 하면 다단계 추론 정확도가 크게 오르는 현상을 보고했다. 같은 모델, 같은 가중치, 프롬프트만 다르다.

3.2 트리거

  • "Let's think step by step." (Zero-shot CoT, Kojima 2022).
  • Few-shot 예시에 추론 과정을 포함 (원형 CoT, Wei 2022).

3.3 왜 작동하는가 (가설)

  • LLM은 정답을 한 토큰에 압축하기보다 분해된 사고 과정을 글로 만드는 분포에 더 가깝다.
  • 자기회귀 디코딩에서 중간 토큰이 다음 토큰 분포를 추가로 조건화 — 일종의 외부 메모리.
  • 작은 모델에서는 효과가 약하고, 약 60B+ 모델에서 emergent 현상이 두드러진다(Wei 2022).

3.4 Self-Consistency (Wang 2022)

CoT는 결정론이 아니다. 같은 문제에 여러 sample을 뽑아 다수결하면 정확도가 더 오른다.

$$ \hat{y} = \arg\max_y \sum_{i=1}^{N} \mathbb{1}[y_i = y], $$

\(y_i\)는 \(i\)번째 sampled 추론의 최종 정답. \(N\)이 클수록 정확도 증가, 비용 선형 증가.

3.5 변형

  • Tree-of-Thoughts (Yao 2023): 추론을 트리로 확장, 평가자(critic)가 분기 선택.
  • Self-Refine (Madaan 2023): 모델이 자기 답변을 비판·수정 반복.
  • ReAct (Yao 2022): 추론과 도구 호출을 번갈아.

3.6 한계

  • 계산 비용. \(N\) 샘플 → \(N\)배 비용.
  • 잘못된 체인그럴듯하게 보일 때 자기검토가 잘 작동하지 않는다.
  • "Plan and execute"식 다단계 시스템에서는 한 단계 오류가 누적된다.

3.7 실습 과제

  1. GSM8K 같은 산술 데이터셋에서 (a) CoT 없음 (b) "step by step" 추가 (c) Self-Consistency \(N=10\)의 정확도를 비교.
  2. 같은 모델에서 추론 토큰 수와 정확도의 곡선을 그려 본다.

4. Mixture of Experts (MoE)

4.1 동기

같은 FLOPs 예산으로 더 큰 표현력을 얻고 싶다. 답: 토큰마다 일부 전문가만 활성화하는 sparse 모델.

4.2 Switch Transformer (Fedus 2022)

각 MoE 층은 \(E\)개의 전문가 \(\{f_1, \dots, f_E\}\)와 하나의 라우터 \(W_g \in \mathbb{R}^{d \times E}\)를 갖는다.

$$ \text{router logits} = W_g h,\ \ p(e \mid h) = \mathrm{softmax}(W_g h)_e. $$

Switch는 Top-1 라우팅: 각 토큰을 가장 높은 확률의 전문가 하나에만 보낸다. 결과는

$$ \text{MoE}(h) = p_{e^*}(h) \cdot f_{e^*}(h),\ \ e^* = \arg\max_e p(e \mid h). $$

4.3 Mixtral (Jiang 2024)

\(E = 8\) 전문가에 Top-2 라우팅. 토큰마다 2개의 전문가가 선택되고 가중합.

$$ \text{MoE}(h) = \sum_{e \in \mathrm{Top2}(p)} p_e \cdot f_e(h). $$

Top-2가 Top-1보다 안정적이고 표현력이 풍부. 추론 비용은 약 2배 GEMM 호출, 활성 파라미터는 2/E.

4.4 Capacity Factor와 Load Balancing

전문가별 토큰 수가 균등해야 GPU 활용도가 높다. Capacity factor \(C\)는 각 전문가가 받을 수 있는 최대 토큰 수.

$$ \text{capacity per expert} = C \cdot \frac{N_{\text{tokens}}}{E}. $$

\(C = 1.0\)이면 평균에 맞춤(드롭 가능). \(C = 1.25\)면 여유 25%. 초과 토큰은 드롭되어 잔차로만 통과한다.

추가로 aux loss(load-balancing loss)를 더해 라우터가 골고루 분배하도록 학습한다.

$$ \mathcal{L}_{\text{aux}} = E \cdot \sum_{e=1}^{E} f_e \cdot P_e, $$

\(f_e\)는 전문가 \(e\)에 라우팅된 비율, \(P_e\)는 평균 라우터 확률.

4.5 메모리 vs 추론 비용

  • 메모리: 모든 전문가 가중치를 GPU에 적재해야. 8개 전문가면 8배.
  • 추론: 활성 파라미터만 계산. Mixtral 8x7B의 활성 파라미터는 ~13B(2/8 비율).

4.6 한계

  • 라우팅 불균형. 일부 전문가가 사장됨(dead experts).
  • 분산 학습 복잡. 토큰을 GPU 간 재배치(all-to-all)해야.
  • 양자화 어려움. 라우팅이 작은 차이에 민감.

4.7 실습 과제

  1. \(E = 4\), Top-1 MoE 한 층을 PyTorch로 작성한다. 라우터·전문가·결합을 분리.
  2. 동일 베이스로 (a) dense FFN (b) MoE FFN(E=4)을 비교, 같은 데이터에서 학습 손실 곡선을 그린다.

5. In-Context Learning (ICL)

5.1 정의

모델 가중치를 바꾸지 않고, 프롬프트에 입력-출력 예시를 넣어 새 태스크를 풀게 하는 능력. GPT-3 논문(Brown et al., 2020)이 emergent 현상으로 보고했다.

5.2 Zero-shot / One-shot / Few-shot

  • Zero-shot: "다음 문장을 영어로 번역해라: ..."
  • One-shot: 한 예시 + 본 문제.
  • Few-shot: 여러 예시(예: 5개) + 본 문제.

5.3 작동 가설

  • LLM은 학습 분포에 암묵적 메타학습을 한 결과. 프롬프트의 예시 = 작은 학습 데이터셋, 어텐션이 암묵적 그래디언트 디센트를 수행한다는 이론(von Oswald 2023).
  • 다른 해석: 예시가 형식·도메인을 트리거해 적합한 표현 부분 공간을 활성화.

5.4 Instruction Tuning

지시문-응답 쌍으로 추가 학습. FLAN(Wei 2021), Alpaca, Vicuna, Tulu 등 다수. 결과적으로 zero-shot 능력이 강화되어 사용자가 매번 예시를 넣지 않아도 된다.

5.5 RLHF / DPO (개요)

지시문 따르기 + 안전 행동을 강화하기 위해 사람·AI 선호 데이터로 정책을 갱신. 이 시리즈에서는 식 유도를 생략하지만, 다음 시리즈/별편에서 다룰 주제.

5.6 한계

  • 컨텍스트 길이에 따른 비용·중간 망각.
  • 예시 순서에 민감(Lu 2022).
  • 실제 학습이 일어나지 않으므로 복잡한 태스크에는 부족.

5.7 실습 과제

  1. 같은 분류 태스크에 0/1/4/8-shot의 정확도 곡선을 그린다.
  2. Few-shot 예시 순서를 무작위 셔플 10회 반복해 분산을 측정한다.

6. 네 기법이 어떻게 함께 쓰이는가

diagram-2
  • RAG가 지식을 채워 주고,
  • ICL이 형식·도메인을 지정해 주고,
  • CoT가 추론을 풀어 주고,
  • MoE는 모델 내부에서 비용 효율을 책임진다.

7. 정리된 결론 — 보지 않고 답해 보라

이 글이 답한 핵심 질문 5개. 먼저 답을 가린 채로 한 줄로 답해 본 뒤 정답과 비교.

Q1. RAG 파이프라인의 retriever / reader 두 단을 한 줄로 묘사하면?

정답 Retriever: 쿼리 임베딩과 문서 임베딩 인덱스 에서 k-NN으로 top-k 문서 검색. Reader: 검색된 문서를 컨텍스트 로 받아 LLM이 답변 생성. k-NN이 임베딩 공간에서 작동 (ML기초 2편 §7.4 참조). DPR (Karpukhin 2020) 같은 학습된 dense retriever 가 BM25 같은 sparse retriever보다 의미 매칭에 강함. (본문 §2)

Q2. DPR의 대조 학습 손실 식을 적으면?

정답 \(\mathcal{L} = -\log \frac{e^{\text{sim}(q, p^+)}}{e^{\text{sim}(q, p^+)} + \sum_{p^-} e^{\text{sim}(q, p^-)}}\) — InfoNCE 형태. 같은 쿼리 \(q\)에 대해 정답 문서 \(p^+\) 를 높이고 음성 문서 \(p^-\) 를 낮춤. 음성 샘플링이 핵심 — hard negative (BM25 검색 결과 중 정답 아닌 것) 가 성능 결정. ML기초 2편의 metric learning과 같은 가족. (본문 §2)

Q3. "Lost in the Middle"이 RAG 설계에 주는 의미는?

정답 검색된 문서를 컨텍스트 중간 에 넣으면 모델이 자주 누락. 따라서 가장 관련도 높은 문서를 시작·끝에 배치하는 것이 표준 (re-ranking + 위치 최적화). Liu et al. 2024. attention이 학습 분포 영향으로 양 끝에 편향됨 (1편 §6 위치 인코딩). RAG 시스템은 reranker (Cohere, Voyage 등)로 top-k → top-5 압축 + 정렬. (본문 §2.6)

Q4. Switch Transformer와 Mixtral의 차이를 두 줄로?

정답 Switch (Fedus 2021): 토큰당 1 expert 활성화 (top-1 routing). Mixtral (Mistral 2024): 토큰당 2 experts 활성화 (top-2 routing) + 가중 합. Mixtral의 top-2가 양쪽 expert를 모두 학습 시켜 single point of failure 완화. 8 experts × 7B = 47B 파라미터지만 추론 시 13B만 활성 — 메모리 절감 + 표현력 유지. (본문 §4)

Q5. ICL의 zero / one / few-shot 정의 + 각 고급 기법의 언제 통하지 않는지?

정답 Zero: 예시 없음. One: 1개 예시. Few: 2~수십 개 예시. 실패 패턴: RAG — 잘못된 retrieval이 그럴듯한 헛소리 유발 / CoT — 짧은 답에는 오히려 산만 / MoE — 작은 모델(<7B)에서는 효과 미미 / ICL — 매우 OOD 작업에서 패턴만 흉내. 4가지 기법은 조합 시 진가. RAG로 외부 지식 + CoT로 추론 + MoE로 효율 + ICL로 도메인 적응. 그러나 한 가지를 만능 처방 으로 쓰면 위 실패 패턴이 나타남. (본문 §3·§4·§5·§6)


5개를 한 줄로 답할 수 있었다면 RAG·CoT·MoE·ICL의 조합 전략 이 자리잡은 것이다.


8. 추가 학습


이 글은 LLM 핵심 학습 시리즈의 4/6 편이다. 다음 편(5/6)은 수학 직관 — Softmax·Cross-Entropy·KL·Gradient·LayerNorm으로 이어진다.

시리즈 전체 안내: 시리즈 목차

댓글

이 블로그의 인기 게시물

"LLM 핵심 학습 (1/6) — 기본: 토큰화·임베딩·어텐션·위치 인코딩"

"LLM 핵심 학습 (2/6) — 파인튜닝: LoRA·QLoRA·증류·Adapter"

"ML 기초 학습 (1/9) — 머신러닝과 sklearn: 학습의 좌표계"