검색
← 모듈 로드맵

다층 퍼셉트론: 은닉층 · 활성화 함수 · 손실 함수

강의 · 입문자 · KAITABASE 정리

XOR · 순전파 · 활성화 함수 비교 · 보편 근사 정리 · 출력층-손실 짝을 손계산으로 익히는 MLP 수업

먼저 알아야 할 것

퍼셉트론행렬 곱로지스틱 회귀 · 소프트맥스교차 엔트로피

다루는 내용

단층 퍼셉트론이 XOR을 못 푸는 이유와 은닉층 하나로 푸는 가중치를 직접 확인합니다. 다층 퍼셉트론의 순전파와 파라미터 수를 계산하고, 시그모이드 · tanh · ReLU · GELU의 값과 기울기를 비교합니다. 보편 근사 정리의 의미와 한계, 회귀 · 이진 · 다중 분류의 출력층과 손실 함수 짝을 정리합니다.

해설

다층 퍼셉트론: 은닉층 · 활성화 함수 · 손실 함수

퍼셉트론 하나는 직선 하나로만 나눌 수 있습니다. 층을 쌓고 층 사이에 비선형 활성화 함수를 넣으면 XOR 같은 문제도 풀 수 있고, 이론상 어떤 연속 함수든 원하는 만큼 가깝게 흉내 낼 수 있습니다. 이 수업은 다층 퍼셉트론(MLP)의 순전파를 손으로 계산하고, 활성화 함수와 "출력층 · 손실 함수 짝"을 고르는 법을 정리합니다.

항목내용
참고 자료D2L '다층 퍼셉트론' 장 · d2l.ai/chapter_multilayer-perceptrons/mlp.html
트랙 · 수준딥러닝 기초 · 기초
이 수업의 범위XOR 문제, 은닉층과 순전파, 활성화 함수(시그모이드 · tanh · ReLU · GELU), 보편 근사 정리, 출력층과 손실 함수의 짝(회귀 · 이진 · 다중 분류), 파라미터 수 세기
먼저 알면 좋은 것행렬 곱, 로지스틱 회귀 · 소프트맥스, 교차 엔트로피

들어가기 전에

한눈에 보기

  • 단층 퍼셉트론이 XOR을 못 푸는 이유와, 은닉층 하나로 XOR을 푸는 가중치를 직접 확인합니다.
  • MLP의 순전파 h=ϕ(Wx+b)\mathbf{h} = \phi(W\mathbf{x} + \mathbf{b})를 층마다 손으로 계산합니다.
  • 활성화 함수 네 가지(시그모이드 · tanh · ReLU · GELU)의 값과 기울기를 숫자로 비교하고, 왜 지금은 ReLU 계열을 주로 쓰는지 압니다.
  • 보편 근사 정리가 말하는 것과 말하지 않는 것을 구분합니다.
  • 회귀 · 이진 분류 · 다중 분류마다 출력층과 손실 함수를 어떻게 짝짓는지 익힙니다.

1. 왜 층이 하나로는 부족한가: XOR

직관(해설용 비유): 단층 퍼셉트론은 종이 위에 자 하나를 대고 선을 긋는 것과 같습니다. 점들이 선 하나로 갈리면 풀 수 있고, 아니면 못 풉니다.

XOR(배타적 논리합)은 두 입력이 서로 다를 때만 1입니다.

x1x_1x2x_2XOR
000
011
101
110

(0,1)과 (1,0)은 한쪽, (0,0)과 (1,1)은 다른 쪽입니다. 대각선으로 마주 보는 두 쌍이라 직선 하나로는 가를 수 없습니다. 이것을 선형 분리 불가능(not linearly separable)이라고 합니다. Minsky와 Papert가 1969년 책 Perceptrons에서 단층 퍼셉트론의 이런 한계를 수학적으로 분석했고, 이 책은 한동안 신경망 연구가 위축된 배경으로 자주 언급됩니다.

은닉층 하나로 XOR 풀기

