TIL 07-08 AI 기초 2 (NLP · 추천 알고리즘 · 예측 · LLM)

김덕협·2026년 7월 9일

TIL

목록 보기
28/41

AI 기초 2 (NLP, 추천 알고리즘, 예측, LLM)

오늘은 자연어 처리(NLP)의 핵심 모델부터 추천 시스템, 시계열 예측/이상 탐지, 그리고 LLM까지 AI의 주요 분야를 폭넓게 훑었다. 개념 → 대표 모델 → 실습 흐름으로 정리한다.


1. NLP는 왜 필요한가

인간의 언어는 유연하고 모호하다. 감정 표현과 예외적인 문법이 존재한다(예: 한국어, 영어).
반면 기계의 언어는 엄격하고 명확하다. 정해진 문법을 벗어나면 의미가 성립하지 않는다(예: Python, Java, E=mc²).

NLP = 이 두 세계를 연결하는 통역사.

NLP 3가지 주요 모델

모델특징역할
BERT양방향(Bidirectional)독해 전문
GPT순차적(Autoregressive)작문 전문
BART결합형번역 / 요약

세 모델 모두 Transformer를 코어로 사용한다.


2. BERT vs GPT

이해의 스페셜리스트 — BERT

  • 출신: 2018년 구글(Google)
  • 구조: Transformer의 Encoder 부분만 활용
  • 발전 형태: ALBERT, RoBERTa, ELECTRA

생성의 스페셜리스트 — GPT

  • 출신: 2017년 OpenAI
  • 구조: Transformer의 Decoder 부분만 활용
  • 발전 형태: GPT-3 등 거대 언어 모델로 진화

BERT의 학습 방식

① 빈칸 추론 — MLM (Masked Language Model)

  • 오늘 점심은 [MASK] 에서 먹었다.
  • 진정한 문맥 이해는 단방향이 아닌 '양방향(Bidirectional)'에서 온다.
  • 문장 중간의 임의 단어를 가리고([MASK]) 맞추게 하여, 좌·우 텍스트를 모두 참고하도록 강제 → 단어 간 깊은 관계를 학습.

② 문장 간 논리 파악 — NSP (Next Sentence Prediction)

  • 두 문장이 논리적으로 이어지는지 맞히는 훈련.
  • 예시 A) [CLS] 남자가 가게로 갔다 [SEP] 그는 우유를 샀다IsNext (50%)
  • 예시 B) [CLS] 남자가 가게로 갔다 [SEP] 펭귄은 날 수 없는 새다NotNext (50%)

GPT의 학습 방식 — "끝말잇기 놀이"

  • 작문 전문(Decoder): 주어진 프롬프트를 바탕으로 다음에 올 가장 자연스러운 단어를 확률적으로 예측.
  • 자기회귀(Autoregressive): 자신이 생성한 단어를 다시 다음 예측의 입력값으로 사용하며 문장을 끊임없이 이어나감.
    • 인공지능은인공지능은 미래를인공지능은 미래를 바꿀 → ...

3. BART — Bidirectional and Auto-Regressive Transformers

BERT와 GPT 두 아키텍처를 결합한 표준 Sequence-to-Sequence 모델.

  • Bidirectional Encoder: 앞뒤 문맥을 동시에 파악(BERT처럼). 망가진(Corrupted) 텍스트를 입력받아 문서 전체 구조를 완벽히 해독.
  • Autoregressive Decoder: 한 번에 하나의 토큰씩 뱉어내는 자기회귀 디코더(GPT처럼). 인코더의 해독 정보를 바탕으로 원본 문장을 순차 생성.

BART의 노이즈 학습 기법

원문: I love sweet vanilla ice cream.

기법방식결과
Token Masking임의 토큰을 [MASK]로 덮음 (BERT와 동일)I love [MASK] vanilla ice cream.
Token Deletion단어를 아예 삭제 → 위치까지 스스로 찾아야 함I love vanilla ice cream.
Text Infilling여러 단어를 단 하나의 [MASK]로 대체I [MASK] cream.
Sentence Permutation마침표 기준으로 쪼갠 뒤 순서를 랜덤하게 섞음Ice cream. I love sweet vanilla.
Document Rotation무작위 토큰부터 시작하도록 회전 → 진짜 시작점 찾기vanilla ice cream. I love sweet

4. 토큰화 (Tokenization) — 언어의 레고 블록

