단극형과 양극형으로 나눈 활성화함수, 코드로 구현하기

활성화함수를 단극형·양극형으로 분류하고 계단함수부터 tanh까지의 수식, 은닉층·출력층 선택 기준, TensorFlow·PyTorch 구현, Swish·GELU·Mish를 정리한다.

2026-08-14 · 최초 발행 2025-05-23

신경망의 각 뉴런은 입력 신호의 가중 합을 계산한 뒤, 그 값을 활성화함수에 통과시켜 출력을 만든다. 이 변환이 없다면 층을 아무리 깊게 쌓아도 결과는 하나의 선형 함수와 다르지 않다. 활성화함수를 나누는 가장 기본적인 축은 출력값이 어느 범위에 분포하느냐다 — 이 기준으로 단극형과 양극형이 갈린다.

출력 범위로 갈리는 단극형과 양극형

활성화함수는 신경망에서 비선형성(non-linearity)을 부여하는 역할을 한다. 비선형성이 없다면 신경망은 단순한 선형 회귀와 다를 바 없어 복잡한 패턴을 학습할 수 없다.

입력가중치 계산활성화함수 적용출력

단극형 활성화함수는 출력값이 주로 0 또는 양수 범위에 분포하는 함수들이고, 양극형 활성화함수는 출력값이 음수와 양수 범위 모두에 분포할 수 있는 함수들이다.

단극형: 계단함수·시그모이드·ReLU

계단함수(Step Function)는 입력값이 임계값을 초과하면 1, 그렇지 않으면 0을 출력하는 가장 단순한 형태다.

YesNo입력 xx 임계값출력 = 1출력 = 0
f(x) = 1 if x ≥ 임계값, 0 otherwise

이진 분류 문제에 적합하지만 미분이 불가능해 역전파(backpropagation) 알고리즘에는 쓸 수 없다. 초기 퍼셉트론(Perceptron) 모델과 이진 분류기의 최종 결정 단계에 쓰였다.

시그모이드 함수(Sigmoid Function)는 입력값을 0과 1 사이의 연속적인 값으로 변환한다.

f(x) = 1 / (1 + e^(-x))

S자 형태의 부드러운 곡선을 그리고 미분 가능해 역전파에 쓸 수 있으며 출력이 [0,1] 범위로 정규화되지만, 기울기 소실(Vanishing Gradient) 문제가 발생할 수 있다. 이진 분류 문제의 출력층, 확률 값이 필요한 모델, 로지스틱 회귀 모델에 쓰인다.

ReLU(Rectified Linear Unit)는 입력값이 0보다 크면 그대로 출력하고, 0보다 작으면 0을 출력한다.

f(x) = max(0, x)

계산 효율성이 높고 기울기 소실 문제를 완화하며 희소 활성화(Sparse Activation) 특성을 갖지만, 음수 입력에 대해 뉴런이 계속 비활성 상태로 남는 "죽은 뉴런(Dead Neurons)" 문제가 발생할 수 있다. 현대 딥러닝 모델의 은닉층, CNN(Convolutional Neural Networks), 고차원 특징 추출이 필요한 모델에 쓰인다.

양극형: 부호함수·선형함수·하이퍼볼릭 탄젠트

부호함수(Sign Function)는 입력값의 부호에 따라 -1 또는 1을 출력한다.

f(x) = 1 if x > 0, -1 if x < 0, 0 if x = 0

이진 분류에 쓸 수 있지만 미분이 불가능해 역전파에 직접 쓸 수 없고, 입력 데이터의 방향성만 고려한다. 특정 패턴 인식 알고리즘, 이진 분류의 결정 경계 설정에 쓰인다.

선형함수(Linear Function)는 입력값을 그대로 출력하거나 선형 변환을 적용한다.

f(x) = ax + b (일반적으로 f(x) = x)

미분 계수가 상수이고, 층을 깊게 쌓아도 선형 변환의 중첩은 여전히 선형 변환이라 비선형성을 제공하지 못한다. 회귀 문제의 출력층, 특징 스케일링, 중간 계산 단계에 쓰인다.

하이퍼볼릭 탄젠트(Hyperbolic Tangent, tanh)는 입력값을 -1과 1 사이의 값으로 변환한다.

f(x) = (e^x - e^(-x)) / (e^x + e^(-x))

S자 형태의 대칭적 곡선을 그리고 출력이 [-1,1] 범위로 정규화되며 시그모이드보다 경사가 더 가파르지만, 기울기 소실 문제는 여전히 존재한다. RNN(Recurrent Neural Networks), 출력이 중심화된 형태로 필요한 경우, 시그모이드 대체 함수로 쓰인다.

은닉층과 출력층, 어떤 함수를 골라야 하나

회귀이진 분류다중 분류기본 추천기울기 소실 우려RNN/시퀀스 데이터활성화함수 선택문제 유형?출력층: 선형함수출력층: 시그모이드출력층: Softmax은닉층 함수?ReLULeaky ReLU/ELUtanh

은닉층에서는 계산 효율성과 빠른 수렴 때문에 ReLU를 일반적으로 추천하고, 죽은 뉴런 문제가 발생하면 Leaky ReLU·PReLU·ELU로 대체하며, RNN·LSTM에서는 tanh나 sigmoid를 쓰고, 심층 네트워크에서는 배치 정규화와 함께 ReLU 계열을 쓴다. 출력층에서는 회귀 문제에 선형 함수, 이진 분류에 시그모이드, 다중 분류에 소프트맥스(Softmax)를 쓴다.

텐서플로우와 파이토치로 구현하기

TensorFlow/Keras에서는 층을 쌓으며 activation 인자로 함수를 지정한다.

# ReLU 활성화함수를 사용한 은닉층
model = tf.keras.Sequential([
    tf.keras.layers.Dense(128, activation='relu', input_shape=(784,)),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

PyTorch에서는 nn.Module을 상속한 클래스의 forward 메서드 안에서 활성화함수를 직접 호출한다.

import torch.nn as nn

class NeuralNetwork(nn.Module):
    def __init__(self):
        super(NeuralNetwork, self).__init__()
        self.layer1 = nn.Linear(784, 128)
        self.relu1 = nn.ReLU()
        self.layer2 = nn.Linear(128, 64)
        self.relu2 = nn.ReLU()
        self.output = nn.Linear(64, 10)
        self.softmax = nn.Softmax(dim=1)

    def forward(self, x):
        x = self.relu1(self.layer1(x))
        x = self.relu2(self.layer2(x))
        x = self.softmax(self.output(x))
        return x

Swish·GELU·Mish, 최신 활성화함수들

기존 활성화함수의 한계를 극복하기 위해 새로운 함수들이 제안되고 있다. Swish는 f(x) = x * sigmoid(βx) 형태로 Google Brain 팀이 제안한 자가 게이팅(self-gated) 활성화함수이며, ReLU보다 특정 깊은 네트워크에서 더 나은 성능을 낸다. GELU(Gaussian Error Linear Unit)는 f(x) = x * Φ(x) 형태로 BERT, GPT-2 같은 최신 언어 모델에서 쓰이는 확률적 특성을 가진 활성화함수다. Mish는 f(x) = x * tanh(softplus(x)) 형태의 부드러운 비단조(non-monotonic) 활성화함수로, 일부 컴퓨터 비전 작업에서 우수한 성능이 보고된다.

신경망을 설계할 때는 문제 유형과 네트워크 아키텍처에 맞춰 활성화함수를 신중하게 고르고, 필요하다면 여러 함수를 실험해가며 최적의 성능을 찾는 과정이 필요하다.

활성화함수신경망딥러닝ReLUGELU