은닉 뉴런 두 개를 두고 활성화 함수로 ReLU ReLU(z)=max⁡(0,z)\mathrm{ReLU}(z) = \max(0, z)를 씁니다(가중치는 설명용으로 직접 고른 값입니다).

h1=ReLU(x1+x2),h2=ReLU(x1+x2−1),y=h1−2h2h_1 = \mathrm{ReLU}(x_1 + x_2),\quad h_2 = \mathrm{ReLU}(x_1 + x_2 - 1),\quad y = h_1 - 2h_2

숫자로 해 보기(해설용, 코드로 확인):

(x1,x2)(x_1, x_2)h1h_1h2h_2y=h1−2h2y = h_1 - 2h_2
(0, 0)000
(0, 1)101
(1, 0)101
(1, 1)210

은닉층이 입력을 (h1,h2)(h_1, h_2)라는 새 좌표로 옮기자, 출력층의 직선 하나(y=h1−2h2y = h_1 - 2h_2)로 XOR이 정확히 나옵니다. 은닉층의 일은 "직선으로 가를 수 있는 표현"으로 입력을 바꾸는 것입니다.

왜 활성화 함수가 꼭 필요한가: ReLU를 빼면 y=(1,1)⋅y = (1, 1)\cdot입력 − 2 (1,1)⋅-\,2\,(1, 1)\cdot입력 +2+ 2처럼 결국 입력의 일차식 하나로 접힙니다. 선형 함수를 몇 번 합성해도 선형 함수이므로, 층을 아무리 쌓아도 단층과 같은 힘밖에 없습니다.

2. 다층 퍼셉트론의 순전파

단계

  1. 입력 벡터 x\mathbf{x}에 가중치 행렬을 곱하고 편향을 더합니다(아핀 변환).
  2. 결과에 원소별로 활성화 함수를 적용해 은닉 표현 h\mathbf{h}를 얻습니다.
  3. 1~2를 층 수만큼 반복합니다.
  4. 마지막 층은 문제에 맞는 출력 함수(항등 · 시그모이드 · 소프트맥스)를 거쳐 예측을 냅니다.
h(1)=ϕ(W(1)x+b(1)),o=W(2)h(1)+b(2),y^=softmax(o)\mathbf{h}^{(1)} = \phi\big(W^{(1)}\mathbf{x} + \mathbf{b}^{(1)}\big),\qquad \mathbf{o} = W^{(2)}\mathbf{h}^{(1)} + \mathbf{b}^{(2)},\qquad \hat{\mathbf{y}} = \mathrm{softmax}(\mathbf{o})
기호뜻모양(입력 dd, 은닉 hh, 클래스 qq)
x\mathbf{x}입력 특성 벡터dd
W(1),b(1)W^{(1)}, \mathbf{b}^{(1)}1층 가중치 · 편향h×dh \times d, hh
ϕ\phi활성화 함수(원소별)—
h(1)\mathbf{h}^{(1)}은닉 표현hh
W(2),b(2)W^{(2)}, \mathbf{b}^{(2)}출력층 가중치 · 편향q×hq \times h, qq
o\mathbf{o}로짓(logit, 소프트맥스 전 점수)qq

실제 구현은 예제 여러 개를 행으로 쌓은 행렬 XX(배치 크기 n×dn \times d)로 한 번에 계산합니다. 그때는 H=ϕ(XW(1)⊤+b(1))H = \phi(XW^{(1)\top} + \mathbf{b}^{(1)})처럼 씁니다.

파라미터 수 세기

숫자로 해 보기: 28×28 흑백 이미지(입력 784), 은닉 128, 클래스 10인 MLP의 파라미터 수는

784×128+128⏟1층+128×10+10⏟2층=100,480+1,290=101,770\underbrace{784 \times 128 + 128}_{1층} + \underbrace{128 \times 10 + 10}_{2층} = 100{,}480 + 1{,}290 = 101{,}770