AI에게 단어를 가르치는 방법

  • 단어 단위: 신조어 인식 불가 (OOV, Out-Of-Vocabulary 문제)
  • 문자 단위: 의미가 깨지고 비효율적
  • 해결책 → 서브워드(Subword) 단위: [jump]+[##ing] → jumping, [quick]+[##ly] → quickly
    • 미지의 단어도 이미 알고 있는 블록들의 조합으로 유연하게 처리 가능.

한국어 토큰화의 과제

  • 영어는 띄어쓰기가 쉽다(I / go / to / school).
  • 한국어는 교착어 → 단어와 조사가 결합되어 있어 띄어쓰기만으로는 부족.
  • 잘못된 분절은 의미 파괴 + 메모리 낭비 + 속도 저하.
  • 해결책: 형태소 분석과 통계를 결합한 똑똑한 토큰화 전략 필요.

한국어 토큰화의 비용

  • English: 약 4~5 토큰 / Korean: 약 6~8 토큰
  • 동일한 의미라도 한국어는 더 많은 토큰을 생성 → 모델 기억 용량·속도·비용에 절대적으로 불리.

현대 토크나이저 도구

SentencePiece (구글 진영)Tiktoken (OpenAI 진영)
언어 독립성: 사전 토큰화 불필요, 문장을 유니코드 문자열로 취급바이트 레벨 BPE: 모든 텍스트를 바이트 단위 처리 → 미등록 단어(UNK) 완전 해결
공백의 기호화(Lossless): 공백을 _ 기호로 변환해 정보 손실 방지압도적인 속도: Rust 언어로 최적화되어 매우 빠름
유연성: BPE 또는 Unigram 모델 선택 가능효율 혁신: 어휘 사전 20만 개로 확장해 한국어 토큰 낭비 방지

5. Hugging Face — AI 생태계의 중심 허브

생태계를 지탱하는 세 기둥

  • Models (두뇌): 260만 개 이상의 사전 학습된 AI 두뇌. 프로젝트에 맞는 모델 검색·실행.
  • Datasets (식량/재료): AI를 훈련·검증할 수 있는 정제된 형태의 지식 창고.
  • Spaces (전시장): 모델을 테스트하고 전 세계 유저와 상호작용하는 웹 애플리케이션 쇼케이스.

실습 준비 체크리스트

# Environment
pip install transformers datasets
  • Python & Jupyter Notebook
  • Hugging Face pipeline
  • AutoTokenizer, AutoModelForSequenceClassification

단 2줄이면… (pipeline)

classifier = pipeline('sentiment-analysis')
classifier('I love using Hugging Face!')

pipeline으로 할 수 있는 작업: 감성 분석(sentiment-analysis), 텍스트 요약(summarization), 질문 답변(question-answering), 이미지 분류(image-classification) 등.

Pipeline 방식 vs Tokenizer + Model 방식

Pipeline 방식Tokenizer + Model 방식
대상AI를 처음 도입하는 개발자, 빠른 프로토타이핑AI/ML 엔지니어, 실무 서비스 배포
장점추상화, 3줄 코드로 즉시 실행, 자동 전/후처리배치 처리 최적화, 커스텀 모델 구조, 직접적인 텐서 제어
단점세부 과정 제어·커스터마이징 어려움코드가 길어지고 딥러닝 프레임워크 지식 필요

PyTorch ↔ TensorFlow: return_tensors="pt" / return_tensors="tf" 처럼 어느 프레임워크를 쓰든 API 구조는 놀랍도록 동일하다.

우리가 실습해 볼 NLP 작업들

  1. 감정 분석 — KcBERT
  2. 텍스트 요약 — KoBART
  3. 문서 분류 — KLUE-BERT / RoBERTa
  4. 음성 인식 (STT) — Whisper
  5. 음성 합성 (TTS) — MMS-TTS

6. 감정 분석 (Sentiment Analysis)

텍스트에서 긍정·부정·중립 등의 감정이나 주관적 태도를 판별하는 핵심 NLP 기술.

  • 예) "배송은 느리고 사진과 달리 별로였어요" → 상품 리뷰 분석: 부정(Negative)
  • 예) "일이 잘 풀려서 기분 최고!" → SNS 여론 분석: 긍정(Positive)

활용: 비즈니스(리뷰·브랜드 평판), 고객 서비스, 소셜 미디어(여론), 공공/헬스케어.
기술의 진화: 규칙 기반(2000s 초, 단어 사전) → 기계학습(SVM, Naive Bayes, TF-IDF) → 딥러닝(RNN, LSTM, Transformer).

