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 등의 개념을 다뤄보겠습니다!