• toc {:toc}

Fully Connected Neural Net

2์ฐจ์›์œผ๋กœ ๋œ ์ด๋ฏธ์ง€๋ฅผ 1์ฐจ์›์œผ๋กœ ๋ฐ”๊ฟ” ํ•™์Šต

1์ฐจ์›์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์—์„œ ๊ณต๊ฐ„์ •๋ณด๊ฐ€ ์†์‹ค๋œ๋‹ค.

โ†’ ์ด๋ฏธ์ง€์˜ ํ˜•์ƒ์€ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœ raw data๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋งŽ์€์–‘์˜ ํ•™์Šต๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

โ†’ ์ด๋ฏธ์ง€๊ฐ€ ํšŒ์ „ ๋˜๋Š” ์›€์ง์ด๋ฉด ์ƒˆ๋กœ์šด ์ž…๋ ฅ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•œ๋‹ค.

โ†’ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋„ˆ๋ฌด ๋งŽ์€ Weight๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

FC layer{: width=โ€œ600โ€}{: .center}



CNN(Convolution Neural Network)

  • CNN์€ ์ด๋ฏธ์ง€๋ฅผ ์ธ์‹ํ•˜๊ธฐ ์œ„ํ•ด ํŒจํ„ด์„ ์ฐพ๋Š”๋ฐ ํŠนํžˆ ์œ ์šฉํ•˜๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ํ•™์Šตํ•˜๊ณ  ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋ถ„๋ฅ˜ํ•œ๋‹ค. (ํŠน์ง•์„ ์ˆ˜๋™์œผ๋กœ ์ถ”์ถœํ•  ํ•„์š” ์—†๋‹ค.)
  • ์ด๋ฏธ์ง€์˜ ๊ณต๊ฐ„์ •๋ณด๋ฅผ ์œ ์ง€ํ•œ ์ฑ„ ํ•™์Šตํ•œ๋‹ค.

ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์˜ ๊ตฌ์„ฑ์š”์†Œ

๐Ÿ“Œ ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋ฐฐ์šฐ๊ณ  ํ•ฉ์„ฑ๊ณฑ, ํ’€๋ง ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์„ ์ตํ˜€๋ณด์ž.

Convolution Layer

Conv layer{: width=โ€œ600โ€}{: .center}

  • ํ•ฉ์„ฑ๊ณฑ - ์ž…๋ ฅ๋ฐ์ดํ„ฐ์— ๋„์žฅ(๊ฐ€์ค‘์น˜)์„ ์ฐ์–ด ์œ ์šฉํ•œ ํŠน์„ฑ๋งŒ ๋“œ๋Ÿฌ๋‚˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ
  • ์ผ๋ถ€์— ๋„์žฅ์„ ์ฐ์–ด ๊ฐ€์ค‘์น˜๋ฅผ ๊ณฑํ•ด ๊ฐ๊ฐ ๊ณ„์‚ฐ ํ›„ ๋ชจ๋‘ ํ•ฉํ•ด Output์„ ์‚ฐ์ถœํ•œ๋‹ค.
  • ๊ฐ€์ค‘์น˜์™€ ์ ˆํŽธ์€ ๋™์ผํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํŠน์„ฑ ๋งต(feature map) - ํ•ฉ์„ฑ๊ณฑ ๊ณ„์‚ฐ์„ ํ†ตํ•ด ์–ป์€ ์ถœ๋ ฅ
    • ํŠน์„ฑ ๋งต ํ•˜๋‚˜ ํ•˜๋‚˜๊ฐ€ ์ถ”์ถœ๋œ feature๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์ด๋ฏธ์ง€๋Š” ๋ณดํ†ต ๊ฐ€๋กœX์„ธ๋กœX์ฑ„๋„์ˆ˜ ๋กœ 3์ฐจ์›์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ฐ€๋กœ, ์„ธ๋กœ๋Š” ํ”ฝ์…€์˜ ํฌ๊ธฐ๋ฅผ ์˜๋ฏธํ•˜๊ณ  ์ฑ„๋„์ˆ˜๋Š” Red, Green, Blue 3์›์ƒ‰์˜ ์ƒ‰๊น”์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • Fully Connected Layer์™€์˜ ์ฐจ์ด โ‡’ FC Layer์™€ ๊ฐ™์€ ๊ฒฝ์šฐ 3๊ฐœ์˜ ์ฑ„๋„์„ ๊ณ„์‚ฐ์„ ์œ„ํ•ด์„œ ๋ชจ๋‘ 1์ฐจ์›์œผ๋กœ ๋Š˜์–ด๋œจ๋ ค์•ผ ํ•˜์ง€๋งŒ Conv Layer์˜ ๊ฒฝ์šฐ ์ฑ„๋„์˜ ํ˜•ํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

