논문명: Deep Residual Learning for Image Recognition
학회(출판연도): CVPR (2016)
연구분야: 딥러닝 기반 컴퓨터 비전 백본 네트워크
✓ 기존 신경망의 문제점
✓ ResNet의 등장
→ Residual Learning(잔차 학습) 프레임워크 제안
레이어가 입력과 무관한 함수를 직접 학습하는 대신, 입력을 기준으로 한 잔차 함수를 학습하도록
→ ① 네트워크 쉽게 최적화 + ② 정확도 향상
[실험 결과] VGG네트워크보다 8배 깊은데 연산 복잡도는 더 낮음
→ ImageNet
→ COCO 28% 성능 향상 (깊은 표현 가능)
✓ CNN
→ 이미지 분류 분야에서 획기적인 성과
깊은 네트워크
[최근 연구] 16~30층에 이르는 “매우 깊은” 모델 활용
(P)
✓ 그렇다면, 단순히 층을 쌓는 것만으로 더 좋은 네트워크를 만들 수 있는가? - NO!
→ ① 기울기 소실/폭발 문제 ② 성능 저하 문제(Degradation Problem)
(P1) 기울기 소실/폭발 문제
→ (S) 정규화된 초기화 기법 + 정규화 레이어로 역전파 기반 SGD에서 안정적으로 수렴 가능
✓ SGD (확률적 경사하강법)
- 손실함수를 최소화하는 방향으로 가중치를 업데이트하는 최적화 알고리즘
- 경사하강법의 변형으로,
전체 데이터가 아닌 “일부 데이터(미니배치 or 1개 샘플)”만 보고 업데이트 하는 방식
→ Stochastic(확률적)
BUT!
(P2) Degradation Problem(성능 저하 문제)
→ 깊이가 늘어날수록 정확도가 일정 수준에서 포화된 뒤, 성능이 빠르게 저하

→ (이론적 S) 추가된 층은 항등 매핑으로, 나머지는 이미 학습된 얕은 모델에서 복사
✓ 항등 매핑(identity mapping)
입력 = 출력
!image.png
⇒ ResNet에서 Skip Connection을 통해 구현
- 새로 추가된 층이 꼭 유용한 걸 못 배우더라도 F(x)=0만 학습하면 입력을 그대로 출력
✓ 추가된 층을 항등 매핑(identity mapping)으로 두는 것
- 얕은 모델에서 이미 잘 학습된 가중치가 있다고 가정
- 모델을 더 깊게 만들고 싶을 때, 새로운 층들을 항등 매핑으로 두면, 입력을 그대로 출력으로 흘려보내는 상태가 됨
- 깊은 모델 = 얕은 모델 + 항등 매핑 층(아무 일도 안하는 층)
⇒ 하지만,
[실험 결과] 현재 최적화 기법은 이론적 해법만큼 좋지도 않고, 현실적인 시간 안에 찾는 건 불가능
즉, 깊은 네트워크가 얕은 네트워크만큼 성능을 내는 쉬운 방법은 존재하지만, 실제 알고리즘이 그걸 찾아주지 못해서 성능 저하가 발생함
✓ (S) Deep Residual Learning Framework
→ 여러 층이 직접 목표 함수를 학습하게 하는 것이 아닌 “잔차함수(residual mapping)”를 학습하도록
✓ 기존 방식(Plain Network) vs. ResNet 방식(Residual Network)
우리가 원하는 함수가 H(x)라고 했을 때,
- 기존 방식(Plain Network)
- 여러 층을 합쳐서 곧장 H(x) 자체를 학습
- 각 층이 독립적으로 목표 함수 학습하는 것이 아닌, 여러 층이 순차적으로 쌓여서 전체적으로 H(x)를 근사
- ResNet 방식
여러 층이 합쳐져서 F(x) = H(x) - x (잔차: 입력 대비 변화량)만 학습
최종 출력은 F(x)+x 로 표현
→ 즉, 기존의 입력을 조금 보정하는 역할

[가정] 잔차 함수를 최적화하는 것이 원래 함수를 직접 학습하는 것보다 더 쉽다
→ 극단적인 경우) 항등 매핑이 최적이라면,
비선형층 여러 개로 항등 매핑을 학습하는 것보다 잔차를 0으로 만드는 것이 훨씬 쉬움
✓ Shortcut connection
→ 하나 이상의 층을 건너뛰어 연결하는 방식

