
앞서 Propagation 과정을 이야기할 때, 계속 activation function으로 sigmoid만을 통과시켰습니다.
하지만 Sigmoid만이 유일한 선택이 아니죠.
지금까지 activation function으로 sigmoid만 사용했지만, hidden layer와 output layer에서 다른 activation function을 사용할 수 있어요. 실제로 다른 activation function을 선택해서 더 잘 작동하는 경우도 많습니다.
Foward Proopagation에서
z⁽¹⁾ = W⁽¹⁾x + b⁽¹⁾
a⁽¹⁾ = g(z⁽¹⁾) ← 여기서 g는 activation function
z⁽²⁾ = W⁽²⁾a⁽¹⁾ + b⁽²⁾
a⁽²⁾ = g(z⁽²⁾)
$g(z)$가 반드시 sigmoid일 필요는 없습니다. 다양한 선택지가 있어요.
주요 Activation Function들을 알아봅시다.
Sigmoid Function
a = σ(z) = 1 / (1 + e⁻ᶻ)
출력 범위: 0 - 1
지금까지 사용해 온 함수니까 익숙하죠.
Tanh Function(Hyperbolic Tangent)
a = tanh(z) = (eᶻ - e⁻ᶻ) / (eᶻ + e⁻ᶻ)
출력 범위: -1에서 +1 사이
수학적으로 sigmoid를 이동(shift)시킨 버전이라고 보면 됩니다. sigmoid와 모양은 같지만, 원점 $(0, 0)$을 지나도록 평행이동(?)되어 있어요.
왜 sigmoid보다 나을까요?
activation의 출력이 -1과 +1 사이이기 때문에, hidden layer 출력의 평균이 0에 가깝게 됩니다. 이것은 데이터를 평균을 0으로 만드는 centering하는 효과와 유사합니다. 다음 layer의 핛브을 더 쉽게 만들죠. 이 내용은 추후 optimization 과정에서 더 자세히 다뤄볼께요.
따라서 hidden layer에서는 tanh가 sigmoid보다 거의 항상 더 낫다는 겁니다.
ReLU(Rectified Linear Unit)
a = max(0, z)
- z > 0이면 a = z, z < -이면 a = 0
- z = 0 에서 미분이 수학적으로 정의되지 않지만, 실제 구현에서는 0 또는 1로 설정해도 문제없이 동작합니다.
- z가 정확히 0.000000...0이 될 확률은 극히 낮아요.
Leaky ReLU
a = max(0.01z, z)
- $z > 0$ 이면 $a = z$ , $z < 0$이면 $a = 0.01z$ - 미세한 기울기가 있다!
- ReLU의 변형으로, $z < 0$ 인 영역에서도 아주 작은 기울기를 유지합니다.
- $0.01$대신 다른 값을 사용할 수도 있고, 이 값 자체를 학습 가능한 parameter로 만드는 방법도 있습니다.
실전에서는 어떻게 쓰일까요?
Output layer
- Binary classification ($y$가 0 또는 1): sigmoid를 사용합니다.$ŷ$이 0과 1 사이의 확률값이어야 하기 때문이에요.
- 이것이 sigmoid를 사용하는 유일한 경우입니다.
Hidden layer
기본 선택으로는 ReLU. 요즘 가장 많이 사용돼요. 확실하지 않으면 ReLU를 쓰면 됩니다.
$Tanh$도 괜찮은 선택입니다.
Sigmoid는 hidden layer에서 거의 사용하지 않아요.
ReLU / Leaky ReLU의 장점
$z$의 넓은 영역에서 activation function의 기울기(derivative)가 0에서 멀리 떨어져 있어요. Sigmoid나 $tanh$는 $z$가 크거나 작을 때 기울기가 0에 매우 가까워지는데(saturation), 이로 인해 gradient descent가 느려집니다. ReLU는 $z > 0$인 영역에서 기울기가 항상 $1$이므로, 학습이 훨씬 빠릅니다.
Layer마다 다른 Activation Function
Layer마다 서로 다른 activation function을 사용할 수 있습니다. 이를 구분하기 위해서 $g⁽¹⁾, g⁽²⁾$ 등으로 표기합니다.
e.g.
Hidden layer에는 tanh(또는 ReLU)를 사용합니다.
$$g^{(1)}(z) = tanh(z)$$
Output layer에는 sigmoid를 사용합니다.
$$g^{(2)}(z) = σ(z)$$
어떤 Activation Function이 최선인지 어떻게 알아요?
솔직히... 모릅니다. 시도해 봐야 알 수 있어요.
일반적인 가이드라인은 있지만, 특정 문제에 어떤 activation function이 최적인지는 미리 알 수가 없습니다.
실험을 통해 holdout validation set(또는 development set)에서 성능을 비교하고, 가장 잘 동작하는 것을 선택하는 것이 좋습니다.

