๐Ÿง CNN (Convolution Neural Network

๐Ÿคซ CNN, ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์ด๋ž€?
์—ฌ๋Ÿฌ ๋ถ„์•ผ, ํŠนํžˆ๋‚˜ image classification์—์„œ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์ด๋Ÿฐ ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์—์„œ ํ•ฉ์„ฑ๊ณฑ์˜ ์—ฐ์‚ฐ์€ ์ •์˜ ์ž์ฒด์— ๊ฐ€์ค‘์น˜๋ฅผ flipํ•˜๋Š” ์—ฐ์‚ฐ์ด๊ธฐ์— ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆ˜์‹์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
i์™€ j์‹œ์ ์—์„œ input x์™€ kernel(= weight)์˜ ํ•ฉ์„ฑ๊ณฑ์— ํŽธํ–ฅ(bias)๋ฅผ ๊ฐ pixel์— ๋”ํ•ด output y๋ฅผ ๋„์ถœํ•œ๋‹ค.
์ด๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์‹์„ Cross-Correlation์ด๋ผ ๋ถ€๋ฅธ๋‹ค.

 

๐Ÿคซ CNN์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?    MLP  vs   CNN 

โ–ถ image classification์—์„œ MLP๋ณด๋‹ค CNN์ด ๋” ์„ ํ˜ธ๋œ๋‹ค.

1. 
MLP๋Š” ๊ฐ input(ํ•œ image์˜ pixel)์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ํผ์…‰ํŠธ๋ก ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  largeํ•œ image์— ๋Œ€ํ•ด weight๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ unmanageableํ•ด์ง„๋‹ค. ์ด๋Š” ๋„ˆ๋ฌด ๋งŽ์€ parameter๋“ค์ด fully-connected ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜ํ™”๋ฅผ ์œ„ํ•œ ๋Šฅ๋ ฅ์„ ์žƒ๋Š”, ๊ณผ์ ํ•ฉ(overfitting)์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

2. MLP๋Š” input image์™€ shift๋œ image๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. (translation invariant(๋ถˆ๋ณ€)๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ)

์˜ˆ๋ฅผ ๋“ค์–ด ๊ณ ์–‘์ด ์‚ฌ์ง„์ด ํ•œ ์‚ฌ์ง„์˜ ์ด๋ฏธ์ง€ ์™ผ์ชฝ ์ƒ๋‹จ์— ๋‚˜ํƒ€๋‚˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ์ง„์˜ ์˜ค๋ฅธ์ชฝ ํ•˜๋‹จ์— ๋‚˜ํƒ€๋‚˜๋ฉด MLP๋Š” ์ž์ฒด ์ˆ˜์ •์„ ์‹œ๋„ํ•˜๊ณ  ๊ณ ์–‘์ด๊ฐ€ ์ด๋ฏธ์ง€์˜ ์ด ์„น์…˜์— ํ•ญ์ƒ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ด๋‹ค.

์ฆ‰, MLP๋Š” ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉํ•˜๊ธฐ์— ๊ฐ€์žฅ ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค. 
์ฃผ์š” ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ์ด๋ฏธ์ง€๊ฐ€ MLP๋กœ flatten(matrix -> vector)๋  ๋•Œ ๊ณต๊ฐ„ ์ •๋ณด๊ฐ€ ์†์‹ค๋œ๋‹ค.

๊ณ ์–‘์ด๊ฐ€ ์–ด๋””์— ๋‚˜ํƒ€๋‚˜๋“  ์‚ฌ์ง„์—์„œ ๊ณ ์–‘์ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก
image features(pixel)์˜ ๊ณต๊ฐ„์  ์ƒ๊ด€ ๊ด€๊ณ„(spatial correlation)๋ฅผ ํ™œ์šฉํ•  ๋ฐฉ๋ฒ•์ด ํ•„์š”.

∴ ์ด๋ฅผ ์œ„ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ CNN ์ด๋‹ค!

์ข€ ๋” ์ผ๋ฐ˜์ ์œผ๋กœ, CNN์€ ๊ณต๊ฐ„์  ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” data์— ์ž˜ ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ CNN์€ input์œผ๋กœ image data๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ prediction์˜ ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

์ด๋Ÿฐ CNN์˜ ์‚ฌ์šฉ์€ 2์ฐจ์› ์ด์ƒ์˜ image์˜ ๋‚ด๋ถ€์  ํ‘œํ˜„์— ๋Œ€ํ•œ ์ข‹์€ ์ด์ ์„ ๊ฐ–๋Š”๋‹ค.
์ฆ‰, image์ž‘์—… ์‹œ, ๊ฐ€๋ณ€์ ์ธ ๊ตฌ์กฐ์˜ data์•ˆ์—์„œ์˜ position๊ณผ scale์„ model์ด ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๊ฒŒ ํ•ด์ค€๋‹ค.

 

 

 

 

๐Ÿง  Padding, Stride, Pooling 

๐Ÿคซ Padding
์˜ˆ๋ฅผ๋“ค์–ด 4x4์ฐจ์›์ด input์— 2x2์˜ kernel๋กœ ํ•ฉ์„ฑ๊ณฑ์„ ํ•˜๊ฒŒ๋˜๋ฉด output ์ฐจ์›์€ 3x3์œผ๋กœ ์ฐจ์›์ด ์ค„์–ด๋“ ๋‹ค.
์ด๋ ‡๊ฒŒ ์ฐจ์›์ด ์ค„์–ด๋“œ๋Š” ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ padding์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.
์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” 3x3์ด์ง€๋งŒ zero-padding์„ ํ†ตํ•ด ์ฐจ์›์˜ ์ถ•์†Œ๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
๐Ÿคซ Stride
ํ•œ ๋ฒˆ์˜ ํ•ฉ์„ฑ๊ณฑ์—ฐ์‚ฐ ์ดํ›„ ๋‹ค์Œ ๊ณ„์‚ฐ์˜์—ญ์œผ๋กœ ์ด๋™์„ ํ•ด์•ผํ•˜๋Š”๋ฐ, ์ด๋•Œ ์–ผ๋งˆ๋‚˜ ์ด๋™ํ•  ๊ฒƒ์ธ์ง€ ๊ฐ„๊ฒฉ์„ ์ •ํ•˜๋Š” ๊ฐ’์ด๋ฉฐ ์ด๋•Œ
 output ๋ฐ์ดํ„ฐ ํ–‰๋ ฌ์˜ ์ฐจ์›์ด ๋” ์ž‘์•„์ง€๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, padding๊ณผ stride๋ฅผ ํ•ด๋„ output data์˜ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•  ์ˆ˜๋Š” ์—†์„๊นŒ?
๐Ÿคซ Pooling
CNN์—์„œ feature์˜ resolution์„ ์ค„์ผ ๋•Œ, ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘๋™ํ•œ๋‹ค.


๊ทธ๋ ‡๋‹ค๋ฉด, ์ด์ฏค์—์„œ ๋“œ๋Š” ์ƒ๊ฐ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.
Question?
์™œ ๊ตณ์ด? pooling์„ ์‚ฌ์šฉํ•˜๋Š”๊ฑฐ์ง€? 
๊ทธ๋ƒฅ convolution layer๋ฅผ stride = 2๋กœ ์ค„์—ฌ์„œ ์ž‘๋™ํ•˜๋ฉด ๊ฐ™์€์ž‘์—…์ด์ง€ ์•Š๋‚˜?

Answer!

  • convolution layer๋ฅผ ์ด์šฉํ•˜์—ฌ stride = 2๋กœ ์ค„์ด๋ฉด ํ•™์Šต ๊ฐ€๋Šฅํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฏ€๋กœ ํ•™์Šต ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ resolution์„ ์ค„์ด๊ฒŒ ๋˜๋‚˜ ๊ทธ๋งŒํผ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ฆ๊ฐ€ ๋ฐ ์—ฐ์‚ฐ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ฉด pooling์„ ์ด์šฉํ•˜์—ฌ resolution์„ ์ค„์ด๊ฒŒ ๋˜๋ฉด ํ•™์Šต๊ณผ ๋ฌด๊ด€ํ•ด์ง€๋ฉฐ ํ•™์Šตํ•  ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์ด ์ •ํ•ด์ง„ ๋ฐฉ์‹ (max, average)์œผ๋กœ resolution์„ ์ค„์ด๊ฒŒ ๋˜์–ด ์—ฐ์‚ฐ ๋ฐ ํ•™์Šต๋Ÿ‰์€ ์ค„์–ด๋“ ๋‹ค.
    ๋‹ค๋งŒ
     convolution with stride ๋ฐฉ์‹๋ณด๋‹ค ์„ฑ๋Šฅ์ด ์ข‹์ง€ ๋ชปํ•˜๋‹ค๊ณ  ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋”ฐ๋ผ์„œ, layer๋ฅผ ์ค„์—ฌ์„œ gradient ์ „ํŒŒ์— ์ดˆ์ ์„ ๋‘๋ ค๊ณ  ํ•  ๋•Œ pooling์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋„์›€์ด

 

 

 

 

 

 

๐Ÿง ๊ณ ์ฐจ์› ๋ฐ์ดํ„ฐ์˜ CNN 

๐Ÿคซ width,  height,  channel

์‚ฌ์‹ค ํ•˜๋‚˜์˜ ํ”ฝ์…€์€ 2์ฐจ์›์ด ์•„๋‹Œ, 3์ฐจ์›์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. (์ฐธ๊ณ : https://chan4im.tistory.com/74 )


์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ ์ฐจ์›์ด ๋จ์— ๋”ฐ๋ผ kernel๋„ ์ฑ„๋„ ์ˆ˜๋งŒํผ ํ•„์š”ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
๊ณ ์ฐจ์› ๋ฐ์ดํ„ฐ์˜ ํ•ฉ์„ฑ๊ณฑ ์—ฐ์‚ฐ์€ ๋™์ผํ•œ channel์˜ ์ž…๋ ฅ๋ฐ์ดํ„ฐ์™€ kernel์˜ ํ•ฉ์„ฑ๊ณฑ์—ฐ์‚ฐ ํ›„ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ’ ํ–‰๋ ฌ์„ ๋ชจ๋‘ ๋”ํ•œ ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.

์ด๋•Œ, kernel์„ ์—ฌ๋Ÿฌ๊ฐœ ์“ธ์ˆ˜๋ก output์˜ ์ฑ„๋„ ์ˆ˜๊ฐ€ kernel ์ˆ˜๋งŒํผ ๋งŽ์•„์ง€๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.


๋˜ํ•œ ์ฐจ์›์ด ์ปค์งˆ์ˆ˜๋ก for๋ฌธ์˜ ๊ณผ๋‹ค์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ๊ณผ๋ถ€ํ•˜์˜ ์šฐ๋ ค๋กœ ์ธํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ ์ฐจ์›์„ 2์ฐจ์› ํ‰๋ฉด์œผ๋กœ ๋ณ€ํ˜•ํ•ด ํ‘œํ˜„ํ•œ๋‹ค.

 

 

+ Recent posts