신경망의 깊이가 깊어 질 수록 훈련세트를 다루는데 지장이 있을 수 있습니다. ResNet 은 이를 잘 해결했습니다.
스킵 연결의 효용
위와 같은 큰 신경망에서 두개의 층을 더 추가하고 지름길을 연결해줍니다. 여기서 활성화함수 gg 는 ReLU 입니다.
스킵 연결을 더해준 출력값 a^{[l+2]}a[l+2] 은 g(z^{[l+2]} + a^{[l]}) = g(W^{[l+2]}a^{[l+1]} + b^{[l+2]}+ a^{[l]})g(z[l+2]+a[l])=g(W[l+2]a[l+1]+b[l+2]+a[l]) 로 쓸수 있습니다. 여기서 만약에 W^{[l+2]}W[l+2] 와 b^{[l+2]}b[l+2] 의 값이 00 이 된다면, 위의 식은 a^{[l+2]} = g(a^{[l]}) = a^{[l]} a[l+2]=g(a[l])=a[l] 으로 항등식이 됩니다.
위 항등식의 의미는 신경망으로 하여금 스킵 연결을 통해 두 층이 없는 더 간단한 항등식을 학습하여, 두 층 없이도 더 좋은 성능을 낼 수 있게 만든다는 것입니다.
다만, z^{[l+2]}z[l+2] 와 a^{[l]}a[l] 이 같은 차원을 가져야 합니다. 따라서 보통 동일합성곱 연산(출력 크기가 입력크게와 같기하는 합성곱연산)을 하거나 차원을 같게 만들어주는 행렬 W_s Ws 를 잔여블록 앞에 곱해줘서 같게 만듭니다.
comment