아주 깊은 신경망을 학습하지 못하는 이유 중 하나는 경사가 소실되거나 폭발적으로 증가하기 때문입니다. 하지만 ResNet 에서는 스킵 연결로 이 문제를 해결했습니다.
잔여 블록을 설명하기 전에 아래의 두층의 신경망이 있다고 생각해봅시다.
아래 그림 처럼 모든 층을 지나는 연산 과정을 “main path” 라고 부릅니다. 즉, a^{[l]}a[l] 의 정보가 a^{[l+2]}a[l+2] 로 흐르기 위해서는 모든 과정을 거쳐야합니다.
main path
하지만 ResNet 에서는 아래 그림 처럼 z^{[l+2]} 에 비선형성을 적용해주기 전에 a^{[l]} 을 더하고 이것을 다시 비선형성을 적용해줍니다.
skip connection / short cut
a^{[l]}a[l] 를 더해서 다시 활성화 함수에 넣는 부분까지를 잔여 블록이라고 합니다. 지름길 (Short cut) 혹은 스킵 연결(Skip connection) 은 a^{[l]}a[l] 의 정보를 더 깊은 층으로 전달하기위해 일부 층을 뛰어 넘는 역할입니다.
ResNet 은 여러개의 잔여 블록으로 구성되어있습니다. ResNet 을 만드려면 평형망에 스킵 연결을 더해주면 됩니다.
residual block & skip connection
또한, 경험적으로 층의 개수를 늘릴 수록 훈련 오류는 감소하다가 다시 증가합니다. 하지만 이론 상으로는 신경망이 깊어질 수록 훈련 세트에서 오류는 계속 낮아져야합니다. 하지만 ResNet 에서는 훈련오류가 계속 감소하는 성능을 가질 수 있습니다.
comment