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


카일스쿨 유튜브 채널을 만들었습니다. 데이터 분석, 커리어에 대한 내용을 공유드릴 예정입니다.

PM을 위한 데이터 리터러시 강의를 만들었습니다. 문제 정의, 지표, 실험 설계, 문화 만들기, 로그 설계, 회고 등을 담은 강의입니다

이 글이 도움이 되셨거나 의견이 있으시면 댓글 남겨주셔요.

Buy me a coffeeBuy me a coffee





© 2017. by Seongyun Byeon

Powered by zzsza