Why Not SW CAMP 5기/수업 기록

[3월 2주차-3/13]딥러닝 기초 개념 정리

rubii 2025. 3. 13. 17:16

퍼셉트론(Perceptron)이란?

퍼셉트론은 인공 신경망(Artificial Neural Network, ANN)의 가장 기본적인 단위로, 인간의 뉴런(Neuron)을 모방한 구조입니다. 이 개념이 확장되면서 오늘날의 딥러닝(Deep Learning)이 발전하게 되었습니다.

1. 단층 퍼셉트론 (Single-layer Perceptron)

  • 입력층(Input layer)과 출력층(Output layer)만으로 구성된 가장 기본적인 인공 신경망.
  • AND, OR 같은 선형적으로 구분 가능한 문제는 해결할 수 있지만,
  • XOR 같은 비선형 문제는 해결할 수 없음.

2. 다층 퍼셉트론 (Multi-layer Perceptron, MLP)

  • XOR 문제를 해결하기 위해 등장.
  • 입력층 - 은닉층 - 출력층 구조.
  • 은닉층(Hidden Layer)이 추가되면서 비선형 문제 해결 가능.
  • 은닉층이 2개 이상인 구조를 심층 신경망(Deep Neural Network, DNN) 이라고 함.

주요 신경망 구조

1. 피드 포워드 신경망 (Feed-Forward Neural Network, FFNN)

  • 입력층(Input Layer)에서 출력층(Output Layer)까지 한 방향(Feed-Forward) 으로만 데이터가 전달됨.
  • 일반적인 인공 신경망의 구조이며, CNN(합성곱 신경망)과 RNN(순환 신경망)의 기반이 됨.

2. 순환 신경망 (Recurrent Neural Network, RNN)

  • FFNN과 다르게 이전 정보(메모리)를 활용하여 학습.
  • 이전 시간의 상태(메모리)를 다음 뉴런으로 전달 → 순환 구조를 가짐.
  • LSTM, GRU 같은 개선된 버전이 존재.

3. 전결합층 (Fully-Connected Layer, FC, Dense Layer)

  • FFNN, CNN, RNN 등 모든 신경망 모델에서 최종적으로 출력을 결정하는 역할을 함.
  • 일반적인 피드포워드 신경망(FFNN)에서 사용됨.

활성화 함수 (Activation Function)

활성화 함수는 뉴런에서 출력값을 결정하는 함수로, 딥러닝에서 반드시 비선형 함수가 사용되어야 함.

주요 활성화 함수

1. ReLU (Rectified Linear Unit)

  • 비선형 함수이며, 음수 값은 0, 양수 값은 그대로 출력.
  • 빠르고 계산 효율적 → 딥러닝에서 가장 많이 사용됨.
  • 기울기 소실 문제 해결 → 시그모이드보다 훨씬 효과적.
  • 대부분의 딥러닝 모델에서 은닉층(중간층) 활성화 함수로 사용.
  • 뉴런이 죽는 문제 발생.

2. Leaky ReLU

  • ReLU의 개선 버전으로, 음수 입력에서도 작은 값이 흐름.
  • ReLU의 단점(뉴런이 죽는 문제)을 해결하면서도 계산 비용이 거의 같음.
ReLU f(x)=max⁡(0,x) 빠르고 간단, 대부분의 딥러닝 모델에서 사용 음수 입력을 완전히 차단 → 뉴런이 죽을 가능성
Leaky ReLU f(x)=x if x>0, αx if x≤0 뉴런이 죽지 않음 (Dead Neuron Problem 해결) ReLU보다 계산량이 조금 많음

3. 시그모이드 (Sigmoid)

  • 출력 범위: (0, 1) → 확률값 출력에 사용됨 (이진 분류 문제).
  • 비선형 함수라서 XOR 문제도 해결 가능.
  • 문제점: 큰 값에서는 기울기 소실(Vanishing Gradient) 문제 발생.

