오늘은 자연어 처리(NLP)의 핵심 모델부터 추천 시스템, 시계열 예측/이상 탐지, 그리고 LLM까지 AI의 주요 분야를 폭넓게 훑었다. 개념 → 대표 모델 → 실습 흐름으로 정리한다.
인간의 언어는 유연하고 모호하다. 감정 표현과 예외적인 문법이 존재한다(예: 한국어, 영어).
반면 기계의 언어는 엄격하고 명확하다. 정해진 문법을 벗어나면 의미가 성립하지 않는다(예: Python, Java, E=mc²).
NLP = 이 두 세계를 연결하는 통역사.
| 모델 | 특징 | 역할 |
|---|---|---|
| BERT | 양방향(Bidirectional) | 독해 전문 |
| GPT | 순차적(Autoregressive) | 작문 전문 |
| BART | 결합형 | 번역 / 요약 |
세 모델 모두 Transformer를 코어로 사용한다.
① 빈칸 추론 — MLM (Masked Language Model)
오늘 점심은 [MASK] 에서 먹었다.② 문장 간 논리 파악 — NSP (Next Sentence Prediction)
[CLS] 남자가 가게로 갔다 [SEP] 그는 우유를 샀다 → IsNext (50%)[CLS] 남자가 가게로 갔다 [SEP] 펭귄은 날 수 없는 새다 → NotNext (50%)인공지능은 → 인공지능은 미래를 → 인공지능은 미래를 바꿀 → ...BERT와 GPT 두 아키텍처를 결합한 표준 Sequence-to-Sequence 모델.
원문: 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 |
AI에게 단어를 가르치는 방법
[jump]+[##ing] → jumping, [quick]+[##ly] → quicklyI / go / to / school).| SentencePiece (구글 진영) | Tiktoken (OpenAI 진영) |
|---|---|
| 언어 독립성: 사전 토큰화 불필요, 문장을 유니코드 문자열로 취급 | 바이트 레벨 BPE: 모든 텍스트를 바이트 단위 처리 → 미등록 단어(UNK) 완전 해결 |
공백의 기호화(Lossless): 공백을 _ 기호로 변환해 정보 손실 방지 | 압도적인 속도: Rust 언어로 최적화되어 매우 빠름 |
| 유연성: BPE 또는 Unigram 모델 선택 가능 | 효율 혁신: 어휘 사전 20만 개로 확장해 한국어 토큰 낭비 방지 |
# Environment
pip install transformers datasets
pipelineAutoTokenizer, AutoModelForSequenceClassificationpipeline)classifier = pipeline('sentiment-analysis')
classifier('I love using Hugging Face!')
pipeline으로 할 수 있는 작업: 감성 분석(sentiment-analysis), 텍스트 요약(summarization), 질문 답변(question-answering), 이미지 분류(image-classification) 등.
| Pipeline 방식 | Tokenizer + Model 방식 | |
|---|---|---|
| 대상 | AI를 처음 도입하는 개발자, 빠른 프로토타이핑 | AI/ML 엔지니어, 실무 서비스 배포 |
| 장점 | 추상화, 3줄 코드로 즉시 실행, 자동 전/후처리 | 배치 처리 최적화, 커스텀 모델 구조, 직접적인 텐서 제어 |
| 단점 | 세부 과정 제어·커스터마이징 어려움 | 코드가 길어지고 딥러닝 프레임워크 지식 필요 |
PyTorch ↔ TensorFlow:
return_tensors="pt"/return_tensors="tf"처럼 어느 프레임워크를 쓰든 API 구조는 놀랍도록 동일하다.
텍스트에서 긍정·부정·중립 등의 감정이나 주관적 태도를 판별하는 핵심 NLP 기술.
활용: 비즈니스(리뷰·브랜드 평판), 고객 서비스, 소셜 미디어(여론), 공공/헬스케어.
기술의 진화: 규칙 기반(2000s 초, 단어 사전) → 기계학습(SVM, Naive Bayes, TF-IDF) → 딥러닝(RNN, LSTM, Transformer).
방대한 기사를 세 줄로 요약 (모델: gogamza/kobart-summarization)
⚠️ 주의 — 할루시네이션(환각): 요약은 잘했지만 'SSAFY'를 'SSAFU'·'SSAFD'로 잘못 생성하는 경우가 있음. 실무에서는 후처리가 꼭 필요하다.
모델: RoBERTa (Fine-tuned) / pongjin/roberta_with_kornli
| BERT | RoBERTa | |
|---|---|---|
| 마스킹 | 정적(학습마다 동일) | 동적(학습마다 다르게) |
| NSP | 과제 포함 | 과제 제거 |
| 데이터 | 16GB | 160GB (10배↑) |
| 배치 크기 | 256 | 최대 8,000 |
hypothesis_template = "이 내용은 {후보 라벨}에 관한 내용이다."테스트 결과: 경제 38.8% > 정치 11.9% > IT과학 11.9% > 세계 11.7% > 사회 10.9%
Shot = 모델에게 보여주는 '예시(Example) 데이터'의 개수.
"문장 A(Premise)가 진짜라면 문장 B(Hypothesis)도 진짜일까?" → 3가지 Label로 판단.
| GLUE Benchmark | KLUE Benchmark |
|---|---|
| General Language Understanding Evaluation | Korean Language Understanding Evaluation |
| 기계의 자연어 이해 능력 평가, 범용·강건 | 한국어 형태론·구문론 특성 반영 |
| 9개 태스크, Model-agnostic, 영어 기반 | Hugging Face 완벽 통합, 8개 태스크 |
| 태스크 | 설명 | 예시 |
|---|---|---|
| NLI | 두 문장 관계가 함의/모순/중립인지 | "비가 온다" → "하늘에 구름이 있다" |
| STS | 두 문장 의미 유사도를 0~5로 평가 | "자동차가 달린다" ↔ "차가 움직인다" |
| NER | 문장에서 인물·장소·기관 등 고유명사 태깅 | "서울에 간다" → 서울(위치) |
| RE | 문장 속 두 개체 간 관계 판별 | "이순신은 조선의 장군이다" → (이순신, 장군, 소속) |
문장 속 토큰들을 읽고 조직(OG), 인물(PS), 장소(LC) 등의 개체 라벨을 부여.
예) "디즈니 공주" → [B-OG] (Organization), "브리트니 스피어스" → [B-PS], [I-PS] (Person)
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 이미지 데이터
mic_input.wav)whisper-small (파라미터 244M, 다국어 지원)특정인의 목소리를 복제해 전혀 다른 언어로 말하게 만들 수 있음.
"방대한 뉴스를 핵심만 압축하라"
| 처음부터 학습 | 전이 학습 | |
|---|---|---|
| 필요 데이터 | 엄청난 양 | 적은 양 |
| 시간/비용 | 수개월 / 수십억 원 | 수일 / 저비용 |
| 성능 안정성 | 낮음 | 높음 |
max_length=1024 기준 절단.PreTrainedTokenizerFast 활용, 요약문 최대 128 토큰 제한, 배치 단위 동적 패딩(padding=false).r=8, lora_alpha=32)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에 따라 조절기계가 생성한 요약이 사람이 만든 정답 요약과 얼마나 중복되는가?
실습: Text-Classification Fine-Tuning — Zero-shot부터 KLUE-BERT Fine-tuning까지.
한국어 언어적 특성을 깊이 이해하도록 설계된 형태소 기반 서브워드 언어 모델.
결과: 평가 샘플 2,000개, 최고 성능 카테고리 = 정치/개혁 (F1 Score 0.621 달성).
⚠️ 트러블슈팅 — GPU 메모리 초과 (OOM)
nvidia-smi # 1. 현재 GPU 메모리 점유 확인 taskkill /PID [번호] /F # 2. 해당 프로세스 강제 종료 (Windows 기준)
무한한 선택지 속에서 길을 찾아주는 나침반. 과거 행동 데이터를 통해 취향을 분석.
| 협업 필터링 (Collaborative Filtering) | 콘텐츠 기반 필터링 (Content-Based) |
|---|---|
| 나와 비슷한 사람을 찾는 방식 | 상품 자체의 특징을 분석하는 방식 |
| 예: "이 상품을 함께 구매한 상품" | 예: "이 영화와 비슷한 장르의 영화" |
| 단점: 데이터 부족 시 추천 불가 (Cold Start 문제) | 장점: 콜드 스타트 해결 가능 |
| 사람 기준 (User-based) | 아이템 기준 (Item-based) |
|---|---|
| 취향이 일치하는 사람끼리 추천 | 함께 소비되는 아이템끼리 추천 |
| 장점: 직관적 구현 가능 | 장점: 높은 확장성 (Amazon/Netflix) |
| 단점: 사용자 증가 시 계산량 폭증 | 단점: 비인기 아이템 추천 불가 (롱테일) |
알고리즘의 진화: 이웃 찾기 → 숨겨진 취향 쪼개기
평가 — RMSE (Root Mean Square Error): 오차(Error) → 제곱(Square) → 평균(Mean) → 제곱근(Root).
과거의 선호도를 바탕으로 아이템 자체의 '속성'을 분석하여 가장 유사한 항목을 찾아내는 마법.
| 알고리즘 | 역할 |
|---|---|
| TF-IDF | 어떤 문서에 어떤 단어가 얼마나 중요한가? (예: 영화 줄거리 텍스트 벡터화) |
| LSA | 잠재 의미 분석: SVD로 텍스트의 숨겨진 의미 구조 파악 (예: 동의어/유사 개념 매칭) |
| PCA | 주성분 분석: 수백 개 특성 중 핵심만 추출 → 계산 효율↑, 노이즈 제거 |
| K-means | 클러스터링: 아이템 특징 벡터를 K개 그룹으로 묶어 같은 클러스터 아이템 우선 추천 |
지도학습(분류/회귀)과 달리, 콘텐츠 추천 시스템에는 명확한 정답지(Ground Truth)가 없다.
해결 — 실루엣 점수 (Silhouette Score): 점수가 높다 = "상품 간 분류 기준이 명확하다!" → 유저에게 정말 유사하고 논리적인 상품을 추천할 확률↑.
데이터 속 단서로 미래를 읽고 숨겨진 이상을 찾아내는 수사 일지.
| 시계열 예측 (Time Series Forecasting) | 이상 탐지 (Anomaly Detection) |
|---|---|
| 과거의 패턴을 추적하여 다가올 미래 데이터를 예측 | 압도적인 정상 데이터 속에 숨어있는 극소수의 이상 패턴(범인)을 고립 |
실습 준비
conda env create -f prediction.yaml -n prediction
conda activate prediction # + VSCode 연동
| 파라미터 | 의미 | 설명 |
|---|---|---|
| p | AR (자기회귀) | 과거 관측치의 영향 — 몇 단계 전 기록까지 볼 것인가 |
| d | I (차분) | 차분 횟수 — 구불구불한 데이터를 평평하게 펴기(정상성) |
| q | MA (이동평균) | 과거 오차의 영향 — 예측이 빗나간 과거 오차를 반영해 영점 조절 |
동작 원리: 학습된 과거 데이터 패턴 → 현재(Current State)에서 AR·MA 규칙 계산 → 최종 미래 예측(Forecasting).
context_len=512, horizon_len=12, model_dims=1280정확도의 함정: 데이터 불균형 상황에서 정확도(Accuracy)는 무의미(99% 정상 예측만 해도 정확도 99%). → 다른 지표가 필요.
| 지표 | 정의 |
|---|---|
| 정밀도 (Precision) | 정답이라 예측한 것 중 실제 정답 비율 → TP / (TP + FP) |
| 재현율 (Recall) | 실제 정답 중, 모델이 맞게 잡아낸 비율 → TP / (TP + FN) |
| F1 Score | 정밀도와 재현율의 조화 평균. 둘 다 균형 있게 높을 때 좋은 점수 |
예) 실제 사기(492건) 중 139건을 잡음 → Recall: 0.28 (재현율 관점에서 아직 부족).
"Transformers are eating Deep Learning" — Vision(ViT), 생성(Stable Diffusion) 등 전 분야로 확장. RNN·CNN 사용은 감소, Transformer가 범용 아키텍처로 부상.
US Models
Chinese Models
1단계 Pre-training (사전 학습) → 2단계 SFT (지도 미세조정) → 3단계 RLHF (정렬)
지식 습득 지시 이해 인간 선호도 반영
Step 1 — Pre-training (백과사전 만들기)
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 초기에 사용, 복잡·불안정 | 간단·안정적, 최신 트렌드 |
PyTorch 기반 CUDA GPU 필요transformers, faiss, datasets 라이브러리meta-llama/Llama-3.2-3B-Instructjhgan/ko-sbert-multitask
- 3B ⇒ 파라미터 개수가 30억
- Instruct ⇒ fine tuning까지 한 모델
| 버전 | 특징 |
|---|---|
| Llama 3 | 어휘(Vocabulary) 128K로 확장, 다국어 대응 |
| Llama 3.1 | 405B 플래그십, 128,000 컨텍스트 |
| Llama 3.2 | 경량 모델(1B, 3B), 온디바이스용 |
| Llama 3.3 | 70B로 405B급 성능 근접(효율화, Pruning) |
Llama 4 (MoE 구조)
Llama 3.2-3B-Instruct 로컬 실행komedic-instruct 모델로 파인튜닝Llama 한글 질의(Baseline)에서 사실과 다른 답변(환각)이 발생 → 아래로 보완:
| RAG | Fine-Tuning |
|---|---|
| 외부 지식 검색(신뢰 지식 참조) | 내부 지식 강화(추가 학습) |
| 최신 정보·근거 문서 필요 시 | 특정 도메인·말투 내재화 필요 시 |
Step 1. 색인 Step 2. 검색 Step 3. 증강 Step 4. 생성
데이터 임베딩 → 유사도 검색 → 프롬프트 결합 → LLM 답변 생성
jhgan/ko-sbert-multitask) → FAISS 벡터 저장.Vector Store 비교
| FAISS (벡터 라이브러리) | Vector Database (Milvus 등) |
|-------------------------|------------------------------|
| 빠른 로컬 검색, 프로토타이핑 적합 | 대규모 서비스·영속성 지원, 관리 편의 |
| 키워드 검색 (BM25) | 시맨틱 검색 (Semantic Search) |
|---|---|
| 단어의 빈도(Count) 기반 | 벡터 유사도(Vector Similarity) 기반 |
| 의미를 이해하지 못함(동의어 취약) | 문장의 '의미'와 맥락까지 파악 |
unidocs/llama-3.2-3b-komedic-instructpipeline 3줄이면 감정분석·요약·분류·음성까지. 실무는 Tokenizer+Model.