실습 — 구어체 전문 AI, KcBERT

  • 일반 BERT: 뉴스·위키피디아 등 정제된 문어체 학습.
  • KcBERT: 댓글·채팅 등 실생활 구어체 데이터 집중 학습.
  • AI 허브 한국어 감정 데이터셋으로 파인튜닝 → 긍정/부정/중립 레이블 분류에 탁월.

7. 텍스트 요약

방대한 기사를 세 줄로 요약 (모델: gogamza/kobart-summarization)

  • 긴 기사·회의록 문맥 완벽 이해
  • 핵심 내용만 압축하여 추출
  • 새로운 문장으로 명확하게 생성

⚠️ 주의 — 할루시네이션(환각): 요약은 잘했지만 'SSAFY'를 'SSAFU'·'SSAFD'로 잘못 생성하는 경우가 있음. 실무에서는 후처리가 꼭 필요하다.


8. 문서 분류 (Document Classification)

모델: RoBERTa (Fine-tuned) / pongjin/roberta_with_kornli

  • 어떤 카테고리에 속하는지 판별
  • KorNLI 기반 RoBERTa 모델 사용
  • Zero-shot 분류

RoBERTa — BERT의 잠재력을 극한까지 끌어올린 업그레이드

BERTRoBERTa
마스킹정적(학습마다 동일)동적(학습마다 다르게)
NSP과제 포함과제 제거
데이터16GB160GB (10배↑)
배치 크기256최대 8,000

Zero-Shot Classification 원리

  1. 새로운 문장 입력: "배당락 D-1 코스피, 2330선 상승세… 외인·기관 사자"
  2. 가설 템플릿 변환: 분류 문제를 NLI(추론) 문제로 바꿈
    hypothesis_template = "이 내용은 {후보 라벨}에 관한 내용이다."
  3. NLI 모델의 판독: "이 내용은 스포츠에 관한 것이다" → 모순(0%) / "경제에 관한 것이다" → 함의(90%)
  4. 최종 예측: 가장 함의 확률이 높은 라벨 선택

테스트 결과: 경제 38.8% > 정치 11.9% > IT과학 11.9% > 세계 11.7% > 사회 10.9%

AI에서 'Shot'이란?

Shot = 모델에게 보여주는 '예시(Example) 데이터'의 개수.

  • Zero-Shot: 예시 0개. 사전 지식만으로 새 태스크 정답 유추(오픈북 없는 실전).
  • One-Shot: 예시 1개. 문제 형식·정답 가이드라인 파악.
  • Few-Shot: 예시 2~10개. 패턴을 훨씬 정확하게 파악.

NLI (Natural Language Inference) — 논리의 저울질

"문장 A(Premise)가 진짜라면 문장 B(Hypothesis)도 진짜일까?" → 3가지 Label로 판단.

  • Entailment(0): 수긍(참)
  • Neutral(1): 모호(알 수 없음)
  • Contradiction(2): 반박(거짓)
GLUE BenchmarkKLUE Benchmark
General Language Understanding EvaluationKorean Language Understanding Evaluation
기계의 자연어 이해 능력 평가, 범용·강건한국어 형태론·구문론 특성 반영
9개 태스크, Model-agnostic, 영어 기반Hugging Face 완벽 통합, 8개 태스크

KorNLI 관련 태스크

태스크설명예시
NLI두 문장 관계가 함의/모순/중립인지"비가 온다" → "하늘에 구름이 있다"
STS두 문장 의미 유사도를 0~5로 평가"자동차가 달린다" ↔ "차가 움직인다"
NER문장에서 인물·장소·기관 등 고유명사 태깅"서울에 간다" → 서울(위치)
RE문장 속 두 개체 간 관계 판별"이순신은 조선의 장군이다" → (이순신, 장군, 소속)

NER (Named Entity Recognition) — 문맥 속 개체 찾기

문장 속 토큰들을 읽고 조직(OG), 인물(PS), 장소(LC) 등의 개체 라벨을 부여.
예) "디즈니 공주" → [B-OG] (Organization), "브리트니 스피어스" → [B-PS], [I-PS] (Person)


9. 음성 처리 (STT / TTS)

AI에게 귀와 입을 달아주다.

  • 듣는 귀 (STT, Speech-To-Text): 음성 → 텍스트 (동영상 자동 자막, 회의록 작성, 음성 비서)
  • 말하는 입 (TTS, Text-To-Speech): 텍스트를 감정·억양을 담은 음성으로 합성 (콘텐츠 내레이션, AI 스피커, 오디오북, 내비게이션 안내)

AI는 소리를 어떻게 입력받을까?

