Skip connection
ResNet에서 Skip connection은 2개의 레이어를 건너뛰는 형태로 제작되었다. 레이어에 들어오는 입력이 Skip connection을 통해서 건너뛰어 레이어를 거친 출력과 Element-wise addition을 한다. 즉, 기울기를 residual block과 함께 더 깊은 레이어로 전송한다. Plain network의 경우 18층에서 34층으로 깊이를 늘리면 학습 오류가 늘어나는 것을 볼 수 있다. ResNet의 경우 degradation 문제가 어느정도 해결됨을 알 수 있다.
모델 depth 비교
또한, Re-ResNet도 신경망의 깊이가 점점 깊어지면 parameter의 수가 많아지기 때문에 residual block을 다른 구조로 사용하는 방식이 고안되었다.
Residual Block의 원래 구조는 왼쪽과 같지만 50층 이상의 ResNet에서는 오른쪽 그림과 같이 사용한다. 1×1 convolution을 통해 필터 크기를 줄인 이후 3×3 convolution을 하면 parameter 수를 조금 줄일 수 있다. 이러한 구조의 residual block을 bottleneck block이라고 부른다. Bottleneck 구조를 사용하여 ResNet의 내부 구조를 바꾸면 152 레이어까지 쌓아도 VGG보다 모델의 크기가 작다.
표는 18층, 34층, 50층, 101층, 152층의 ResNet이 어떻게 구성되어 있는가를 나타낸다.깊은 구조일수록 성능도 좋다.즉, 152층의 ResNet이 가장 성능이 뛰어나다.
ResNet v2
Bottleneck 구조를 사용해도 1000층 이상의 깊이를 가지게 되면 다시 degradation 문제가 생겼다. ResNet-110이 6.43% 오차율을 가지는 반면 ResNet-1202는 7.93% 오차율을 가진다. 저자는 이후 1000개의 층을 쌓아도 degradation 문제가 생기지 않게 하는 방법을 고안하였다.
최적화
기존 residual block에서는 ReLU activation 이후에 다음 residual block으로 넘어가기 때문에 back propagation할 때 ReLU에 의해 정보가 잘려 나갈 수 있기 때문에 학습 손실이 느리게 줄어들었다. 하지만 새로운 residual unit에서는 backpropagation할 때 identity에 대한 부분은 출력에서 입력까지 유지될 수 있었다. 따라서, 1000층 이상의 매우 깊은 구조에서 최적화가 더 쉬워질 수 있게 하였다.
Regularization
기존 Residual Block의 경우 BN을 한 이후에 identity mapping과 addition을 해주고 그 이후에 ReLU를 붙이는 형태이다. 따라서, Batch normalization의 regularization 효과를 충분히 보지 못하였다. 새로운 residual block에서는 Batch normalization 이후에 바로 ReLU를 붙여 성능을 개선할 수 있었다. 여러 번의 실험과 변형을 통해 저자는 더 깊은 레이어를 잘 쌓을 수 있게 하는 ResNet을 제작하였고 이후 많은 연구자들이 구조를 차용하여 많은 네트워크 구조를 생성할 수 있게 되었다.
'Visual Intelligence > Image Classification' 카테고리의 다른 글
[Image Classification] DenseNet (MNIST) (0) | 2022.09.14 |
---|---|
[Image Classification] DenseNet (0) | 2022.09.13 |
[Image Classification] ResNet (1) (0) | 2022.09.12 |
[Image Classification] VGGNet (cats-and-dogs) (0) | 2022.09.06 |
[Image Classification] VGGNet (0) | 2022.09.06 |