본문 바로가기
PROGRAMING📚/BigData📑

DNN(Deep Neural Network)에서 **활성화 함수(Activation Function)**

Ta이니 2024. 9. 24.
728x90
반응형

DNN(Deep Neural Network)에서 **활성화 함수(Activation Function)**는 뉴런이 입력받은 신호를 처리하여 출력으로 변환하는 역할을 합니다. 활성화 함수는 입력 데이터와 뉴런의 가중치 합에 비선형성을 부여해 복잡한 패턴을 학습할 수 있도록 해줍니다. 선형 변환만 사용하면 모델의 깊이와 상관없이 모든 층이 하나의 선형함수로 축소되기 때문에, 활성화 함수가 반드시 필요합니다.

### 주요 활성화 함수

#### 1. **시그모이드 함수 (Sigmoid)**
- **수식**: 
  \[
  f(x) = \frac{1}{1 + e^{-x}}
  \]
- **특징**:
  - 출력 범위: (0, 1)
  - 입력을 0과 1 사이의 값으로 변환하여 확률을 나타낼 때 주로 사용.
  - **장점**: 확률 기반 예측에 적합.
  - **단점**: 기울기가 매우 작아질 수 있어 **기울기 소실 문제**(vanishing gradient problem)를 일으킴. 즉, 역전파 과정에서 기울기가 거의 0이 되어 가중치 업데이트가 어려워집니다.
  
#### 2. **탄젠트 함수 (Tanh)**
- **수식**: 
  \[
  f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
  \]
- **특징**:
  - 출력 범위: (-1, 1)
  - 입력이 0에 가까울 때 값은 0, 음수 값일 경우는 -1, 양수 값일 경우는 1에 가까워짐.
  - **장점**: 시그모이드 함수보다 학습 성능이 더 좋고, 출력값이 -1에서 1까지여서 데이터의 중심이 0이 됩니다.
  - **단점**: 시그모이드 함수와 마찬가지로 기울기 소실 문제를 일으킬 수 있음.

#### 3. **ReLU (Rectified Linear Unit)**
- **수식**: 
  \[
  f(x) = \max(0, x)
  \]
- **특징**:
  - 출력 범위: [0, ∞)
  - 입력값이 0보다 작으면 0을 출력하고, 0보다 크면 그대로 출력.
  - **장점**: 간단하고 계산이 효율적이며, 기울기 소실 문제를 완화. 비선형성도 충분히 제공해 심층 신경망 학습에 매우 효과적.
  - **단점**: 입력값이 0보다 작을 때 출력이 항상 0이 되어, 뉴런이 죽어버리는 **Dying ReLU** 문제가 발생할 수 있음.
  
#### 4. **Leaky ReLU**
- **수식**: 
  \[
  f(x) = 
  \begin{cases} 
    x & \text{if } x > 0 \\
    \alpha x & \text{if } x \leq 0 
  \end{cases}
  \]
  여기서 \( \alpha \)는 작은 상수(보통 0.01)입니다.
- **특징**:
  - ReLU의 변형으로, 음수 값도 미세하게나마 작은 기울기를 갖도록 하여 **Dying ReLU** 문제를 해결.
  - **장점**: 음수 입력에 대해서도 정보를 일부 보존해 ReLU의 단점을 보완.
  - **단점**: 여전히 기울기 소실 문제를 완전히 해결하지는 못함.

#### 5. **ELU (Exponential Linear Unit)**
- **수식**:
  \[
  f(x) = 
  \begin{cases} 
    x & \text{if } x > 0 \\
    \alpha (e^x - 1) & \text{if } x \leq 0
  \end{cases}
  \]
- **특징**:
  - Leaky ReLU처럼 음수 입력을 처리하면서도 지수 함수를 적용하여 0에 가까운 출력값을 부드럽게 만들어줌.
  - **장점**: 음수 값을 다룰 때보다 효율적이고, ReLU처럼 기울기 소실 문제를 해결.
  - **단점**: 지수 함수를 계산해야 하므로, ReLU보다 계산 비용이 높음.

#### 6. **Softmax**
- **수식**: 
  \[
  f(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}}
  \]
- **특징**:
  - 출력 범위: (0, 1), 모든 출력값의 합은 1이 됨.
  - 각 출력값을 확률처럼 변환하여 분류 문제의 마지막 레이어에서 주로 사용.
  - **장점**: 다중 클래스 분류 문제에서 효과적이며, 출력의 합이 1이 되므로 각 클래스에 대한 확률로 해석 가능.

### 요약 및 비교
| **활성화 함수** | **출력 범위** | **장점** | **단점** | **사용 사례** |
|----------------|---------------|----------|----------|---------------|
| Sigmoid        | (0, 1)        | 확률적 해석 가능 | 기울기 소실 문제 | 이진 분류 |
| Tanh           | (-1, 1)       | 중심이 0, Sigmoid보다 성능 좋음 | 기울기 소실 문제 | 순환 신경망(RNN) |
| ReLU           | [0, ∞)        | 계산이 효율적, 기울기 소실 문제 완화 | Dying ReLU 문제 | CNN, DNN |
| Leaky ReLU     | (-∞, ∞)       | Dying ReLU 문제 해결 | 여전히 기울기 소실 가능성 | CNN, DNN |
| ELU            | (-∞, ∞)       | 음수 값 처리에 더 효과적 | 계산 비용 증가 | 다양한 딥러닝 모델 |
| Softmax        | (0, 1)        | 확률로 출력 해석 가능 | 다른 활성화 함수와 조합 불가 | 다중 클래스 분류 |

### 결론
활성화 함수는 신경망의 성능과 학습 과정에 중요한 역할을 하며, 각 문제에 적합한 활성화 함수를 선택하는 것이 중요합니다. 일반적으로 중간 층에서는 ReLU 또는 변형된 ReLU 계열을 사용하고, 마지막 출력층에서는 문제에 따라 Softmax 또는 Sigmoid를 사용하는 것이 보편적입니다.

728x90
반응형

댓글