Waveform (원시 파동)Spectrogram (오디오의 이미지화)
1차원 실수 배열. 16kHz 오디오 30초 = 480,000의 엄청난 길이!소리의 주파수 정보를 압축한 2D 이미지(Log-mel)
길이가 길어 메모리를 많이 차지데이터 길이(Sequence length)를 획기적으로 줄여 연산

소리를 '보는' 인공지능 — Log-Mel Spectrogram 생성 4단계
1. 스펙트로그램 생성 (주파수 vs 시간)
2. 멜 스케일(Mel Scale) 적용 — 인간은 저음역대 변화에 더 민감
3. 로그 스케일(Log Scale) 적용 — 소리의 작은 변화에 민감하게 반응
4. 최종 완성 — 인간의 청각과 가장 유사한 2D 이미지 데이터

OpenAI Whisper

  • 68만 시간(680k): 방대한 훈련 데이터.
  • 오류율 50% 감소: 경쟁 모델 대비.
  • 강인함(Robustness): 다양한 환경·노이즈에도 정확하게 인식.
  • Architecture: 30초 오디오 청크 → Log-Mel Spectrogram → Encoder Blocks(2x Conv1D + GELU, Sinusoidal Positional Encoding) → Cross Attention → Decoder Blocks → Next-token prediction.

실습 — 내 목소리를 텍스트로

  • 오디오 수집: 시스템 마이크로 5초 녹음
  • 포맷 변환: 16kHz WAV(mic_input.wav)
  • 모델 선택: whisper-small (파라미터 244M, 다국어 지원)

Meta-AI MMS (Massively Multilingual Speech)

  • 과거 한계: 전 세계 7,000여 언어 중 단 100개만 지원.
  • 해결책: 1,100개 이상 언어로 번역된 '성경(Bible)' 오디오 활용 + 자기지도학습(wav2vec 2.0).
  • 성과: 지원 언어 11배 증가(1,107개 STT/TTS, 4,017개 식별), Whisper 대비 단어 오류율 50% 감소, 오픈소스 공개.

Voice Cloning (xTTS-v2)

특정인의 목소리를 복제해 전혀 다른 언어로 말하게 만들 수 있음.

  • Zero-shot Cloning: 수십 시간 사전 학습 없이, 단 10초의 참조 음성(Reference Audio)만으로 목소리 스타일을 즉시 모방.

10. KoBART 요약 모델 파인튜닝 (Mission 01)

"방대한 뉴스를 핵심만 압축하라"

  • 데이터셋: XL-Sum (Hugging Face 제공, BBC 뉴스 기반 44개 언어, 135만+ 기사-요약문 쌍)
  • 목표: 추상적 요약(Abstractive Summary) — 단순히 문장을 뽑는 게 아니라 전체 의미를 이해하고 새롭게 '생성'.

전이 학습 (Transfer Learning) — "거인의 어깨 위에 올라타는 것"

처음부터 학습전이 학습
필요 데이터엄청난 양적은 양
시간/비용수개월 / 수십억 원수일 / 저비용
성능 안정성낮음높음

전처리 3단계

  1. 텍스트 정제(Text Cleaning): HTML 태그·URL·이메일 제거, 특수문자 정리(정규표현식 기반).
  2. 시퀀스 길이 정규화(Length Normalization): Kiwi 형태소 분석기 활용, max_length=1024 기준 절단.
  3. 토큰화 및 인코딩(Tokenization & Encoding): PreTrainedTokenizerFast 활용, 요약문 최대 128 토큰 제한, 배치 단위 동적 패딩(padding=false).

주요 학습 기법

  • LoRA 미세조정(Low-Rank Adaptation): 원본 모델 가중치는 유지하면서 Attention 레이어 일부만 작은 행렬로 업데이트 → 메모리 사용량 대폭 감소. (r=8, lora_alpha=32)
  • Seq2Seq 학습: 원문에서 요약문으로 변환 학습 수행. (TaskType.SEQ_2_SEQ_LM)

학습 하이퍼파라미터

  • epochs: 보통 3~30 설정(데이터셋 양에 따라)
  • learning_rate: 낮을수록 안정적이나 느림. 사전학습 특성상 작게 설정
  • weight_decay: 가중치가 너무 커지는 것 방지
  • warmup_ratio: 10%. 초기 불안정성 방지
  • batch_size: 실제 크기 16 (per_device=2 + gradient_accumulation=8). VRAM에 따라 조절

요약 성능 평가 — ROUGE

