8-1 Component of Convolutional Neural Network

1. CNN Structure

  • CNN(Convolutional Neural Network, ν•©μ„±κ³± 신경망)은 일반적으둜 λ‹€μŒκ³Ό 같은 κ³„μΈ΅μœΌλ‘œ κ΅¬μ„±λœ Neural Network의 일쒅이닀.

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€


1-1. Convolutions

  • Input Image의 Feature Extaction(νŠΉμ„± μΆ”μΆœ)
  • Filter (Kernel) μ‚¬μš©
    • μž…λ ₯ 값을 μŠ€μΊ”ν•˜λ©° ν•©μ„±κ³±(Convolution) 연산을 μˆ˜ν–‰
    • Filter의 HyperparameterλŠ” 크기 F와 μŠ€νŠΈλΌμ΄λ“œ(Strides) Sλ₯Ό 포함
  • Filter μŠ€μΊ” ν›„ Activate Function을 톡해 Feature Extraction
  • Convolution Layer의 Output은 Feature Map λ˜λŠ” Activate Map이라 ν•œλ‹€.

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€


1-2. Pooling

  • Convolution Layerμ—μ„œ μΆ”μΆœλœ Feature Map의 Downsampling(차원을 μΆ•μ†Œν•˜λŠ”) μž‘μ—…
  • Feature Map의 크기λ₯Ό 쀄이며, κ°œμˆ˜λŠ” 쀄이지 μ•ŠλŠ”λ‹€. (Feature Map의 개수 : Filter 개수)
  • Filter와 같은 κ°€μ€‘μΉ˜κ°€ μ—†κ³ , λŒ€μ‹ μ— μ΅œλŒ€κ°’μ΄λ‚˜ 평균값을 κ³„μ‚°ν•˜λŠ” 역할을 μˆ˜ν–‰
  • μ΅œλŒ€ 풀링(Max Pooling)
  • 평균 풀링(Average Pooling)

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€


1-3. Fully Connected

  • Pooling Layer에 μ˜ν•΄ Downsampling된 Feature Map을 ν•˜λ‚˜μ˜ μ—΄ λ²‘ν„°λ‘œ λ³€ν™˜ν•˜μ—¬ Input으둜 μ‚¬μš©
  • FC Layer은 일반적으둜 CNN ꡬ쑰 끝 λΆ€λΆ„μ—μ„œ 발견되며, 클래슀 μ μˆ˜μ™€ 같은 λͺ©ν‘œλ₯Ό μ΅œμ ν™”
  • μ΄λ•Œ, Overfitting을 막기 μœ„ν•΄ Drop-Out 기법 μ‚¬μš©

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€


2. HyperParameter Tuning

  • Convolutions 계측은 Filter의 Hyperparameter의 의미λ₯Ό μ•„λŠ” 것이 μ€‘μš”ν•˜λ‹€.
  • Filter Size

  • Stride : Windowκ°€ μ΄λ™ν•˜λŠ” ν”½μ…€ 수

  • Zero-Padding : Input Imaged의 각 경계면에 P개의 Zeroλ₯Ό λ”ν•˜λŠ” κ³Όμ •

  • Convolution Layer의 Parameter ν˜Έν™˜μ„±


3. Activate Functions

  • 주둜 μ‚¬μš©λ˜λŠ” Activate Function

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€


4. λ°œμ „

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€

γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€ γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€γ€€


μš”μ•½

  • ν•©μ„±κ³±(Convolutions)은 밀집측(Dense Layer)κ³Ό λΉ„μŠ·ν•˜κ²Œ μž…λ ₯κ³Ό κ°€μ€‘μΉ˜λ₯Ό κ³±ν•˜κ³  μ ˆνŽΈμ„ λ”ν•˜λŠ” μ„ ν˜• 계산이닀.
    • ν•˜μ§€λ§Œ 밀집측과 달리 각 ConvolutionsλŠ” μž…λ ₯ 전체가 μ•„λ‹ˆλΌ μΌλΆ€λ§Œ μ‚¬μš©ν•˜μ—¬ μ„ ν˜• 계산을 μˆ˜ν–‰ν•œλ‹€.
  • Convolutions Layer의 FilterλŠ” λ°€μ§‘μΈ΅μ˜ Neuron에 ν•΄λ‹Ήν•œλ‹€.
    • Filter의 κ°€μ€‘μΉ˜μ™€ μ ˆνŽΈμ„ μ’…μ’… 컀널이라고 λΆ€λ₯Έλ‹€.
    • 자주 μ‚¬μš©λ˜λŠ” μ»€λ„μ˜ ν¬κΈ°λŠ” (3,3) λ˜λŠ” (5,5)이닀.
    • μ»€λ„μ˜ κΉŠμ΄λŠ” μž…λ ₯의 κΉŠμ΄μ™€ κ°™λ‹€.
  • Feature Map은 ν•©μ„±κ³± μΈ΅μ΄λ‚˜ 풀링 측의 좜λ ₯ 배열을 μ˜λ―Έν•œλ‹€.
    • ν•„ν„° ν•˜λ‚˜κ°€ ν•˜λ‚˜μ˜ νŠΉμ„± 맡을 λ§Œλ“ λ‹€.
    • ν•©μ„±κ³± μΈ΅μ—μ„œ 5개의 ν•„ν„°λ₯Ό μ‚¬μš©ν•˜λ©΄ 5개의 Feature Map이 λ§Œλ“€μ–΄ 진닀.
  • Padding은 ν•©μ„±κ³± 측의 μž…λ ₯ μ£Όμœ„μ— μΆ”κ°€ν•œ 0으둜 μ±„μ›Œμ§„ 픽셀이닀.
    • νŒ¨λ”©μ„ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것을 Valid Padding이라고 ν•˜κ³  ν•©μ„±κ³± 측의 좜λ ₯ 크기λ₯Ό μž…λ ₯κ³Ό λ™μΌν•˜κ²Œ λ§Œλ“€κΈ° μœ„ν•œ 것을 Same Padding이라고 ν•œλ‹€.
  • StrideλŠ” ν•©μ„±κ³± μΈ΅μ—μ„œ ν•„ν„°κ°€ μž…λ ₯ μœ„λ₯Ό μ΄λ™ν•˜λŠ” 크기이닀.
  • 풀링은 κ°€μ€‘μΉ˜κ°€ μ—†κ³  νŠΉμ„± 맡의 κ°€λ‘œ μ„Έλ‘œ 크기λ₯Ό μ€„μ΄λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€.
    • λŒ€ν‘œμ μœΌλ‘œ μ΅œλŒ€ 풀링과 평균 풀링이 있으며 (2,2) ν’€λ§μœΌλ‘œ μž…λ ₯을 절반으둜 쀄인닀.

  • 좜처 : https://stanford.edu/~shervine/l/ko/teaching/cs-230/cheatsheet-convolutional-neural-networks