입니다. 층의 파라미터 수는 언제나 "입력 수 × 출력 수 + 출력 수(편향)"입니다. 이미지가 커지면 첫 층이 폭발적으로 커지는데, 이것이 합성곱 신경망이 등장한 이유 중 하나입니다.

3. 활성화 함수 비교

직관: 활성화 함수는 "신호를 얼마나 통과시킬지 정하는 밸브"입니다. 밸브 모양에 따라 표현력과 학습 속도가 달라집니다.

σ(z)=11+e−z,tanh⁡(z)=ez−e−zez+e−z,ReLU(z)=max⁡(0,z),GELU(z)=z Φ(z)\sigma(z) = \frac{1}{1 + e^{-z}},\quad \tanh(z) = \frac{e^{z} - e^{-z}}{e^{z} + e^{-z}},\quad \mathrm{ReLU}(z) = \max(0, z),\quad \mathrm{GELU}(z) = z\,\Phi(z)
기호뜻
σ\sigma시그모이드, 출력 범위 (0, 1)
tanh⁡\tanh쌍곡탄젠트, 출력 범위 (−1, 1), 0을 중심으로 대칭
Φ\Phi표준정규분포의 누적분포함수 — zz가 정규분포 표본보다 클 확률

숫자로 해 보기(해설용, 코드로 계산해 넷째 자리에서 반올림):

zz시그모이드시그모이드 기울기 σ(1−σ)\sigma(1-\sigma)tanhtanh 기울기 1−tanh⁡21-\tanh^2ReLUGELU
−20.11920.1050−0.96400.07070−0.0455
−10.26890.1966−0.76160.42000−0.1587
00.50.250100
10.73110.19660.76160.420010.8413
20.88080.10500.96400.070721.9545

표에서 읽을 것

  • 시그모이드의 기울기는 최대 0.25입니다. 역전파에서 층마다 이 값을 곱하므로, 10층이면 기울기가 최대 0.2510≈10−60.25^{10} \approx 10^{-6}배로 줄어듭니다. 이것이 기울기 소실(vanishing gradient)입니다. 자세한 대처는 초기화 · 정규화 · 규제에서 봅니다.
  • tanh는 0 중심이라 시그모이드보다 학습이 수월하지만, ∣z∣|z|가 크면 역시 기울기가 0에 가까워집니다(포화 saturation).
  • ReLU는 양수 구간의 기울기가 항상 1이라 깊이 쌓아도 기울기가 덜 줄고, 계산이 비교 한 번이라 빠릅니다. 대신 음수 구간 기울기가 0이라, 입력이 계속 음수인 뉴런은 다시 살아나지 못하는 "죽은 ReLU" 문제가 생길 수 있습니다. Nair와 Hinton(ICML 2010)이 ReLU를 쓴 대표적 초기 연구입니다.
  • GELU는 Hendrycks와 Gimpel(2016)이 제안했습니다. ReLU처럼 부호로 딱 자르지 않고 "입력값에 Φ(z)\Phi(z)만큼 가중"합니다. 음수 근처에서 부드럽게 0으로 가며 약간 음수 값도 냅니다. BERT · GPT 계열 트랜스포머의 피드포워드 층에서 널리 쓰입니다.

왜 이렇게 고르나: 은닉층 기본값은 ReLU(합성곱망 · MLP) 또는 GELU(트랜스포머)입니다. 시그모이드는 은닉층보다 "0~1 확률이 필요한 출력층"이나 "문(gate)" 역할(LSTM)에 씁니다.

4. 보편 근사 정리: 할 수 있는 것과 없는 것

내용: 은닉층이 하나뿐이어도, 은닉 뉴런을 충분히 많이 두면 유계 구간 위의 연속 함수를 원하는 정확도로 근사할 수 있습니다. Cybenko(1989, Mathematics of Control, Signals and Systems)가 시그모이드형 활성화에 대해, Hornik(1991, Neural Networks)이 유계이고 상수가 아닌 활성화 함수 일반에 대해 이런 결과를 보였습니다.