기계가 생성한 요약이 사람이 만든 정답 요약과 얼마나 중복되는가?

  • ROUGE-1 (Unigram): 단일 단어 기준 일치도
  • ROUGE-2 (Bigram): 연속된 두 단어 기준 일치도(문장 구조 유사성)
  • ROUGE-L (LCS): 최장 공통 부분 수열 기준, 순서를 고려한 전체 구조·흐름 추적

11. 문서 분류 파인튜닝 (KLUE-BERT)

실습: Text-Classification Fine-Tuning — Zero-shot부터 KLUE-BERT Fine-tuning까지.

  1. 모델 준비: KLUE-BERT 로드 (한국어 언어 특화 모델)
  2. 데이터 준비: 한국어 청원 데이터셋 (17개 분류, 436,660개 데이터)
  3. 설정 및 학습: LoRA 구성 (효율적 미세조정)
  4. 성능 평가: 최종 평가 지표 확인

우리의 핵심 엔진 — KLUE-BERT

한국어 언어적 특성을 깊이 이해하도록 설계된 형태소 기반 서브워드 언어 모델.

  • 62GB(뉴스·위키·청원 등) 학습 → 자연어 추론(NLI), 토픽 분류(TC), 개체명 인식(NER) 수행.

결과: 평가 샘플 2,000개, 최고 성능 카테고리 = 정치/개혁 (F1 Score 0.621 달성).

⚠️ 트러블슈팅 — GPU 메모리 초과 (OOM)

nvidia-smi                     # 1. 현재 GPU 메모리 점유 확인
taskkill /PID [번호] /F        # 2. 해당 프로세스 강제 종료 (Windows 기준)

12. 추천 시스템 (Recommendation System)

무한한 선택지 속에서 길을 찾아주는 나침반. 과거 행동 데이터를 통해 취향을 분석.

추천의 2가지 방식

협업 필터링 (Collaborative Filtering)콘텐츠 기반 필터링 (Content-Based)
나와 비슷한 사람을 찾는 방식상품 자체의 특징을 분석하는 방식
예: "이 상품을 함께 구매한 상품"예: "이 영화와 비슷한 장르의 영화"
단점: 데이터 부족 시 추천 불가 (Cold Start 문제)장점: 콜드 스타트 해결 가능

협업 필터링 상세

사람 기준 (User-based)아이템 기준 (Item-based)
취향이 일치하는 사람끼리 추천함께 소비되는 아이템끼리 추천
장점: 직관적 구현 가능장점: 높은 확장성 (Amazon/Netflix)
단점: 사용자 증가 시 계산량 폭증단점: 비인기 아이템 추천 불가 (롱테일)

실습 1 — 영화 추천 (협업 필터링)

  • 데이터셋: MovieLens 100K
  • 핵심 무기: Surprise 라이브러리
  • 타겟 알고리즘: KNNBasic, SVD

알고리즘의 진화: 이웃 찾기 → 숨겨진 취향 쪼개기

  • KNN (K-Nearest Neighbors): 코사인/피어슨 유사도로 가장 비슷한 'K명의 이웃' 따라가기.
  • SVD (Singular Value Decomposition): 차원 축소를 통해 사용자 취향과 아이템의 '잠재 요인(Latent Factor)' 분석.
  • SVD++: 명시적 평점 + 암시적 피드백(클릭·구매)까지 더하여 정밀도↑.

평가 — RMSE (Root Mean Square Error): 오차(Error) → 제곱(Square) → 평균(Mean) → 제곱근(Root).

  • 큰 오류에 치명적(제곱이므로 페널티가 기하급수적).
  • 루트를 씌워 최종 값을 원래 평점 단위와 동일하게. 낮을수록 우수.

콘텐츠 기반 필터링

과거의 선호도를 바탕으로 아이템 자체의 '속성'을 분석하여 가장 유사한 항목을 찾아내는 마법.

알고리즘역할
TF-IDF어떤 문서에 어떤 단어가 얼마나 중요한가? (예: 영화 줄거리 텍스트 벡터화)
LSA잠재 의미 분석: SVD로 텍스트의 숨겨진 의미 구조 파악 (예: 동의어/유사 개념 매칭)
PCA주성분 분석: 수백 개 특성 중 핵심만 추출 → 계산 효율↑, 노이즈 제거
K-means클러스터링: 아이템 특징 벡터를 K개 그룹으로 묶어 같은 클러스터 아이템 우선 추천

TF-IDF (Term Frequency – Inverse Document Frequency)

  • TF (단어 빈도): 이 문서 안에서 얼마나 자주 나올까? (높은 빈도 = 높은 중요도)
  • IDF (역문서 빈도): 전체 문서에서 얼마나 희귀할까? ('그리고', '이것' 같은 흔한 단어는 가중치↓)
  • 결론: 두 값을 곱해 각 아이템의 가장 유니크한 핵심 키워드(특성 벡터)를 추출.

