[논문 리뷰] Deep Residual Learning for Image Recognition
Deep Residual Learning for Image Recognition
Abstract
- 신경망이 깊어질수록 학습하기 힘들다.
- 지속적으로 깊어지는 신경망을 쉽게 학습하기 위해 residual learning을 제시한다.
- layer에 input을 더해주는 residual function으로 재구성했다.
- VGG보다 계층이 깊지만 모델 구조는 덜 복잡하다.
- ILSVRC 2015에서 1위 달성했다.
Introduction
- Deep CNN은 이미지 분류에 큰 도움이 되었다.
- 깊은 네트워크는 낮은/중간/높은 레벨의 feature와 classifier을 통합하고 layer들에 의해 풍부해진다.
- 더 많은 레이어가 쌓일수록 네트워크는 더욱 쉽게 학습할까?
- vanishing/exploding gradient 문제가 방해가 됨
- 해당 문제는 정규화 된 초기화 기법과 layer의 정규화 기법으로 어느정도 해결할 수 있다.
- 깊은 신경망이 수렴하기 시작하면 degradation(성능 저하) 문제가 발생한다.(깊이가 증가할수록 정확도는 빠르게 감소한다.)
- degradation 문제는 과적합 때문이 아니고 시스템이 최적화를 잘 못하기 때문이다.
- 해결법이 있다.
- identity mapping(입력값을 그대로 내보냄)
- 이와 같이 수행하니 더 깊은 모델이 얕은 모델보다 training error가 적었다.
- deep residual learning framework를 도입하여 성능 저하(degradation) 문제를 해결
- 직접적으로 underlying mapping(기본 매핑)을 학습하는 대신, residual mapping 학습
- H(x) 대신 F(x) 학습
H(x)=F(x)+x
- 기존의 매핑 방식보다 더욱 최적화를 잘한다.
- identity mapping이 최적이라면, 여러 계층으로 identity mapping(x)를 학습하는 것보다 잔차(F(x))를 0으로 하는 것이 더욱 쉬울 것이다.
- shortcut connections: 한 개 또는 그 이상의 layer 건너 뜀
- shortcut connections은 identity mapping을 하고 layer의 output에 더한다.
- 파라미터와 계산 복잡도를 증가시키지 않는다.
- 전체적인 네트워크는 SGD와 오차역전파법을 활용하여 학습된다.
- 위 구조를 이용하면 일반적인 딥러닝 모델은 층이 깊어질수록 손실이 증가하지만 deep residual model은 쉽게 최적화한다.
- 쉽게 깊이를 증가시키고 정확도를 높인다.
- VGG보다 더 좋은 성능을 보유하면서 계산 복잡도도 더 낮다.
- ILSVRC 2015 classification competition에서 1위 달성
Residual Representations
- VLAD: 사전에 대한 잔차 벡터(residual vector)의 인코딩 된 표현 방법
- 피셔 벡터(Fisher Vector): VLAD의 확률전 버전
- 사전(dictionary)을 만드는 방식은 Bag of the words
- local feature을 뽑아 이를 대표할 수 있는 값 word를 만듦
- 그 후, k-means clustering 방법으로 결정
- word를 feature 그대로 사용하면 BoW, 모델 파라미터에 대한 feature 벡터의 편미분 사용 시 피셔 벡터
- 잔차(residual)를 사용해서 변형
- 벡터 양자화(vector quantization)의 경우, 잔차 벡터를 인코딩 하는 것이 원본 벡터를 인코딩하는 것보다 더 효과적
- 저수준의 컴퓨터 그래픽에서 편미분 방정식을 풀기 위해 Multigrid 방법 널리 사용
- 시스템을 여러 규모의 하위 문제로 나누어 공식화(reformulation) 한다.
- 여기서 각 하위 문제는 더 거친 스케일과 더 미세한 스케일 사이의 residual solution을 담당
- Multigrid의 대안은 계층적 기반 사전 조건화(hierachical basis preconditioning)
- 두 척도 사이의 잔차 벡터를 나타내는 변수에 의존하는 방법
- reformulation(Multigrid)과 preconditioning가 최적화를 더욱 쉽게 만들었다.
Shortcut Connections
- Shortcut Connections로 이끈 실습과 이론은 오랜 기간 연구되었다.
- MLP에서는 input과 out이 이어진 선형 레이어를 추가했다.
- 그 다음 연구는 중간 레이어들이 직접적으로 auxiliary classifier와 연결시켰다.
- layer response와 경사, propagated error 등을 centering하기 위해 shortcut connection 구현하기도 함
- Inception(shortcut branch와 더 깊은 branch들로 구성되어있다.)
- 우리 연구와 동시에 highway networks는 게이팅 기능이 있는 지름길 연결을 나타낸다.
- gate들은 data에 의존적이고 parameter들을 보유하고 있다.(우리의 shortcut은 파라미터가 없다.)
- 만약 gate가 닫혀있으면(0에 수렴) 그 계층은 non-residual하다.
- 반대로 우리의 shortcut은 절대 닫히지 않는다.
- highway network는 매우 깊은 층이 쌓였을 때 성능 향상을 보이지 못했다.
Deep Residual Learning
Residual Learning
- H(x): 여러 계층을 지나며 학습하는 underlying mapping
- 여러 개의 비선형 층이 복잡한 함수를 근사할 수 있다면, 잔차 함수도 근사할 수 있다.
- 따라서 쌓인 레이어가 H(x)를 학습시키기 보다, 잔차 함수 F(x)≒H(x)−x를 근사하도록 한다.(더 쉬움)
- 따라서 H(x)=F(x)+x가 됨
- 두 방법 모두 원하는 함수에 근사할 수 있지만 학습의 난이도는 다르다.
- Residual Learning은 degradation 문제 해결에 도움이 된다.
- 계층이 identity mapping으로 만들어 졌다면, 깊은 모델은 얕은 모델보다 training error가 크지 않다.
- 여러 개의 비선형 계층으로 identity mapping을 예측하는 것은 어려움이 있을 것이다.
- residual formulation으로 identity mapping이 최적이라면, identity mapping에 접근하기 위해 비선형 계층의 가중치를 0으로 다룰 수 있다.
- 현실에서는 identity mapping이 최적이 아니다. 그러나 재구성을 통해 문제를 사전 조건화하는 데 도움이 될 수 있다.
- 만약 최적의 방정식이 zero mapping보다 identity mapping에 가깝다면, 새로운 함수로 학습을 진행하는 것보다 identity mapping을 참조하는 것이 더 쉬울 것이다.
Identity Mapping by Shortcuts
- 몇몇의 계층에 residual learning을 채택했다.
- block은 다음과 같이 정의한다.
y=F(x,{Wi})+x
- x와 y는 input과 output이다.
- F(x,{Wi})는 학습해야 할 residual mapping이다.
- 활성화 함수는 ReLU, 편향은 생략
- F+x는 shortcut connection과 element-wise 덧셈으로 계산된다.
- 덧셈을 한 후, 비선형성을 위해 ReLU를 한번 더 사용한다.
- shortcut connection은 파라미터와 계산 복잡도를 증가시키지 않는다.
- x와 F의 차원은 동일해야 한다.
- 동일하지 않을 경우 Ws를 통해 차원 수를 맞춰줘야 한다.
y=F(x,{Wi})+Wsx
- 또한 identity mapping이 충분하다는 것이 실험을 통해 밝혀졌기 때문에 square Matrix Ws는 차원을 맞추는 데에만 사용한다.
- residual function F는 유동적이다.
- 그 이상의 계층도 가능하지만 실험에서는 2개 또는 3개의 계층만 가진다.
- 만약 F가 1개의 계층만 갖는다면, 선형 계층(y=W1x+x)과 비슷하다.
- FC Layer 뿐만 아니라 Conv Layer도 사용 가능하다.
- Conv Layer의 경우 element-wise 덧셈은 채널마다 두 개의 feature map에서 수행된다.
Network Architectures
- 다양한 plain/residual nets를 실험해 본 결과, 특정 현상을 발견했다.
- Plain Network
- VGG에서 영감을 받음
- Conv Layer은 3*3 filter와 두가지 규칙을 갖는다.
- 같은 output과 feature map size, feature map 개수를 갖는다.
- stride를 2로 설정함으로써 downsampling을 이용한다.
- 계층의 시간 복잡도를 유지하지 위해 feature map size을 반으로 감소시킬 때, filter의 개수는 두배로 늘린다.
- Global Average Pooling Layer와 1000-way FC layer, Softmax를 마지막으로 사용한다.
- VGG보다 더 적은 filter를 사용하고 복잡도가 더 낮다.
- Residual Network
- plain network에서 shortcut connection을 추가한다.
- identity shortcut은 input과 output의 차원의 수가 같을 때, 직접적으로 사용된다.
- 차원의 수가 증가할 때는 두가지 옵션을 사용한다.
- shortcut은 차원 증가를 위해 zero padding과 함께 identity mapping을 사용한다.
- Ws 사용
- 두 옵션 모두에 대해 stride=2로 수행
Implementation
- ImageNet 데이터 사용, scale augmentation(resize-256*480), crop(224*224), horizontal flip, standard color augmentation
- 각 Conv 계층 마다 활성화 함수 사용 이전에 Batch Normalization 적용
- mini-batch size를 256으로 SGD 사용, learning rate는 0.1 사용하지만 error가 평면을 이룰 경우 10으로 나눠줌,
6e5
번 반복 학습
- 가중치를 감소시킨다. 0.0001, 그리고 모멘텀은 0.9로 설정한다.
- dropout은 사용하지 않는다.
Experiments
ImageNet Classification
- 1000개의 class, 1.28e6 개의 training data, 50k validation data, 100k test data
- Plain Networks
- 18, 34 layer pain net을 평가했다.
- 18보다 34의 validation error가 더 높았다. → degradation 문제가 더 심함
- BN을 사용했기 때문에 순전파 신호는 non-zero 분산을 갖고 역전파 경사는 정규분포를 가짐을 확신했다.
- 그러므로 순전파와 역전파 신호 모두 사라지지 않았다.
- deep plain network는 낮은 전환률을 갖는다고 어림짐작했다.
- Residual Networks
- 18, 34 layer의 residual net을 평가했다.
- shortcut connection은 한 쌍의 3*3 필터에 추가되었다.
- 첫번째로 identity mapping을 모든 shortcuts에 사용하였고 차원 증가를 위해 zero-padding을 사용하였다.(파라미터 증가 없음)
- ResNet의 경우 34 layer가 18보다 더 training error가 적고 validation set에 일반화 되었다.
- degradation 문제가 잘 해결되었고 깊이를 깊게 함으로써 정확도 향상을 얻을 수 있다는 것을 의미
- plain net보다 training error가 더욱 감소하였다.
- 매우 깊은 신경망에서 residual learning이 효과적임을 증명
- 층이 깊지 않으면 training error는 비슷해도 빠르게 최적화 된다.
- ∴ 파라미터의 증가 없이 학습에 효과적이다.
- projection shortcuts 연구
- A. 파라미터 증가 없는 zero padding shortcuts을 차원 증가에 사용
- B. projection shortcuts는 차원 증가에만 사용되며 다른 shotcuts는 identity이다.
- C. 모든 shortcuts에 projection shortcuts 사용
- 위 3가지 모두 plain network보다 효과적이다.
- B는 A보다 조금 더 효과적이다. (1은 사실상 residual learning이 없기 때문)
- C은 B보다 효과적 (파라미터가 더 필요)
- projection shortcuts는 degradation 문제 설명에 필수적이지 않으므로 3은 사용하지 않는다.
- identity shortcuts은 복잡도를 높이지 않고 bottleneck 구조를 사용한다는 점에서 매우 중요하다.
Deeper Bottleneck Architectures
- building block을 bottleneck으로 수정했다.
- 기존에 F에 2개의 레이어를 사용한 것을 3개의 레이어로 수정했다.
- 1*1, 3*3, 1*1 conv layer 사용
- 1*1 layer은 3*3 레이어에 더 작은 차원의 input 차원을 주기 위해 차원을 줄이고 증가시키는 데 사용된다.
- bottleneck은 더욱 identity shortcut이 중요하다.(계산 복잡도 때문)
- 50-layer ResNet: 34-layer ResNet의 Basic Block을 Bottleneck Block으로 바꿈, 차원 증가를 위해서는 projection shortcut 사용
- 101-layer and 152-layer ResNet
- VGG-16/19보다 계산 복잡도가 낮음
- 34-layer보다 정확도도 높고 degradation 문제도 일어나지 않음
CIFAR-10 and Analysis
- 50k training data, 10k test data, 10 classes
- input: 32*32 images
- first layer: 3*3 conv layer, 그 후 3*3의 6n layers 사용(각 feature map size는 32-16-8, filter 개수는 16-32-64)
- subsampling은 stride 2로 시행
- global average pooling, 10-way FC layer, Softmax로 끝난다.
- shortcut connections는 3*3 layers를 (3n shortcuts)를 사용했다.
- residual model은 plain model과 정확히 같은 depth, width, 파라미터 수를 갖는다.
- weight decay 0.0001과 0.9 momentum 사용
- weight initialization과 BN 사용 (dropout은 사용하지 않음)
- 128 mini batch와 2개의 GPU 사용
- 0.1 learning rate로 시작해서 32k 48k iteration 때 10으로 나눠 줌. 총 64k iteration
- 3 pixels padding, 32*32 crop, horizontal flip
- plain 모델은 층이 깊어질수록 training error가 증가했지만, ResNet은 이를 극복했다.
- 110-layer ResNet의 경우에는 0.1 learning rate가 너무 커서 0.01로 설정했다가 training error가 80% 미만일 때, 0.1로 다시 설정
- SOTA인 FitNet과 Highway보다 파라미터 수가 적음
Analysis of Layer Responses
- ResNet은 plain net보다 더 작은 반응(response)을 보인다.
- 이것은 residual function이 non-residual function보다 더욱 0에 가깝다는 것의 의미
- 더 깊은 ResNet이 더욱 작은 규모의 response를 가짐.
Exploding Over 1000 layers
- 1000개 이상의 layer가 쌓일 경우 overfitting이 일어나는 것으로 보인다.(dataset에 비해 모델이 너무 복잡하다.)
- maxout이나 dropout과 같은 regularization을 사용하면 성능을 높일 것이다.
Object Detection on PASCAL and MS COCO