ResNet (2015)

일정 수준 이상으로는 더 깊은 레이어를 쌓아도 Training Error와 Test Error 모두 정확도가 오르지 않는 문제
Residual Connection
- 컨볼루션 레이어의 입력을 컨볼루션 레이어의 출력에 그대로 더해준 뒤 Activation Function을 통과시키는 구조를 2개의 컨볼루션 레이어마다 추가해 줌


깊은 네트워크일수록 Optimization이 어렵다
- Training Error와 Test Error 모두 높은 Deep Plain Model의 경우 Overfitting으로 인한 현상이라고 보기 어려움
- 깊은 모델일수록 더 풍부한 Feature에 대해서 학습할 수 있다는 장점이 있음에도 불구하고 성능이 오르지 않은 것은 깊은 모델의 경우 Optimization이 더 어렵기 떄문에 발생한 문제라고 해석할 수 있음
Identity Mapping

모델 F(X) 는 F(x) = H(x)가 되는 방향으로 Optimize 됨
F(x) : x -> conv -> ReLU -> conv -> H(x)

모델 F(X)에 x 를 더해주게 되면 F(x) = H(x)에서 F(x) = H(x) - x (Resudual, 잔차) 가 되는 방향으로 Optimize 됨

- 쌓여진 레이어가 그 다음 레이어에 바로 Optimize 되는것이 아니라 Residual Mapping에 Optimize되도록 만듦
- 추가적인 파라미터도 필요하지 않으며, Shortcut Connection만 추가되기 떄문에 복잡한 곱셈연산도 필요하지 않다는 장점
Short Connection : Convolution연산을 거치지 않은 x값을 뒷 레이어에 더해주어 초반 레이어의 정보가 희석되는 것을 방지하고자 함
Bottleneck Layer
깊은 네트워크의 단점
- Convolution Layer를 연속해서 쌓을 떄 Feature Map의 Dimension (=Channel)을 커지거나 유지시키면서 다양한 특징에 대한 학습이 가능하도록 함
- Channel의 수가 늘어난다는 것은, Convolution 연산 시 필요한 Filter의 수가 많아진다는 것을 의미하기 떄문
- 계속해서 Channel의 수가 늘어날 경우 모델이 깊어질수록 연산에 필요한 파라미터 수가 급격히 늘어나기 때문에 학습에 어려움이 생기게 됨

1 x 1 Conv의 효과
- 3x3 Convolution Layer Input과 Output간의 dimension을 맞추는 데에 사용됨
- Input과 Output간의 채널 수를 맞추면서도 모델의 파라미터 수는 크게 늘리지 않을 수 있게 됨
Batch Normalization
필요성
- Input들이 잘 Normalize 되어 있지 않음 (Bias가 클 수 있다)
- 특정 레이어에서 매우 큰 Weight를 가질 수 있음
- 따라서 Input이 각 레이어마다 일정하게 Scale되어 계산될 수 있도록 하는 장치가 필요함
- 각 Dimension을 zero-mean Unit - variance로 만들기 위해서는 아래와 같은 식을 거쳐야 함


역할
- Deep Network가 잘 학습될 수 있도록 함
- Gradient Flow를 개선시킴
- 더 빠르게 Converage 될 수 있도록 함
- 학습 시 Regularization을 한 것 같은 효과를 얻을 수 있음
- 좀 더 Robust한 모델이 될 수 있도록 하는 데에 기여함
- ResNet에서는 모든 Convolution Layer 이후에 Batch Normalization을 해줌
(Conv - BN - ReLU 구조)