✓ SGD와 backprop으로 end-to-end 학습이 가능하다
1. 신경망 학습
일반적인 신경망 학습 과정 Residual block에서 추가된 shortcut ✓ 입력 x → 여러 층(Conv,ReLU 등) → 출력 y
✓ 순전파: 데이터를 위로 흘려보내고
✓ 역전파: 손실의 미분값(gradient)을 아래로 보내
면서 가중치 업데이트
→ 이때, SGD(확률적경사하강법)같은 최적화 알고리즘이 gradient를 사용해 파라미터 갱신
⇒ 즉, 학습은 항상 “출력에서 입력까지 gradient가 잘 전파되는가?”에 달려 있음✓ y = F(x) + x
✓ F(x)는 학습해야 하는 비선형 변환이고,
x는 단순히 바로 더해주는 identity connection
- 추가경로는 파라미터 X (그냥 입력을 더해줌)
- 연산은 단순히 덧셈이고, 미분도 매우 간단!2. 역전파에서 어떻게 작동?
y=F(x) + x에 대해, 손실 L의 gradient를 계산한다고 해보자
3. end-to-end 학습 가능?
- shortcut connection은 추가 파라미터도, 특수 알고리즘도 필요없음
- 기존의 backprop과 SGD로 진행
- Residual Network는 일반 신경망처럼 처음부터 끝까지 한 번에 학습 가능하다는 뜻
✓ 실험
ImageNet 데이터셋
① 매우 깊은 잔차 네트워크: 최적화가 쉬움
↔ 단순히 층을 쌓은 일반 네트워크: 깊이가 증가할수록 훈련 오류가 커짐
② 잔차 네트워크는 깊이가 크게 늘어나도 쉽게 정확도 높일 수 있음 + 기존의 네트워크보다 뛰어난 성능
CIFAR-10 데이터셋
✓ Residual Representations
VLAD, Fisher Vector
기존 이미지 인식에서 원래 벡터 대신 잔차벡터(residual vector)를 활용해 특징을 인코딩
→ 원래 벡터를 직접 쓰는 것보다 잔차 벡터를 쓰는게 더 효과적
저수준 비전/그래픽스
⇒ 잔차 기반 표현은 최적화를 단순화하고 수렴 속도를 높임!
즉, 잔차를 다루는 방식은 이전부터 효과적임이 입증되어 왔다
✓ Shortcut Connections
<초기 연구>
<ResNet과 차별점>
① ResNet은 항등 shortcut 사용! → 항상 입력을 그대로 출력으로!, 파라미터 없음
② 언제나 잔차 함수 F(x)를 학습하고, 입력 정보가 항상 손실없이 전달됨
✓ Shortcut의 두 가지 방식
1. Highway Networks (ResNet 이전 연구)
shortcut에 gate(게이트)를 둠
게이트 값 1 → 입력이 그대로 전달
게이트 값 0 → 입력 차단(shortcut 닫힘)
→ 데이터마다 “shortcut를 통과할지 말지”를 선택하는 구조
2. ResNet (항등 Shortcut)
게이트 없음 → 무조건 입력 그대로 전달
파라미터 X, 학습할 것 X
→ 입력 x는 언제나 output으로 직접 더해짐
✓ 항상 열려 있다?
입력 x가 shortcut을 통해 항상 출력 쪽으로 전달된다는 뜻
네트워크가 “입력을 통과시킬지 말지” 선택하는 것이 아니라, 무조건 통과시킴
- 그 위에 residual F(x)가 더해져 최종 출력이 됨
⇒ 최소한 항등 함수( F(x) =0 )는 언제나 보장됨 → 학습 실패(수렴 실패)를 피할 수 있음
✓ 용어 정리
✓ 잔차 학습
(P)
[가정]
여러 개의 비선형 레이어가 복잡한 함수를 점근적으로 근사할 수 있다
= 잔차함수( H(x)-x )를 근사할 수 있다
✓ 딥러닝의 기본 전제
- 여러 비선형 레이어를 많이 쌓으면, 이론적으로 어떤 복잡한 함수 H(x)도 근사할 수 있다.
✓ ResNet의 관점
- 복잡한 함수 H(x)를 직접 근사할 필요가 있을까?
- H(x)를 근사할 수 있다면, 똑같이 H(x)-x(즉, 잔차함수 F(x))도 근사 가능
- H(x)와 H(x)-x는 단순히 항등항을 뺀 것이므로, 난이도 면에서 차이X
- 단, 입력과 출력 차원이 같아야 H(x)-x 정의 가능
✓ Plain Net
- 층이 곧바로 H(x)를 배워야 함
✓ Residual Net
- F(x) = H(x) - x 만 배우고, 최종 출력이 y = F(x) + x
- 네트워크에 전체 함수를 배우라는 대신 항등에서 벗어난 나머지만 배우라고 하는 것
✓ 왜 이렇게 할까?
H(x)가 항등에 가까운 경우, F(x)는 아주 작은 값
→ 작은 보정만 배우면 되어 최적화가 훨씬 쉬움
Plain Net은 항등 매핑까지 포함해서 전부 학습해야해서 어려움
ResNet은 문제를 재정식화해서 풀기 쉽게 만들겠다는 것이 요지
✓ Degradation problem
추가된 층들이 항등 매핑으로 구성될 수 있다면, 더 깊은 모델의 훈련 오류
항등 매핑이 최적이라면 H(x) =x
실제로 항등이 최적일 가능성은 낮겠지,,
근데, 항등매핑을 “출발점”으로 두면 문제를 풀기에 쉬워진다
우리가 찾고 싶은 H(x)가 0 mapping보다 항등에 더 가까운 함수라면 H(x)를 새로 배우는 것보다
”항등 + 작은 잔차”로 학습하는게 더 쉽다
실제로 실험해보니, 학습된 F(x)값들의 크기는 작았고,
대부분의 네트워크는 “항등에 가까운 함수 + 약간의 보정”꼴로 학습됨
⇒ 항등 매핑이 좋은 시작점(precondition)임이 실험적으로 확인
✓ Residual Block

