위클리페이퍼(4) 머신러닝, 딥러닝, 하이퍼 파라미터란?

윤승호·2025년 4월 9일

◆ Q & A 요약

Q1. 딥러닝과 머신러닝 간의 포함관계에 대해 설명해주세요.
A1. 딥러닝은 머신러닝의 한 방법이다. 인공신경망을 기반으로 복잡한 패턴과 표현을 학습한다. 빅데이터와 높은 연산 자원을 필요로 하지만, 그만큼 성능이 좋다.

Q2. 딥러닝의 성능향상을 위해 고려하는 하이퍼파라미터의 종류에는 어떤 것들이 있는지 설명해주세요.
A2. 학습률(learning_rate), 배치 크기(batch_size), 에포크 수(epochs), 최적화 알고리즘(optimizer), 은닉층 수(num_layers), 뉴런 수(hidden_units), 활성화 함수(activation), 드롭아웃 비율(dropout), 가중치 초기화(initializer) 등이 있다.

1. 딥러닝과 머신러닝의 포함관계

인공지능 > 머신러닝 > 딥러닝

(1) 포함관계 마인드맵

인공지능 (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)

(2) 딥러닝이란?

📌 딥러닝은 머신러닝 방법 중 하나

  • 인공지능(Artificial Intelligence, AI)은 인간의 지능을 모방하는 시스템
  • 머신러닝(Machine Learning, ML)은 데이터를 기반으로 패턴을 학습하고 예측하는 AI의 하위 분야
  • 딥러닝(Deep Learning, DL)은 머신러닝 중 인공신경망(ANN)을 심화시킨 모델군으로, 깊고 복잡한 구조를 통해 고차원 데이터 학습 가능

(3) 특징 비교

항목머신러닝 (ML)딥러닝 (DL)
핵심 목적데이터 기반 학습신경망 기반 고차원 표현 학습
주요 기법지도/비지도/강화학습, SVM, 트리, KNNCNN, RNN, LSTM, Transformer 등
학습 방법명시된 특성(feature)을 활용한 학습특성 자동 추출 (end-to-end 학습)
필요 데이터량중간 정도많을수록 성능 증가 (빅데이터 필수)
연산 자원 요구중간매우 높음 (GPU/TPU 필요)
대표 응용 분야가격 예측, 의료 진단, 마케팅 분석 등자율주행, 음성 인식, 번역, 이미지 분류 등

2. 딥러닝의 성능 향상을 위한 하이퍼파라미터

(1) 하이퍼파라미터란?

  • 모델이 직접 학습하지 않고 사람이 직접 설정해야 하는 값들
  • 성능을 크게 좌우하며 잘못 설정하면 학습이 불안정하거나 과적합될 수 있음

(2) 주요 하이퍼파라미터

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)

(3) 언제 무엇을 어떻게 튜닝?

문제 상황튜닝 우선순위
학습이 느릴 때Learning rate 증가, Optimizer 변경
정확도가 낮을 때Hidden units 증가, Layer 추가
과적합일 때Dropout 증가, 정규화 계수 λ 조정
최적화가 안 될 때Batch size 증가 or LR 감소

(4) 하이퍼파라미터 튜닝 예시

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()

◆ 해설

1. 딥러닝과 머신러닝 간의 포함관계에 대해 설명해주세요.

딥러닝과 머신러닝의 포함관계는 딥러닝이 머신러닝의 한 부분이라는 점에서 설명할 수 있습니다. 머신러닝은 데이터를 기반으로 스스로 학습하여 예측하거나 의사 결정을 내리는 알고리즘과 기술을 총칭하는 개념입니다. 딥러닝은 머신러닝의 하위 분야로, 인공신경망(Artificial Neural Network)을 기반으로 한 알고리즘을 사용해 데이터를 학습합니다.

머신러닝은 다양한 알고리즘을 포함하며, 주로 지도학습, 비지도학습, 강화학습 등의 접근법으로 데이터를 학습합니다. 대표적인 알고리즘으로는 선형 회귀, 결정 트리, SVM 등이 있으며, 데이터를 처리하기 위해 사람이 직접 중요한 특징(feature)을 설계하는 작업이 필요합니다.

딥러닝은 머신러닝의 한 영역으로, 신경망 구조를 기반으로 데이터에서 스스로 특징을 추출하여 학습합니다. 사람이 개입해 특징을 설계하지 않아도 되며, 대량의 데이터를 처리할수록 높은 성능을 발휘합니다. 딥러닝은 특히 이미지, 음성, 자연어 처리 등에서 강력한 성능을 보이며, 주요 기술로 CNN(합성곱 신경망), RNN(순환 신경망), 트랜스포머 등이 있습니다.

정리하자면, 딥러닝은 머신러닝의 한 갈래로, 더 복잡한 데이터와 문제를 해결하기 위해 인공신경망을 활용하는 기술입니다. 머신러닝은 딥러닝을 포함한 더 광범위한 알고리즘과 방법론을 아우르는 개념입니다. 쉽게 말해, 모든 딥러닝은 머신러닝이지만, 모든 머신러닝이 딥러닝은 아닙니다.

2. 딥러닝의 성능향상을 위해 고려하는 하이퍼파라미터의 종류에는 어떤 것들이 있는지 설명해주세요.

딥러닝의 성능을 향상시키기 위해 조정할 수 있는 하이퍼파라미터에는 크게 모델 구조, 학습 과정, 정규화 관련 하이퍼파라미터가 있습니다.

먼저 모델 구조와 관련된 하이퍼파라미터로는 레이어의 수와 뉴런의 개수가 있습니다. 예를 들어, 레이어 수가 너무 적으면 과소적합될 가능성이 있고, 너무 많으면 과적합이 발생할 수 있으므로 적절한 모델 크기를 설정하는 것이 중요합니다. 또 다른 예로 활성화 함수는 ReLU, sigmoid, tanh 등 여러 종류가 있는데, 문제의 특성과 데이터의 분포에 따라 적절히 선택해야 합니다.

다음으로 학습 과정과 관련된 하이퍼파라미터에는 학습률과 배치 크기가 있습니다. 학습률은 모델의 학습 속도를 조정하는데, 값이 너무 크면 발산할 수 있고, 너무 작으면 학습 속도가 느려질 수 있습니다. 배치 크기는 한 번의 학습에서 처리하는 데이터 샘플의 수를 의미하며, 이를 조정함으로써 학습 속도와 모델의 안정성 사이의 균형을 맞출 수 있습니다.

마지막으로 정규화와 관련된 하이퍼파라미터로는 드롭아웃 비율과 L1/L2 정규화가 있습니다. 드롭아웃은 과적합을 방지하기 위해 일부 뉴런을 랜덤하게 제거하는 방식이고, L1/L2 정규화는 가중치 크기를 제한하여 모델의 복잡도를 줄이는 역할을 합니다.

profile
나는 AI 엔지니어가 된다.

0개의 댓글