결국 하나의 선형 변환 \(W'\)로 축소된다. 층을 아무리 깊게 쌓아도 직선 경계밖에 못 만든다.
4.7.2 비선형 활성화 → 비선형 경계
각 층의 출력에 비선형 활성화 함수를 적용하면 상황이 달라진다.
은닉층의 각 노드가 입력 공간을 접고(fold), 휘어(bend) 새로운 표현을 만든다
이 표현들이 조합되면서 곡선, 원, 임의의 복잡한 경계를 만들 수 있다
Universal Approximation Theorem
충분한 수의 은닉 노드와 비선형 활성화 함수를 가진 다층 퍼셉트론은 임의의 연속 함수를 원하는 정밀도로 근사할 수 있다.
이론상으로 컴퓨터가 수행하는 처리도 모두 표현 가능
딥러닝은 이 다층 퍼셉트론을 활용하여 사진 분류, 음성 인식, 자연어 처리 등을 수행
정리: 단일 퍼셉트론 = 직선 경계 → 비선형 활성화를 가진 다층 퍼셉트론 = 임의로 복잡한 경계. 비선형 활성화 함수는 딥러닝의 표현력을 결정하는 핵심 요소이다.
4.8 활성화 함수 (Activation Function)
그렇다면 실제로 어떤 비선형 활성화 함수가 사용되는가?
4.8.1 주요 활성화 함수
함수
수식
출력 범위
특징
Sigmoid
\(\sigma(z) = \frac{1}{1+e^{-z}}\)
\((0, 1)\)
확률 해석 가능
Tanh
\(\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}\)
\((-1, 1)\)
0 중심, Sigmoid보다 빠른 수렴
ReLU
\(\max(0, z)\)
\([0, \infty)\)
계산 효율적, 현재 가장 많이 사용
4.8.2 수치 예시: 같은 입력에 대한 활성화 함수별 출력
코드
import pandas as pdimport numpy as npzs = [-3.0, -1.0, 0.0, 0.5, 1.0, 3.0]rows = []for z in zs: sig =1/ (1+ np.exp(-z)) tanh = np.tanh(z) relu =max(0, z) rows.append({'$z$': z,'Sigmoid': f'{sig:.4f}','Tanh': f'{tanh:.4f}','ReLU': f'{relu:.1f}', })pd.DataFrame(rows).to_html(index=False, border=0, escape=False)
표 4.6: z값에 따른 활성화 함수 출력 비교
\(z\)
Sigmoid
Tanh
ReLU
-3.0
0.0474
-0.9951
0.0
-1.0
0.2689
-0.7616
0.0
0.0
0.5000
0.0000
0.0
0.5
0.6225
0.4621
0.5
1.0
0.7311
0.7616
1.0
3.0
0.9526
0.9951
3.0
인터랙티브 — 활성화 함수의 형태를 비교해 보세요
활성화 함수를 선택하면 \(g(z)\)와 그 도함수 \(g'(z)\)의 그래프를 확인할 수 있습니다.
도함수를 함께 그려둔 이유는 다음 장에서 드러납니다 — 학습은 기울기를 따라 일어나므로, 기울기가 0에 가까운 구간(Sigmoid의 양 끝)에서는 학습이 거의 멈춥니다. ReLU가 현재 가장 많이 쓰이는 이유가 여기에 있습니다.
viewof actChoice = Inputs.radio(["sigmoid","tanh","relu"], {label:"활성화 함수",value:"sigmoid",format: k => k ==="sigmoid"?"Sigmoid σ(z)": k ==="tanh"?"Tanh":"ReLU"})