์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์„ฑํ™” ํ•ด์ฃผ์„ธ์š”

Convolutional Neural network

[TIL] ์˜์นด X ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ (AI ์—”์ง€๋‹ˆ์–ด ์œก์„ฑ ๋ถ€ํŠธ ์บ ํ”„ 2๊ธฐ) 6์ฃผ์ฐจ

 ·  โ˜• 5 min read

๋“ค์–ด๊ฐ€๋ฉฐ


ย ย ย 6์ฃผ์ฐจ ๊ฐ•์˜์— ์ ‘์–ด๋“ค์—ˆ๋‹ค. ์ด๋ฒˆ ๊ฐ•์˜๋Š” ์ปดํ“จํ„ฐ ๋น„์ „์˜ ํ•ต์‹ฌ์ ์ธ CNN์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ํ•™์Šต์‹œํ‚ค๋Š”์ง€์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ , CNN์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฒˆ์— 2์ฐจ ๊ณผ์ œ๊ฐ€ ๋‚˜์™”๋‹ค. 1์ฐจ ๊ณผ์ œ๋Š” ํƒ€๋‹ค์˜ ETA ์˜ˆ์ธก๋ชจ๋ธ์˜ MSE๋ฅผ ๋‚ฎ์ถ”๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ ๊ณผ์ œ ์ œ์ถœ์€ ํ–ˆ์ง€๋งŒ MSE๋ฅผ ๊ธฐ์ค€์— ๋งž๊ฒŒ ์ค„์ด์ง€ ๋ชปํ•ด ์ข‹์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์ง€๋Š” ๋ชปํ–ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” MLP๋กœ MNIST, FMNIST์„ Finetuning ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, Hyperparameter ์„ธํŒ… ์กฐํ•ฉ์„ ํ•˜์—ฌ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ชจ๋ธ์„ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋Š” ๊ฒƒ์ด๋‹ค. ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ๊ณผ์ œ๋ฅผ ์‹œ์ž‘ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

6์ฃผ์ฐจ


  1. ์ปดํ“จํ„ฐ ๋น„์ „ - ์ปดํ“จํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ์ดํ•ดํ• ๊นŒ์š”?
  2. Convolution Filter๋ž€?
  3. Convolutional Neural network์˜ ๊ตฌ์กฐ
  4. Padding, Stride: Feature map์˜ ํฌ๊ธฐ
  5. (์‹ค์Šต) CNN MNIST classification

์ปดํ“จํ„ฐ ๋น„์ „


  • ์ธ๊ณต์ง€๋Šฅ์˜ ํ•œ ๋ถ„์•ผ๋กœ ์ด๋ฏธ์ง€, ๋น„๋””์˜ค ๋“ฑ์˜ ์‹œ๊ฐ์  ์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ์˜๋ฏธ์žˆ๋Š” ์ •๋ณด๋ฅผ ์–ป์–ด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ

    • ์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜(Image Classification)

    • ์ž์œจ ์ฃผํ–‰ ์ฐจ๋Ÿ‰

      • ๋ฌผ์ฒด ๊ฐ์ง€ (Object detection)
      • ์ธ๋„์™€ ์ฐจ๋„ ๊ตฌ๋ถ„ (Semantic segmentaition)
    • ์นด๋ฉ”๋ผ ์–ผ๊ตด ์ธ์‹, ๋ฐฐ๊ฒฝ ์ธ์‹

    • ์ฐจ๋Ÿ‰ ํŒŒ์† ์œ„์น˜ ํŒ๋ณ„

    • ๋“ฑ๋“ฑ…

  • ์ฃผ์œ„ ๋ฐฐ๊ฒฝ๊ณผ ๊ตฌ๋ถ„๋˜๋ฉด์„œ ์ฐพ๊ธฐ ์‰ฌ์šด ํŠน์ง•(feature ๋˜๋Š” keypoint)์„ ์ฐพ์•„์„œ ๋น„๊ตํ•จ์œผ๋กœ์จ ์ด๋ฏธ์ง€๋ฅผ ์ธ์‹ํ•œ๋‹ค.

  • ๋ณต์žกํ•œ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ• ๊นŒ?

    • ImageNet Challenge: 10,000,000์žฅ ์ด์ƒ์˜ ๋ผ๋ฒจ์ด ์ฃผ์–ด์ง„ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ์…‹์ธ ImageNet ๋ฐ์ดํ„ฐ์…‹์„ ํ™œ์šฉ, classification, detection ๋“ฑ์˜ ์„ฑ๋Šฅ์„ ๊ฒจ๋ฃจ๋Š” ๋Œ€ํšŒ
    • ImageNet ๋ฐ์ดํ„ฐ์…‹์€ ์ถฉ๋ถ„ํžˆ generalized๋œ ๋ฐ์ดํ„ฐ๋ผ ์ธ์ •๋˜์–ด ๋„๋ฆฌ ์“ฐ์ž„
    • CNN์„ ์‚ฌ์šฉํ•œ AlexNet์ด ์šฐ์Šนํ•˜๊ฒŒ ๋จ