4. 소프트맥스 (Softmax)

  • 출력값을 0~1 사이의 확률 값으로 변환.
  • 전체 출력의 합이 1이 되므로 다중 클래스 분류에 적합.

손실 함수 (Loss Function)

신경망의 예측값과 실제값 간의 차이(오차)를 측정하는 함수로, 회귀와 분류에 따라 선택해야 합니다.

1. 회귀 문제 (Regression)

  • 평균 제곱 오차 (MSE, Mean Squared Error)
model.compile(loss='mse', optimizer='adam')

2. 분류 문제 (Classification)

  • 이진 크로스 엔트로피 (Binary Cross-Entropy)
model.compile(loss='binary_crossentropy', optimizer='adam')
  • 카테고리칼 크로스 엔트로피 (Categorical Cross-Entropy) - 다중 클래스
model.compile(loss='categorical_crossentropy', optimizer='adam')
  • Sparse Categorical Cross-Entropy (정수형 라벨 사용) - 다중 클래스
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam')

 

차이점

categorical_crossentropy [0, 1, 0] (One-Hot Encoding)
sparse_categorical_crossentropy 2 (정수형 라벨)

 

손실 함수 선택 가이드

회귀(Regression) 연속적인 숫자 예측 mse 없음
이진 분류(Binary Classification) 두 개의 클래스 (0,1) binary_crossentropy sigmoid
다중 클래스 (One-Hot Encoding) [0,1,0] 형식 categorical_crossentropy softmax
다중 클래스 (정수 라벨) [2, 3, 1, 0] 형식 sparse_categorical_crossentropy softmax

경사 하강법 (Gradient Descent)

신경망에서 가중치(Weight)와 편향(Bias)를 학습하는 방법으로, 손실 함수(Loss Function)를 최소화하는 가중치를 찾는 것이 목표입니다.

경사 하강법 종류

경사 하강법 종류                        방식                                      장점                                               단점

배치 경사 하강법 (BGD) 모든 데이터를 사용 안정적인 학습, 전역 최적점 도달 가능 연산 비용이 큼, 데이터가 많으면 느려짐
확률적 경사 하강법 (SGD) 1개 데이터 샘플 사용 빠른 학습 속도, 데이터가 많아도 가능 불안정함 (진동 발생)
미니배치 경사 하강법 (MBGD) 일부 데이터(미니배치) 사용 학습 속도와 안정성 균형 배치 크기 조정 필요

최적화 알고리즘 (Optimization Algorithm)

옵티마이저                           설명                                                                       특징

SGD 확률적 경사 하강법 데이터가 많을 때 빠르지만 진동 발생
Momentum 과거 기울기를 참고하여 관성을 부여 진동을 줄이고 수렴 속도 향상
RMSprop 각 파라미터별 학습률을 다르게 조정 RNN에서 효과적
Adam 모멘텀 + RMSprop 조합 가장 널리 사용됨

Epoch, Batch Size, Iteration 개념

1. Epoch

  • 전체 데이터를 몇 번 반복 학습할 것인지 결정.
  • epochs=10이면, 전체 데이터셋을 10번 학습한다는 의미.
  • 너무 많으면 과적합(Overfitting) 위험.

2. Batch Size

  • 한 번의 학습(Iteration)에서 처리할 데이터 개수.
  • 일반적으로 16 ~ 128 사이에서 선택.

3. Iteration (반복 횟수)

  • 1 Epoch에서 총 반복 횟수 = (Total Data / Batch Size)
  • Batch Size를 늘리면 Iteration 횟수가 줄어듦 → 하지만 학습 속도가 줄어들 수도 있음.

마무리

이 글에서는 딥러닝의 기본 개념인 퍼셉트론, 신경망 구조, 활성화 함수, 손실 함수, 경사 하강법, 최적화 알고리즘, 그리고 학습 파라미터들에 대해 정리했습니다. 다음에는 더 발전된 주제인 CNN, RNN, Transformer 등의 개념을 다뤄보겠습니다!