ReLU의 존재 의미
ReLU가 기울기 문제를 해결한다고 뭉뚱그려 말하기 쉽지만, ReLU가 다루는 것은 vanishing이지 exploding이 아니다. 이 구분을 정리해봤다.
ReLU가 해결하는 건 vanishing이다#
역전파에서 gradient는 각 층의 activation 미분을 계속 곱하면서 전달된다. Sigmoid 같은 함수는 미분 값이 항상 1보다 작아서, 층을 거칠수록 gradient가 0으로 수렴하는 vanishing gradient가 생긴다.
ReLU는 양수 입력에 대해 미분이 1이다. 그래서 곱해도 gradient가 줄어들지 않고, 소실 문제를 완화한다. ReLU로 바꾸는 것은 vanishing을 해결하기 위한 조치다.
ReLU는 exploding을 해결하지 않는다#
기울기 폭발, exploding gradient는 결이 다른 문제다. 폭발은 주로 가중치가 반복해서 곱해지며 값이 비정상적으로 커지는 데서 온다. ReLU는 양수 쪽으로 값을 자르지 않고 그대로 통과시키기 때문에 커지는 값을 막지 못한다. 그래서 활성화 함수를 ReLU로 바꾸는 것은 exploding 해결과는 거리가 멀다.
실제로 gradient exploding을 다루는 조치들은 따로 있다.
- Gradient Clipping: gradient 크기가 threshold를 넘으면 잘라낸다(가장 직접적).
- 가중치 초기화(He, Xavier): 층을 지나며 분산이 폭주하지 않도록 초기 가중치 분포를 잡는다.
- L2 정규화: 가중치 크기 자체를 억제한다.
- Batch Normalization: 각 층의 입력 분포를 안정화한다.
정리#
- ReLU는 양수 미분이 1이라 vanishing을 완화한다.
- exploding은 가중치 반복 곱으로 값이 커지는 문제라, 값을 자르지 않는 ReLU로는 막을 수 없다.
- exploding은 gradient clipping, 적절한 초기화, L2, BatchNorm 등으로 다룬다.
댓글