1. 손실 함수 (Loss Function)
정의
손실 함수는 신경망이 예측한 값과 실제 정답 값 간의 차이를 측정하는 함수입니다. 모델이 얼마나 잘못 예측했는지를 나타내며, 이 값을 최소화하는 것이 학습의 목표입니다.
주요 특징
- 신경망의 출력과 실제 값을 비교하여 오차를 계산
- 손실 함수 값이 작을수록 모델의 예측이 더 정확함
- 경사 하강법(Gradient Descent) 등을 이용해 손실을 최소화하며 학습 진행
대표적인 손실 함수
손실 함수수식용도
평균 제곱 오차(MSE) | 1n∑(y−y^)2\frac{1}{n} \sum (y - \hat{y})^2 | 회귀 문제에서 사용 |
평균 절대 오차(MAE) | ( \frac{1}{n} \sum | y - \hat{y} |
교차 엔트로피(Cross-Entropy) | −∑ylog(y^)-\sum y \log(\hat{y}) | 분류 문제에서 사용 |
2. 활성 함수 (Activation Function)
정의
활성 함수는 뉴런의 출력 값을 결정하는 함수입니다. 입력 신호를 비선형 변환하여 다음 층으로 전달합니다.
주요 특징
- 비선형성을 추가하여 신경망이 복잡한 패턴을 학습할 수 있도록 함
- 입력 값을 변환하여 다음 층으로 전달할지를 결정
- 네트워크가 더 깊어질수록 적절한 활성 함수 선택이 중요함
대표적인 활성 함수
활성 함수수식특징
시그모이드(Sigmoid) | 11+e−x\frac{1}{1 + e^{-x}} | 0~1 사이 값 출력, 기울기 소실 문제 있음 |
ReLU (Rectified Linear Unit) | max(0,x)\max(0, x) | 계산이 간단, 기울기 소실 문제 완화 |
소프트맥스(Softmax) | exi∑exj\frac{e^{x_i}}{\sum e^{x_j}} | 다중 분류에서 확률값을 반환 |
3. 손실 함수 vs 활성 함수 차이점
구분손실 함수활성 함수
역할 | 예측값과 실제값의 차이를 계산 (오차 측정) | 뉴런의 출력을 결정하여 다음 층으로 전달 |
위치 | 신경망의 마지막 출력 단계에서 사용 | 은닉층 및 출력층에서 사용 |
주요 목적 | 모델의 학습 방향을 설정 (최적화 목적) | 비선형성을 추가하여 학습 능력 향상 |
예시 함수 | MSE, Cross-Entropy | ReLU, Sigmoid, Softmax |
정리
- 손실 함수는 모델이 얼마나 잘못 예측했는지를 측정하는 역할 (학습을 위한 오차 계산).
- 활성 함수는 뉴런의 출력을 결정하는 역할 (비선형성을 추가하여 신경망의 표현력 증가).
- 손실 함수는 출력층에서만 사용, 활성 함수는 은닉층과 출력층에서 사용.
++
1. 은닉층에서 활성 함수가 값을 작게 만드는 이유
활성 함수는 비선형성을 추가해서 신경망이 더 복잡한 패턴을 학습할 수 있도록 도와. 그런데 일부 활성 함수는 값을 0에 가깝게 만드는 특징이 있어.
예를 들어:
- 시그모이드(Sigmoid): 출력이 (0,1)(0,1) 사이로 제한되면서, 여러 층을 거치면 값이 점점 0이나 1에 가까워져서 기울기 소실(vanishing gradient) 문제가 발생할 수 있어.
- 하이퍼볼릭 탄젠트(Tanh): 출력이 (−1,1)(-1,1) 범위라 시그모이드보다 낫지만, 여전히 작은 값이 누적될 가능성이 있어.
- ReLU (Rectified Linear Unit): 0보다 작은 입력은 0이 되어 죽은 뉴런(dead neurons) 문제가 생길 수도 있어.
결론적으로, 이런 활성 함수들을 여러 층에 쌓으면, 출력 값이 점점 작아지거나, 기울기(gradient)가 사라지는 문제가 생길 수 있어.
2. 출력층에서 원하는 예측값을 얻을 수 있을까?
네트워크가 제대로 학습된다면, 중간 값이 작아지더라도 최종적으로 출력층에서 원하는 값으로 변환할 수 있어. 하지만 몇 가지 조건이 필요해:
✅ 조건 1: 적절한 활성 함수 선택
출력층에서는 데이터의 특성에 맞는 활성 함수를 사용해야 해.
- 회귀 문제: 마지막 출력층에서 활성 함수를 사용하지 않거나 선형 함수(linear function) 를 사용 (출력 값이 연속적인 숫자이므로)
- 이진 분류: 시그모이드(sigmoid) 를 사용하여 확률 값 출력
- 다중 분류: 소프트맥스(softmax) 를 사용하여 각 클래스의 확률 출력
즉, 출력층의 활성 함수는 데이터를 원래 범위로 변환하는 역할을 해야 해.
✅ 조건 2: 적절한 가중치 초기화와 정규화
중간 층에서 값이 너무 작아지지 않도록 가중치 초기화 방법을 잘 선택해야 해.
- Xavier 초기화 (시그모이드, Tanh에 적합)
- He 초기화 (ReLU 계열에 적합)
- Batch Normalization (배치 정규화) 를 적용하면 각 층의 값 분포를 조정해 값이 너무 작아지는 문제를 방지할 수 있어.
✅ 조건 3: 기울기 소실 문제 해결
만약 은닉층을 많이 쌓은 딥러닝 모델이라면, 기울기 소실 문제를 해결해야 해.
- ReLU 계열 (Leaky ReLU, ELU) 사용: 음수 값이 0이 아니라 작은 값이 되게 해서 죽은 뉴런 문제를 해결
- Residual Connection (ResNet): 중간 값이 너무 작아지지 않도록, 이전 층의 정보를 일부 그대로 전달
3. 결론: 값이 작아지더라도 출력층에서 원하는 값을 얻을 수 있음!
- 중간층에서 값이 작아지는 문제는 있지만, 출력층의 활성 함수와 가중치 조정을 통해 원하는 예측값을 얻을 수 있어.
- Batch Normalization, 적절한 활성 함수 선택, 가중치 초기화를 잘 하면 문제를 해결할 수 있어.
- 출력층에서 적절한 활성 함수를 사용하면, 중간 값이 작더라도 원하는 출력값을 만들 수 있음.
'머신러닝 & 딥러닝' 카테고리의 다른 글
합성곱(Convolution)과 풀링(Pooling) 개 (0) | 2025.02.23 |
---|---|
RNN / LSTM 개념 및 장단 (0) | 2025.02.23 |
역전파(Backpropagation) 개념 (0) | 2025.02.22 |
주니어 응애 AI 직무 엔지니어링 면접 대비 (1) | 2025.02.21 |
행렬 연산 구현 및 벡터 구현 (0) | 2025.02.20 |