✓ 설계규칙
① 출력 특성 맵 크기가 같으면, 해당 층 필터 개수도 동일하게 유지한다
② 특징맵 크기가 절반으로 줄어들면, 연산 복잡도를 층마다 일정하게 유지하기 위해 필터 개수를 2배 늘림

✓ Residual Network
(A) shortcut이 여전히 항등 매핑을 수행하되, 차원을 늘리기 위해 0값을 채워 넣음
(B) projection shorcut을 사용하여 차원을 맞춤( 1x1 합성곱으로 수행)
✓ 데이터 전처리 & 증강
✓ 스케일 증강
학습용 이미지의 크기를 무작위로 다른 크기로 리사이즈해서 네트워크에 넣는 방법
→ 원래 이미지는 한 가지 고정된 크기(224x224)로만 학습시키지 않고, 입력 이미지를 여러 크기(스케일)에서 보여주어 네트워크가 크기 변화에 강건하도록!
scale augmentation
crop & flip
224x224 크기의 영역을 원본 이미지나 좌우 반전된 이미지에 무작위로 잘라냄
한 번은 짧은 변이 256으로 맞춰진 이미지에서 crop, 다른 한 번은 480으로 크게 맞춘 뒤 crop
→ 이미지의 불변성을 가지게 됨
ex. 항상 같은 크기의 고양이 사진만 보여주면 “고양이는 딱 이 크기”라고 잘못 배움.
크기를 줄였다 키웠다 하면서 보여주면 “고양이는 크기가 달라도 같은 고양이~”
정규화 (→학습 안정화 목표)
픽셀별 평균값 빼주기
각 픽셀의 RGB값에서 전체 학습 데이터셋의 평균값을 빼주는 작업
→ 입력 데이터 분포가 0 근처로 맞춰져서 학습이 더 안정적이고 빠르게 진행
✓ 왜 입력 분포를 0 근처로 맞추면 학습이 안정적일까?
- 뉴런의 활성화함수(특히 ReLU, sigmoid,,)는 입력분포가 너무 크거나 치우치면, gradient가 죽거나 폭발
- 평균이 0에 가깝게 맞춰지면 양수/음수가 균형있게 섞여서 가중치 업데이트에 원활
⇒ 정규화(평균 0 분산 1)는 기울기 소실/폭발을 막고 최적화를 쉽게 함
color augmentation (색상 증강)
✓ 네트워크 구성 & 초기화
✓ 학습 세팅
✓ 테스트 세팅
✓ Plain Networks → 18-layer & 34-layer 네트워크 평가
34-layer plain net이 훈련/검증 오류 모두 높음 → Degradation problem
BN 사용으로 forward/backward 신호 소실은 아님 → 기울기는 정상
✓ [원인 추측] 지수적으로 낮은 수준의 수렴 속도 → 최적화가 어려움
34층도 일정 수준의 정확도는 달성(= 최적화 알고리즘이 어느정도는 작동함을 시사)
✓ Residual Networks → 18-layer & 34-layer 네트워크 평가
① 깊이 증가 효과 (18층 vs. 34층)
Plain Net: 34층 → 18층보다 성능저하 (Degradation problem)
ResNet: 34층 → 18층보다 2.8% 성능 향상
→ 잔차 학습이 깊어질수록 성능을 높여주더라~
② 훈련 오류 & 일반화
34층 ResNet은 훈련 오류⬇️
검증 데이터에도 잘 일반화
→ Degradation problem 해결 + 깊이 증가로 정확도 이득
③ Plain Net vs ResNet(동일 깊이, 34층)
ResNet이 PlainNet보다 Top-1 오류율 3.5% 감소
→ 매우 깊은 네트워크에서도 residual learning의 효과 입증
④ 18층 모델 비교
✓ Identity vs. Projection Shortcuts
✓ A/B/C shortcut 비교
(A) : (차원 증가시) 0-padding 지름길 사용, (나머지) 항등 지름길 사용 / 모든 지름길 파라미터X
(B) : (차원 증가시) projection 지름길 사용, (나머지) 항등 지름길 사용
(C) : (모든 지름길) projection 지름길 사용
⇒ A<B<C 이긴 하나, 성능 차이 크지 X - projection이 필수적이진 않다~
✓ A<B: 0으로 채운 차원은 실제로 잔차학습이 일어나지 않기 때문
✓ B<C: 다수(13개)의 projection 지름길로 인해 추가 파라미터가 도입되었기 때문
✓ 왜 projection을 사용할까?
- 입력과 출력 차원이 같은 경우 → Identity shortcut 이 효율적
- 입력과 출력 차원이 다를 경우
- Zero padding → 채널 부족분을 0으로 채움(파라미터X)
- Projection shortcut → 1x1 Conv로 변환해서 정확히 맞춤(파라미터, 연산량 O)
- Zero padding은 단순히 빈 채널을 0으로 두기 때문에, 그 채널에서는 학습이 전혀 안 일어남
- Projection은 1x1 Conv를 통해 실제로 의미있는 학습된 변환을 넣어줌
- 보통 차원이 바뀔 때 projection을 쓰는 게 더 안정적
⇒ Zero padding은 단순히 모양 맞추기인 반면, projection은 단순히 크기만 맞추는 것이 아닌 차원을 늘리거나 줄일때 중요한 특징을 보존/강조하는 방향으로 학습
✓ Deeper Bottleneck Architectures
→ 훈련시간의 부담을 줄이기 위하여 기본블록 → 병목 구조로 수정