LSA & PCA — 숨겨진 의미 공간 찾기

  • 문제 제기: 단순 키워드 매칭은 동의어·다의어를 구분하지 못함.
  • 해결책: SVD와 주성분 분석(PCA)을 활용해 몇 개의 핵심 주제로(노이즈 제거, 속도 향상).

실습 2 — 아마존 상품 추천

  • 1,000개 이상의 상품 데이터에서 핵심 카테고리 추출.
  • 미션: 방대한 상품 카테고리·리뷰 텍스트를 전처리하고, 내가 좋아하는 아이템과 가장 유사한 상품(예: SSD) 찾기.
  • 파이프라인: ① 데이터 다운로드/전처리 → ② TF-IDF 벡터화 → ③ 벡터 평균 산출 & 코사인 유사도(Cosine Similarity) 계산 → ④ 각도가 좁은 최적의 상품 추천.

실습 3 — 콘텐츠 기반 추천 파이프라인 최적화 (6 Stages)

  1. 데이터 준비 및 전처리 (JSON → 분석용 데이터)
  2. TF-IDF 텍스트 벡터화 (텍스트 → 숫자 행렬)
  3. LSA 잠재 의미 분석 (차원 축소, 동의어 압축)
  4. PCA 주성분 분석 (분산 보존 차원 축소)
  5. K-means 클러스터링 + 품질 평가(Silhouette)
  6. 종합 성능 비교 → 다양성·속도 등 최적 방법론 선정

속성기반 감정 분석 (ABSA)

  • 일반 감정분석: "이 문장은 긍정인가 부정인가?" → 긍정·부정이 섞인 복합 리뷰 분석 불가.
  • ABSA (Aspect-Based Sentiment Analysis): "무엇에 대해 긍정/부정인가?"
    • 예) "생각보다 작아서 당황했어요(부정). 디자인은 굿입니다(긍정)." → Size: 부정 / Design: 긍정
    • 단순 리뷰가 "디자인·가격 면에서 극찬받은 상품"이라는 입체적 정체성(AspectScores)을 가지게 됨.

추천 시스템의 최대 딜레마

지도학습(분류/회귀)과 달리, 콘텐츠 추천 시스템에는 명확한 정답지(Ground Truth)가 없다.

해결 — 실루엣 점수 (Silhouette Score): 점수가 높다 = "상품 간 분류 기준이 명확하다!" → 유저에게 정말 유사하고 논리적인 상품을 추천할 확률↑.


13. 예측 (Prediction)

데이터 속 단서로 미래를 읽고 숨겨진 이상을 찾아내는 수사 일지.

시계열 예측 (Time Series Forecasting)이상 탐지 (Anomaly Detection)
과거의 패턴을 추적하여 다가올 미래 데이터를 예측압도적인 정상 데이터 속에 숨어있는 극소수의 이상 패턴(범인)을 고립

시계열 예측 — 과거의 패턴으로 미래를 그리는 법

  1. 과거 데이터 관찰
  2. 핵심 가정: 과거는 반복된다!
  3. 앗! 변수가 생겨 패턴이 깨지면? → 예측은 실패한다.

실습 준비

conda env create -f prediction.yaml -n prediction
conda activate prediction   # + VSCode 연동

ARIMA 모델 (p, d, q)

파라미터의미설명
pAR (자기회귀)과거 관측치의 영향 — 몇 단계 전 기록까지 볼 것인가
dI (차분)차분 횟수 — 구불구불한 데이터를 평평하게 펴기(정상성)
qMA (이동평균)과거 오차의 영향 — 예측이 빗나간 과거 오차를 반영해 영점 조절

동작 원리: 학습된 과거 데이터 패턴 → 현재(Current State)에서 AR·MA 규칙 계산 → 최종 미래 예측(Forecasting).

파운데이션 모델 — Google / TimesFM 1.0

  • Zero-Shot 예측: 별도 학습 없이 바로 예측. 과거 데이터(Context)와 예측 구간(Horizon)만 설정.
  • LLM처럼 시계열의 '언어'를 미리 학습한 사전학습 모델 (약 200M 파라미터).
  • 설정 예: context_len=512, horizon_len=12, model_dims=1280
  • 영역별 파운데이션 모델: Text → GPT, Images → CLIP, Data(시계열) → TimesFM

