Neural Network Training + Activation Functions + Multiclass Classification 정리
1. 신경망 학습 (Neural Network Training)
신경망은 아래의 순서를 반복하며 학습한다.
- 순방향 전파 (Forward Propagation): 입력값을 통해 예측값을 계산
- 손실 함수 계산 (Loss Function): 예측값과 실제값의 차이 계산
- 역전파 (Backpropagation): 오차를 기반으로 각 가중치에 대한 기울기(gradient) 계산
- 파라미터 업데이트 (Gradient Descent): 가중치와 편향을 업데이트
파라미터 업데이트 공식 (경사하강법)
W:=W−η⋅∂W∂L
b:=b−η⋅∂b∂L
- ( \eta ): 학습률 (learning rate)
- ( L ): 손실 함수 (loss function)
2. 활성화 함수 (Activation Functions)
활성화 함수는 비선형성을 도입하여 신경망이 복잡한 문제를 해결할 수 있도록 해준다.
주요 활성화 함수 정리
1. Sigmoid
- 수식: σ(z)=1+e−z1
- 특징: 출력 범위 (0, 1), 확률 해석 가능
2. Tanh
- 수식: tanh(z)=ez+e−zez−e−z
- 특징: 출력 범위 (-1, 1), 중심이 0
3. ReLU
- 수식: f(z)=max(0,z)
- 특징: 계산 간단, Gradient Vanishing 문제 완화
Python 구현 예시
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def tanh(z):
return np.tanh(z)
def relu(z):
return np.maximum(0, z)
3. 다중 클래스 분류 (Multiclass Classification)
다중 클래스 분류는 입력 데이터가 둘 이상의 클래스 중 하나에 속할 확률을 예측하는 문제이다.
이를 위해 신경망의 출력층에서 Softmax 함수를 사용하고, 손실 함수로 Cross Entropy를 사용한다.
Softmax 함수
Softmax는 각 클래스에 대한 점수(logit)를 확률 값으로 변환한다.
Softmax(zi)=∑j=1Kezjezi
- ( z_i ): 클래스 ( i )의 logit (출력 전 score)
- ( K ): 전체 클래스 수
- 결과적으로 모든 클래스 확률의 총합은 1이 됨
Softmax 함수 Python 구현 예시
def softmax(z):
exp_z = np.exp(z - np.max(z, axis=1, keepdims=True))
return exp_z / np.sum(exp_z, axis=1, keepdims=True)
4. Cross Entropy Loss
Cross Entropy는 모델이 예측한 확률 분포와 실제 정답 분포 간의 차이를 측정하는 손실 함수이다.
다중 클래스 분류에서 주로 사용되며, 예측 확률이 실제 정답과 가까울수록 손실 값이 작아진다.
수식 (Multiclass 기준)
L=−i=1∑Kyilog(y^i)
- ( K ): 클래스의 수
- ( y_i ): 실제 정답 (One-hot Encoding)
- ( \hat{y}_i ): 모델의 예측 확률 (Softmax 결과)
예: 정답이 클래스 2일 때 → ( y = [0, 1, 0] )
수치 예시
y_hat = np.array([0.7, 0.2, 0.1])
y_true = np.array([1, 0, 0])
loss = -np.sum(y_true * np.log(y_hat))