88. 기울기 소실 (Vanishing Gradient) 현상
⚠️ 이 문서는 딥러닝의 역전파(Backpropagation) 학습 과정에서, 출력층에서 발생한 오차 신호(미분값)가 입력층 방향으로 겹겹이 층(Layer)을 거슬러 전달될 때 **그 신호가 갈수록 희미해져 결국 0에 수렴해 버림으로써, 앞쪽 층의 뉴런(가중치)들이 자기가 무얼 잘못했는지 깨닫지 못하고 학습이 영원히 멈춰버리는 딥러닝 1차 암흑기의 최대 적 '기울기 소실'**을 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: 고등학교 수학의 '연쇄 법칙(Chain Rule)'이 낳은 비극이다. 1보다 작은 소수(예: 0.25)를 여러 번 곱하면 그 값이 순식간에 0.0000...으로 증발해 버리는 수학적 곱셈 누적의 부작용이다.
- 가치: 이 문제를 풀지 못해 수십 년간 인공신경망은 은닉층을 기껏해야 2~3개밖에 쌓지 못하는 얕은 모델에 머물렀다. 이 저주를 풀어내면서 비로소 층을 100개 이상 쌓는 진정한 '심층(Deep) 러닝'의 시대가 폭발적으로 열렸다.
- 기술 체계: 최대 기울기가 0.25밖에 안 되는 Sigmoid/Tanh 활성화 함수를 버리고, 양수에서 기울기가 항상 1로 유지되는 ReLU 함수를 도입한 것, 그리고 중간을 껑충 건너뛰어 신호를 직접 전달하는 **잔차 연결(ResNet의 Skip Connection)**이 궁극적인 2대 해결책이다.
Ⅰ. 귓속말 게임의 비극: 뒤로 갈수록 사라지는 목소리
역전파(Backprop)는 맨 끝의 정답지에서 오답의 원인을 찾아 앞으로 거꾸로 이동한다.
- 연쇄 법칙 (Chain Rule)의 연속 곱셈:
- 오차(Loss)를 줄이기 위해 가중치($W$)를 업데이트하려면 기울기(Gradient, 미분값)가 필요하다.
- 은닉층이 5개라면, 맨 앞쪽 1번 층의 기울기를 구하기 위해
5번 층의 미분값 × 4번 층 미분값 × 3번 × 2번 × 1번처럼 계속해서 값을 곱해 나가며 신호를 전달해야 한다.
- 시그모이드 (Sigmoid) 함수의 배신:
- 초창기 딥러닝은 활성화 함수로 S자 모양의 시그모이드를 썼다.
- 시그모이드 함수를 미분(기울기)하면 그 최댓값이 고작 **$0.25 (1/4)$**밖에 안 된다. 양 끝으로 가면 아예 0에 수렴한다.
- 기울기 소실 (Vanishing) 발생:
- 연쇄 법칙에 따라 이 $0.25$를 역으로 10번만 곱해도 $0.25^{10} \approx 0.0000009$가 된다.
- 맨 뒤(출력층)에서 "야, 이 오차를 줄이게 너희들 가중치 좀 확 깎아봐!"라고 크게 소리쳐도, 맨 앞 1번 층 뉴런 귀에 도착할 때는 "가중치를 0.0000009만큼 수정해..."라는 모기만 한 소리로 들린다. 결국 맨 앞단 뉴런들은 전혀 업데이트(학습)되지 않은 멍청한 랜덤 값 상태로 굳어버린다.
📢 섹션 요약 비유: 100명이 일렬로 서서 "불이야!"라고 귓속말을 전하는 게임입니다. 시그모이드라는 룰은 말을 전할 때마다 목소리 크기를 $1/4$로 줄이라는 규칙입니다. 뒤에서 아무리 크게 소리쳐도, 10명만 지나면 개미 소리가 되어 맨 앞쪽의 소방수는 아무 소리도 못 듣고 불을 끌(학습할) 생각조차 하지 못한 채 멍하니 서 있게 되는 치명적 마비 상태입니다.
Ⅱ. 혁명적 돌파구 1: ReLU (소리 크기를 1로 유지하라)
목소리를 줄이지 않고 확성기로 끝까지 똑같이 쏘아 보낸다.
- 시그모이드와 Tanh의 퇴출:
- 은닉층(Hidden Layer) 내부에 들어가는 활성화 함수에서 Sigmoid와 Tanh는 역사 속으로 완전히 퇴출당했다. (단, 출력층의 이진 분류 등에만 예외적으로 남음)
- ReLU (Rectified Linear Unit)의 도입:
- 제프리 힌튼(Geoffrey Hinton) 등이 제안한 이 단순한 함수($f(x) = max(0, x)$)가 딥러닝을 구원했다.
- 데이터가 양수(+)일 때, 이 함수의 그래프는 45도 직선을 그린다. 즉, **미분값(기울기)이 항상 완벽한 '1'**이 된다.
- 연쇄 법칙의 곱셈 붕괴 방어:
- 역전파가 100개의 층을 거슬러 올라가며 100번을 연속으로 곱하더라도,
1 × 1 × 1 × ... × 1 = 1이 된다. - 뒷단에서 발생한 에러 신호(목소리)가 1%의 크기 축소(소실)도 없이 맨 앞단 입력층 1번 노드까지 쩌렁짱짱하게 그대로 살아서 전달된다. 100층, 1,000층을 쌓아도 학습이 쌩쌩하게 돌아가게 되었다.
- 역전파가 100개의 층을 거슬러 올라가며 100번을 연속으로 곱하더라도,
📢 섹션 요약 비유: 귓속말을 할 때 목소리 크기를 줄이라는 멍청한 룰(시그모이드)을 폐지했습니다. ReLU라는 새 룰은 "앞사람에게 들은 목소리 크기 그대로(1배) 뒷사람에게 메가폰으로 똑같이 질러라"입니다. 100명이 서 있어도 맨 끝에서 친 "불이야!"라는 고함 소리가 맨 앞 사람 고막에 100% 크기로 꽂히는 기적의 통신망입니다.
Ⅲ. 혁명적 돌파구 2: ResNet의 잔차 연결 (Skip Connection)
아무리 메가폰(ReLU)을 써도 150명 거치면 신호가 변질된다. 차라리 다이렉트 전화를 놔주자.
- 100층 이상의 초거대 네트워크 (ResNet):
- 2015년 마이크로소프트 연구진(Kaiming He 등)은 이미지 인식 대회를 휩쓴 ResNet(152층)을 발표했다.
- 아무리 ReLU와 완벽한 가중치 초기화(He 초기화)를 써도, 층이 150개를 넘어가면 행렬 곱셈의 피로도 때문에 얕은 층보다 학습이 안 되는 역전 현상(Degradation)이 나타났다.
- 잔차 연결 (Skip Connection / Shortcut):
Layer 1 -> 2 -> 3으로 정직하게 데이터와 기울기를 흘려보내는 대신,Layer 1의 입력값을 빼돌려서Layer 3의 출력단에 더하기(+)로 다이렉트로 꽂아버리는(우회 도로 개통) 기괴한 짓을 했다.- 역전파 미분을 할 때 덧셈(+) 기호는 신호를 깎아 먹는 곱셈과 달리 신호를 **'우회 도로를 통해 손실 없이 즉시 앞 층으로 통과'**시켜 버린다.
- 기울기 고속도로의 완성:
- 뒤에서 발생한 에러 신호가 답답한 복잡한 함수망(Layer)을 거치며 작아지지 않고, 이 뻥 뚫린 '우회 도로(Shortcut)'를 타고 빛의 속도로 1번 층까지 직행(고속도로 통행)하게 되어, 1,000층짜리 모델도 코를 후비며 거뜬하게 학습시키는 현대 딥러닝 아키텍처의 절대 표준(국룰)이 되었다.
📢 섹션 요약 비유: 100명의 결재 라인(Layer)을 거쳐야 문서를 수리할 수 있다면 아무리 속도를 내도 서류(기울기 신호)가 왜곡되거나 잃어버립니다. ResNet은 "부장이 막히면, 그냥 대리가 사장님 방문 열고 들어가서 직접 서류 던져놓고 서명받아와(Skip Connection)!"라며 100단계를 건너뛰는 사장실 직통 엘리베이터(고속도로)를 수십 개 설치해 부서 간 병목을 완벽히 부숴버린 것입니다.