왜 우리는 Non-linear Activation Functions가 필요한가?
Linear Activation Function을 쓰면 어떻게 될까요?
우리는 이런 의문을 가질 수 있어요.
Activation Function을 아예 안쓰면 어찌됨?
$g(z) = z$ (identify function)로 쓰면 어떰?
Foward propagation 식에서 activation function을 제거하면 (즉, $a⁽¹⁾ = z⁽¹⁾, a⁽²⁾ = z⁽²⁾$로 놓는다면)
a⁽¹⁾ = z⁽¹⁾ = W⁽¹⁾x + b⁽¹⁾
a⁽²⁾ = z⁽²⁾ = W⁽²⁾a⁽¹⁾ + b⁽²⁾
$a⁽¹⁾$의 정의를 $a⁽²⁾$에 대입하면
a⁽²⁾ = W⁽²⁾(W⁽¹⁾x + b⁽¹⁾) + b⁽²⁾
= (W⁽²⁾W⁽¹⁾)x + (W⁽²⁾b⁽¹⁾ + b⁽²⁾)
= W'x + b'
여기서 $W' = W⁽²⁾W⁽¹⁾, b' = W⁽²⁾b⁽¹⁾ + b⁽²⁾$ 입니다.
따라서 linear activation function을 사용하면, 아무리 많은 layer를 쌓아도 전체 network가 입력의 linear function에 불과합니다. 두 개의 linear function을 합성(composition)해도 결과는 또 다른 linear function이기 때문입니다. 이것은 hidden layer가 아예 없는 것과 수학적으로 동일하죠.
Linear Activation을 사용하는 유일한 경우가 있습니다.
Output layer에서만, 그리고 regression 문제($y$가 실수 )일 때 linear activation을 사용할 수 있습니다.
주택 가격 예측에서 $y_hat$이 0부터 수백만 까지의 실수여야 한다면, output layer에서 $g⁽²⁾(z) = z$로 설정할 수 있습니다.
하지만 이 경우에도 hidden layer에서는 반드시 non-linear activation function(ReLU, tanh etc.)을 사용해야 합니다.
아 물론 주택 가격의 경우 항상 0 이상이기 때문에 output layer에서 ReLU를 사용하면 $y_hat >= 0$을 보장할 수 있어서 더 적절할 겁니다.
포인트는 Non-linear activation function이 없으면, neural network은 아무리 깊어도 linear function만 계산할 수 있기 때문에, hidden layer의 의미가 없어집니다. Non-linear activation function은 neural network의 필수적인 요소죠.
'CS & AI > Deep Learning' 카테고리의 다른 글
| [Coursera] Train, Dev & Test sets / Deep Learning Specialization (0) | 2026.04.14 |
|---|---|
| [Coursera] Hyperparameter tuning (0) | 2026.04.14 |
| [Coursera] Gradient Descent in Logistic Regression / Deep Learning Specialization (0) | 2026.04.10 |
| [Coursera] Computation Graph / Deep Learning Specialization (0) | 2026.04.10 |
| [궁금증] Norm? (0) | 2026.04.07 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!