이상 탐지 (Anomaly Detection)

  • 데이터가 불균형하다! 정상은 대다수, 이상은 극소수(예: 0.17%)를 찾아야 함.
  • Isolation Forest: 데이터를 숲으로 격리. 무작위 질문(예: "키가 170 이상?")을 반복해, 이상치는 몇 번의 질문만으로 빠르게 격리(Isolation)됨.
    • 예) 99.83%(284,315건) 정상 vs 0.17%(492건) 이상.

정확도의 함정: 데이터 불균형 상황에서 정확도(Accuracy)는 무의미(99% 정상 예측만 해도 정확도 99%). → 다른 지표가 필요.

평가 지표 — 정밀도 vs 재현율

지표정의
정밀도 (Precision)정답이라 예측한 것 중 실제 정답 비율 → TP / (TP + FP)
재현율 (Recall)실제 정답 중, 모델이 맞게 잡아낸 비율 → TP / (TP + FN)
F1 Score정밀도와 재현율의 조화 평균. 둘 다 균형 있게 높을 때 좋은 점수

예) 실제 사기(492건) 중 139건을 잡음 → Recall: 0.28 (재현율 관점에서 아직 부족).


14. LLM (Large Language Model)

"Transformers are eating Deep Learning" — Vision(ViT), 생성(Stable Diffusion) 등 전 분야로 확장. RNN·CNN 사용은 감소, Transformer가 범용 아키텍처로 부상.

주요 LLM 모델 지형도 (2026 기준)

US Models

  • Meta — Llama 4 & 3.2: Llama 4(109B) 오픈모델 화제, 온디바이스용 Llama 3.2(1B/3B) 주목(700M MAU 라이선스 제한).
  • Microsoft — Phi 시리즈: Phi-4-mini(3.8B), 파라미터 대비 수학·STEM 강점(단, 상업/라이선스 제약).
  • Google — Gemma 4 & 3: Gemma 4(E2B/E4B) 온디바이스 최적화, 멀티모달 통합 지원.
  • Ai2 — Olmo 3: 데이터까지 공개한 100% 오픈소스(Qwen 대비 성능 추격).
  • DeepSeek — V3 / V4 / R1 distill: 비용 효율 강점, sLLM 분야 R1 distill(1.5B~70B) 활용도↑.

Chinese Models

  • Alibaba — Qwen 3 & 2.5-Coder: 오픈 LLM 기준점. Qwen2.5-Coder(32B) 코딩 강세.
  • 즈푸(智谱) — GLM-5 / 4.6: 대용량(744B) MoE. 에이전트·코딩 강점.
  • Moonshot — Kimi K2.x: 긴 컨텍스트·에이전트 특화.

LLM 개발 3단계

1단계 Pre-training (사전 학습) → 2단계 SFT (지도 미세조정) → 3단계 RLHF (정렬)
   지식 습득            지시 이해              인간 선호도 반영

Step 1 — Pre-training (백과사전 만들기)

  • 인터넷의 방대한 데이터를 다음 단어(Next Token Prediction)로 예측.
  • 정답 레이블이 필요 없는 Self-supervised Learning.
  • Multi-GPU 인프라 필요 → 결과물 = Base Model(지식은 있으나 지시를 따르진 못함).

Step 2 — Fine-Tuning
| Non-instructional FT | Instructional FT |
|----------------------|------------------|
| 문어체·특정 도메인 학습 (Plain Text) | 지시(Instruction) 학습 |
| 데이터: 사내 기술 문서 등 | 데이터: Input-Output Pair |
| 특정 도메인 지식 주입 | "질문↔답변" 형식으로 지시 수행 능력↑ |

Step 3 — 인간의 선호도 정렬
| RLHF (강화 학습) | DPO (직접 선호 최적화) |
|------------------|------------------------|
| Reinforcement Learning from Human Feedback | Direct Preference Optimization |
| 보상 모델 + PPO(Proximal Policy Optimization) | 별도 보상 모델 없이 "이 답변이 저 답변보다 낫다"로 직접 최적화 |
| ChatGPT 초기에 사용, 복잡·불안정 | 간단·안정적, 최신 트렌드 |

대표 LLM들의 파이프라인 (Phase 1 Base → Phase 2 Instruct → Phase 3 Aligned)

  • OpenAI GPT: GPT (Base) → GPT-Instruct → ChatGPT
  • Mistral: Base → Instruct → (RLHF·DPO 정렬)
  • Hugging Face에서 각 단계의 모델을 이름으로 구분할 수 있음.

