일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Today
- Total
- activation function
- AdaGrad
- adaptive learning rate
- arithmetic reasoning
- Attention is all you need
- attention mechanism
- auto encoder
- Back Propagation Trough Time
- Backpropagation
- Bayes Theorem
- BCE
- Bert
- Bidirectional Encoder Representation from Transformer
- Binary classification
- BPTT
- Chain-of-Thought
- CNN
- commonsense reasoning
- Computer Vision
- Confusion Matrix
- convolutional neural network
- Cot
- cot reasoning
- counting
- Cross Entropy Loss
- deep learning
- degradation
- Dimension Reduction
- Few-shot
- fine-tuning
데이터 분석 일지
[Deep Learning] Computer Vision 본문
[Deep Learning] Computer Vision
-ˋˏ ♡ ˎˊ- 2024. 2. 29. 19:060. Introduction
cumputer vision 분야에서의 딥러닝은 2012년 이미지넷의 우승으로 큰 주목을 받았다. 아래의 그림과 같이 shallow를 사용하였을 때보다 딥러닝을 사용할 수록 error가 감소하는 것을 볼 수 있다. 추가로 2012년의 AlexNet은 8개의 layer를 사용하였고, 2015년의 ResNet은 152개의 layer를 사용한 것으로 보아, 신경망이 깊어질 수록 성능이 좋아지는 것을 알 수 있다.
0. 1. Types of Computer Vision
컴퓨터 비전 안에서의 작업을 크게 네 가지로 나누어 보았다. 이는 아래와 같다.
- Image Classification: ImageNet, Anomaly Detections, Out of Distribution
- Object Detection: Fast R-CNN, YOLO
- Image Segmentation: Fully Convolutional Networks(FCN), UNet
- Image Generation: Generative Models (e.g. GAN), Super Resolution
이번 블로그에서는 Transfer Learning을 통한 image classification을 중심으로 다룬다.
1. Popular Backbone: VGGNet
VGGNet은 2014년에 [Very Deep Convolutional Networks for Large-Scale Image Recognition] 논문에서 발표된 architecture이고, 2014년 ImageNet 대회에서 2등을 하였다. 당시 1등은 GoogLeNet이었지만, 실무에서도 널리 사용될 정도로 편리하고 가벼운 사용성으로 인하여 인기있는 architecture이다. 이 네트워크는 VGG16이나 VGG19과 같은 다양한 버전이 존재한다.
1. 1. Motivation
VGGNet 이전의 기존 네트워크들은 5 × 5 또는 7 × 7 convolution layer를 사용하였다. 이러한 형식의 layer를 사용하면 layer를 거칠 때마다 feature map의 축소가 발생하게 된다. 또한 5 × 5나 7 ×7은 각각 25, 49개의 weight parameter를 가지게 된다. 이를 3 × 3 convolution layer를 반복 사용하여 대체할 수 있다. 3 × 3을 2번 거치면 5 × 5를 대체할 수 있고, 3번 거치면 7 × 7을 대체할 수 있다. 추가적으로 크기 1의 padding을 사용한다면 feature map의 크기를 유지할 수도 있다. 결과적으로 더 적은 weight로 더 깊은 capacity 달성이 가능한 것이다.
1. 2. Methodology
VGGNet 같은 경우는 여러 층을 다양한 방법으로 쌓을 수 있는데, 각각을 위의 표에서 확인할 수 있다. 이 네트워크의 CNN Block은 여러 conv layer로 구성되어 있다. 이 네트워크는 아래와 같은 구조를 가진다.
- 3 × 3 conv layer + 1 padding
- 활성 함수
- 필요에 따라 1, 2번 반복
- 2 × 2 max-pooling
VGGNet은 가볍고 편리하여 object detection이나 image segmentation과 같은 분야에서 다양하게 활용된다. 하지만 마지막의 FC layer로 인한 weight 증가로 단점으로 지적되었다.
2. Popular Backbone: ResNet
ResNet은 VGGNet에 이어 2015년에 ImageNet 대회에서 1등을 달성하였다. 이 네트워크는 residual connection이라는 방법을 제시하여 gradient vanishing 문제 없이 효율적으로 네트워크를 깊게 쌓아냈다. 결론적으로 152개의 layer를 쌓아 우승한 네트워크이다.
2. 1. Motivation
ImageNet 대회가 거듭될수록, 깊은 네트워크가 우승을 차지한다. 하지만 깊은 네트워크를 학습시키는데 애로사항이 많다. 가장 큰 문제는 gradient vanishing이다. 아무리 활성 함수(e.g. ReLU)를 사용한다고 하더라도 이는 gradient vanishing 문제를 완화할 수 있었던 것이지 완벽하게 해결한 것이 아니었다. 또 최적의 깊이가 존재할텐데, 네트워크가 깊어질 때 최적의 깊이 외의 나머지는 identity 함수를 사용하는 방법을 제시한 것이다.
2. 2. Methodology
한 번에 좋은 파라미터를 학습하는 것은 어렵기 때문에 학습한 함수에 input 값을 더해주는 단순한 아이디어를 사용한다. 이를 skip connection이라고 한다.input에 나머지 잔여 정보인 F(x)를 더해준 값을 H(x)라고 정의한다. 또한 하나의 layer를 거치면서 많은 변화를 주는 것보다 적은 변화로 점차 나아가는 것이 더 좋은 성능을 도출해낸다. 따라서 H(x)는 x와 가까운 값을 가지게 되는 것이고, 이 함수가 identity 함수인 것이다.
$$H(x) = F(x) + x$$
기존의 VGGNet보다 더 깊지만 residual block을 활용하여 성능과 복잡도가 더 개선되었다. 또한 구현이 간단하고, 네트워크가 깊어질수록 더 좋은 성능을 도출해낸다.
2. 3. Evaluation
기존의 residual block이 없는 네트워크에서는 네트워크가 깊어질수록 낮은 성능을 보였다. 하지만 ResNet은 네트워크가 깊어질수록 더 높은 성능을 보였고, 이는 gradient vanishing을 방지함으로써 나타나는 결과였다. 현재 제안되는 대부분의 큰 네트워크들은 residual connection을 사용하여 gradient vanishing 문제를 완화한다.
3. Transfer Learning using Backbone
각 conv layer는 위치에 따라 low-level 또는 high-level feature를 추출하도록 학습된다. 대부분 앞의 CNN Block에서 edge와 같은 low-level feature를 학습하고, 뒤의 CNN Block에서 더 구체적인 high-level feature를 학습한다. 따라서 ImageNet의 데이터 약 1400만 장을 통해 학습된 네트워크는 해당 task를 수행하기 위한 feature extraction 능력이 있을 것이다.
3. 1. Motivation
데이터가 다르더라도 이미지를 활용한 task에서는 공통된 feature들이 존재할 것이다. 이를 통하여 target task의 데이터셋으로 학습한 모델이 아니더라도, 큰 규모의 데이터셋을 통하여 학습된 모델의 파라미터를 사용하는 것이 도움이 된다.
3. 2. Transfer Learning
대규모 데이터셋에서 pre-training을 한 후 얻게 되는 파라미터를 불러와 target 데이터셋을 학습시킬 때에 사용하게 되는 과정을 transfer learning이라고 한다. 따라서 pre-training을 거친 데이터와 target 데이터가 비슷할 수록 더 좋은 성능을 낼 수 있다. pre-training된 파라미터를 사용하여 target task에 transfer learning하기 위하여 조정하는 과정을 fine-tuning이라고 한다. transfer learning을 하는 방법은 크게 세 가지로 나누어볼 수 있다.
- Set seed weights and train as normal
- Fix loaded weights and train unloaded parts
- Train with different learning rate on each part
첫 번째 방법은 pre-training된 파라미터를 초기 파라미터로 설정하여 사용하는 방법이다. 두 번째 방법은 pre-training된 파라미터를 고정하고 마지막 layer 부분들만 target task에 맞게 학습시키는 방법이다. 세 번째 방법은 pre-training된 파라미터를 가지는 layer는 learning rate를 낮게 설정하고, 새로 학습시키는 부분들의 learning rate는 높게 설정하는 방법이다.
결론적으로 대규모 데이터셋을 통해 pre-training한 네트워크를 target task에 재학습 시키는 방법이다. 이는 computer vision 이외의 도메인(특히 NLP)에서도 큰 인기를 끌고 있다.
'Lecture or Textbook Review > Deep Learning' 카테고리의 다른 글
[Deep Learning] RNN (Recurrent Neural Network) (0) | 2024.03.07 |
---|---|
[Deep Learning] CNN (Convolutional Neural Network) (0) | 2024.02.27 |
[Deep Learning] Geometric Perspective (0) | 2024.02.26 |
[Deep Learning] Probabilistic Perspective (0) | 2024.02.23 |
[Deep Learning] Representation Learning (0) | 2024.02.22 |