Convolution Filter๋ž€?


  • Convolution์€ ํ•จ์ˆ˜ f๋ฅผ ๊ฐ€๋งŒํžˆ ๋‘๊ณ  ํ•จ์ˆ˜ g๋ฅผ t์ถ•์œผ๋กœ ๋’ค์ง‘์€ ์ฑ„๋กœ ํ‰ํ–‰ํ•˜๊ฒŒ ์›€์ง์ผ๋•Œ ๊ฐ ์œ„์น˜์—์„œ ๋‘ ํ•จ์ˆ˜๊ฐ€ ๋น„์Šทํ•œ์ง€ ๊ณ„์‚ฐํ•œ๋‹ค.
  • f์™€ ๋’ค์ง‘ํžŒ g๋ฅผ t๋งŒํผ ์ด๋™์‹œํ‚จ ํ•จ์ˆ˜๊ฐ€ ๋น„์Šทํ•˜๊ฒŒ ์ƒ๊ฒผ์„์ˆ˜๋ก ํ•ด๋‹น ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” t์—์„œ convolution์˜ ๊ฐ’์€ ์ปค์ง„๋‹ค.
  • ์ด๋ฏธ์ง€์—์„œ๋Š” 2์ฐจ์› ๋ฐ์ดํ„ฐ์—์„œ convolution์„ ์ ์šฉํ•œ๋‹ค.
  • Convolution filter(kernel): ์ด๋ฏธ์ง€์™€ convolution์„ ํ†ตํ•ด feature๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” detector
  • ์ด๋ฏธ์ง€์™€ filter์˜ convolution์„ ํ†ตํ•ด ์–ป์–ด์ง„ ๊ฒฐ๊ณผ๊ฐ’์„ feature map ๋˜๋Š” activation map์ด๋ผ ํ•œ๋‹ค.
  • Feature map์€ ํ•ด๋‹น ์œ„์น˜์—์„œ ์ด๋ฏธ์ง€๊ฐ€ filter๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” feature๋ฅผ ์–ผ๋งˆ๋‚˜ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.


    ์ˆ˜์ง์„  filter
    convolution filter: ์ˆ˜์ง์„  filter

์ธ๊ณต์‹ ๊ฒฝ๋ง์—์„œ Convolution์˜ ํ™œ์šฉ

  • CNN์€ convolution filter๋ฅผ ํ†ตํ•ด feature map์„ ์–ป๋Š” convolution layer๊ฐ€ ์žˆ๋Š” ์ธ๊ณต์‹ ๊ฒฝ๋ง์ด๋‹ค.

  • Convolution layer์˜ filter๋Š” ๋ฏธ๋ฆฌ ์ •ํ•ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•™์Šต์„ ํ†ตํ•ด ์–ป์–ด์ง„๋‹ค.

    • c.f ์ด๋ฏธ์ง€ filter์˜ ๊ฒฝ์šฐ convolution์ด ์•„๋‹ˆ๋ผ ๋น„์Šทํ•œ cross-correlation์„ ๊ณ„์‚ฌํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๋‹ค.
    • ๊ด€์Šต์ƒ convolution์œผ๋กœ ๋ถ€๋ฅธ๋‹ค.