Conv feature{: width=โ€œ600โ€}{: .center}

  • Conv Layer๋ฅผ ํ†ตํ•ด์„œ ์œ ์šฉํ•œ ํŠน์„ฑ(Feature)๋“ค์„ ๋ฝ‘์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋งŽ์€ Conv๋ฅผ ๊ฑฐ์น ์ˆ˜๋ก ๋” ์ž์„ธํ•˜๊ณ  ํ•จ์ถ•๋œ ํŠน์ง•๋“ค์„ ๋ฝ‘์•„๋‚ธ๋‹ค.

ํ•„ํ„ฐ์™€ ์ปค๋„

Filter, Kernel{: width=โ€œ600โ€}{: .center}

  • CNN์—์„œ ํ•„ํ„ฐ์™€ ์ปค๋„์€ ๊ฑฐ์˜ ํ˜ผ์šฉ๋˜์–ด ์‚ฌ์šฉ๋œ๋‹ค. ๊ฑฐ์˜ ๊ฐ™์€ ๋ง์ด๋ผ ๋ด๋„ ๋œ๋‹ค.
  • ์—„๋ฐ€ํžˆ ๊ตฌ๋ถ„ํ•˜๋ฉด ํ•„ํ„ฐ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปค๋„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  ๊ฐœ๋ณ„ ์ปค๋„์€ ํ•„ํ„ฐ๋‚ด์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์œ„ ๊ทธ๋ฆผ์—์„œ ๋‹ค๋ฅธ ์ƒ‰์˜ ํŒ ํ•˜๋‚˜ํ•˜๋‚˜๋Š” ์ปค๋„์„ ์˜๋ฏธํ•˜๊ณ  ์ปค๋„๋กœ ๊ตฌ์„ฑ๋œ ์ „์ฒด๋ฅผ 1๊ฐœ์˜ ํ•„ํ„ฐ๋ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํ•„ํ„ฐ๋“ค์ด ์—ฌ๋Ÿฌ ๊ฐœ ๊ตฌ์„ฑํ•ด Conv๊ณ„์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค.

์ปค๋„

  • Kernel Size : ๊ฐ€๋กœx์„ธ๋กœ ๋ฉด์ ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์ปค๋„์˜ ํฌ๊ธฐ๊ฐ€ ํด์ˆ˜๋ก ์ž…๋ ฅ์ด๋ฏธ์ง€์—์„œ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

ํŒจ๋”ฉ๊ณผ ์ŠคํŠธ๋ผ์ด๋“œ

  • 5x5 input์„ 3x3 Conv๋ฅผ ํ†ตํ•ด ๋‚˜์˜จ Feature map์€ 3x3์ด ๋œ๋‹ค. Conv Layer๋ฅผ ๊ฑฐ์น ์ˆ˜๋ก Feature map์€ ์ ์  ๋” ์ž‘์•„์ง€๊ฒŒ ๋œ๋‹ค.

์ž…๋ ฅ๊ณผ ๋™์ผํ•œ ์ถœ๋ ฅ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š”?

โ‡’ ๋” ํฐ ์ž…๋ ฅ์— ํ•ฉ์„ฑ๊ณฑ์„ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค.

Padding{: width=โ€œ300โ€}{: .center}

  • ํŒจ๋”ฉ : ์ž…๋ ฅ ๋ฐฐ์—ด ์ฃผ์œ„๋ฅผ ๊ฐ€์ƒ์˜ ์›์†Œ๋กœ ์ฑ„์šฐ๋Š” ๊ฒƒ
  • ์„ธ์ž„ ํŒจ๋”ฉ : ์ž…๋ ฅ๊ณผ ํŠน์„ฑ ๋งต์˜ ํฌ๊ธฐ๋ฅผ ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ž…๋ ฅ ์ฃผ์œ„์— 0์œผ๋กœ ํŒจ๋”ฉํ•˜๋Š” ๊ฒƒ
  • ๋ฐธ๋ฆฌ๋“œ ํŒจ๋”ฉ : ํŒจ๋”ฉ ์—†์ด ์ˆœ์ˆ˜ํ•œ ์ž…๋ ฅ ๋ฐฐ์—ด์—์„œ๋งŒ ํ•ฉ์„ฑ๊ณฑ์„ ํ•ด ํŠน์„ฑ ๋งต์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ

ํŒจ๋”ฉ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด?

โ‡’ ๊ฐ ๋ชจ์„œ๋ฆฌ์˜ ๊ฐ’๋“ค์€ 1๋ฒˆ์”ฉ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค. โ‡’ ์ค‘์‹ฌ๋ถ€์˜ ๊ฐ’๋“ค์— ์น˜์ค‘๋œ ํŠน์„ฑ ๋งต์ด ๋‚˜์˜จ๋‹ค.

