Residual Connection
개념
Residual Connection(잔차 연결)의 개념은 층을 통과한 출력값에 원본 입력값을 다시 더해주는 것이다. 신경망을 깊게만 쌓으면 오차가 전달되지 않는 Vanishing Gradient(기울기 소실) 문제가 생기게 된다. 하지만 잔차 연결을 통해 원본 데이터를 더해주면, 층이 깊어져도 오차가 소실되지 않고 맨 앞단까지 전달될 수 있다.
\[y = F(x) + x\]수식
- $x$: 이전 층의 특징 맵
- $F(x)$: 신경망 층이 내보낸 output값
- $y$: 다음 층으로 전달될 최종 결과물
위의 수식은 신경망이 새롭게 학습한 값 $F(x)$에 이전 층에서 이미 만들어진 특징 맵($x$)을 더해줌으로써 다음 층으로 전달될 결과물을 만들어내는 Residual Connection수식이다.
Residual Connection을 하지 않은 신경망은 은닉층이 깊을수록 이전 층의 특징이 점점 희미내지는 문제가 발생한다. 그렇기에 이전 층의 특징 맵인 $x$를 다음 층으로 전달될 결과물에 더해주어서 이전 층에서 찾은 특징이 소실되어버리는 것을 막아준다. 이와 함께 Vanishing Gradient문제도 해결을 해준다.
이름이 Residual(잔차)인 이유
한자로는 남을 잔(殘), 다를 차(差)를 쓴다. 즉, ‘나머지 차이’라는 뜻이다.
모델의 특정 층(Layer)이 도달해야 하는 이상적인 결과값을 $H(x)$라고 두자. 기존 신경망은 $H(x)$를 처음부터 끝까지 다 만들어내야 했다. 하지만 잔차 연결을 사용하면, 이미 입력값 $x$가 그대로 들어오기 때문에 해당 층이 실제로 학습해야 하는 값 $F(x)$는 다음과 같아진다.
\[F(x) = H(x) - x\]즉, 모델이 학습하는 $F(x)$는 ‘이상적인 정답 $H(x)$에서 현재 가진 입력값$x$을 빼고 남은 나머지 차이’가 된다. 이 부족한 나머지 부분만 채워 넣으라고 해서, 이 층을 잔차 블록(Residual Block)이라고 부르게 된 것이다.
| 오차 (Error) | 잔차 (Residual) | |
|---|---|---|
| 개념 | ‘진짜 정답’과 ‘예측값’의 차이 | ‘현재 가지고 있는 데이터’와 ‘예측값’의 차이 |
| 성격 | 우리가 줄여나가야 할 ‘최종적인 틀림의 정도’ | 목표를 향해 가기 위해 ‘추가로 보정해야 할 몫 |
Leave a comment