1. Introduce
기존 CNN 방식은 Layer가 깊어질 수록 성능이 좋아져야 하나 역전파 과정에서 gradient vanishing / exploding이 발생해 성능이 떨어지고 파라미터 증가로 training error가 증가하는 문제가 있었다. 이를 해결하기 위해 여러 기법을 사용하여 개선한 모델이 ResNet이다.
2. Residual Learning
아래 ResNet의 구조를 보면 Residual Network에서 화살표를 통해 Convolution Layer를 건너 뛰는게 보일 것이다.
입력값이 convoution을 거치지 않고 넘어가는 skip connection을 통해 신경망이 깊어지면 필연적으로 발생하는 gradient vanishing문제를 해결했다.

기존 방식의 신경망은 입력 x에 대해 원하는 출력 H(x)를 직접 학습한다.
ResNet은 이를 재구성하여 H(x) 대신 residual function F(x) = H(x) - x를 학습한다.
따라서 실제 출력은 F(x) + x 형태로 계산된다.
이 구조의 장점은, 만약 최적의 mapping이 identity라면 F(x)를 0으로 만드는 것만으로 쉽게 표현하여 깊은 네트워크에서 발생하는 성능 저하 문제를 완화하는 데 도움을 준다.
이를 통해 모델은 여전히 최종 loss를 최소화하도록 학습되며, residual은 단지 더 효율적인 학습한다.

이를 통해 역전파를 계산할 때 입력값이 출력값으로 그대로 넘어왔기 때문에 gradient vanishing문제를 해결할 수 있습니다. (미분 시 X가 1이 되어 기울기 소실 해결)
3. BottleNeck

깊어진 신경망의 복잡도(파라미터) 감소를 위해 BottleNeck 구조를 사용했습니다.
그림의 왼쪽은 BottleNeck 을 사용하지 않은 구조, 오른쪽은 BottleNeck 을 사용한 구조입니다.
Bottleneck 설명에 앞서 파라미터 구하는 공식을 알 필요가 있습니다.
Convolution Parameters = Kernel Size(가로) X Kernel Size(세로) X Input Channel수 X Output Channel수
아래의 그림을 통해 BottleNeck의 구조를 이해해 봅시다.

1. 먼저 1x1 conv를 통해 신경망을 감소시키지 않고 채널 축소를 통해 파라미터를 감소했습니다.
2. 1x1 conv는 공간적 특징이 없기에 filter를 3x3으로 키우고 채널을 유지합니다.
3. 학습 성능을 위해 1x1 conv를 통해 채널을 키워줍니다.
이처럼 1x1 conv를 통해 연산량을 줄여 학습 속도를 개선할 수 있습니다.
하지만 속도가 증가할 수록 정보 손실로 인해 성능이 낮아지는 trade off 관계이기 때문에 적절히 합의하여 사용해야 합니다.
'DL' 카테고리의 다른 글
| [논문리뷰]CLIP (Learning Transferable Visual Models From Natural Language Supervision) (0) | 2024.11.13 |
|---|---|
| Contrastive Learning (2) | 2024.11.12 |
| GAN(Generative Adversarial Networks) 리뷰 (1) | 2024.03.16 |
| VGG-16 리뷰 (0) | 2024.03.14 |
| YOLO 리뷰 (2) | 2024.03.12 |