CNN 공부

2018학년도 2학기 서울시립대학교에서 기계학습개론이라는 강의를 수강하면서 발표한 자료이다. 이 포스트는 그 내용에 대한 정리이다.

슬라이드 링크: SlideShare

해당 수업에서 각자 돌아가면서 발표를 진행했는데, 그 이전에 CNN의 기본 내용에 대한 설명이 많이 나왔고, 충분한 설명이 되었기 때문에 그런 부분에 대한 것들은 건너 뛰었다. 그리고 귀찮아서 링크 같은 건 많이 안 달았다…

CNN

CNN은 AlexNet(2012)이 나오면서 엄청나게 유명해졌다. ImageNet Challenge (ImageNet Large Scale Visual Recognition Competetion, ILSVRC)라는 곳에서 매년 대회를 개최했는데, 그 대회에서 2012년에 딥러닝 베이스(cnn)인 AlexNet이 나왔다.

AlexNet Architecture
AlexNet 논문 상의 아키텍쳐

그 뒤로 상당히 많은 곳에 CNN이 활용되었는데, 대표적으로 classification, detection, segmentation 등등이 있다.

CNN vs FC

CNN과 FC(Fully Connected) Layer의 주요한 차이점은 CNN은 Spatial Structure를 유지하기 위해 filter를 사용하는데 비해, FC Layer는 flatten된 neuron들을 이어서 만든다는 점이다. 즉 CNN은 그래서 픽셀간의 위치를 고려해서 정보를 뽑아낼 수 있다.

Evaluation

이거 제목은 그냥 논문 제목 뽑아서 하나로 적다보니까….

“Systematic evaluation of CNN advances on the ImageNet” 이라는 논문을 참고했다. 수업 중에 activation function이 왜 nonlinear한 것이 좋은가, maxpooling layer를 사용하는 것이 왜 좋은가에 대한 질문이 나왔었고, 그 내용에 대해 어느정도는 답이 되는 논문이었다.

비교에 사용된 activation function 수식들
결과
비교에 사용된 pooling layer 수식들
결과

이건 그 논문안에 있느 글이었는데, 읽어보니 정확한 이해보다는 직관적으로 설명은 되었다.

Our guess is that max pooling brings selectivity and in- variance, while average pooling allows using gradients of all filters, instead of throwing away 3/4 of information as done by non-overlapping 2x2 max pooling.

비슷한 내용으로 CS231n 수업에서 한 설명은 아래와 같다. (그냥 자막 파일 가져옴)

why max pooling is commonly used is that it can have this interpretation of, you know, if this is, these are activations of my neurons, right, and so each value is kind of how much this neuron fired in this location, how much this filter fired in this location. And so you can think of max pooling as saying, you know, giving a signal of how much did this filter fire at any location in this image.

성능향상

Dropout, L2/L1 Regularization, Cross Valiadation

요건 예전에도 똑같은 내용을 봤던 거라 생략

Batch Normalization

아래와 같은 내용을 설명하는데, 음.. 중요하다 생각되는 부분만 긁어왔다.

Our method draws its strength from making normalization a part of the model architecture and performing the normalization for each training mini-batch. Batch Normalization allows us to use much higher learning rates and be less careful about initialization. It also acts as a regu- larizer, in some cases eliminating the need for Dropout.

We propose a new mechanism, which we call Batch Normalization, that takes a step towards re- ducing internal covariate shift, and in doing so dramati- cally accelerates the training of deep neural nets. It ac- complishes this via a normalization step that fixes the means and variances of layer inputs.

Dropout에 대한 의존도 줄이고, Gradient가 vanish, explode 하는 효과도 줄이고, 그래서 높은 learning rate도 사용가능하다고 하고, 최근에 정말 많이 사용하고 한다고 한다.

최근연구

VGGNet, 2014

그냥 filter size를 3x3로 줄여서 많이 쓴다는 건데, 잘 된다고 한다. 아래는 논문 인용

Our main contribution is a thorough evaluation of networks of increasing depth using an architecture with very small (3 × 3) convolution filters, which shows that a significant improvement on the prior-art configurations can be achieved by pushing the depth to 16–19 weight layers.

GoogleNet, 2014

리소스 많이 줄인다고 한다.

The main hallmark of this architecture is the improved utilization of the computing resources inside the network.

GoogleNet Architecture

여러 사이즈를 종합적으로 사용해서 한다는 것 같은데, 아직 자세히 못 봐서 이해가 안됨..

ResNet, 2015

When deeper networks are able to start converging, a degradation problem has been exposed: with the network depth increasing, accuracy gets saturated (which might be unsurprising) and then degrades rapidly.

이거 되게 신기했는데, 각 layer 사이에 연결을 해준다고 한다. 이 논문에서(Veit et al, “Residual Networks Behave Like Ensembles of Relatively Shallow Networks”, 2016) 앙상블이랑 비슷한 효과라고 한다. (제목에서부터 보이듯이..)

ResNet Architecture

DenseNet, 2016

To preserve the feed-forward nature, each layer obtains additional inputs from all preceding lay- ers and passes on its own feature-maps to all subsequent layers.

ResNet을 다 연결한거….

DenseNet Architecture

DropBlock, 2018

Although dropout is widely used as a regularization technique for fully connected layers, it is often less effective for convolutional layers. This lack of success of dropout for convolutional layers is perhaps due to the fact that activation units in convolutional layers are spatially correlated so information can still flow through convolutional networks despite dropout.

Dropout을 CNN에 적용하기 힘들어서 이런 방식을 쓴다고 한다.

DropBlock 설명1
DropBlock 설명2

참고자료

블로그에서 인용법 따위 신경 안 써요.. 제맘대로 쓸 꺼예요… ㅠㅠ

  • CS231n: Convolutional Neural Networks for Visual Recognition (Stanford Univ.)
  • Alex Krizhevsky et al., “ImageNet Classification with Deep Convolutional Neural Networks”, 2012 -> alexnet
  • Dmytro Mishkin et al., “Systematic evaluation of CNN advances on the ImageNet”, 2016
  • Nitish Srivastava et al., “Dropout: A Simple Way to Prevent Neural Networks from Overfitting”, 2014
  • Yann Lecun et al., “Efficient BackProp”, 1998
  • Sergey Ioffe et al., “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift”, 2015
  • Karen Simonyan et al., “Very Deep Convolutional Networks For Large Scale Image Recognition”, 2015 -> VGGNet
  • Christian Szegedy et al., “Going Deeper with Convolutions”, 2015 -> googlenet
  • Kaiming He et al., “Deep Residual Learning for Image Recognition”, 2015 -> resnet
  • Gao Huang et al., “Densely Connected Convolutional Networks”, 2018 -> DenseNet
  • Golnaz Ghiasi et al., “DropBlock: A regularization method for convolutional networks ”, 2018
November 13, 2018 에 작성
Tags: computer vision cs231n machine learning 대학