Molybdenum의 개발기록

[TIL] 71일차_Deep Learning_CNN_ILSVRC Algorithm 본문

TIL

[TIL] 71일차_Deep Learning_CNN_ILSVRC Algorithm

Molybdenum_j 2023. 4. 19. 13:10
ML과 DL

=> 딥러닝 기술의 가장 큰 장점은 스스로 사물의 특징을 만들어 학습하며 이전까지 인공지능 역사가 실패했던 것은 사람이 컴퓨터에게 일일이 정해주려고 했기 때문이다.

 

 

ILSVRC 이미지 인식 경진대회

: ImageNet Large Scale Visual Recognition Challenge(이미지에 대한 정확도를 겨루는 대회)

 

2010, 2011년 우승 알고리즘은 얕은 구조(shallow architecture) 기반으로 이미지 인식에 유용할만한 특성을 개발자들이 임의로 결정해서 도출

=> 지식이 늘어나면 지식끼리 서로 모순되거나 일관되지 않는 문제 발생

 

2012년 CNN 기반 딥러닝 알고리즘 AlexNet이 우승 이후 깊은 구조(deep architecture)를 가진 알고리즘들이 우승을 차지=> 딥러닝과 GPU에 대한 관심↑(인식오류율 26% -> 16% 감소)

 

딥러닝 기반 알고리즘이 사용되면서 인식오류는 빠르게 낮아졌고 2015년에는 사람의 정확도라고 알려진 5%를 추월하였다.  2017년 SENet의 경우 2.3%로 사람의 인식 에러율의 절반도 안되는 수준이 되었다.

 

레이어의 수도 점차 증가하며 직접적인 성능향상의 요인(레이어의 깊이, 레이어의 수, 레이어의 유닛수, 레이어의 너비 증가 등)으로 작용했다. 레이어 수 증가로 파라미터가 많아져 연산량이 기하급수적으로 증가(계산복잡도)하여 학습시간이 길어지며 기울기소실(Gradient Vanishing)과 폭주(Exploding), 과대적합 등의 문제가 발생하였다.

 

-> AlexNet이후 비약적인 성장을 보였다(대표적인 모델 : AlexNet, ZFNet, VGGNet, ResNet)

 

1988, LeNet

: 손글씨 인식을 위한 아키텍쳐로 CNN의 기반을 구성한다.

=> Pooling, Padding, Activation, Fully connected로 연계되는 일련의 과정을 사용한다 MNIST Dataset을 기준으로 99.05% 정확도를 달성한다

Pooling, Padding, Activation, Fully connected로 연계되는 일련의 과정을 사용한다 MNIST Dataset을 기준으로 99.05% 정확도를 달성한다

 

2012, AlexNet

: LeNet과 비슷한 구조로, 2개의 GPU를 기반으로 한 병렬구조와 5개의 합성곱층과 3개의 FC층으로 구성

  • 활성화 함수로 Rectified Linear Units(ReLU)를 사용
  • 정규화 방법인 Local Response Normalization(LRN)을 사용
  • 풀링(Pooling)의 커널 사이즈를 스트라이드보다 크게하는 Overlapping Pooling을 사용
  • 드롭아웃(Dropout), PCA를 이용한 data augmentation 등의 기법도 사용 => 적은 데이터의 과대적합 해결방법

 

2013, ZFNET

: AlexNet을 기반으로 CNN을 가시화하여 증명을 확인해보며 개선책을 찾기 위해 시각화 한다.

시각화(Visualizing)기법 : CNN 중간 피쳐맵은 의미를 알기 어려움으로 입력레이어에 맵핑하여 결과 확인

=> 이런 특정 픽쳐들의 활성화 함수가 입력 이미지에 어떻게 입력되는지 역으로 분석한다.(switches, unpooling 등)

아키택처에 집중하기보다는 학습이 진행됨에 따라 피쳐맵을 시각화하는 방법과 모델이 어느 영역을 보고 예측을 하는지관찰하기 위한 Occlusion(폐색) 기반의 attribution(귀속) 기법 등 시각화 측면에 집중하였다.

 

2014, GoogleNet

: 깊은 층을 구축하며 생기는 문제들의 해결책으로 인셉션 모듈, Auxiliary Classifier, GAP 도입하였다.

AlexNet, ZFNet, VGG 등에 비해 훨씬 적은 수의 파라미터를 보유한다.

 

- Inception module : 하나의 이미지에 한 종류의 필터만 적용하면 어떤게 잘될지 모르기 때문에 1x1, 3x3, 5x5, 3x3 max pooling을 대해봐야 한다

  • 1x1 convolution으로 FeatureMap으로 depth를 줄여 연산량을 감소시켰다
  • 인셉션 모듈(Inception module) : 총 4가지 서로 다른 연산을 거친 뒤 특징맵(feature MAP)을 채널(channel) 방향으로 합치는 순차(concatenation)을 이용하는 특징을 가진다

=> 기존 모델은 각 층(layer)간에 하나의 합성곱(convolution)연산, 하나의 풀링(pooling) 연산으로 연결된다

 

- Auxiliary classifier(보조 분류기) : 기울기 전달이 잘 되지 않는 하위층(layer)을 훈련하기 위해 사용한다

  • 기존의 모델의 경우 분류 문제를 해결하는 신경망인 softmax를 맨 마지막 층(layer)에 딱 하나만 지정한다
  • GoogleNet : Auxiliary classifier로 중간에 softmax를 두어 중간에서도 역전파를 하게 한다. => 네트워크가 깊어질수록 기울기가 잘 전달되지 않아 생기는 기울기 소실 문제의 해결방안으로 사용된다.

- GAP(global average pooling)

: 전 층에서 산출된 특성맵들을 각각 평균낸 것을 연결하여 1차원 벡터를 생성한다

=> 1차원 벡터로 생성해야 최종적인 이미지 분류를 위한 softmax 층을 연결해줄 수 있기 때문에 필요하다.

기존 모델인 AlexNet, VGGNet 등에서는 완전 연결 계층(FC)들이 망의 후반부에 연결한다

 

'TIL' 카테고리의 다른 글

[TIL] 73일차_Deep Learning_RNN  (0) 2023.04.19
[TIL] 72일차_Deep Learning_CNN_VGGNet&ResNet  (0) 2023.04.19
[TIL] 71일차_Deep Learning_CNN  (0) 2023.04.12
[TIL] 71일차_Deep Learning_Modeling  (0) 2023.04.12
[TIL] 70일차_Deep Learning_ANN_DNN  (0) 2023.04.11
Comments