<aside> 🌠 **“깊어진 신경망을 효과적으로 학습하려면 어떻게 해야 할까?”
-** 레지듀얼(residual) 개념 고안 ㄴ 일종의 숏컷(shortcut, skip connection) 도입 → 기울기 소멸 문제 방지
⇒ 기본적으로 VGG19 구조를 뼈대로 하여, 거기에 합성곱 층들을 추가하여 깊게 만든 후
숏컷들을 추가하는 원리
</aside>
깊이에 대한 통념

1. 블록(block)
계층의 묶음
합성곱 층을 하나의 블록으로 묶은 것

계층을 계속해서 쌓아 늘리면 파라미터 수가 급증하는 문제 발생
이를 해결하기 위해 병목 블록(bottleneck block) 도입
3x3 합성곱 층 앞뒤로 1x1 합성곱 층을 추가, 채널 수를 통한 차원 조정

2. 숏컷(shortcut/ identity mapping or skip connection)
입력 $x$가 어떤 함수를 통과하더라도 다시 $x$라는 형태로 출력되도록 하는 함수
입력과 출력의 차원이 같도록 맞춰주는 것


합성곱 층을 통과하면서 같은 형태를 더하기 때문에 최종 형태는 (28, 28, 64)로 유지됨
3. 다운샘플(downsample)
특성 맵(feature map)의 크기를 줄이기 위한 것
→ 풀링(pooling)과 같은 역할을 수행
각 블록의 형태를 맞추지 않으면 아이덴티티 매핑이 불가능함

→ 아이덴티티에 대해 다운샘플링이 필요
입력과 출력의 형태를 같도록 맞추어 주기 위해 스트라이드(stride) 2를 가진 1x1 합성곱 계층을 하나 연결
conv = nn.Conv2d(in_channels, out_channels, kernel_size = 1,
stride = 2, bias = False)
<aside> 💡 - 아이덴티티 블록: 입력과 출력이 같은 것
</aside>

