8주차 Image Classification 2 정리

kimkihoon·2022년 3월 13일
0

부스트캠프 AI

목록 보기
25/49
post-thumbnail

Problems with deeper layers


네트워크 모델들의 layer는 더 깊어지고 있다. 이것의 이유는 더 큰 크기의 receptive field를 갖기 때문이다. 하지만 무턱대고 층이 깊어지기만하면 기울기 소실,폭발 같은 문제들이 일어난다. 그리고 계산과정이 복잡해지는 문제점이 나타난다.

CNN architecture for image classification

Inception module


Inception Module은 하나의 layer에서 다양한 크기의 conv filter들을 사용하여 여러측면으로 activation을 관찰하려는 것으로 깊이 대신 width를 확장한 것이 특징이다. 이렇게 해서 기울기 소실,폭발 등의 문제를 해결했지만 parameters의 개수가 많아지는 단점이 존재한다.

이것을 해결하기 위해 차원을 줄이는 dimension reduction을 한다. 1x1 Conv를 입력에 넣어 channel을 줄이거나 3x3 5x5 Conv를 거치게 하여 다시 확장한다. 이런 식으로 하면 연산양이 확연하게 줄어든다.

Auxiliary classifier


왼쪽은 GoogleNet의 네트워크 구조인데 한 눈에 봐도 엄청나게 깊은것을 확인할 수 있다. 이렇게 깊은 모델에서 gradient vanishing 되는 문제를 해결하기 위해 Auxiliary classifier를 사용했다. 여기서는 2개의 Auxiliary classifier가 존재하고 학습시에만 사용되고 테스트 시에는 사용되지 않는다.

ResNet


ResNet은 layer를 깊게 쌓아서 성능을 높힌 첫 번째 모델이다. 그리고 인간의 성능을 뛰어넘은 첫 모델이다.
하지만 이렇게 층을 깊게만 쌓는다고 성능이 무조건적으로 올라가는 것이 아니다. 다음 그래프결과를 통해 이를 확인할 수 있다.

이를 우리는 degration이라고 부른다. Model의 깊이가 깊어짐에 따라 training error가 높아지기 때문에 이런 문제가 발생한다.
ResNet에서는 이 문제를 residual mapping을 통해 해결이 가능하다고 설명하고 있다.

기존의 네트워크를 H(x)H(x)라 하고 F(x)=H(x)xF(x) = H(x) - x를 위 식에 mapping 시킨다.
이러한 Residual mapping 과정을 거치는 것이 기존 model보다 optimize하기 더 쉽다. Residual Block에서 target function은 H(x)=F(x)+xH(x) = F(x)+x가 된다. F(x)wx+bF(x)를 wx+b로 치환하면 층의 깊이가 깊어질 수록 wbw와 b는소실 될 수 있지만 xx가 존재하기 때문에 wb0으로수렴해도degrationproblem을보이지않는다.w와 b가 0으로 수렴해도 degration problem을 보이지 않는다.

DenseNet


DenseNet에서는 ResNet과 달리 이전의 input값을 더해주지 않고 concatenation을 사용한다. 이것은 channel 이 늘어나고 memory 사용량이 늘어나는 대신 그 전 input 값의 feature의 정보를 그대로 보존한다.

EfficientNet


깊이,높이,해상도를 각각 일정 비율로 높혀서 성능을 높히는 방식을 채택한 논문이다. 이를 compound scaling이라고 한다.

0개의 댓글