low/mid/high-level의 특징을 classifier와 함께 multi-layer 방식으로 통합한다.
높은 layer에서 높은 추상화 특징을 파악할 수 있다.
Neural Network의 layer수가 많아질수록 기능이 향상된다.
하지만 깊이가 깊어질수록 training error와 test error 또한 높아진다. (Figure 1)
기존 네트워크의 문제 발생 : 기울기 소실/폭발
많은 layer을 쌓아 발생하는 기울기 소실/폭발 문제는 수렴을 방해했다
-> 이 문제는 normalized initial-ization과 intermediate normalization layers로 해결됐다.
해결되지 않은 문제 : 성능 저하
layer가 더 깊어지면 새로운 문제인 성능 저하가 나타난다
-> 정확도가 포화 상태에 도달하고 급격히 떨어진다.
이런 성능 저하의 원인은 overfitting이 아니라 layer 수가 더 추가되어 training error이 높아졌기 때문이다.
제한된 상황에서 deeper 모델의 해결책
: 추가된 layer는 identity mapping이고, 다른 layer는 더 얕은 모델에서 학습된 layer를 사용하는 것
-> deeper 모델은 shallower 모델보다 낮은 training error을 만들어야 한다
마이크로소프트 팀은 이 개념을 모델에 적용하였다.
deep residual learning framework 제안
F(x) : weight layer 2개 모두 거친 값 F(x)에 추가적으로 x를 더해준다. F(x)에 대한 학습을 진행하는 것이다. 더 난이도가 쉽다.
기존 mapping을 H(x)로 나타냈을 때, 알지 못하는 최적 값인 H(x)를 학습하는 것은 어렵다.
대신 stacked nonlinear layer의 mapping인 F(x) := H(x) − x 를 학습하도록 한다. (실제 output은 F(x) + x로 재구성)
residual mapping(F(x))을 최적화하는 것이 기존 mapping(H(x))을 최적화하는 것보다 쉽다.
극단적으로, identity mapping이 최적의 해라고 하면(H(x) = x인 경우) F(x) = 0 이 되도록 하므로 학습 난이도가 쉽다.
F(x) + x는 "shortcut connection"로 구현할 수 있다. = x를 더해주는 것
shortcut connection으로 identity mapping을 사용할 수 있다.출력값에 x를 더해주는 것뿐이기 때문에 별도의 파라미터가 필요하지 않고 복잡도가 증가하지도 않는다. 구현도 간단하다.
제시하는 장점
학습 난이도가 쉽다.
깊이가 깊어질수록 높은 accuracy를 얻었다.
특정 데이터셋에 국한된 방법이 아니다.(CIFAR-10과 ImageNet에서 모두 성능 향상)
2. Related Work
3. Deep Residual Learning
3.1 Residual Learning
neural network의 역할 : H(x)가 의도했던 mapping이라고 하면 nonlinear layer을 결합해서 복잡한 함수를 학습하는 것이다.
residual function을 이용하면 F(x) :=H(x) - x를 학습한다. 이 방법은 난이도가 훨씬 쉽다.
optimal한 해가 identity mapping이라면 multiple nonlinear layer의 weight를 zero로 학습하면 된다. (학습해야 하는 모델의 목표가 입력을 출력으로 그대로 전달하는 것)
optimal한 해가 identity mapping일 확률은 희박하지만 x를 추가하는 것이 문제를 쉽게 해결할 수 있도록 좋은 방향성을 제시해줄 수 있다.
x가 없다면 함수는 새로운 mapping을 학습해야하기 때문에 더 어렵다.
이전 layer에서의 값인 x를 보존하고 추가적인 정보만 학습하는 방식으로 작동한다. -> 더 좋은 성능을 낸다
3.2 Identity Mapping by Shortcuts
building block을 정의
F : residual mapping
x : identity mapping (= shortcut connection)
Figure 2 예시
weight값을 두번 중첩
bias는 고려하지 않는다.
shortcut connection의 장점
별도의 파라미터가 필요하지 않고 복잡도가 증가하지 않는다.
F(x)와 x의 dimension 맞추기
W_s를 곱해 linear projection을 통해서 dimension값을 맞출 수 있다.
하지만 그냥 identity mapping을 이용했을 때도 충분한 성능을 보인다.
Layer 수가 1개인 경우
F가 하나의 layer만 가지고 있어 linear layer와 비슷하다면 이점이 없다.
여러개의 convolutional layer가 중첩되어 사용될 때 성능을 보인다.
Identity mapping(항등 맵핑) :입력을 그대로 출력으로 전달하는 연산. 이는 residual block 내에서 입력이 변형되지 않고 그대로 전달되는 것을 의미한다. 입력과 변환된 출력의 크기가 동일한 경우에 identity mapping이 사용된다.
여기서 x는 입력, F(x)는 입력에 대한 변환이다. x는 아무런 변형 없이 더해진다.
Projection(투영 연산) : 입력을 다른 차원으로 변환하는 연산 입력과 출력의 차원이 다를 때 사용된다. 예를 들어, 다운샘플링(downsampling)이나 업샘플링(upsampling)이 필요한 경우이다.
여기서 Ws는 입력 x를 출력의 차원으로 변환하기 위한 선형 변환을 의미한다.
요약 Identity Mapping :입력과 출력의 차원이 동일할 때 사용. 입력을 변형 없이 그대로 더함. 정보 손실 방지 및 학습 안정화에 기여.
Projection :입력과 출력의 차원이 다를 때 사용. 입력을 선형 변환하여 차원을 맞춘 후 더함. 차원이 맞지 않는 경우에도 skip connection을 가능하게 함.
3.3 Network Architectures
plain Network
VGGnets를 따른다
3x3 필터를 이용한다.
output feature map 사이즈를 같게 하기 위해서 같은 개수의 필터를 사용한다.
feature map의 사이즈가 절반으로 줄어들때는 필터의 개수를 2배로 늘려서 (다음 layer의 채널 값을 2배로 늘리는 것) time complexity를 보존한다.
별도의 pooling layer를 사용하지 않고 convolutional layer에서 stride=2를 사용해 downsampling 한다.
마지막 부분에서 average pooling layer를 이용해 1000개로 분류하도록 softmax를 사용한다.
장점 : 일반적인 VGGnet보다 적은 파라미터와 낮은 복잡도를 가진다.
Figure 3 설명 : ImageNet(이미지 데이터셋)을 이용한 예시 네트워크 구조
왼쪽
가운데
오른쪽
VGG-19 모델
34-layer plain network
34-layer residual network
점선의 의미 : 출력의 dimension이 일치하지 않아 dimension을 맞춰주는 기술이 가미된 shortcut connection
convolutional layer를 2개씩 묶는 것을 3번 반복 -> 크기 바꿈 -> 4번 반복 -> 크기 바꿈 -> 6번 반복 -> 크기 바꿈 -> 3번 반복
VGG와 비교했을 때 FLOPs (계산복잡도를 나타내기 위한 척도) 감소
Residual Network
입력과 출력의 차원이 동일할때는 identity mapping을 사용할 수 있다.
그렇지 않으면 2가지 옵션을 사용할 수 있다.
첫 번째 - padding을 붙여 identity mapping을 수행한다.
두 번째 - projection연산을 활용한 shortcut을 이용해 수행한다.
3.4 Implementation
실제 구현 상의 테크닉
ImageNet - 224x224 크기로 랜덤하게 자르고 horizontal flip을 사용한다.
ResNet - convolutional layer을 거칠때마다 batch normalization을 사용한다.
learning rate를 0.1부터 점점 줄여나갔다.
weight decay는 0.0001, momentum은 0.9로 설정했다.
Weight Decay : 모델의 가중치 크기를 규제하여 과적합을 방지하는 정규화 기법이다. 손실 함수에 가중치의 L2 노름을 추가하여 가중치가 너무 커지지 않도록 한다. Momentum : 경사 하강법에서 기울기의 변화에 관성을 추가하여 학습 속도를 높이고, 진동을 줄이며, 더 빠르고 안정적인 수렴을 돕는 최적화 기법이다.
4. Experiments
4.1 ImageNet Classification
ImageNet 2012를 이용한 평가
1000개 클래스로 분류된다.
training images : 1.28 million, validation images : 50k
실제 결과 확인
Plain Network의 경우 deeper 34-layer가 shallower 18-layer보다 validation error가 높았다.
ResNet의 경우 depper 모델이 성능이 좋았다.
plain에 비해 shortcut connection이 더해진 것뿐이지만 성능이 훨씬 개선되었다.
결과 의미
이런 결과가 vanishing gradients 때문은 아니다.
forward와 backward의 시그널이 사라지는 현상은 발생하지 않았다.
exponentially low convergence rates 때문이다. (수렴률이 기하급수적으로 낮아지는 것이 문제)
convergence rates : 최적화 알고리즘이 최적해에 얼마나 빨리 도달하는지를 측정 최적화 알고리즘이 사용될 때, 각 반복(iteration)마다 손실 함수 또는 목적 함수가 줄어드는 속도
결과적으로 ResNet은 깊은 layer가 성능이 좋은 것을 보여주며 training error도 줄어들고 validation data에 대한 일반화 성능도 좋았다.
초기 단계에서 수렴 속도도 더 빨랐기 때문에 optimization을 쉽게 한다.
어떤 Shortcut를 사용할까? Identity vs Projection Shortcuts
Bottleneck architecture : 블록의 입출력 크기를 줄이고 계산 비용을 줄이는 데 기여한다.
1. 1x1 합성곱(차원 축소) :입력 채널의 수를 줄인다. 예를 들어, 입력이 256 채널이면, 64 채널로 줄일 수 있다. 주요 목적은 계산 비용을 줄이기 위한 차원 축소이다.
2. 3x3 합성곱 :주 합성곱 연산이 이루어지는 부분이다. 축소된 채널 수로 계산을 수행하여 효율성을 높인다. 예를 들어, 차원이 축소된 64 채널로 3x3 합성곱을 수행한다.
3. 1x1 합성곱(차원 증가) :다시 채널의 수를 원래대로 증가시킨다. 예를 들어, 64 채널을 다시 256 채널로 확장한다. 이 과정에서 잃어버린 정보나 특징을 복원한다.
수식
여기서 F는 세 개의 연속된 합성곱 연산을 의미하며, 각각의 합성곱 연산은 차례로 1x1, 3x3, 1x1 필터를 사용한다. x는 입력 텐서, {Wi}는 각 합성곱 층의 가중치이다.
(A) : zero-padding을 이용해서 차원을 늘려주고 identity mapping을 사용한 것
(B) : 차원이 증가할 때만 projection 연산을 수행한 것
(C) : 모든 shortcut에 대해서 projection 연산을 수행한 것
C가 성능이 가장 높게 나왔다.
하지만 projection shortcut이 필수일 정도로 높은 개선은 아니다.
bottleneck architecture를 이용하면 복잡도를 증가시키지 않고 사용될 수 있다.
Deeper Bottleneck Architectures
1x1과 같이 작은 커널을 사용하여 파라미터 수가 줄어든다.
identity shortcut은 파라미터가 존재하지 않기 때문에 bottleneck architecture의 파라미터 수를 줄이는 데 효과적으로 기여할 수 있다.
Bottleneck 블록에서 Identity Mapping의 사용 : 1x1 -> 3x3 -> 1x1 이러한 합성곱 층의 변환을 통해 생성된 F(x)는 원래 입력 x와 더해진다. 여기서 identity mapping이 적용된다. 여기서 F(x)는 세 개의 합성곱 연산을 거친 후의 출력이다. 이 때, x는 변형 없이 그대로 더해진다. 이 residual connection(잔여 연결)은 학습을 용이하게 하고, 깊은 네트워크에서도 gradient vanishing 문제를 완화한다.
깊이가 50-layer인 ResNet과 34-layer의 파라미터나 계산 속도는 거의 동일하다.
101-layer, 152-layer로 더 깊게 쌓았을 때 더 좋은 성능을 얻었고 VGG-16/19와 비교했을 때 복잡도는 더 낮았다.
layer를 깊게 쌓고 앙상블까지 더했을 때 매우 좋은 성능을 보였다.
4.2 CIFAR-10 and Analysis
CIFAR-10 dataset
입력 이미지 크기가 32x32로 ImageNet에 비해 훨씬 작다.
따라서 파라미터 수를 줄여서 별도의 ResNet을 적용했다.
first layer는 3x3을 사용하고, 각각의 feature map 크기에 맞게 6n layer를 쌓았다.
마지막에 fully-connected layer를 사용하여 총 6n+2 개의 layer가 사용되었다.
기존의 다른 네트워크와 비교했을 때 파라미터 수는 더 적지만, 성능은 더 좋다.
실제 구현
weight decay 0.0001, momentum 0.9를 사용했고, dropout은 사용하지 않았다.
weight initialization, BN을 사용했다.
learning rate을 0.1에서 부터 줄여나갔다.
결과 의미
ImageNet과 마찬가지로 layer가 깊어질수록 성능이 좋았다.
ResNet의 경우 작은 response 값을 보인다.
각 layer의 response에 대한 평가 : 딥러닝 모델, 특히 신경망에서 각 층(layer)이 입력 데이터에 대해 어떻게 반응하는지 또는 출력을 생성하는지 분석하는 과정
residual function이 non-residual function과 비교했을 때 더욱 값이 0에 가까운 형태로 최적화가 이루어졌다.
layer가 불필요한 수준으로 많아지면 성능이 떨어진다.
작은 dataset에 대해서 불필요하게 많은 layer을 쌓게 되면 overfitting 문제가 발생할 수 있어서 성능이 떨어질 수 있다.
4.3 Object Detection on PASCAL and MS COCO
Object Detection과 Segmentation에 대한 성능
average precision값을 비교한 결과 ResNet이 더 좋은 성능을 보였다.
mAP(Mean Average Precision)(평균 정밀도 평가 지표) : 정보 검색 및 객체 검출과 같은 작업에서 사용되는 성능 측정 지표
1. 각 클래스에 대한 정밀도-재현율 곡선 생성 : 모델의 출력에 대해 각 클래스에 대한 정밀도-재현율 곡선을 생성한다. 이를 위해 예측된 결과와 실제 클래스 레이블 간의 관계를 기반으로 각 클래스에 대한 예측의 정확성을 측정한다. 2. 정밀도-재현율 곡선 아래 면적(Area Under the Precision-Recall Curve, AP) 계산 : 각 클래스에 대한 정밀도-재현율 곡선의 아래 면적을 계산한다. 이것이 클래스의 평균 정밀도(AP)이다. 3. 평균 AP 계산 : 각 클래스의 AP를 모두 합산한 후 클래스의 총 수로 나누어 전체 평균 정밀도를 계산한다.