Q1. 딥러닝과 머신러닝 간의 포함관계에 대해 설명해주세요.
A1. 딥러닝은 머신러닝의 한 방법이다. 인공신경망을 기반으로 복잡한 패턴과 표현을 학습한다. 빅데이터와 높은 연산 자원을 필요로 하지만, 그만큼 성능이 좋다.
Q2. 딥러닝의 성능향상을 위해 고려하는 하이퍼파라미터의 종류에는 어떤 것들이 있는지 설명해주세요.
A2. 학습률(learning_rate), 배치 크기(batch_size), 에포크 수(epochs), 최적화 알고리즘(optimizer), 은닉층 수(num_layers), 뉴런 수(hidden_units), 활성화 함수(activation), 드롭아웃 비율(dropout), 가중치 초기화(initializer) 등이 있다.
인공지능 > 머신러닝 > 딥러닝
인공지능 (AI)
│
├── 전문가 시스템 (Expert Systems)
├── 탐색 기반 AI (Search-based AI)
├── 규칙 기반 시스템 (Rule-based Systems)
├── 머신러닝 (Machine Learning)
│ │
│ ├── 지도학습 (Supervised Learning)
│ │ ├── 선형회귀 (Linear Regression)
│ │ ├── 로지스틱 회귀 (Logistic Regression)
│ │ ├── 서포트 벡터 머신 (SVM)
│ │ ├── 결정 트리 (Decision Tree)
│ │ └── K-최근접 이웃 (K-NN)
│ │
│ ├── 비지도학습 (Unsupervised Learning)
│ │ ├── 군집화 (Clustering)
│ │ └── 차원 축소 (PCA 등)
│ │
│ ├── 강화학습 (Reinforcement Learning)
│ │ ├── Q-Learning
│ │ └── Policy Gradient
│ │
│ └── 딥러닝 (Deep Learning)
│ │
│ ├── 인공신경망 (ANN)
│ ├── 합성곱신경망 (CNN)
│ ├── 순환신경망 (RNN)
│ ├── 트랜스포머 (Transformer)
│ │
│ └── 딥러닝 성능 향상 요소
│ │
│ ├── 학습률 (Learning Rate)
│ ├── 배치 크기 (Batch Size)
│ ├── 에폭 수 (Epoch)
│ ├── 옵티마이저 (Optimizer)
│ ├── 은닉 유닛 수 (Hidden Units)
│ ├── 층 수 (Number of Layers)
│ ├── 드롭아웃 비율 (Dropout)
│ ├── 정규화 계수 (Weight Decay / λ)
│ └── 활성화 함수 (Activation Function)
📌 딥러닝은 머신러닝 방법 중 하나
| 항목 | 머신러닝 (ML) | 딥러닝 (DL) |
|---|---|---|
| 핵심 목적 | 데이터 기반 학습 | 신경망 기반 고차원 표현 학습 |
| 주요 기법 | 지도/비지도/강화학습, SVM, 트리, KNN | CNN, RNN, LSTM, Transformer 등 |
| 학습 방법 | 명시된 특성(feature)을 활용한 학습 | 특성 자동 추출 (end-to-end 학습) |
| 필요 데이터량 | 중간 정도 | 많을수록 성능 증가 (빅데이터 필수) |
| 연산 자원 요구 | 중간 | 매우 높음 (GPU/TPU 필요) |
| 대표 응용 분야 | 가격 예측, 의료 진단, 마케팅 분석 등 | 자율주행, 음성 인식, 번역, 이미지 분류 등 |
A. 모델 구조 관련
num_layers: 층의 개수 (네트워크 깊이)hidden_units: 각 층의 뉴런 수activation: 활성화 함수 (ReLU, Sigmoid, Tanh, LeakyReLU 등)kernel_size, stride, padding: CNN 계열에서 필터 연산 세부 설정B. 최적화 관련
optimizer: 최적화 알고리즘 (SGD, Adam, RMSProp 등)learning_rate: 학습률 (가장 중요!)momentum: 관성 계수 (SGD에 자주 사용)C. 학습 설정
batch_size: 한 번에 학습에 넣는 데이터 수epochs: 전체 학습 반복 횟수shuffle: 데이터 섞기 여부D. 정규화 및 과적합 방지
dropout: 무작위 뉴런 비활성화 비율weight_decay: 가중치 L2 정규화early_stopping: 검증 성능이 멈추면 학습 조기 종료E. 학습률 스케줄링
lr_scheduler: 학습률 점진 조정 방식 (StepLR, ReduceLROnPlateau, CosineAnnealing)step_size: 스케줄링 주기gamma: 학습률 감소 비율F. 손실 함수 설정
loss_function: 학습 목표 함수 (CrossEntropy, MSE, MAE 등)reduction: 손실 평균 방식 (mean, sum)| 문제 상황 | 튜닝 우선순위 |
|---|---|
| 학습이 느릴 때 | Learning rate 증가, Optimizer 변경 |
| 정확도가 낮을 때 | Hidden units 증가, Layer 추가 |
| 과적합일 때 | Dropout 증가, 정규화 계수 λ 조정 |
| 최적화가 안 될 때 | Batch size 증가 or LR 감소 |
import torch
import torch.nn as nn
import torch.optim as optim
class DeepNN(nn.Module):
def __init__(self, input_dim, hidden_dim, output_dim, dropout_rate):
super(DeepNN, self).__init__()
self.model = nn.Sequential(
nn.Linear(input_dim, hidden_dim),
nn.ReLU(),
nn.Dropout(dropout_rate),
nn.Linear(hidden_dim, output_dim)
)
def forward(self, x):
return self.model(x)
# 하이퍼파라미터 설정
input_dim = 784 # 예: MNIST
hidden_dim = 256 # Hidden units
output_dim = 10 # 분류 클래스 수
dropout_rate = 0.5 # 과적합 방지를 위한 dropout
learning_rate = 0.001 # 학습률
batch_size = 64 # 배치 크기
num_epochs = 20 # 전체 반복 학습 횟수
# 모델, 손실함수, 옵티마이저 정의
model = DeepNN(input_dim, hidden_dim, output_dim, dropout_rate)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=learning_rate)
# 학습 루프 간단 예시
for epoch in range(num_epochs):
for x_batch, y_batch in train_loader:
optimizer.zero_grad()
outputs = model(x_batch)
loss = criterion(outputs, y_batch)
loss.backward()
optimizer.step()
딥러닝과 머신러닝의 포함관계는 딥러닝이 머신러닝의 한 부분이라는 점에서 설명할 수 있습니다. 머신러닝은 데이터를 기반으로 스스로 학습하여 예측하거나 의사 결정을 내리는 알고리즘과 기술을 총칭하는 개념입니다. 딥러닝은 머신러닝의 하위 분야로, 인공신경망(Artificial Neural Network)을 기반으로 한 알고리즘을 사용해 데이터를 학습합니다.
머신러닝은 다양한 알고리즘을 포함하며, 주로 지도학습, 비지도학습, 강화학습 등의 접근법으로 데이터를 학습합니다. 대표적인 알고리즘으로는 선형 회귀, 결정 트리, SVM 등이 있으며, 데이터를 처리하기 위해 사람이 직접 중요한 특징(feature)을 설계하는 작업이 필요합니다.
딥러닝은 머신러닝의 한 영역으로, 신경망 구조를 기반으로 데이터에서 스스로 특징을 추출하여 학습합니다. 사람이 개입해 특징을 설계하지 않아도 되며, 대량의 데이터를 처리할수록 높은 성능을 발휘합니다. 딥러닝은 특히 이미지, 음성, 자연어 처리 등에서 강력한 성능을 보이며, 주요 기술로 CNN(합성곱 신경망), RNN(순환 신경망), 트랜스포머 등이 있습니다.
정리하자면, 딥러닝은 머신러닝의 한 갈래로, 더 복잡한 데이터와 문제를 해결하기 위해 인공신경망을 활용하는 기술입니다. 머신러닝은 딥러닝을 포함한 더 광범위한 알고리즘과 방법론을 아우르는 개념입니다. 쉽게 말해, 모든 딥러닝은 머신러닝이지만, 모든 머신러닝이 딥러닝은 아닙니다.
딥러닝의 성능을 향상시키기 위해 조정할 수 있는 하이퍼파라미터에는 크게 모델 구조, 학습 과정, 정규화 관련 하이퍼파라미터가 있습니다.
먼저 모델 구조와 관련된 하이퍼파라미터로는 레이어의 수와 뉴런의 개수가 있습니다. 예를 들어, 레이어 수가 너무 적으면 과소적합될 가능성이 있고, 너무 많으면 과적합이 발생할 수 있으므로 적절한 모델 크기를 설정하는 것이 중요합니다. 또 다른 예로 활성화 함수는 ReLU, sigmoid, tanh 등 여러 종류가 있는데, 문제의 특성과 데이터의 분포에 따라 적절히 선택해야 합니다.
다음으로 학습 과정과 관련된 하이퍼파라미터에는 학습률과 배치 크기가 있습니다. 학습률은 모델의 학습 속도를 조정하는데, 값이 너무 크면 발산할 수 있고, 너무 작으면 학습 속도가 느려질 수 있습니다. 배치 크기는 한 번의 학습에서 처리하는 데이터 샘플의 수를 의미하며, 이를 조정함으로써 학습 속도와 모델의 안정성 사이의 균형을 맞출 수 있습니다.
마지막으로 정규화와 관련된 하이퍼파라미터로는 드롭아웃 비율과 L1/L2 정규화가 있습니다. 드롭아웃은 과적합을 방지하기 위해 일부 뉴런을 랜덤하게 제거하는 방식이고, L1/L2 정규화는 가중치 크기를 제한하여 모델의 복잡도를 줄이는 역할을 합니다.