์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ์—ฌ๋Ÿฌ ์ฑ„๋„์ด ์žˆ์„ ๋•Œ Convolution

  • ํ‘๋ฐฑ ์ด๋ฏธ์ง€: ๋†’์ด(H) x ๋„ˆ๋น„(W)์˜ 2์ฐจ์› ๋ฐ์ดํ„ฐ, ์ปฌ๋Ÿฌ ์ด๋ฏธ์ง€(RGB): H X W X 3(Channels)
  • ๊ฐ™์€ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ filter๋ฅผ ์‚ฌ์šฉํ•ด์„œ filter์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ feature map ์„ ์–ป์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์–ป์–ด์ง„ feature map์„ ๊ฒน๊ฒน์ด ์Œ“์•„ filter ๊ฐœ์ˆ˜๋งŒํผ์˜ channel์„ ๊ฐ€์ง„ 3์ฐจ์› ๋ฐ์ดํ„ฐ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.


    https://indoml.com/2018/03/07/student-notes-convolutional-neural-networks-cnn-introduction/
    convolution filter: https://indoml.com/2018/03/07/student-notes-convolutional-neural-networks-cnn-introduction/

Convolutional Neural Network์˜ ๊ตฌ์กฐ


  • Convolutional layer, Activation layer(function), Pooling layer, Fully connected layer

Convolutional layer

  • Convolution filter(Cin, Cout, Hc, Wc)๋ฅผ parameter๋กœ ๊ฐ€์ง€๋Š” layer
  • ์ž…๋ ฅ๋ฐ์ดํ„ฐ(Cin x Hin x Win)์™€ filter๋กœ convlution ์—ฐ์‚ฐํ•˜์—ฌ (Cout x Hout x Wout)์„ ์ถœ๋ ฅํ•จ
  • CNN์€ Conv layer๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ์Œ“์•„์„œ high-level feature๋ฅผ ์–ป์Œ

Pooling layer

  • Feature map์˜ spartial size๋ฅผ ์ค„์ด๋Š” layer๋กœ conv layer ์‚ฌ์ด์— ๋ฐ˜๋ณต์ ์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

  • Parameter ์ˆ˜๋ฅผ ์ค„์—ฌ์„œ ํ•™์Šต๋Ÿ‰, ๊ณ„์‚ฐ๋Ÿ‰์„ ์ค„์ด๊ณ  overfitting์„ ์–ต์ œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

  • Max pooling: ์˜์—ญ ๋‚ด์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋Œ€ํ‘œ๊ฐ’์œผ๋กœ ์‚ผ์•„ feature map์„ ์š”์•ฝํ•œ๋‹ค.

    • ๋Œ€ํ‘œ์ ์œผ๋กœ ๋งŽ์ด ์“ฐ์ด๋Š” ๋ฐฉ๋ฒ•์€ 2 x 2 max pooling, 2 stride ๊ฐ€ ์žˆ๋‹ค. (75% feature๊ฐ€ ์ƒ๋žต๋จ)
    • 2 x 2 max pooling 2 stride : 2 ๋ฒˆ์˜ sliding์— 1๋ฒˆ operation (๋ฐ์ดํ„ฐ ๊ฒน์นจ์ด ์—†์Œ)
  • CNN์„ ์‹ค์ œ๋กœ ํ•™์Šตํ• ๋•Œ ์•„๋ž˜์˜ ๋‚ด์šฉ๋“ค์„ ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•ด์•ผํ•œ๋‹ค.

    • Parameters: ํ•™์Šต๋˜๋Š” ๊ฐ’, Hyperparameters: ๋ฏธ๋ฆฌ ์ •ํ•ด์ฃผ๋Š” ๊ฐ’


      layer๋“ค์˜ ๋น„๊ต
      CNN layer: layer๋“ค์˜ ๋น„๊ต