직관(해설용 비유): ReLU 두 개를 빼면 "계단 하나"를 만들 수 있습니다. 계단을 촘촘히 많이 쌓으면 어떤 곡선이든 계단 모양으로 따라 그릴 수 있습니다. 1절의 XOR 해법도 ReLU 두 개로 "솟았다 내려오는" 모양을 만든 것입니다.

말하지 않는 것(오해 주의)

  • 뉴런이 몇 개 필요한지는 말하지 않습니다. 함수에 따라 비현실적으로 많을 수 있습니다.
  • 그 가중치를 경사 하강법으로 찾을 수 있다는 보장도 없습니다.
  • 학습 데이터 밖에서 일반화된다는 보장도 없습니다.

실제로는 넓고 얕은 망보다 깊은 망이 같은 파라미터 수로 더 복잡한 함수를 효율적으로 표현하는 경우가 많아, 층을 쌓는 방향으로 발전했습니다.

5. 출력층과 손실 함수의 짝

직관: 출력층은 "무엇을 예측하나"에 맞춰 모양을 정하고, 손실 함수는 "예측이 얼마나 틀렸나"를 그 모양에 맞는 방식으로 잽니다. 둘을 짝으로 고르면 역전파 기울기가 깔끔해집니다.

문제출력층손실 함수출력층 입력에 대한 기울기
회귀(값 예측)항등(그대로)평균제곱오차 MSE 1n∑(y^−y)2\frac{1}{n}\sum(\hat{y} - y)^22n(y^−y)\frac{2}{n}(\hat{y} - y)
이진 분류시그모이드 1개이진 교차 엔트로피 −[ylog⁡p+(1−y)log⁡(1−p)]-[y\log p + (1-y)\log(1-p)]p−yp - y
다중 분류소프트맥스 qq개교차 엔트로피 −log⁡p정답-\log p_{\text{정답}}p−y원-핫\mathbf{p} - \mathbf{y}_{\text{원-핫}}

숫자로 해 보기(해설용, 코드로 확인)

  • 다중 분류: 로짓 o=(2,1,0)\mathbf{o} = (2, 1, 0)이면 소프트맥스는 (0.6652,0.2447,0.0900)(0.6652, 0.2447, 0.0900)입니다. 정답이 0번이면 손실 −ln⁡0.6652≈0.4076-\ln 0.6652 \approx 0.4076, 정답이 2번이면 −ln⁡0.0900≈2.4076-\ln 0.0900 \approx 2.4076입니다. 정답이 0번일 때 로짓에 대한 기울기는 p−y=(−0.3348,0.2447,0.0900)\mathbf{p} - \mathbf{y} = (-0.3348, 0.2447, 0.0900) — 정답 로짓은 올리고 나머지는 내리라는 신호입니다.
  • 이진 분류: 모델이 p=0.8p = 0.8을 냈을 때 정답이 1이면 손실 −ln⁡0.8≈0.223-\ln 0.8 \approx 0.223, 정답이 0이면 −ln⁡0.2≈1.609-\ln 0.2 \approx 1.609입니다. 자신 있게 틀릴수록 벌점이 커집니다.
  • 회귀: 예측 (2.5,0,2,8)(2.5, 0, 2, 8), 정답 (3,−0.5,2,7)(3, -0.5, 2, 7)이면 MSE =(0.25+0.25+0+1)/4=0.375= (0.25 + 0.25 + 0 + 1)/4 = 0.375입니다.

왜 이렇게 짝짓나: 교차 엔트로피는 정보 이론의 교차 엔트로피 그대로이고, MSE는 "오차가 정규분포"라고 가정한 최대우도와 같습니다(최대우도 추정과 MAP). 시그모이드 출력에 MSE를 쓰면 확률이 0이나 1 근처로 포화될 때 기울기가 작아져 학습이 느려지지만, 교차 엔트로피와 짝지으면 기울기가 p−yp - y로 포화 영향을 받지 않습니다.