✓ Identity shortcut vs. Projection shortcut
Identity shortcut: 입력 x를 그대로 더함 → 파라미터 X, 연산량 X
Projection shortcut: 입력을 1x1 conv 등으로 변환하여 더함 → 파라미터, 연산량 추가
- 입력과 출력의 shape(특히 채널 수)가 다를 때, 그냥 더하면 안 맞음
- 1x1 conv → 픽셀 위치(공간좌표)는 그대로, 채널 차원에서 선형결합하여 새로운 채널공간으로 매핑
- 입력을 원하는 차원으로 바꾼 뒤 더함
✓ 복습
- 1x1 conv: 채널 변환
- 3x3 conv: 채널 변환 + 공간
→ projection shortcut은 공간은 건드리지 말고 채널만 맞추자!
원래 shortcut은 “연결선”처럼 아무것도 안하는 통로인데, projection을 쓰면 그 통로 안에 1x1 conv라는 작은 layer 추가
즉, shortcut 경로도 단순한 선이 아니라 연산을 수행하는 새로운 레이어가 되는 것!
✓ Projection shortcut이 비효율적인 이유
- Identity shortcut은 입력을 통과시키면 끝이지만,
- Projection shortcut은 1x1conv를 고차원 feature에 적용해야함
- 블록의 입력/출력은 보통 채널수가 많은 고차원 feature map
- shortcut 연결은 블록의 입력x와 출력y를 바로 더해야 함
고차원 feature에 1x1 conv를 적용하면 연산량이
이라서 파라미터와 연산비용이 큼
→ bottleneck 구조는 중간(3x3 conv)에서 채널을 줄여 효율적으로 계산하려고 만든건데,
→ projection은 블록 양 끝 고차원 부분에 직접 1x1 conv를 때려야 하니까 연산량⬆️
✓ 50-layer ResNet
✓ 101-layer and 152-layer ResNets
✓ Comparisons with State-of-the-art-Methods (최신기법과 비교)
✓ CIFAR-10 실험 결과
✓ 왜 2n개일까?
- ResNet은 기본적으로 Residual Block 단위로 쌓임
- 3x3 conv → 3x3 conv (2개) 로 구성
→ Residual Block
✓ 왜 3개의 stage?
CIFAR-10 입력은 32x32로 작음
→ 다운샘플링을 너무 많이 하면 feature map 1x1 수준까지 금방 줄어들어 학습이 힘들어짐
⇒ Plain 네트워크는 깊어질수록 오히려 성능 저하, ResNet은 깊어질수록 정확도 향상
✓ Analysis of Layer Responses (레이어 반응 분석)
✓ Exploring Over 1000 layers ( 1000층 이상 네트워크 탐구)