6강 / 20강
기울기가 사라진다 — 깊은 신경망이 오래 안 되던 이유
초기화 · ReLU · 잔차 연결
4강에서 봤습니다 — 역전파는 층마다 값을 곱해 가며 뒤로 넘깁니다. 곱하는 값이 1보다 작으면 층을 지날 때마다 줄어들고, 크면 늘어납니다.
기울기 소실
0.5 를 열 번 곱하면 0.001
앞쪽 층이 거의 안 배운다
앞쪽 층이 거의 안 배운다
기울기 폭발
1.5 를 열 번 곱하면 58
손실이 NaN 이 된다
손실이 NaN 이 된다
왼쪽은 <b>0 으로 사라집니다</b>. 오른쪽은 스무 층을 지나도 크기가 유지돼요.
Python
브라우저에서 실행
세 가지가 함께 이 문제를 풀었다
| 무엇 | 어떻게 |
|---|---|
| ReLU | 미분이 0 또는 1 — 켜진 길로는 줄지 않고 흐른다 (4강) |
| 초기화 | He / Xavier — 층을 지나도 크기가 유지되도록 분산을 정한다 |
| 잔차 연결 | 층을 건너뛰는 지름길 — 기울기가 곧장 뒤로 간다 |
세 번째가 특히 예쁩니다. 출력을 f(x) + x 로 두면,
x 를 지나는 길은 미분이 1 이라 아무리 깊어도 기울기가 죽지 않아요.
<code>+ x</code> 한 줄입니다. 그 지름길로 기울기가 <b>곧장</b> 흘러요.
Python
브라우저에서 실행
🤔 확인 문제
층 스무 개짜리 신경망에서 은닉층 활성함수로 로지스틱을 썼더니 앞쪽 층의 가중치가 거의 변하지 않습니다. 원인은?
해설 0.25 를 스무 번 곱하면 10⁻¹² 입니다. 앞쪽 층에는 신호가 닿지 않아요 — ReLU 로 바꾸는 것이 첫 조치입니다.