구현 팁: PyTorch의 nn.CrossEntropyLoss는 소프트맥스를 안에 포함하므로 모델 끝에 소프트맥스를 또 붙이지 말고 로짓을 그대로 넘깁니다. 이진 분류의 nn.BCEWithLogitsLoss도 시그모이드를 포함합니다. 수치적으로 더 안정적입니다.

mermaid
flowchart LR
  X[입력 x] --> A1[아핀 변환 W1x+b1]
  A1 --> F1[활성화 ReLU/GELU]
  F1 --> A2[아핀 변환 W2h+b2]
  A2 --> O[로짓 o]
  O --> S{문제 종류}
  S -- 회귀 --> R[항등 + MSE]
  S -- 이진 --> B[시그모이드 + 이진 교차 엔트로피]
  S -- 다중 --> M[소프트맥스 + 교차 엔트로피]
  R --> L[손실 → 역전파]
  B --> L
  M --> L

6. 너비와 깊이, 어떻게 정하나

  • 시작점: 표 형태 데이터라면 은닉층 1~3개, 층당 수십~수백 개 뉴런으로 시작해 검증 점수를 보며 늘립니다(경험칙이며 정답은 아닙니다).
  • 너무 작으면 학습 손실도 높게 남고(과소적합), 너무 크면 학습 손실만 낮고 검증 손실이 오릅니다(과적합). 진단법은 모델 평가와 과적합과 같습니다.
  • 표 형태 데이터에서는 MLP보다 트리 앙상블이 더 나은 경우가 많습니다. 이미지 · 소리 · 글처럼 구조가 있는 데이터에서 신경망이 강합니다.

연습 문제

1. 입력 x=(1,−2)\mathbf{x} = (1, -2), W(1)=(1011)W^{(1)} = \begin{pmatrix} 1 & 0 \\ 1 & 1 \end{pmatrix}, b(1)=(0,1)\mathbf{b}^{(1)} = (0, 1), ReLU일 때 은닉 표현 h\mathbf{h}는?

풀이: W(1)x+b(1)=(1,  1−2+1)=(1,0)W^{(1)}\mathbf{x} + \mathbf{b}^{(1)} = (1, \; 1 - 2 + 1) = (1, 0), ReLU를 거쳐 h=(1,0)\mathbf{h} = (1, 0)입니다.

2. 입력 100, 은닉 50, 은닉 50, 출력 3인 MLP의 파라미터 수는?

풀이: (100×50+50)+(50×50+50)+(50×3+3)=5,050+2,550+153=7,753(100 \times 50 + 50) + (50 \times 50 + 50) + (50 \times 3 + 3) = 5{,}050 + 2{,}550 + 153 = 7{,}753입니다.

3. 1절의 XOR 망에서 ReLU를 모두 지우면 (1,1)(1,1)의 출력은?

풀이: h1=2h_1 = 2, h2=1h_2 = 1이므로 y=2−2=0y = 2 - 2 = 0으로 같지만, (0,0)(0,0)에서 h2=−1h_2 = -1이 되어 y=0−2(−1)=2y = 0 - 2(-1) = 2로 틀립니다. 선형 함수 y=−(x1+x2)+2y = -(x_1 + x_2) + 2 하나로는 네 점을 모두 맞힐 수 없습니다.

4. 3개 클래스에서 소프트맥스 출력이 (0.2,0.7,0.1)(0.2, 0.7, 0.1)이고 정답이 1번입니다. 손실과 로짓 기울기는?

풀이: 손실 −ln⁡0.7≈0.357-\ln 0.7 \approx 0.357, 기울기 p−y=(0.2,−0.3,0.1)\mathbf{p} - \mathbf{y} = (0.2, -0.3, 0.1)입니다.

