머신러닝 vs 딥러닝
머신러닝은 데이터를 이용해 명시적인 프로그래밍 없이 학습하는 기술로, SVM, 의사결정트리, 랜덤포레스트 등이 있음
딥러닝은 인공신경망을 기반으로 하는 머신러닝의 한 분야로, 다층 구조를 통해 이미지, 음성, 자연어 같은 비정형 데이터를 효율적으로 처리
과적합을 방지하는 방법
과적합: 모델이 학습 데이터에 너무 잘맞아서, 새로운 데이터에 일반화되지 못하는 현상
Dropout
L1/L2 정규화 (Weight Decay)
데이터 증강
학습 조기 종료 (Early Stopping)
교차 검증 (Cross-Validation)
손실함수의 역할과 종류
모델의 예측과 실제 값의 차이를 정량화하여, 모델이 얼마나 잘못 예측하고 있는지 나타내는 함수
회귀 : MSE, MAE
분류 : Cross-Entropy Loss
불균형 데이터 : Focal Loss
임베딩 학습 : Contrastive Loss, Triplet Loss
ReLU와 Sigmoid의 차이점과 ReLU가 많이 쓰이는 이유
Sigmoid : 출력 범위 (0, 1)로, 비선형성을 제공하지만 gradient vanishing 문제가 있음
ReLU : 음수구간은 0, 양수구간은 그대로 출력하며 (0, x), 연산이 간단하고 gradient vanishing 문제가 적음
ReLU는 sparse activation과 빠른 수렴 속도로 인해 많이 활용된다.
Optimizer 정의와 종류
손실함수를 최소화하기 위해 가중치를 조정하는 방법
SGD : 가장 기본적인 방식으로, 모든 샘플을 사용하지 않고 일부만 사용하여 효율성 향상
Momentum : 이전 업데이트 정보를 고려해 진동을 줄이고 빠르게 수렴
Adam : RMSProp과 Momentum을 결합한 형태로, 학습률을 자동으로 조절하며 빠른 수렴을 보임
Dropout과 Batch Normalization의 차이점
Dropout : 학습 시 일부 뉴런을 확률적으로 제거하여 과적합 방지하는 기법
Batch Normalization : 각 배치마다 정규화를 수행해 학습 속도와 안정성을 높인 기법
Dropout은 모델의 복잡도를 낮추고, BatchNorm은 내부 공변량 변화를 줄인다.
딥러닝에서 활성화 함수가 필요한 이유
활성화 함수는 선형 결합만으로 표현할 수 없는 복잡한 비선형 관계를 모델이 학습할 수 있도록 도와준다. 비선형성이 없다면 다층 신경망도 하나의 선형모델과 다르지 않게 된다. 따라서 ReLU, Sigmoid, Tanh 등과 같은 활성화 함수를 통해 학습에 필요한 비선형성을 도입한다.
모델 평가 지표로 Precision, Recall, F1 Score의 개념과 차이
Precision : 모델이 양성이라고 판단한 것 중 실제 양성 비율
Recall : 실제 양성 중 모델이 맞춘 비율
F1 Score : Precision과 Recall의 조화 평균으로, 두 지표 간 trade-off를 고려한 종합 지표. 특히 불균형 데이터에서는 acc보다 f1-score가 더 유용하다.
활성화함수로 GELU, Swish 등이 ReLU 보다 더 좋은 이유
ReLU는 단순하고 효율적이지만, 음수 영역에서 gradient가 0이 되는 dying ReLU 문제가 발생할 수 있다.
GELU와 Swish는 부드러운 비선형성을 가지며, 학습 과정에서 더 나은 gradient 흐름을 제공하여 transformer 기반 모델 등에서 성능 향상에 기여한다.
학습률의 역할과 잘못 설정했을 때의 문제
학습률 : 가중치를 얼마나 크게 업데이트할지 결정하는 하이퍼파라미터
너무 크면 발산하거나 최적점을 지나칠 수 있고, 너무 작으면 수렴 속도가 느려지고 local minimum에 갇힐 수 있다.
학습률 스케줄링과 Warmup 등의 기법으로 이를 조절할 수 있다.
하이퍼파라미터 튜닝에서 중요한 요소
학습률 (lr)
배치 크기
optimizer 종류
dropout 비율
레이어 수 및 hidden dimension
튜닝은 Grid Search, Random Search, 베이시안 옵티마이션 등을 사용한다.
Transformer 모델의 기본구조
인코더-디코더 구조를 가지며, RNN 없이 병렬 연산으로 시퀀스 데이터를 처리할 수 있는 모델이다.
각 인코더/디코더는 Self-Attention, Multi-Head Attention, Feed Foward, Layer Normalization, Residual Connection 등으로 구성된다.
또한, Positional encoding을 통해 순서 정보를 학습하며, attention 메커니즘을 통해 문맥 정보를 효율적으로 반영한다.
Self-Attention 동작 과정
입력 시퀀스 내 각 단어가 다른 단어들과 얼마나 관련있는지를 학습하는 메커니즘
각 단어는 Query, Key, Value로 변환되며, Attention score는 query와 key의 내적으로 계산된다. 이후, Softmax 함수를 통해 정규화된 가중치로 Value들을 가중합하여 최종 출력이 생성된다.
이 방식은 문맥을 전역적으로 반영할 수 있고 병렬화에 유리하다.
Multi-Head Attention 동작 과정
여러 개의 self-attention을 병렬로 수행해 다양한 시각에서 관계를 파악하는 메커니즘
각 head는 서로 다른 파라미터로, query, key, value를 학습하여 다른 feature space를 본다. 여러 head의 출력을 concatenate 후, linear projection을 통해 합쳐 최종 attention score를 만든다.
이로써 다양한 의미 관계를 동시에 반영할 수 있다.
Positional encoding은 왜 필요한가?
Transformer는 순차적인 구조가 아니기 때문에, 입력 토큰의 순서 정보를 자체적으로 학습하지 못한다. 따라서 이를 통해 위치 정보를 임베딩에 추가한다.
일반적으로 sin, cos 함수를 사용하여 각 위치마다 고유한 값을 생성하며, 이를 입력 임베딩에 더해준다.
BERT의 구조와 학습 방식
Transformer 인코더 기반의 사전학습 언어 모델로, 양방향 문맥 이해가 가능
MLM(Masked Language Modeling)과 NSP(Next Sentence Prediction) 방식으로 학습한다.
문장에서 일부 단어를 [MASK]로 가리고 이를 예측하며, NSP는 두 문장이 실제 연속된 문장인지 판별한다. 이러한 사전학습을 통해 다양한 NLP 태스크에 파인튜닝이 가능하다.
GPT와 BERT의 차이
GPT : Transformer 디코더 기반의 언어 생성 모델로, 왼쪽에서 오른쪽으로 순차적으로 문장 생성
GPT는 Causal Language Modeling 방식으로 학습하며, 토큰 순서에 따라 앞선 정보만 활용한다.
BERT는 이해(분류, QA)에 강하고, GPT는 생성(요약, 대화)에 강하다.
Self-Supervised Learning
라벨 없이 데이터 자체에서 학습 목표를 생성해 학습하는 방식
라벨링 비용 없이 대규모 데이터를 학습할 수 있어 일반화 성능이 뛰어나고, Pre-training에 널리 사용된다.
Contrastive Learning의 대표 알고리즘
비슷한 데이터는 가까이, 다른 데이터는 멀게 학습하는 방법
Anchor, Positive, Negative 샘플 간의 관계 학습하며 대표적으로 InfoNCE Loss를 사용한다.
대표적으로 SimCLR, MoCo, BYOL 등이 있다.
데이터 증강이 핵심 역할을 하며, 라벨 없이 고품질 임베딩을 얻을 수 있다.
GAN의 구조와 학습 과정
Generator는 가짜 데이터를 생성하고, Discriminator는 진짜와 가짜를 구분한다.
Generator는 D를 속이기 위해 점점 더 정교한 데이터를 만들고, D는 이를 판별하려고 개선된다.
이 과정은 Min-Max 게임으로 표현되며, 학습이 불안정하거나 mode collapse가 발생할 수 있다.
DCGAN : CNN 적용하여 이미지 생성 성능 향상
WGAN : Wasserstein Distance를 도입해 학습 안정화
CycleGAN : 도메인 간 이미지 스타일 변환
StyleGAN : 고해상도 이미지 생성, 얼굴 합성
Knowledge Distillation
큰 모델 (teacher)의 지식을 작은 모델(student)에 전달하는 기법
soft label을 이용해 정답 분포를 student가 모방하게 한다.
이를 통해 성능을 크게 손해보지 않으면서 모델 크기와 추론 속도를 줄일 수 있다.
경량화 방법
Pruning : 중요하지 않은 가중치를 제거하여 파라미터 수 감소
Quantization : float32 -> int8 등 정밀도 낮추기
Knwoledge Distillation : 앞서 설명
NAS (Neural Architecture Search) : 자동으로 효율적 구조 탐색
Transformer가 RNN보다 우수한 이유
병렬 처리가 가능하기 때문에 학습 속도가 빠르다
Long-term dependency를 잘 처리한다.
attention을 통해 전역 문맥을 반영한다
RNN은 순차적 처리만 가능하고, gradient vanishing 문제가 있다. transformer는 구조의 단순성과 확장성 대문에 다양한 분야에서 활용한다.
Gradient Vanishin/Exploding 문제와 해결 방법
깊은 신경망에서 역전파 시 gradient가 너무 작아지거나(0에 수렵) 너무 커지는 문제이다. 이로 인해 학습이 멈추거나 발산할 수 있다.
ReLU 계열 함수 사용
Batch Normalization
Weigh Initialization
LSTM, GRU 등의 구조적 개선
Layer Normalization vs Batch Normalization
LayerNorm: 한 샘플 내에서 feature별 정규화 -> NLP 모델에서 많이 사용, 시퀀스 모델에 적합
BatchNorm : 배치 단위로 평균과 분산 계산 -> CNN에 주로 사용
Fine-Tuning과 Feature Extraction의 차이
Fine-tuning: 사전학습된 모델의 일부 또는 전체를 task에 맞춰 추가 학습
성능이 좋지만 과적합의 위험
Feature Extraction : 사전학습된 모델의 feature만 사용, downstream task에 새로운 classifier만 학습
빠르고 일반화에 강함
Cross-Attention vs Self-Attention
Cross : 서로 다른 입력 간 attention
transformer 디코더에서 인코더 output과 attention
self: 동일한 입력끼리 attention
BERT 인코더
PEFT
LoRA
Prefix Tuning
Adapter
- 컬렉션 아티클