CS231n 5강. Convolutional Neural Networks


Stanfoard CS231n 2017를 요약한 포스팅입니다. 정보 전달보다 자신을 위한 정리 목적이 강한 글입니다! :)

Convolutional Neural Networks

History

  • 1957, Perceptron
  • 1960, Adaline, Madaline
  • 1986, First time back-propgation became popular
  • 2006, Reinvigorated(활력을 되찾은) research in Deep Learning
  • 2012, Imagenet clssification with deep convolutional neural networks

  • Hubel & Wiesel의 실험
    • Visual Cortex가 어떻게 동작하는지 밝혀내려고 했습니다
    • 고양이 머리에 전극을 부착하소 서로 다른 시각적 자극을 주었을 때 어떻게 반응하는지 관찰합니다
    • 찾아낸 결론
        1. 하나의 영상(시야)엔 Visual Cortext 내의 여러 세포들이 각자 부분을 담당해 인지합니다
      • 중요한 Region은 붉은 색 세포에, 덜 중요하고 주변적인 Region은 파란색 세포에 매핑
        1. 인지 과정이 계층적으로 일어납니다(Hierarchical organization)

  • Neurocognition
    • Hubel & Wiesel의 실험에 영감을 받아 Simple cell과 Complex cell의 구조를 본떠서 만들었습니다
    • 하지만 Backpropagation 방법론 등장 전..!

  • 최초로 CNN 구조를 Backpropgation을 사용해 학습!
  • zip code
  • 그러나 데이터가 단순하고 스케일이 작음

  • AlexNet
    • 1000개의 클래스를 분류하는 ImageNet 대회에서 CNN 모델로는 최초로 1등!!
    • LeNet에 비해 Larger & Deeper
    • 데이터의 양에 비례해 Scalable하며 GPU를 이용한 병렬 연산

Convolutional Neural Networks

Fully Connected Layer

  • Fully Connected Layer는 이전 Layer의 모든 노드와 연결되어 있습니다. 따라서 Spatial Structure(공간적 구조)를 보존하기에 좋은 구조는 아닙니다

Convolution Layer

  • Spatial Structure(공간적 구조)를 보존해줍니다
  • 작은 필터로 이미지를 슬라이드하며 dot product를 실행합니다

  • Filter가 슬라이딩한 것의 결과 : Acitvation Map

  • Convolution Network는 a sequence of Convolutional Layers, interspersed with activation functions

  • 각 레이어의 Activation map들을 시각화해보니 Heirarchical하게 Feature를 추출하고 있습니다

A Closer look at spatial dimensions

  • Q) Stride를 3을 주면 output의 size는 얼마나 될까?
  • A) Doesn’t fit! : cannot apply 3x3 filter on 7x7 input with stride 3

  • Output size : (N-F) / stride + 1

Zero Padding

  • output의 size는 7x7!
  • zero padding을 1 추가하면 3x3 filter 사용 가능!
  • zero padding = (F-1)/2
    • F = 3 => zero pad with 1
    • F = 5 => zero pad with 2
    • F = 7 => zero pad with 3
  • 사용하는 이유
    • 1) 원본 이미지 사이즈를 유지하기 위해
    • 2) 가장자리 데이터를 사용하기 위해

Examples

Convolution Layer Summary

1x1 Convolution

  • Filter의 갯수에 따라 output의 dimension(depth)은 달라지지만, 기존 이미지 가로 세로의 사이즈는 그대로 유지됩니다
  • Filter의 갯수를 input의 dimension보다 작게하면, dimension reduction의 효과가 납니다
  • Image에서 Convolution layer는 Spatial Relation을 고려했다면, 1x1 Convolution layer는 한 픽셀만 고려하기 때문에 dimension reduction(차원 축소) 역할을 위해 사용합니다

The brain/neuron view of CONV layer

  • 차이점 : local connectivity
    • entire input 대신 local region만 봄(모든 뉴런들을 연결하는 것이 비실용적이기 때문)
    • Spatial structure를 보존
  • Activtion map is 28x28 sheet of neuron outputs
    • Each is connected to a small region in the input
    • All of them share parameters
  • “5x5 filter” => “5x5 receptive field for each neuron”

Pooling layer

  • Activation map마다 독립적으로 크기를 downsampling
  • 특정 부분의 주변값을 대표하는 하나의 값을 뽑습니다
  • Output dimension이 작아지며 Parameter수를 줄입니다
  • 그 결과 더 작고 다루기 쉽게 만들 수 있습니다

MAX Pooling

  • (2x2 filter를 사용하는 경우) 전체 데이터의 75%를 버리고 25%만 선택
    • Computational Complexity 감소
  • Filter 내에서 가장 큰 값을 선택
    • Average Pooling은 평균값을 선택. Spatial Structure를 보존하되 이미지가 smooth해짐. Max Pooling은 더 강한 특징만 남기는 방식
  • Depth를 줄이지 않고 Spatially하게만 줄임(Height & Width)

  • Q) stride와 pooling 모두 downsampling인데 어떤 것을 사용해야 하나요?
  • A) 최근 CNN 아키텍쳐는 stride를 사용하는 편이 많습니다. stride 추천합니다

  • 힌튼 교수님이 추후에 캡슐넷에서 맥스 풀링의 단점을 이야기했었음! check

Fully Connected Layer (FC layer)

  • Contains neurons that connect to the entire input volume, as in ordinary Neural Networks

Summary

  • ConvNets stack CONV, POOL, FC layers
  • Trend towards smaller filters and deeper architectures
  • Trend towards getting rid of POOL/FC layers (just CONV)
  • Typical architectures look lik [(CONV-RELU)*N-POOL?]*M-(FC-RELU)*K,SOFTMAX
    • WHERE N is usually up to ~5, M is large, 0<=k<=2
    • but recent advanced such as ResNet/GoogLeNet challenge this paradigm

Reference






© 2017. by Seongyun Byeon

Powered by zzsza