실습 환경 준비

  • PyTorch 기반 CUDA GPU 필요
  • transformers, faiss, datasets 라이브러리
  • 베이스 모델: meta-llama/Llama-3.2-3B-Instruct
  • 임베딩 모델: jhgan/ko-sbert-multitask
  • 3B ⇒ 파라미터 개수가 30억
  • Instruct ⇒ fine tuning까지 한 모델

Llama 3 → Llama 4 시리즈 정리

버전특징
Llama 3어휘(Vocabulary) 128K로 확장, 다국어 대응
Llama 3.1405B 플래그십, 128,000 컨텍스트
Llama 3.2경량 모델(1B, 3B), 온디바이스용
Llama 3.370B로 405B급 성능 근접(효율화, Pruning)

Llama 4 (MoE 구조)

  • Scout: 총 109B(활성 17B, 16 전문가), 컨텍스트 1,000만(10M).
  • Maverick: 총 400B(활성 17B, 128 전문가), 컨텍스트 100만.
  • Behemoth: 총 2T(활성 288B), 학습용 교사 모델(Teacher Model).

LLM 5가지 실습 흐름

  1. 로컬 테스트: Llama 3.2-3B-Instruct 로컬 실행
  2. RAG 기반 봇 만들기: Context-aware 검색 결합
  3. 파인튜닝: komedic-instruct 모델로 파인튜닝
  4. (임베딩·검색 실습)
  5. 성능 종합 평가

환각(Hallucination)의 두 가지 해결책

Llama 한글 질의(Baseline)에서 사실과 다른 답변(환각)이 발생 → 아래로 보완:

RAGFine-Tuning
외부 지식 검색(신뢰 지식 참조)내부 지식 강화(추가 학습)
최신 정보·근거 문서 필요 시특정 도메인·말투 내재화 필요 시

RAG (Retrieval-Augmented Generation) 파이프라인

Step 1. 색인      Step 2. 검색      Step 3. 증강      Step 4. 생성
데이터 임베딩  → 유사도 검색   → 프롬프트 결합  → LLM 답변 생성
  1. 색인(Indexing): 10개짜리 지식 데이터를 임베딩(jhgan/ko-sbert-multitask) → FAISS 벡터 저장.
  2. 검색(Retrieval): 사용자 질문을 임베딩해 FAISS에서 유사한 Top-K 지식 검색.
  3. 증강(Augmentation): 검색된 지식을 Llama-3.2 Chat Template에 결합.
  4. 생성(Generation): 근거 기반으로 최종 답변 생성.

Vector Store 비교
| FAISS (벡터 라이브러리) | Vector Database (Milvus 등) |
|-------------------------|------------------------------|
| 빠른 로컬 검색, 프로토타이핑 적합 | 대규모 서비스·영속성 지원, 관리 편의 |

검색 방식 — 키워드 vs 시맨틱

키워드 검색 (BM25)시맨틱 검색 (Semantic Search)
단어의 빈도(Count) 기반벡터 유사도(Vector Similarity) 기반
의미를 이해하지 못함(동의어 취약)문장의 '의미'와 맥락까지 파악
  • MTEB (Massive Text Embedding Benchmark): 임베딩 모델의 성능을 종합 평가하는 벤치마크. 검색·분류·클러스터링 등 태스크와 성능·크기·언어별로 모델을 비교(Top Tier: Google, Meta, OpenAI 등).

미션 — 의료 특화 LLM

  • 모델: unidocs/llama-3.2-3b-komedic-instruct
  • 한국어 의료 데이터로 파인튜닝된 특화 LLM.

✍️ 오늘 배운 것 한 줄 정리

  • NLP: BERT(이해)·GPT(생성)·BART(요약)는 모두 Transformer 기반이며 학습 방식(MLM/NSP, Autoregressive, 노이즈 복원)이 다르다.
  • 토큰화: 한국어는 교착어라 서브워드 토큰화 전략이 필수(SentencePiece / Tiktoken).
  • Hugging Face: pipeline 3줄이면 감정분석·요약·분류·음성까지. 실무는 Tokenizer+Model.
  • 추천: 협업 필터링 vs 콘텐츠 기반, TF-IDF·LSA·PCA·K-means, 평가엔 RMSE·실루엣 점수.
  • 예측: ARIMA(p,d,q)와 파운데이션 모델(TimesFM), 불균형 데이터엔 Precision·Recall·F1이 핵심.
  • LLM: Pre-training → SFT → RLHF/DPO. 환각은 RAG와 Fine-Tuning으로 보완.
profile
뭘봐

0개의 댓글