"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 파이프라인
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 실습 과제
- FAISS로 1만 문서를 BGE-M3 임베딩으로 인덱싱한 뒤 쿼리 100건의 Recall@10을 측정한다.
- 동일 쿼리에 (a) 검색 결과 그대로 (b) cross-encoder 재순위 후 LLM에 넣어 답변 사실성을 비교한다.
- 청크 크기 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 실습 과제
- GSM8K 같은 산술 데이터셋에서 (a) CoT 없음 (b) "step by step" 추가 (c) Self-Consistency \(N=10\)의 정확도를 비교.
- 같은 모델에서 추론 토큰 수와 정확도의 곡선을 그려 본다.
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 실습 과제
- \(E = 4\), Top-1 MoE 한 층을 PyTorch로 작성한다. 라우터·전문가·결합을 분리.
- 동일 베이스로 (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 실습 과제
- 같은 분류 태스크에 0/1/4/8-shot의 정확도 곡선을 그린다.
- Few-shot 예시 순서를 무작위 셔플 10회 반복해 분산을 측정한다.
6. 네 기법이 어떻게 함께 쓰이는가
- 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. 추가 학습
- Lewis et al., 2020, Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
- Karpukhin et al., 2020, DPR. arXiv:2004.04906.
- Wei et al., 2022, Chain-of-Thought Prompting. arXiv:2201.11903.
- Wang et al., 2022, Self-Consistency. arXiv:2203.11171.
- Kojima et al., 2022, Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
- Fedus et al., 2022, Switch Transformer. arXiv:2101.03961.
- Jiang et al., 2024, Mixtral of Experts. arXiv:2401.04088.
- Brown et al., 2020, GPT-3. arXiv:2005.14165.
- Wei et al., 2021, FLAN. arXiv:2109.01652.
- von Oswald et al., 2023, Transformers Learn In-Context by Gradient Descent. arXiv:2212.07677.
- LangChain RAG 튜토리얼: python.langchain.com/docs/use_cases/question_answering.
이 글은 LLM 핵심 학습 시리즈의 4/6 편이다. 다음 편(5/6)은 수학 직관 — Softmax·Cross-Entropy·KL·Gradient·LayerNorm으로 이어진다.
시리즈 전체 안내: 시리즈 목차
댓글
댓글 쓰기