스스로 점검

  1. 활성화 함수 없이 층만 쌓으면 왜 소용이 없나요?
    • 답: 선형 변환의 합성은 다시 선형 변환이라, 몇 층을 쌓아도 단층 선형 모델과 표현력이 같기 때문입니다.
  2. 보편 근사 정리가 있는데 왜 깊은 망을 쓰나요?
    • 답: 정리는 "충분히 넓으면 가능하다"는 존재만 말할 뿐 필요한 크기 · 찾는 방법 · 일반화를 보장하지 않습니다. 실제로는 깊게 쌓는 편이 적은 파라미터로 복잡한 함수를 표현하고 학습하기 좋은 경우가 많습니다.
  3. 다중 분류에서 소프트맥스와 교차 엔트로피를 함께 쓰면 좋은 점은?
    • 답: 로짓에 대한 기울기가 p−y\mathbf{p} - \mathbf{y}로 단순하고, 확률이 포화되어도 기울기가 사라지지 않습니다. 라이브러리는 둘을 합친 함수로 수치 안정성도 챙깁니다.

용어 정리

용어쉬운 뜻
다층 퍼셉트론(MLP, multilayer perceptron)완전연결층을 여러 개 쌓고 사이에 활성화 함수를 넣은 신경망
은닉층(hidden layer)입력과 출력 사이의 층, 입력을 새 표현으로 바꿈
선형 분리 가능(linearly separable)직선(초평면) 하나로 두 클래스를 가를 수 있음
활성화 함수(activation function)층 출력에 원소별로 적용하는 비선형 함수
ReLUmax⁡(0,z)\max(0, z), 양수는 통과 · 음수는 0
GELUzΦ(z)z\Phi(z), 입력을 정규분포 누적확률만큼 가중
포화(saturation)입력이 커져도 출력이 거의 안 변해 기울기가 0에 가까운 상태
기울기 소실(vanishing gradient)역전파에서 기울기가 층마다 작아져 앞층이 학습되지 않는 현상
보편 근사 정리(universal approximation theorem)은닉층 하나로도 연속 함수를 원하는 만큼 근사할 수 있다는 정리
로짓(logit)소프트맥스 · 시그모이드 전의 점수
순전파(forward pass)입력에서 출력까지 차례로 계산하는 과정

더 깊이 보려면

D2L '다층 퍼셉트론' 장은 다층 퍼셉트론 · 구현 · 순전파 · 역전파 · 계산 그래프 · 수치 안정성과 초기화 · 딥러닝의 일반화 · 드롭아웃 · 캐글 집값 예측 실습 순서로 이어집니다. 보편 근사 정리의 직관은 신경망과 딥러닝(Nielsen) 4장의 시각적 증명이 특히 쉽습니다.

다음에 볼 것

라이선스

이 글은 원문 번역이 아니라 KAITABASE가 직접 쓴 해설이며, XOR 가중치와 숫자 예는 모두 설명용으로 만든 것입니다(값은 Python으로 다시 계산해 확인). 참고 자료 D2L은 CC BY-SA 4.0입니다.

출처

  • 참고: https://d2l.ai/chapter_multilayer-perceptrons/mlp.html (D2L 다층 퍼셉트론)
  • Hendrycks · Gimpel, Gaussian Error Linear Units (GELUs), 2016: https://arxiv.org/abs/1606.08415
  • Cybenko, Approximation by superpositions of a sigmoidal function, Mathematics of Control, Signals and Systems 2(4), 1989 (DOI 10.1007/BF02551274)
  • Hornik, Approximation capabilities of multilayer feedforward networks, Neural Networks 4, 1991
  • Nair · Hinton, Rectified Linear Units Improve Restricted Boltzmann Machines, ICML 2010
  • PyTorch 문서 CrossEntropyLoss · BCEWithLogitsLoss: https://docs.pytorch.org/docs/stable/nn.html

AI 원리부터 이해하기 · 딥러닝 기초 모듈

딥러닝 기초 모듈 학습

이 글은 딥러닝 기초 모듈의 학습 자료입니다. 전체 29개 자료 중 2번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 D2L(CC BY-SA 4.0)