โ‡’ ์ด๋ฅผ ํŒจ๋”ฉํ•˜๋ฉด ์ฐธ์—ฌํ•˜๋Š” ๋น„์œจ์˜ ์ฐจ์ด๊ฐ€ ์ค„์–ด๋“ ๋‹ค. (2ํ”ฝ์…€์„ ํŒจ๋”ฉ ์‹œ ์ฐธ์—ฌ๋น„์œจ์ด ๊ฐ™์•„์ง„๋‹ค.)

์ŠคํŠธ๋ผ์ด๋“œ

  • ์ŠคํŠธ๋ผ์ด๋“œ : ์ปค๋„์ด ์ด๋™ํ•˜๋Š” ํฌ๊ธฐ. default=1
  • ์ŠคํŠธ๋ผ์ด๋“œ๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด Feature map์˜ ํฌ๊ธฐ๋ฅผ ๋Œ€๋žต ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ธ๋‹ค.
  • Convolution ์—ฐ์‚ฐ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

ํ’€๋ง

  • ํ’€๋ง : ํ•ฉ์„ฑ๊ณฑ ์ธต์—์„œ ๋งŒ๋“  ํŠน์„ฑ ๋งต์˜ ๊ฐ€๋กœ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ์—ญํ•  ์ˆ˜ํ–‰
  • ํ•ฉ์„ฑ๊ณฑ๊ณผ ๊ฐ™์ด ์ž…๋ ฅ ์œ„๋ฅผ ์ง€๋‚˜๊ฐ€๋ฉด์„œ ๋„์žฅ์„ ์ฐ์ง€๋งŒ ํ’€๋ง์€ ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋‹ค.
  • ์ตœ๋Œ€ ํ’€๋ง(Max Pooling) : ๋„์žฅ์„ ์ฐ์€ ์˜์—ญ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์„ ํƒ
  • ํ‰๊ท  ํ’€๋ง(Average Pooling) : ๋„์žฅ์„ ์ฐ์€ ์˜์—ญ์—์„œ ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐ
  • ํ’€๋ง์€ ๊ฒน์น˜์ง€ ์•Š๊ณ  ์ด๋™ํ•œ๋‹ค. [ํ’€๋ง์˜ ํฌ๊ธฐ = ์ŠคํŠธ๋ผ์ด๋“œ]
  • ์‚ฌ์šฉ ์ด์œ  : ํ•ฉ์„ฑ๊ณฑ์—์„œ ์ŠคํŠธ๋ผ์ด๋“œ๋ฅผ ํฌ๊ฒŒ ํ•˜์—ฌ ํŠน์„ฑ ๋งต์„ ์ค„์ด๋Š” ๊ฒƒ๋ณด๋‹ค ํ’€๋ง์ธต์—์„œ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ๊ฒฝํ—˜์ ์œผ๋กœ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋‚ด๊ธฐ ๋•Œ๋ฌธ

Pooling{: width=โ€œ600โ€}{: .center}

์ถœ์ฒ˜: https://towardsai.net/p/l/introduction-to-pooling-layers-in-cnn

  • ์ฐจ์ด๋ฅผ ๋Œ€๋น„์‹œํ‚จ feature๊ฐ€ ๊ตฌ๋ณ„ํ•˜๋Š”๋ฐ ์œ ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต MaxPooling์„ ์‚ฌ์šฉ

Convolution layer์˜ Output ํฌ๊ธฐ ๊ณ„์‚ฐ

  • : Size(width) of output image
  • : Size(width) of input image
  • : Size(width) of kernels used in the Conv layer
  • : Number of kernels
  • : Stride of the convolution operation
  • : Padding size

์ถœ๋ ฅ ์ด๋ฏธ์ง€์˜ ์ฑ„๋„ ์ˆ˜๋Š” ์ปค๋„์˜ ๊ฐฏ์ˆ˜()์™€ ๊ฐ™๋‹ค.

MaxPolling์˜ Output ํฌ๊ธฐ ๊ณ„์‚ฐ

  • : Size(width) of output image
  • : Size(width) of input image
  • : Stride of the convolution operation
  • : Pooling size

์ถœ๋ ฅ ์ด๋ฏธ์ง€์˜ ์ฑ„๋„ ์ˆ˜๋Š” ์ž…๋ ฅ ์ด๋ฏธ์ง€์˜ ์ฑ„๋„ ์ˆ˜์™€ ๋™์ผํ•˜๋‹ค.

ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์˜ ์ „์ฒด ๊ตฌ์กฐ

Overall Architecture

์ถœ์ฒ˜ : http://taewan.kim/post/cnn/

CNN์˜ ์ „์ฒด ๊ตฌ์กฐ๋Š” Feature๋ฅผ ์ถ”์ถœํ•˜๋Š” Feature extraction, ์ดํ›„ FC layer๋ฅผ ํ†ตํ•œ Classification์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.