들어가며
신경망은 ‘비선형 함수 근사기’라고 배운다. 맞는 말이다. 하지만 활성함수가 ReLU처럼 조각선형(piecewise-linear)이면, 훨씬 더 구체적이고 놀라운 사실이 성립한다.
ReLU로 이루어진 신경망은 전역적으로도 조각별 어파인(piecewise-affine) 함수다. 입력공간이 다면체(polytope) 조각들로 잘게 쪼개지고, 각 조각 안에서는 딥네트워크의 모든 비선형성이 사라져 정확히 하나의 어파인 사상 $\mathbf{x} \mapsto W_{\text{eff}}\mathbf{x} + \mathbf{b}_{\text{eff}}$ 로 붕괴한다.
이 글은 그 사실을 뉴런 하나에서 출발해 층층이 쌓아 올린다. 중간중간 인터랙티브 데모로 직접 확인할 수 있다.
1. 뉴런 하나 = 경계선 하나
ReLU 뉴런 하나부터 보자.
$$a(\mathbf{x}) = \mathrm{ReLU}(\mathbf{w}^\top \mathbf{x} + b) = \max(0,\ \mathbf{w}^\top \mathbf{x} + b)$$이건 두 조각짜리 함수다.
- $\mathbf{w}^\top \mathbf{x} + b < 0$ → 출력 $0$ (꺼짐, 기울기 $0$)
- $\mathbf{w}^\top \mathbf{x} + b \ge 0$ → 입력을 그대로 통과 (켜짐, 기울기 $1$)
이 둘을 가르는 경계는 초평면 $\mathbf{w}^\top \mathbf{x} + b = 0$ 하나다. 뉴런 하나 = 입력공간에 그어진 칼금 하나라고 생각하면 된다.
여러 개를 선형결합하면 어떻게 될까? 1D 입력에 대해 $f(x) = \sum_i v_i\,\mathrm{ReLU}(w_i x + b_i)$ 를 그려 보자. ReLU 하나마다 꺾이는 점(knot) 이 하나씩 생기고, 그 사이 구간은 전부 직선이다.
그래프 아래 띠는 이 데모의 뉴런들이 모두 속한 하나의 은닉층을 펼쳐 보여준다. 각 행이 뉴런 하나이고, 그 뉴런이 켜진($w_i x + b_i > 0$) 구간을 색으로 칠했다. $x$가 knot을 하나 지날 때마다 띠 하나가 토글되고(색이 knot 수직선에 맞춰져 있다), 그렇게 나뉜 직선 구간 하나하나가 곧 하나의 활성 패턴이다. 즉 구간들은 서로 다른 층이 아니라, 같은 한 층 안에서 켜진 뉴런들의 조합이 다른 것이다.
ReLU 개수를 늘리면 꺾임이 늘어나고 곡선처럼 보이지만, 확대해 보면 여전히 직선 조각들의 이음일 뿐이다. ReLU $n$개는 조각 $n+1$개를 만든다. 이게 1D에서의 그림이다. 이제 이걸 임의 차원·임의 깊이로 일반화하자.
2. 활성 패턴과 대각 마스크
핵심 트릭은 ReLU를 곱셈 마스크로 다시 쓰는 것이다. 한 층의 순전파는
$$\mathbf{h}^{(l)} = \mathrm{ReLU}\!\left(W^{(l)} \mathbf{h}^{(l-1)} + \mathbf{b}^{(l)}\right)$$이다. 입력 $\mathbf{x}$ 를 하나 고정하면, 이 층의 각 뉴런은 켜짐(1)/꺼짐(0)이 정해진다. 이 켜짐/꺼짐을 대각행렬 $D^{(l)}(\mathbf{x})$ 에 담는다. 켜진 뉴런은 대각 $1$, 꺼진 뉴런은 $0$.
$$\mathbf{h}^{(l)} = D^{(l)}(\mathbf{x})\,\big(W^{(l)} \mathbf{h}^{(l-1)} + \mathbf{b}^{(l)}\big)$$이건 근사가 아니라 정확한 등식이다 — 켜진 뉴런은 $z \mapsto z$(항등), 꺼진 뉴런은 $z \mapsto 0$ 이니까. 다만 마스크 $D^{(l)}$ 이 $\mathbf{x}$ 에 의존한다는 게 전부다.
네트워크 전체의 켜짐/꺼짐 벡터(모든 층·모든 뉴런)를 활성 패턴(activation pattern) 이라 부른다. 은닉 뉴런이 총 $N$개면 패턴은 $\{0,1\}^N$ 의 한 점이다.
3. 패턴을 고정하면 → 어파인으로 붕괴
이제 $\mathbf{x}$ 를 조금씩 움직여도 모든 뉴런의 켜짐/꺼짐이 그대로 유지되는 영역을 생각하자. 그 영역 안에서는 모든 $D^{(l)}$ 이 상수행렬이 된다. 그러면 $L$개 층의 순전파는
$$\mathbf{y} = D^{(L)}W^{(L)} \cdots D^{(2)}W^{(2)}\,D^{(1)}W^{(1)}\,\mathbf{x} + (\text{편향 항들})$$이고, $D$ 와 $W$ 가 전부 상수이므로 이 합성은 하나의 어파인 사상으로 뭉개진다.
$$\boxed{\ \mathbf{y} = W_{\text{eff}}\,\mathbf{x} + \mathbf{b}_{\text{eff}}, \qquad W_{\text{eff}} = D^{(L)}W^{(L)} \cdots D^{(1)}W^{(1)}\ }$$여기서 $D^{(l)}W^{(l)}$ 은 “꺼진 뉴런에 해당하는 행을 $0$으로 지운 가중치 행렬"이다. 즉 그 조각 안에서 네트워크는 정확히 하나의 선형변환 + 이동이다. 딥네트워크의 온갖 비선형성이 특정 영역 안에서는 완전히 사라진다.
말로만 보면 안 믿기니, 임의의 입력점에서 그 점이 속한 조각의 유효 어파인 사상 $(W_{\text{eff}}, \mathbf{b}_{\text{eff}})$ 을 직접 뽑아 보자.
import numpy as np
def relu_net(x, Ws, bs):
"""ReLU MLP 순전파 (마지막 층은 선형)"""
a = x
for i, (W, b) in enumerate(zip(Ws, bs)):
z = W @ a + b
a = np.maximum(0, z) if i < len(Ws) - 1 else z
return a
def effective_affine(x, Ws, bs):
"""x가 속한 조각의 유효 어파인 사상 (W_eff, b_eff)를 추출"""
W_eff = np.eye(len(x))
b_eff = np.zeros(len(x))
a = x
for i, (W, b) in enumerate(zip(Ws, bs)):
z = W @ a + b
if i < len(Ws) - 1:
mask = (z > 0).astype(float) # 이 층의 활성 패턴 D^(l)
D = np.diag(mask)
a = mask * z
else:
D = np.eye(len(z)) # 마지막 선형층
a = z
W_eff = D @ W @ W_eff # W_eff <- D W W_eff
b_eff = D @ (W @ b_eff + b) # 편향 누적
return W_eff, b_eff
# 랜덤 네트워크 하나
rng = np.random.default_rng(0)
dims = [4, 16, 16, 3]
Ws = [rng.normal(size=(dims[i+1], dims[i])) for i in range(len(dims)-1)]
bs = [rng.normal(size=dims[i+1]) for i in range(len(dims)-1)]
x = rng.normal(size=4)
W_eff, b_eff = effective_affine(x, Ws, bs)
# 검증 1: 그 점에서 정확히 일치
print(np.allclose(relu_net(x, Ws, bs), W_eff @ x + b_eff)) # True
# 검증 2: 같은 조각 안(아주 가까운 점)에서도 일치
x2 = x + 1e-4 * rng.normal(size=4)
print(np.allclose(relu_net(x2, Ws, bs), W_eff @ x2 + b_eff)) # True (같은 패턴이면)
W_eff @ x + b_eff 가 실제 순전파와 정확히 같다. 그리고 같은 조각 안에 있는 다른 점에도 같은 $(W_{\text{eff}}, \mathbf{b}_{\text{eff}})$ 가 그대로 통한다. 조각 경계를 넘어가면(패턴이 바뀌면) 다른 어파인 사상으로 갈아탄다.
4. 조각의 정체 = 다면체, 전체 = 연속 조각별 어파인
각 뉴런의 켜짐/꺼짐 조건은 부등식 하나(그 뉴런의 pre-activation $\ge 0$)다. 활성 패턴 하나를 고정한다는 건 이런 선형 부등식 $N$개를 동시에 만족시키는 것이고, 선형 부등식들의 교집합 = 볼록 다면체(convex polytope) 다.
주의: 1층 뉴런의 경계는 곧은 초평면이지만, 2층 이후 뉴런의 pre-activation은 앞 층 ReLU들을 거쳐 나오므로 그 경계는 접힌(bent) 조각별 선형 면이다. 그래도 각 조각 내부에서는 전부 선형이라, 최종 분할 조각은 여전히 (볼록) 다면체다.
그래서 전체 그림은 이렇다.
- 입력공간 $\mathbb{R}^d$ 가 다면체 조각들로 타일링된다.
- 각 조각 위에서 함수는 서로 다른 어파인 $W_{\text{eff}}\mathbf{x} + \mathbf{b}_{\text{eff}}$.
- 조각 경계를 넘어가도 ReLU가 연속이라 함수값이 튀지 않는다 → 연속(continuous).
이걸 통틀어 CPWL(Continuous Piecewise-Linear, 연속 조각별 어파인) 함수라 부른다. 그리고 정리 하나: ReLU MLP가 표현할 수 있는 함수 = 정확히 CPWL 함수 전체. 넓지도 좁지도 않고 딱 그 클래스다.
아래 데모는 2D 입력공간을 실제로 타일링해 보여준다. 랜덤 초기화된 작은 ReLU 네트워크에서, 활성 패턴이 같은 픽셀을 같은 색으로 칠했다. 색 경계 하나하나가 어떤 뉴런의 on/off 경계다.
- 커서를 올려 보라. 커서가 놓인 조각(같은 활성 패턴)이 밝게 강조된다. 그 밝은 영역 전체에서 네트워크는 단 하나의 어파인 사상이다.
- 폭(뉴런 수) 을 늘리면 칼금이 많아져 조각이 잘게 쪼개진다.
- 은닉층 수를 늘려 보라. 조각 경계가 곧은 직선에서 접힌 선으로 바뀌고, 조각 개수가 폭발적으로 늘어난다.
5. 이 관점이 주는 것들
이 하나의 관점에서 딥러닝의 여러 성질이 자연스럽게 흘러나온다.
그래디언트 = 조각별 상수
한 조각 안에서 야코비안이 $W_{\text{eff}}$ 로 상수다. 역전파가 하는 일은 “그 입력이 속한 조각의 유효 선형사상을 그대로 돌려주는 것"에 불과하다. ReLU의 미분이 $0/1$ 인 것이 바로 마스크 $D^{(l)}$ 로 나타난다. 조각 경계에서는 미분이 불연속으로 점프한다(그래서 ReLU 네트워크의 손실 표면은 조각별 매끄러움을 갖는다).
깊이의 힘 = 조각 수의 폭발
폭이 아니라 깊이를 늘리면 선형 영역의 개수가 깊이에 대해 지수적으로 늘어날 수 있다(Montúfar et al., 2014). 위 데모에서 은닉층을 1 → 2 → 3으로 올렸을 때 조각 수가 확 뛰는 게 그 축소판이다. “깊은 게 왜 강한가"를 표현력 관점에서 설명하는 고전적 논거다.
접기(folding)로서의 층
각 층은 입력공간을 접는 연산으로 볼 수 있다. ReLU가 음수 영역을 $0$으로 눌러 접고, 다음 층은 이미 접힌 공간 위에 또 칼금을 긋는다. 깊어질수록 접힘이 중첩돼 복잡한 조각 구조가 생긴다. 그래서 2층 이상에서 경계가 ‘접힌 선’으로 보이는 것이다.
스플라인·트로피컬 관점
Balestriero & Baraniuk의 max-affine spline 프레임에서는 ReLU 네트워크를 다차원 스플라인으로 본다. 또 $\max$ 와 덧셈이 각각 트로피컬 반환(semiring)의 ‘덧셈’과 ‘곱셈’에 대응하므로, ReLU 네트워크는 트로피컬 기하(tropical geometry) 로도 정확히 기술된다(네트워크 = 두 트로피컬 다항식의 차, Zhang et al., 2018). 조각의 개수·모양을 다항식의 뉴턴 다면체로 세는 길이 열린다.
마치며
“신경망은 비선형 함수 근사기"라는 문장은, ReLU에 한해서는 “신경망은 입력공간을 다면체로 쪼개 각 조각에 어파인 사상을 얹는 거대한 룩업 테이블” 로 정밀화된다. 비선형성은 오직 어느 조각에 속하는가 를 고르는 데(즉 활성 패턴을 결정하는 데)에만 있고, 일단 조각이 정해지면 나머지는 순수한 선형대수다.
이 관점은 단순한 지적 유희가 아니다. 선형 영역의 수로 표현력을 정량화하고, 각 영역의 유효 어파인 사상으로 모델을 국소적으로 해석·검증하고(예: 검증 가능한 견고성, 정확한 야코비안 분석), 스플라인·트로피컬 기하 같은 성숙한 수학 도구를 딥러닝에 그대로 끌어오는 다리가 된다. 다음에 ReLU 네트워크를 볼 때는, 매끈한 곡면이 아니라 수많은 평평한 다면체 조각을 이어 붙인 접힌 종이를 떠올려 보자.
참고 문헌
- Montúfar, Pascanu, Cho, Bengio (2014). On the Number of Linear Regions of Deep Neural Networks. NeurIPS.
- Raghu, Poole, Kleinberg, Ganguli, Sohl-Dickstein (2017). On the Expressive Power of Deep Neural Networks. ICML.
- Balestriero, Baraniuk (2018). A Spline Theory of Deep Networks. ICML.
- Zhang, Naitzat, Lim (2018). Tropical Geometry of Deep Neural Networks. ICML.
- Hanin, Rolnick (2019). Complexity of Linear Regions in Deep Networks. ICML.