본문 바로가기

카테고리 없음

Modern CNNs 정리파일(AlexNet, VGG, GoogLeNet, ResNet)

drive.google.com/file/d/1W8Zb-0f9v0UfLHeGggI4Ct6WfUzmzC-Z/view?usp=sharing

간단하게 내용을 요약하면 다음과 같다.

AlexNet

: 뉴럴네트워크를 처음 쓰고 이미지 분류 대회에서 우승한 모델
ReLU 활성화 함수를 사용하여 딥러닝 발전의 시초가 됨
⇒ LRN을 이용하여 output 컨볼루션 feature map 중 일정 부분만 높게 activation 되도록 함
⇒ Data augmentation 사용 (데이터 flip;좌우반전, crop으로 training set을 증가시킴)

VGG

⇒ stride=1, 3X3 conv를 사용하여 성능 개선

 

GoogLeNet

: Inception module을 이용
: deep하지만 VGG보다 parameter를 절반 이하로 사용

 

*Inception module

장점: 계산 parameter 수를 줄임, 다양한 receptive field를 가지기 때문에 다양한 결과 (다양한 크기의 feature를 잡음)를 얻을 수 있다.

 

*parameter 수 계산 방법

3X3 filter size로 18개 채널을 가진 layer ⇒ 36개 채널을 가진 layer로 convolution연산을 하면 계산해야하는 parameter 수는 3X3X18X36개가 된다.

 

ResNet

: 여러 분야에서 1등을 한 네트워크로, 범용적이라는 장점을 가짐

 

*Deeper Network?

네트워크가 deep해지면 늘 좋은 결과를 얻는 것은 아니다.

1. vanishing gradients(기울기 손실) 때문에
⇒ batch normalization, ReLU 등으로 기울기 손실 문제의 중요도는 감소하고 있다.

2. overfitting (과적합) 문제 때문에
⇒ training error는 감소하나, test error가 증가하는 문제

3. degradation 문제 때문에
⇒ training error, test error 모두 감소하나, 성능이 떨어지는 문제

ResNet은 degration문제를 개선했다. 입력 x와 deserved output 사이의 차이, 즉 나머지만 학습하는 방식을 사용했다.
제약 조건은 입력과 출력의 차원이 같아야 하는 것이다.

*bottle architecture

: parameter를 줄이고, 입력과 출력의 차원을 맞춰주기 위해 입력 레이어 이후, 출력 레이어 이전에 1X1 conv를 넣어주는 구조
현재 100레이어까지는 degradation 현상이 일어나지 않지만, 1000레이어까지 쌓으면 여전히 degradation이 발생한다.

 

참고 자료:

https://www.edwith.org/deeplearningchoi/lecture/15296/