본문 바로가기
개발/Python

활성화 함수

by 피로물든딸기 2025. 10. 6.
반응형

전체 링크

활성화 함수

- 인공신경망에서 뉴런이 출력값을 어떻게 변환할지 결정하는 함수

- 뉴런의 출력 형태를 결정하고 비선형성 부여

- 복잡한 패턴 학습을 가능하게 함


Sigmoid

- 이진 분류의 출력을 0과 1로 정규화 (ex. 스팸메일 분류)

- 현재는 은닉층에서는 거의 사용되지 않음

- 출력층(확률값)에서만 쓰임

 

장점

- 출력이 확률 해석에 적합

- 초창기 뉴럴넷에서 많이 사용됨

 

단점

- 기울기 소실(vanishing gradient) → 깊은 신경망 학습 어려움

- 출력이 0 또는 1 근처에서 gradient가 거의 0

- 0을 기준으로 대칭되지 않음 → 학습 비효율, 느린 수렴


Tanh

- 은닉층에서 sigmoid 대체

- 신경망에서 자주 사용

- 출력 범위: -1 ~ 1

- sigmoid의 개선판 (입력이 0 근처일 때 gradient가 더 큼)

 

장점

- 출력이 0 중심 → sigmoid보다 학습 잘 됨

- 값 변환이 더 자연스럽게 퍼짐

 

단점

- 여전히 기울기 소실 문제 존재

- 입력이 크면 gradient 0 근처


ReLU (Rectified Linear Unit)

- CNN, DNN 등 딥러닝 전반의 은닉층 기본값

- 대부분 신경망에서 기본 활성화 함수로 사용

- 단순, 효율적 → 현대 기본 활성화 함수

 

장점

- 계산 빠름 (양수 구간에서 기울기 1로 일정 → 단순)

- 기울기 소실 감소

- Sparse activation → 일부 뉴런만 활성화

- 훈련이 깊은 네트워크에서 매우 잘 작동하는 경험적 성능 입증

 

단점

- dying ReLU 문제(dead neurons)
→ 음수 입력이면 gradient가 0, 다시 활성화 안 됨


Leaky ReLU

- ReLU의 단점 보완

- CNN, GAN 등에서 사용

- ReLU보다 안정적인 대안

 

장점

- dead ReLU 완화

- 음수 영역에서도 작은 gradient 유지

 

단점

- 기울기 계수(0.01)는 임의값 → 항상 최적은 아님 (데이터에 맞지 않을 경우 성능 저하)

- 약간의 비대칭성


ELU

- 심층 신경망에서 사용

- 학습 안정성 필요한 경우

- Leaky ReLU와 비슷한 목적 + smooth한 형태

- 음수 영역 출력이 음수이므로 mean activation이 0 근처내부 공변량 변화 감소 도움

* 내부 공변량 변화 (internal covariate shift) : 신경망 학습 과정에서 각 층의 입력 데이터 분포가 계속 바뀌는 현상

 

장점

- 0 중심화 효과

- 음수 구간에서도 gradient 존재

- 평균 활성값이 0 근처 → 학습 유리, 학습 안정화, 경사 하강법 수렴 속도 개선

 

단점

- ReLU 대비 계산 비용 높음

하이퍼파라미터 최적화 필요


 

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 400)

functions = {
    'sigmoid': 1 / (1 + np.exp(-x)),
    'tanh': np.tanh(x),
    'relu': np.maximum(0, x),
    'leaky relu': np.where(x > 0, x, 0.01 * x),
    'elu': np.where(x > 0, x, 1.0 * (np.exp(x) - 1))
}

for name, y in functions.items():
    plt.figure()
    plt.plot(x, y)
    plt.title(name)
    plt.xlabel('x')
    plt.ylabel('f(x)')
    plt.grid(True)
    plt.show()
반응형

'개발 > Python' 카테고리의 다른 글

주요 합성곱 신경망  (0) 2025.10.06
경사 하강법, 옵티마이저  (0) 2025.10.06
집합 연산  (0) 2025.10.05
groupby + agg로 여러 컬럼 집계하기  (0) 2025.10.05
앙상블 (Ensemble)  (0) 2025.09.14

댓글