일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 백준
- 뷰티 광고
- text summarization
- selenium
- 데이터분석
- JSON
- SQL
- CCP자격증
- cnn optuna
- Python
- 머신러닝
- 파이썬 이미지 처리
- join
- sql eda
- ASAC14일차
- Crawling
- pandas
- ASAC
- BFS
- 프로그래머스
- Shorts
- 크롤링
- ASAC5기
- ML
- DFS
- deep learning
- Machine learning
- EDA
- YouTube
- 파이썬
- Today
- Total
낼름낼름 동동이
[ASAC 0603] ResNet 논문 리뷰 본문
6월 3일의 기록
논문 내용을 살펴보고 이해하려고 노력했으나,,, 아직 어렵다. 블로그에 정리하면서 전체 내용은 파악 되었으나, 이제 이걸 활용할 때 더 정확하게 이해하면서 배울 수 있지 않을까? 생각이 든다.
ResNet
1. Abstract
기존 통념은 네트워크를 깊게 하면 성능이 좋다
- 그러나 해봤더니 오히려 성능이 떨어졌다.
- 이유 → 깊어서 역전파가 잘 올라가지 않아서
- 해결책 : 중간에 skip을 이용해서 단계를 건너뛰면서 진행
ResNet의 기본 아이디어를 살펴보면 neural networks가 깊어질수록 성능은 더 좋지만 train이 어렵다는 것은 알려진 사실이다. 그래서 실제 실험을 해봤는데, 깊은 networks에서 오히려 성능이 떨어지는 결과를 보였다.
2. Introduction : Residual network에 대한 설명
심층 신경망은 추상화에 대한 low / mid / high level의 특징을 classifier와 함께 multi-layer 방식으로 통합한다. 여기서 각 추상화 level은 쌓인 layer의 수에 따라 더욱 높아질 수 있다. 즉, 높은 추상화 특징은 high layer에서 파악할 수 있다는 것이다.
최근 연구결과에 따르면 네트워크의 깊이는 매우 중요한데, 실제로 많은 모델들이 깊은 네트워크를 통해 좋은 성능을 보였다고 한다. 이렇게 depth의 깊이가 중요해지면서, layer를 쌓는 만큼 더 쉽게 네트워크를 학습시킬 수 있는지에 대한 의문이 생기기 시작했고, 특히 그중에서도 Vanishing / Exploding gradient 현상이 큰 방해 요소였다. 다행히도 SGD를 적용한 10개의 layer까지는 normalization 기법과 Batch normalization과 같은 intermediate normalization layer를 사용했을 경우, 문제가 없었다고 한다.
그러나, 네트워크가 깊어졌을 때, Degradation Problem 문제가 발생한다.
일반적으로 네트워크가 깊어질수록 생기는 문제는 problem of vanishing/exploding gradients 문제, 즉 값이 보존되지 않고 날라가는 문제인데, 이 논문에서 깊게 다룰 문제는 Degradation Problem이다. network가 깊어질수록 오히려 accuracy가 떨어지는 (성능이 저하되는) 문제다. 일반적인 overfitting의 문제가 아니기 때문에 많은 사람들의 주목을 받게 되었다. 이러한 degradation 문제의 원인은 layer의 수가 더 추가되었기 때문인데 test error 만이 아닌,training error도 함께 높아졌기 때문이다. 또한, 이는 서로 다른 system들이 최적화되는 방식이 다르다는 점을 의미한다.
하지만, deeper 모델에서도 제한된 상황에서는 최적화 될 수 있는 방법이 있다. 이 방법은 추가된 레이어가 identity mapping이고, 추가되지 않은 다른 레이어들은 더 얕은 모델에서 학습된 layer를 사용하는 것이다. 이같이 제한된 상황에서의 deeper 모델은 shallower 모델보다 더 낮은 training error를 가져야 하고, 마이크로소프트 팀은 이 개념을 모델에 적용하였다.
기존 네트워크는 입력 x를 받고 layer를 거쳐 H(x)를 출력하는데, 이는 입력값 x를 타겟값 y로 mapping 하는 함수 H(x)를 얻는 것이 목적이다. 여기서 ResNet의 Residual Learning은 H(x)가 아닌출력과 입력의 차인 H(x) - x를 얻도록 목표를 수정한다. 따라서 Residual Function인F(x) = H(x) - x를 최소화시켜야 하고 이는즉, 출력과 입력의 차을 줄인다는 의미가 된다. 여기서x의 값은 도중에 바꾸지 못하는 입력 값이므로 F(x)가 0이 되는 것이 최적의 해이고, 결국 0 = H(x) - x로 H(x) = x가 된다. 즉, H(x)를 x로 mapping 하는 것이 학습의 목표가 된다.
이전에는 Unreferenced mapping인 H(x)를 학습시켜야 한다는 점 때문에 어려움이 있었는데 (알지 못하는 최적의 값으로 H(x)를 근사 시켜야 하므로), 이제는 H(x) = x라는 최적의 목표값이 사전에 pre-conditioning으로 제공되기에 Identity mapping이 Identity mapping인 F(x)가 학습이 더 쉬워지는 것이다.
결과적으로 H(x) = F(x) + x 이므로 네트워크 구조 또한 크게 변경할 필요가 없는데, 단순히 입력에서 출력으로 바로 연결되는 shortcut만 추가하면 되기 때문이다. 또한, 입력과 같은 x가 그대로 출력에 연결되기에 파라미터 수에 영향이 없으며, 덧셈이 늘어나는 것을 제외하면 shortcut 연결을 통한 연산량 증가는 없다.
무엇보다도 곱셈 연산에서 덧셈 연산으로 변형되어 몇 개의 layer를 건너뛰는 효과가 있었는데, 이 덕에 forward와 backward path가 단순해지는 효과가 있었으며, gradient의 소멸 문제를 해결할 수 있었다고 한다.
수식을 보면 기존의 곱센 연산에서 덧셈 연산으로 바뀌는 것을 확인할 수 있다.
3. Related Work : Residual Representation, Shortcut Connections
이 논문에서 사용 할 Residual Representation 과 Shortcut Connections 개념에 대한 논문들과 이에 비해 ResNet의 장점을 비교하고 있다.
결론을 요약해보면 VLAD와 Fisher Vector 등 다른 사례에 대해 설명하고 있는데, 결국 핵심은 벡터 양자화에 있어 residual vector를 인코딩하는 것이 original vector보다 훨씬 효과적이다는 것이다. 여기서 벡터 양자화란 특징 벡터 X를 클래스 벡터 Y로 mapping 하는 것을 의미한다.
low-level 비전 및 컴퓨터 그래픽 문제에서 편미분 방정식을 풀기 위해 멀티 그리드 방식을 많이 사용해왔는데, 이 방식은 시스템을 여러 scale의 하위 문제로 재구성하는 것이다. 이때, 각 하위 문제는 더 큰 scale과 더 작은 scale 간의 residual을 담당한다. 여기서 멀티 그리드 방식 대신에 두 scale 간의 residual 벡터를 가리키는 변수에 의존하는 방식이 있는데, 이를 계층 기반 pre-conditioning이라고 한다. 이 방식은 해의 residual 특성에 대해 다루지 않는 기존 방식보다 훨씬 빨리 수렴하는 특징이 있다. 즉, 합리적인 문제 재구성과 전제 조건(pre-conditioning)은 최적화를 더 간단하게 수행해준다는 것을 의미한다.
여기서도 Shortcut connection을 구성하기 위해 시도된 다양한 사례들에 대해 소개하고 있다. 그중에서 ResNet의 Shortcut connection은 다른 방식들과는 달리,parameter가 전혀 추가되지 않으며, 0으로 수렴하지 않기에 절대 닫힐 일이 없어 항상 모든 정보가 통과된다고 한다. 따라서 지속적으로 residual function을 학습하는 것이 가능하다고 한다.
4. Deep Residual Learning (깊은 잔차 학습, Deep Learning + Residual Learning)
아래와 같은 순서로 설명
4-1. Residual Learning
4-2. Identity Mapping by Shortcuts
4-3. Network Architectures (Plain Network , Residual Network)
4-4. Implementation (구현)
4-1. Residual Learning
H (x)를 기본 매핑으로 간주하고 x 가 input 일때 다수의 비선형 레이어가 복잡한 함수를 점근적으로 근사 할 수 있다고 가정하면 잔차함수, 즉 H (x)-x를 무의식적으로 근사 할 수 있다는 가설과 같다.
(즉 복잡한 함수를 여러 비선형 레이어가 근사 시킬 수 있으면 잔차함수도 근사할 수 있음. 잔차란 예측값 - 실제값이기 때문에 당연하다고 느낄 수 있다. 잔차함수 F(x)는 model에 input 넣어서 예측한 H(x) - 실제값 x 이니까)
실제로는 Identity mapping이 최적일 가능성이 낮다고 한다. 하지만, ResNet에서 제안하는 재구성 방식은 문제에 pre-conditioning을 추가하는데 도움을 준다.따라서 pre-conditioning으로 인해 Optimal function이 zero mapping보다 identity mapping에 더 가깝다면, solver가 identity mapping을 참조하여 작은 변화를 학습하는 것이 새로운 function을 학습하는 것보다 더 쉬울 것이라고 마이크로소프트팀은 주장한다.
4-2. Identity Mapping by Shortcuts
Shortcut connection은 파라미터나 연산 복잡성을 추가하지 않는다.
이때, F + x 연산을 위해 x와 F의 차원이 같아야 하는데, 이들이 서로 다른 경우 W1, W2 등의 linear projection을 사용해서 같은 차원으로 만들어준다. (Ws 는 단순히 차원을 맞춰주는 방법)
4-3. Network Architectures (Plain Network , Residual Network)
Plain Network
VGG-19 net을 참고해서 만들었다. 모두 동일한 feature map 사이즈를 갖게 하기 위해서 레이어들은 동일한 수의 filter를 가지게 하였다. 또한 feature map 사이즈가 절반이 되면 filter 수는 2배가 되도록 만들었다.
Conv layer 는 3 * 3의 filter, stride 2로 downsampling, global average pooling layer 를 사용했고, 마지막에는 softmax로 1000-way fully-connected layer를 통과시켰다. 최종 레이어는 34개가 된다. 이것도 VGG net에 비하면 적은 filter와 복잡도를 가지고 VGG net 의 18%의 연산만 사용한다.
마지막으로, GAP를 사용하고,사이즈가 1,000인 FC layer와 Softmax를 사용한다. 결과적으로 전체 layer 수는 34인데 이는 VGGNet보다 적은 필터와 복잡성을 가진다. (VGGNet은 4,096 사이즈 FC layer가 2개 추가된다)
Residual Network
Residual Network는 Plain 모델에 기반하여 Shortcut connection을 추가하여 구성한다. 이때 input과 output의 차원이 같다면, identity shortcut을 바로 사용하면 되지만, dimension이 증가했을 경우 두 가지 선택권이 있다.
- zero padding을 적용하여 차원을 키워준다.
- 앞서 다뤘던 projection shortcut을 사용한다. (1 x 1 convolution)
이때, shortcut이 feature map을 2 size씩 건너뛰므로 stride를 2로 설정한다.
4-4. Implementation
모델 구현 방식
- 이미지는 짧은 쪽이 [256,480] 사이가 되도록 random 하게 resize 수행
- horizontal flip 부분적으로 적용 및 pee-pixel mean을 뺀다.
- 224 x 224 크기로 random하게 crop
- standard color augmentation 적용
- convolution 이후와 activiation 전에 Batch Normalization을 적용함
- He 초기화 방법으로 가중치 초기화
- 256 사이즈의 mini-batch로 SGD를 사용함
- learning rate는 0.1에서 시작해 error가 안정되면 10으로 나눔
- 0.0001의 weight decay
- 0.9의 momentum을 사용
- iter는 60만 번 ( 60 x 10^4)
- dropout은 사용하지 않았음
이후, 테스트 단계에서는 10-cross validation 방식을 적용하고, multiple scale을 적용해 짧은 쪽이 {224, 256, 384, 480, 640} 중 하나가 되도록 resize 한 후, 평균 score을 산출한다.
5. Experiments
5.1 ImageNet Classification
plain net과 resNet 대상으로 imageNet을 이용해 수행한 결과를 봐면 아래 표를 통해 확인이 가능하다.
먼저, plain 모델에 대해 실험을 수행하였는데, 18 layer의 얕은 plain 모델에 비해 34 layer의더 깊은 plain 모델에서 높은 Validation error가 나타났다고 한다. training / validation error 모두를 비교한 결과, 34 layer plain 모델에서 training error도 높았기 때문에 degradation 문제가 있다고 판단
다음으로, 18 layer 및 34 layer ResNet을 plain 모델과 비교해보았다. 이때, 모든 Shortcut은 identity mapping을 사용하고, 차원을 키우기 위해 zero padding을 사용하였기에 파라미터 수는 증가하지 않았다.
실험 결과, 다음 3가지를 확인할 수 있었다.
1. residual learning으로 인해 상황이 역전되어 34-layer ResNet이 18-layer ResNet보다 2.8%가량 우수한 성능을 보였다. 특히, 34-layer ResNet에서 상당히 낮은 training error를 보였고, 이에 따라 validation 성능 또한 높아졌다. 이는degradation 문제가 잘 해결되었으며, depth가 증가하더라도 좋은 정확도를 얻을 수 있음을 의미한다.
2. 34-layer ResNet의 top-1 error는 3.5%가량 줄었고, 이는residual learning이 extremely deep system에서 매우 효과적임을 알 수 있다.
3. 18-layer ResNet과 plain net을 비교했을 때 성능이 거의 유사했지만, 18-layer의 ResNet이 더 빨리 수렴하였다. 즉, 모델이 과도하게 깊지 않은 경우 (18-layer), 현재의 SGD Solver는 여전히 plain net에서도 좋은 solution을 찾을 수 있지만, ResNet은 같은 상황에서 더 빨리 수렴할 수 있다.
Identity vs Projection Shortcuts
앞서 parameter-free 한 identity shortcut이 학습에 도움된다는 것을 알 수 있었는데, 이번에는 projection shortcut의 3가지 옵션에 대해 비교하였다.
A) zero-padding shortcut을 사용한 경우. (dimension matching시에 사용) 이때, 모든 shortcut은 parameter-free 하다. B) projection shortcut을 사용한 경우. (dimension을 키워줄 때에만 사용) 다른 모든 shortcut은 identity 하다. C) 모든 shortcut으로 projection shortcut을 사용한 경우.
이때, 3가지 옵션 모두 plain model보다 좋은 성능을 보였고, 그 순위는 A < B < C 순이였다. 먼저 A < B는 zero-padded 차원이 residual learning을 수행하지 않기 때문이고, B < C는 projection shortcut에 의해 파라미터가 추가되었기 때문이다.
3가지 옵션의 성능차가 미미했기에 projection shortcut이 degradation 문제를 해결하는데 필수적이지는 않았다. 따라서 논문에서는 memory / time complexity와 model size를 줄이기 위해 C 옵션을 사용하지 않는다. 특히 Identity shortcut은 bottleneck 구조의 복잡성을 높이지 않는 데에 매우 중요하기 때문이다.
Deeper Bottleneck Architectures
ImageNet에 대하여 학습을 진행할 때 training time이 매우 길어질 것 같아 building block을 bottleneck design으로 수정하였다고 한다. 따라서 각각의 residual function인 F는 3-layer stack 구조로 바뀌었는데, 이는1 x 1, 3 x 3, 1 x 1 conv로 구성된다. 이때 1 x 1은 dimension을 줄이거나 늘리는 데 사용되어, 3 x 3 layer의 input / output 차원을 줄인 bottleneck 구조를 만들어준다.
여기서 parameter-free 한 identity shortcut은 bottleneck 구조에서 특히 중요하다. 만약 identity shortcut이 projection shortcut으로 대체되면, shortcut이 2개의 high-dimensional 출력과 연결되어 time complexity와 model size가 2배로 늘어난다. (위 그림에서 64-d가 256-d로 늘어난 건 identity shortcut을 유지하기 위해 zero-padding을 통해 차원을 늘려준 것으로 생각된다) 따라서identity shortcut은 bottleneck design을 더 효율적인 모델로 만들어준다.
50-layer ResNet
34-layer ResNet의 2-layer block을 3-layer bottleneck block으로 대체하여 50-layer ResNet을 구성하였다. 이때, dimension matching을 위해 B 옵션을 사용하였다.
101-layer and 152-layer ResNets
더 많은 3-layer block을 사용하여 101-layer 및 152-layer ResNet을 구성하였다. depth가 상당히 증가하였음에도 VGG-16 / 19 모델보다 더 낮은 복잡성을 가졌으며, degradation 문제없이 상당히 높은 정확도를 보였다.
Comparisons with State-of-the-art Methods
ResNet의 single 모델 (앙상블 적용 안 한 모델) 은 앙상블이 적용된 이전의 다른 모델을 능가하였고, 앙상블을 적용했을 경우, 무려 top-5 error 3.57%를 달성할 수 있었다.
6. CIFAR-10 and Analysis
ImageNet 말고도 CIFAR-10을 대상으로 모델을 학습 및 검증하였을 때의 결과에 대해서 다루고 있다.
Analysis of Layer Responses
ResNet의 response가 plain net보다 상대적으로 많이 낮게 나왔는데, 이는residual function이 non-residual function보다 일반적으로 0에 가까울 것이라는 주장을 뒷받침해준다. (depth가 깊어짐에 따라 response가 작아지는 것은 각 layer가 학습 시 signal이 변화하는 정도가 작다는 것을 의미한다)
Exploring Over 1000 layers
1,000개 이상의 layer가 사용된 모델은 110-layer ResNet과 training error가 비슷했지만, test 결과는 좋지 못하였는데 이는 오버 피팅 때문인 것으로 판단된다고 한다.
참고 티스토리
참고 문헌
3. 89douner.tistory.com/64?category=873854
5. sike6054.github.io/blog/paper/first-post/
6. m.blog.naver.com/siniphia/221387516366
'데이터분석 > 머신&딥러닝' 카테고리의 다른 글
[ASAC 0621] Yolo 이론 2 (0) | 2024.06.24 |
---|---|
[ASAC 0620] yolo 이론 공부 1 (0) | 2024.06.21 |
[ASAC 0619] Transfer Learning, Fine Tuning (0) | 2024.06.19 |
[ASAC 0529] CNN_Optuna & Image_Intro (0) | 2024.05.29 |
[ASAC 0523] 딥러닝 활성 함수 (0) | 2024.05.23 |