Receptive field

  • Conv layer๋ฅผ ์—ฌ๋Ÿฌ ์ธต ๊ฑฐ์นœ feature์˜ ๊ฐ’์€ ํ•˜๋‚˜์˜ filter์˜ ํฌ๊ธฐ๋ณด๋‹ค ๋„“์€ ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ ์žˆ๋‹ค.

  • Receptive field: feature ๊ฐ’์„ ์–ป๋Š”๋ฐ ์‚ฌ์šฉ๋œ ์ž…๋ ฅ๋ฐ์ดํ„ฐ ๋ฒ”์œ„์˜ ํฌ๊ธฐ

    • Layer ๊นŠ์ด, conv filter ํฌ๊ธฐ, pooling layer, stride ๋“ฑ์˜ ์˜ํ–ฅ์œผ๋กœ ๋‹ฌ๋ผ์ง„๋‹ค.
    • ์ž…๋ ฅ ์ด๋ฏธ์ง€์— ๊ฐ€๊นŒ์šด conv filter๋“ค์€ receptive field๊ฐ€ ์ž‘์•„ ๋‹จ์ˆœํ•œ feature๋“ค์„ ํ•™์Šตํ•˜๊ฒŒ ๋œ๋‹ค. (low-level features)
    • ์ž…๋ ฅ ์ด๋ฏธ์ง€์— ๋ฉ€์ˆ˜๋ก receptive field๊ฐ€ ์ปค์ง€๊ณ  ์ด์ „ layer์—์„œ ์–ป์€ feature๋„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์žกํ•œ feature ๋“ค์„ ํ•™์Šตํ•˜๊ฒŒ ๋œ๋‹ค.(high-level features)

MLP์™€ CNN์˜ ๋น„๊ต

  • Parameter ์ˆ˜

    • MLP์˜ ๊ฒฝ์šฐ 1000 x 1000 ํฌ๊ธฐ์˜ RGB ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ feature๋ฅผ ๋ฝ‘๋Š๋ฐ 3,000,000 ๊ฐœ์˜ weight๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
    • CNN์€ filter์˜ parameter๋Š” ๊ณต์œ ๋˜๋ฏ€๋กœ ํ•˜๋‚˜์˜ feature๋ฅผ ๋ฝ‘๋Š”๋ฐ Hc x Wc x C ๊ฐœ์˜ weight๋งŒ ํ•„์š”ํ•˜๋‹ค.
  • Local connectivity

    • ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ์œ„์น˜์˜ ์ •๋ณธ๋Š” ๋„์›€์ด ์•ˆ๋œ๋‹ค. ๊ทธ๋ž˜์„œ CNN์ด ์œ ์˜๋ฏธํ•œ ์ •๋ณด๋ฅผ ์–ป๊ธฐ๊ฐ€ ์œ ์šฉํ•˜๋‹ค.
  • ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ

    • MLP์˜ ๊ฒฝ์šฐ ํ•™์Šต๋  ๋•Œ ์‚ฌ์šฉํ•œ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ์™€ ์ •ํ™•ํžˆ ๊ฐ™์€ ํฌ๊ธฐ์˜ ์ž…๋ ฅ๊ฐ’๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, CNN์€ sliding window ํ˜•ํƒœ์˜ filter๋ฅผ ํ•™์Šตํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ž…๋ ฅ๊ฐ’์˜ ๊ฐ€๋กœ ์„ธ๋กœ ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ ค์ ธ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

Padding, Stride: Feature map ์˜ ํฌ๊ธฐ


Padding

  • Convolution์„ ํ• ๋•Œ input ๊ฐ€์žฅ์ž๋ฆฌ์— ์ถ”๊ฐ€์ ์ธ ๊ฐ’์„ ๋„ฃ์–ด์„œ spartial size๋ฅผ ํ‚ค์šฐ๋Š” ๊ฒƒ
  • Output feature map์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
  • ์ฃผ๋กœ padding์˜ ๊ฐ’์„ 0์œผ๋กœ ๋„ฃ์–ด์ฃผ๋Š” Zero-padding์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

Stride

  • Convolution์— sliding window๋ฅผ ์–ด๋–ค ๊ฐ„๊ฒฉ์œผ๋กœ ํ• ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’



shin alli
๊ธ€์“ด์ด
shin alli
Backend ๊ฐœ๋ฐœ์ž (Python, Django, AWS)