논문 정보
| 항목 | 내용 |
|---|---|
| Venue | CVPR |
| 출판 시점 | 2016년 |
| 저자 | Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun |
| 주제 | Residual learning, very deep CNN |
핵심 아이디어
ResNet은 layer를 깊게 쌓을수록 training error가 오히려 나빠지는 degradation 문제를 residual connection으로 해결한다.
일반적인 block이 원하는 mapping 를 직접 학습한다면, ResNet block은 다음 residual을 학습한다.
출력은 다음과 같다.
ResNet의 핵심은 layer가 전체 변환을 새로 학습하는 대신, 입력에서 얼마나 바뀌어야 하는지를 residual로 학습하게 만든 것이다.
왜 중요한가
Residual connection은 매우 깊은 network를 안정적으로 학습할 수 있게 만들었다. 이후 CNN뿐 아니라 Transformer, diffusion model, modern architecture 전반에서 skip connection은 기본 설계가 되었다.
수식으로 보는 핵심
Plain network는 어떤 block이 원하는 mapping 를 직접 학습한다고 본다. ResNet은 이를 residual function 로 다시 parameterize한다.
따라서 block 출력은 다음과 같다.
여기서 는 보통 convolution, BatchNorm, ReLU로 구성된 residual branch다. 중요한 점은 가 identity에 가까운 경우, plain network는 를 직접 학습해야 하지만 ResNet은 을 학습하면 된다는 것이다.
Gradient도 shortcut을 통해 직접 흐른다.
ResNet의 수식적 핵심은 gradient에 identity term 가 더해져, residual branch가 불안정해도 신호가 직접 전달되는 경로가 생긴다는 점이다.
Dimension이 바뀌는 block에서는 shortcut도 projection을 쓴다.
따라서 ResNet은 단순히 layer를 더 깊게 쌓은 모델이 아니라, 깊은 network의 함수 공간을 residual 형태로 다시 parameterize한 architecture다.
문제 배경
일반적으로 network를 깊게 만들면 표현력이 좋아질 것처럼 보인다. 하지만 plain CNN을 단순히 더 깊게 쌓으면 training error 자체가 올라가는 현상이 나타난다. 이것은 test error만 나빠지는 overfitting과 다르다. 학습 데이터조차 잘 맞추지 못한다는 뜻이므로 optimization 문제가 핵심이다.
ResNet은 깊은 모델이 최소한 얕은 모델만큼은 동작할 수 있어야 한다는 관찰에서 출발한다. 추가된 layer들이 아무것도 하지 않는 identity mapping을 배울 수 있다면, 깊어진 모델은 얕은 모델보다 나빠질 이유가 없다.
Residual Learning
Residual block은 원하는 mapping 를 직접 학습하지 않고, 를 학습한다. 그 다음 입력 를 다시 더해 를 만든다.
이 구조에서는 block이 필요 없을 때 를 0에 가깝게 만들면 된다. 즉 layer가 반드시 새로운 표현을 완전히 만들어야 하는 부담이 줄어든다.
Residual connection은 깊은 network가 identity에 가까운 함수를 쉽게 표현하게 만들어 optimization을 안정화한다.
Bottleneck Block
ResNet-50 이상에서는 1x1, 3x3, 1x1 convolution으로 이루어진 bottleneck block을 사용한다. 첫 번째 1x1 convolution은 channel 수를 줄이고, 3x3 convolution은 공간 정보를 처리하며, 마지막 1x1 convolution은 channel 수를 다시 늘린다.
이 설계는 계산량을 줄이면서 깊이를 늘릴 수 있게 한다. 매우 깊은 모델을 현실적인 비용으로 학습하려면 residual connection뿐 아니라 block 내부의 계산 효율도 중요하다.
실험 결과의 의미
논문은 34-layer plain network보다 34-layer ResNet이 training error와 validation error 모두에서 더 낫다는 점을 보여준다. 또 ImageNet에서 152-layer ResNet까지 안정적으로 학습시키며, 깊이를 키우는 전략이 실제로 통한다는 것을 증명했다.
한계
ResNet은 optimization을 크게 개선했지만, 모든 문제를 해결하지는 않는다. 매우 깊은 network에서는 normalization, initialization, learning rate schedule이 여전히 중요하다. 또 residual branch가 너무 강해지거나 shortcut의 shape가 자주 바뀌면 identity path의 장점이 약해질 수 있다.
읽을 포인트
- degradation problem과 overfitting의 차이
- identity shortcut이 gradient 흐름을 개선하는 방식
- 34-layer plain network와 ResNet의 training error 비교
- ResNet-50/101/152에서 bottleneck block을 쓰는 이유
정리
ResNet은 deep network 설계의 기본 문법을 바꿨다. 오늘날 Transformer, diffusion model, segmentation model에서도 skip connection이 기본으로 쓰이는 이유는 같다. 깊은 모델은 매 layer마다 완전히 새로 계산하기보다, 이전 표현을 보존하면서 필요한 변화만 더하는 쪽이 학습하기 쉽다.