ResNet은 Residual neural network의 줄임말이며, 잔차(residual)과 관련이 있다. Resnet을 사용하면 레이어의 인풋이 다른 레이어로 곧바로 건너 뛰는 short cut을 구성하고 있으며, 딥러닝 모델의 레이어를 깊이 쌓으면 발생하는 문제를 해결하기 위해, 잔차 함수 개념을 적용 하였으며, Resnet을 기반으로 이후에 나온 많은 모델들의 기반이 된 딥러닝 CNN 모델이다.
👉특징
Resnet의 주요 특징은 short cut과 identity block을 구성이다. 아래 사진처럼 resnet 이전에는 output값 그대로 다음 노드의 input으로 입력 했지만, short cut 방식은 이전 layer output값을 conv layer로 거치지 않고 그대로 전달하는 방식
아래 그림, 오른쪽은 conv layer를 거치지 않고 다음 layer로 향하는데 이를 identity mapping이라고 한다. identity mapping은 입력값과 출력값이 같은 매핑을 의미하며, x라는 입력값이 신경망을 거친 결과는 가중치를 거친 F(x)와 identity mapping를 거쳐 만들어진 x를 더한 F(x) + x가 된다. 따라서 최종 출력값 y라고 하면 y는 y = f(x) + x 공식이 된다.
Residual Block
👉 Resnet 50을 포함한 더 깊은 network model은 3x3가 아닌 1x1 conv를 사용 (parameter 개수 감소)
Rennet 50
✏️ Network 깊이 주요 이슈
Vanishing Gradient 문제 (기울기 손실) - sigmoid, relu activation func을 사용해도 고질적인 문제 해결 x
최적 loss 감소가 되지 않아, network 깊이가 깊어질수록 오히려 성능이 저하됨 → 커널 size,dropout,weight decay으로 overfitting을 줄이는 방식으로 network 깊이를 늘려 가는 한계점 봉착
identity mapping은 ReLu와 같은 비선형 layer로 인해 적용이 어려우며, 0을 학습하는 방식으로 많이 사용 됨
conv layer → identity block
🚀적용 방식 (아키텍처 구조)
단계 1: 여러 개의 identity block이 연결되어 구성, 이전 입력값이 skip connection을 통해 conv residual block을 skip해서 output으로 direct 연결
단계 2: residual block과 이전 입력 값을 더한 뒤, 다시 relu 적용, 기본적으로 두 개의 3x3 conv layer
단계 3: residual block 내, conv kernel은 동일한 크기와 depth를 유지 (1x1 conv를 적용하지 않을 경우)
단계 4 : 연속된 residual block(resnet 50 기준, 3~4 or 6회) 이후 커널 크기는 절반, depth는 2배로 변화