์ธ๊ณต์ง€๋Šฅ ๐ŸŒŒ/CS231n

CS231n 5๊ฐ• Convolutional Neural Networks

23.8 2024. 3. 20. 21:01
๋ฐ˜์‘ํ˜•

 

 

 Convolutional Neural Networks

 

๊ธฐ์กด์˜ FC layer์—์„œ๋Š” 32 x32 x 3์˜ ์ด๋ฏธ์ง€๋ฅผ ํ•˜๋‚˜์˜ ๋ฒกํ„ฐ๋กœ ํŽผ์นœ๋‹ค์Œ์— ๊ฐ€์ค‘์น˜๋ฅผ ๊ณฑํ•˜์˜€๋‹ค.

ํ•˜์ง€๋งŒ CNN์—์„œ๋Š” ๊ธฐ์กด์˜ ์ด๋ฏธ์ง€ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

CNN์—์„œ๋Š” ์ž‘์€ ํ•„ํ„ฐ๊ฐ€ ๊ฐ€์ค‘์น˜๊ฐ€ ๋˜๋Š”๋ฐ,

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” 5x5x3์˜ shape๋ฅผ ๊ฐ€์ง€๋Š” ํ•„ํ„ฐ๊ฐ€ ์šฐ๋ฆฌ์˜ ๊ฐ€์ค‘์น˜์ธ ๊ฒƒ์ด๋‹ค.

์ด ํ•„ํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์ด๋ฏธ์ง€๋ฅผ ์Šฌ๋ผ์ด๋”ฉํ•˜๋ฉด์„œ ๊ฐ€์ค‘์น˜์™€ ์ž…๋ ฅ์„ ๊ณฑ(๋‚ด์ )ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋ฏธ์ง€๋Š” channel ์„ ๊ฐ€์ง€๋Š”๋ฐ, ํ•„ํ„ฐ๋„ ์ด๋ฏธ์ง€์™€ ๋™์ผํ•œ ๊นŠ์ด์˜ channel์„ ๊ฐ€์ง„๋‹ค.

๊ฐ€๋ น 32 x 32 x 3 ์˜ ์ด๋ฏธ์ง€์— 5x5x3์˜ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€์˜ ๊ฐ€๋กœ ์„ธ๋กœ์˜ ๊ด€์ ์—์„œ๋Š” ์ผ๋ถ€๋ฅผ ๋ณด์ง€๋งŒ ๊นŠ์ด๋Š” ์ „์ฒด๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

 

 

ํ•„ํ„ฐ๋Š” ์ด๋ฏธ์ง€๋ฅผ sliding ํ•˜๋ฉด์„œ ํ•„ํ„ฐ์˜ ๊ฐ w์™€ ํ•„ํ„ฐ์˜ ํฌ๊ธฐ์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€ ๊ตฌ์—ญ์˜ ํ”ฝ์…€๊ฐ’์„ ๊ณฑํ•˜๊ฒŒ ๋œ๋‹ค.

*bias term ๋„ ๊ฐ™์ด ๊ณ„์‚ฐ

 

* T : Transpose => ๋‚ด์ ์„ ์ˆ˜ํ•™์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜ํƒ€๋‚ธ ๊ฒƒ

 W๋ฅผ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•˜๋ƒ์˜ ์ฐจ์ด์ผ ๋ฟ. ํ–‰๋ฒกํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋ ค๊ณ  Transposeํ•˜๋Š” ๊ฒƒ์ž„.

 

 

 

Convolution์€ ์ด๋ฏธ์ง€์˜ ์ขŒ์ƒ๋‹จ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋‚ด์ ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ด๋กœ์จ ํ•˜๋‚˜์˜ ๊ฐ’์„ ์–ป๊ฒŒ ๋œ๋‹ค.

์ดํ›„ ์ด๋ฏธ์ง€ ์ „์ฒด๋ฅผ ํ›‘์œผ๋ฉฐ ๋‚ด์ ์„ ํ•œ๋‹ค.

Conv ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ’๋“ค์„ ๋‹ค์‹œ Output activation map์˜ ํ•ด๋‹นํ•˜๋Š” ์œ„์น˜์— ์ €์žฅํ•œ๋‹ค.

 

๋ณดํ†ต Conv layer์—์„œ๋Š” ํ•„ํ„ฐ๋งˆ๋‹ค ๋‹ค๋ฅธ ํŠน์ง•์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค,

์œ„์—์„œ๋Š” ํŒŒ๋ž€์ƒ‰, ์ดˆ๋ก์ƒ‰ ๋‘๊ฐœ์˜ ํ•„ํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋‚ด์ ์„ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋กœ ๊ฐ™์€ ํฌ๊ธฐ์˜ map์ด ๋‘๊ฐœ ์ƒ์„ฑ๋œ ๊ฒƒ์ด๋‹ค.

 

 

์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ layer์—์„œ ์›ํ•˜๋Š” ๊ฐœ์ˆ˜์˜ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„์—์„œ๋Š” 5x5 ํ•„ํ„ฐ 6๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ  6๊ฐœ์˜ activation map์„ ๋งŒ๋“  ๊ฒƒ์ด๋‹ค.

 

 

 

Conv layer๋Š” ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์Œ“๋Š” ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๊ฐ layer ์‚ฌ์ด์— activation function์„ ๋„ฃ๊ธฐ๊ณ ํ•˜๊ณ  pooling layer๋ฅผ ๋„ฃ๊ธฐ๋„ ํ•œ๋‹ค.

 

Q. ํ•„ํ„ฐ์˜ depth๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ• ๊นŒ?

A. 3๊ฐœ ๋˜๋Š” 6๊ฐœ ๋“ฑ์˜ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์‹ค์ œ๋กœ ์–ด๋–ค ๊ฒƒ์ด ๋” ์ข‹์„์ง€๋Š” ์ง์ ‘ ์ฐพ์•„๋‚ด์•ผ ํ•œ๋‹ค.

 

Q. ์ด๋ฏธ์ง€์˜ ๊ฐ€์žฅ์ž๋ฆฌ๋Š” ํ•„ํ„ฐ๊ฐ€ ๋œ ์ ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€?

A. ๊ทธ๋ ‡๋‹ค.  ํ–ฅํ›„ zero-padding์—์„œ ์ž์„ธํžˆ ๋ฐฐ์šธ ์˜ˆ์ •

 

 

 

๊ฐ ๊ทธ๋ฆฌ๋“œ์˜ ์š”์†Œ = ํ•˜๋‚˜์˜ ํ•„ํ„ฐ๊ฐ€ ์‹œ๊ฐํ™”๋œ ๊ฒƒ

๊ฐ layer๋งˆ๋‹ค ํ•„ํ„ฐ๋“ค์ด ์žˆ๊ธฐ์— ํ•„ํ„ฐ๋“ค์€ ๊ณ„์ธต์ ์œผ๋กœ ํ•™์Šต์ด ๋œ๋‹ค.

์•ž์ชฝ ํ•„ํ„ฐ๋“ค์€ edge์™€ ๊ฐ™์ด low-level features๋“ค์„ ํ•™์Šตํ•˜๊ฒŒ ๋˜๊ณ  

mid-level์—์„œ๋Š” ์ฝ”๋„ˆ๋‚˜ blobs ๊ฐ™์ด ์ข€ ๋” ๋ณต์žกํ•œ ํŠน์ง•์„ ํ•™์Šตํ•œ๋‹ค.

high-level์—์„œ๋Š” ๊ฐ์ฒด์™€ ๋‹ฎ์€ ๋ชจ์Šต๋“ค์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

=> layer์˜ ๊ณ„์ธต์— ๋”ฐ๋ผ ๋‹จ์ˆœํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ํŠน์ง•์„ ํ•™์Šตํ•˜๊ฒŒ ๋œ๋‹ค.

     ๊ฐ ํŠน์ง•์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ

 

 

 

 

Activation map์€ ๊ฐ ํ•„ํ„ฐ๊ฐ€ ์ด๋ฏธ์ง€์™€ ๋‚ด์ ๋˜์–ด์„œ ๋งŒ๋“ค์–ด์ง„ ์ถœ๋ ฅ๊ฐ’์ด๋‹ค.

์œ„์˜ ์ด๋ฏธ์ง€๋Š” 5 x 5 ํ•„ํ„ฐ๋“ค์„ ์‹œ๊ฐํ™”ํ•œ ๊ฒฐ๊ณผ์ด๋‹ค.

 

์—ฌ๊ธฐ์„œ๋Š” ์ž๋™์ฐจ์˜ ํ•œ ๋ถ€๋ถ„์ด ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์™”๋‹ค.

๋นจ๊ฐ„ ๋„ค๋ชจ๋ฐ•์Šค๋ฅผ ์นœ ํ•„ํ„ฐ๋ฅผ ๋ณด๋ฉด ํ•ด๋‹น ํ•„ํ„ฐ๊ฐ€ edge๋ฅผ ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

CNN์—ฌ๋Ÿฌ Conv, ReLU + Pooling layer(optional) ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ

์ตœ์ข… layer์—๋Š” FC-layer๊ฐ€ ์žˆ์–ด์„œ ์ตœ์ข… ์Šค์ฝ”์–ด๊ฐ€ ๊ณ„์‚ฐ๋œ๋‹ค.

*pooling layer : activation maps์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๋Š” ์—ญํ• 

 

 

 

Spatial dimension

 

์ด๋ฏธ์ง€์™€ ํ•„ํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ activation map์„ ์ƒ์„ฑํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž!

 

7x7 ์ด๋ฏธ์ง€์™€ 3x3 ํ•„ํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.

ํ•„ํ„ฐ๋Š” ์ขŒ์ธก ์ƒ๋‹จ์—์„œ ์‹œ์ž‘ํ•ด์„œ ๋‚ด์ ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๊ฐ€์žฅ ์ขŒ์ธก ์ƒ๋‹จ์— ๋Œ€ํ•œ ๋‚ด์ ๊ฐ’์€ map์—์„œ๋„ ๊ฐ€์žฅ ์ขŒ์ธก ์ƒ๋‹จ ๊ฐ’์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด์ œ ์šฐ์ธก๊ณผ ํ•˜๋‹จ ๋ฐฉํ–ฅ์œผ๋กœ ๋ชจ๋‘ ํ›‘์œผ๋ฉด 5x5์˜ activation map์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

 

Activation map์„ ๋งŒ๋“ค ๋•Œ๋„ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

Stride : ์›€์ง์ด๋Š” ์นธ์˜ ๊ฐœ์ˆ˜

์•ž์˜ ์˜ˆ์ œ์—์„œ ์šฐ๋ฆฌ๋Š” ํ•œ์นธ์”ฉ ์˜†์œผ๋กœ ๊ฐ”์ง€๋งŒ ํ•ด๋‹น ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋‘์นธ์”ฉ ์ด๋™ํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค. => stride = 2

 

์ด๋•Œ๋Š” 3x3์˜ activation map์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

stride๊ฐ€ 3์ผ ๋•Œ๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์—†๊ธฐ์— ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด stride๋Š” ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ?

  • stride๋ฅผ ํฌ๊ฒŒ ๊ฐ€์ ธ๊ฐˆ์ˆ˜๋ก ์ถœ๋ ฅ์€ ์ ์  ์ž‘์•„์ง„๋‹ค.
  • Pooling ์ฒ˜๋Ÿผ ๋‹ค์šด ์ƒ˜ํ”Œ๋งํ•˜๋Š” ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ์–ป์œผ๋ฉด์„œ๋„ ๋” ์ข‹์€ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค.
  • activation map์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์Œ์œผ๋กœ์จ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

์ž…๋ ฅ์˜ ์ฐจ์› N, ํ•„ํ„ฐ ์‚ฌ์ด์ฆˆ F, Stride S๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์ถœ๋ ฅ์˜ ํฌ๊ธฐ๋Š”

(N-F) / Stride + 1 ์ด๋‹ค.

 

์ด๋ฅผ ์ด์šฉํ•ด์„œ ์–ด๋–ค ํ•„ํ„ฐ ํฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€, ์–ด๋–ค stride์„ ์จ์•ผ ์ด๋ฏธ์ง€์— ๋”ฑ ๋งž๋Š”์ง€ ๋“ฑ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

(N - F) / stride + 1

 

CNN์—์„œ๋Š” ์ฝ”๋„ˆ(๊ฐ€์žฅ ์ž๋ฆฌ)๋Š” ์ฐธ์กฐ๊ฐ€ ๋œ ๋˜๊ธฐ์— ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ์ด๋ฏธ์ง€์˜ ๊ฐ€์žฅ ์ž๋ฆฌ์— 0์„ ์ฑ„์›Œ์ฃผ๋Š” zero-pad (ํŒจ๋”ฉ)์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

zero-padding์„ ์‚ฌ์šฉํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์œ ๋Š” ์ž…๋ ฅ ์‚ฌ์ด์ฆˆ์™€ ์ถœ๋ ฅ ์‚ฌ์ด์ฆˆ๋ฅผ ๊ฐ™๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

 

zero-padding์„ ํ•  ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆ˜์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

$$output = \frac{N-F+2P}{Stride}+1$$

 

N=9, F=3, Stride = 1์˜ ์ถœ๋ ฅ ์‚ฌ์ด์ฆˆ

=> 7 x 7 x ํ•„ํ„ฐ์˜ ๊ฐœ์ˆ˜

*ํ•„ํ„ฐ๊ฐ€ ์ž…๋ ฅ์˜ ๋ชจ๋“  depth์— ๋‚ด์ ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค 

 

๋งŒ์•ฝ ์ด๋ฏธ์ง€๊ฐ€ ์ •์‚ฌ๊ฐ ํ–‰๋ ฌ์ด ์•„๋‹ˆ๋ผ๋„ ๋ณดํ†ต์€ ๊ฐ™์€ stride๋ฅผ ์ ์šฉํ•œ๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ filter๋Š” 3 x 3, 5 x 5, 7 x 7 ํฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ ๊ฒฝ์šฐ stride๋ฅผ 1, 2, 3์„ ์ค€๋‹ค.

 

 

๋ณดํ†ต ๋ ˆ์ด์–ด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์Œ“๊ธฐ์— zero-padding์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ถœ๋ ฅ ํฌ๊ธฐ๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ค„์–ด๋“ค์–ด ๋ฒ„๋ฆฌ๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

=> ์—„์ฒญ deepํ•œ ๋„คํŠธ์›Œํฌ์—์„œ activation map์ด ์ ์  ์ž‘์•„์ง€๊ฒŒ ๋˜๊ณ  ์ผ๋ถ€ ์ •๋ณด๋ฅผ ์žƒ์œผ๋ฉฐ ์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ํž˜๋“ค์–ด์ง„๋‹ค.

 

 

 

 

์ž…๋ ฅ ์‚ฌ์ด์ฆˆ๊ฐ€ 32 x 32 x 3,

5 x 5 ์‚ฌ์ด์ฆˆ์˜ ํ•„ํ„ฐ 10๊ฐœ,

stride๊ฐ€ 1,

padding์ด 2 ์ผ ๋•Œ

 

output์˜ size๋Š”

$$output = \frac{32-5+2*2}{1}+1 = 32$$

๋”ฐ๋ผ์„œ 32 x 32 x 10(ํ•„ํ„ฐ์˜ ๊ฐœ์ˆ˜)

 

๋™์ผ input size ์กฐ๊ฑด์—์„œ layer์— ์žˆ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐœ์ˆ˜๋Š”?

ํ•„ํ„ฐ์™€ ํŽธํ–ฅ์„ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ด๊ธฐ์—

ํ•˜๋‚˜์˜ ํ•„ํ„ฐ๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐœ์ˆ˜๋Š” ํ•„ํ„ฐ์˜ ์‚ฌ์ด์ฆˆ 5 x 5 x 3(depth) + 1(bias) = 76 params

์ „์ฒด 10๊ฐœ์˜ ํ•„ํ„ฐ์— ๋Œ€ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐœ์ˆ˜๋Š” 76 * 10 = 760

 

 

 

ํ•„ํ„ฐ ์‚ฌ์ด์ฆˆ๋Š” 3x3, 5x5,

Stride๋Š” ๋ณดํ†ต 1์ด๋‚˜ 2๊ฐ€ ๊ฐ€์žฅ ํ”ํ•˜๋ฉฐ

ํ•„ํ„ฐ์˜ ๊ฐœ์ˆ˜๋Š” 2์˜ ์ œ๊ณฑ์ˆ˜๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ํ”ํ•˜๋‹ค.

 

 

 

 

1 x 1 convolution์€ ๊ณต๊ฐ„์  ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋‹ค๋ฅธ convolution๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ depth๋งŒํผ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค

=> ์ž…๋ ฅ์˜ ์ „์ฒด Depth์— ๋Œ€ํ•œ ๋‚ด์ ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผ

 

 

 

 

 

 

Conv Layer์—์„œ๋Š”, ์ „์ฒด ์ด๋ฏธ์ง€์˜ ํŠน์ • ์œ„์น˜์—์„œ ํ•„ํ„ฐ์™€์˜ ๋‚ด์ ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฐ’์„ ์–ป๋Š”๋‹ค.

์ด๋Š” ์šฐ์ธก ์ƒ๋‹จ์˜ ์ด๋ฏธ์ง€ ๋™์ž‘๊ณผ ์œ ์‚ฌํ•œ๋ฐ, ์ž…๋ ฅ์ด ๋“ค์–ด์˜ค๋ฉด W(ํ•„ํ„ฐ)์™€ ๊ณฑํ•˜๊ณ  ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๋‰ด๋ จ์€ ํ•„ํ„ฐ๋ฅผ ์Šฌ๋ผ์ด๋”ฉ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŠน์ • ๋ถ€๋ถ„์—๋งŒ ์—ฐ๊ฒฐ์ด ์กด์žฌํ•œ๋‹ค.

=> ํ•˜๋‚˜์˜ ๋‰ด๋Ÿฐ์€ ํ•œ ๋ถ€๋ถ„๋งŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ด ๋‰ด๋Ÿฐ๋“ค์ด ๋ชจ์—ฌ์„œ ์ „์ฒด ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋Š” ๊ฒƒ

 

5 x 5 ํ•„ํ„ฐ => ํ•œ ๋‰ด๋Ÿฐ์˜  "Receptive field" ๊ฐ€ 5 x 5

*Receptive field : ํ•œ ๋‰ด๋Ÿฐ์ด ํ•œ ๋ฒˆ์— ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ

 

convolution ์—ฐ์‚ฐ ๊ฒฐ๊ณผ์— ์˜ํ•œ ์ถœ๋ ฅ์€ 28 x 28 x 5 ๋กœ 3์ฐจ์›์„ ๊ฐ€์ง„๋‹ค.

์ถœ๋ ฅ ์ฐจ์›์—์„œ ์–ด๋–ค ํ•œ ์ ์„ ์ฐ์–ด์„œ depth๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”๋ผ๋ณด๋ฉด ์ด 5๊ฐœ์˜ ์ ์€ ์ •ํ™•ํ•˜๊ฒŒ ๊ฐ™์€ ์ง€์—ญ์—์„œ ์ถ”์ถœ๋œ ํŠน์ง•์ž„์„ ๋œปํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ ํ•„ํ„ฐ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํŠน์ง•์„ ์ถ”์ถœํ•˜๋ฏ€๋กœ ์ด๋ฏธ์ง€์—์„œ ๊ฐ™์€ ์ง€์—ญ์„ ์˜๋ฏธํ•˜๋”๋ผ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

 

 

 

fc layer์—์„œ๋Š” 32 x 32 x 3์„ ํ•˜๋‚˜์˜ ๋ฒกํ„ฐ๋กœ ํŽธ๋‹ค์Œ ์ „์ฒด๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ๊ณ„์‚ฐํ–ˆ๋‹ค.

 

 

 

CNN์—๋Š” Conv Layer์™€ Pooling Layer, ๋น„์„ ํ˜• ์—ฐ์‚ฐ(Activation fucntion)์ด ์žˆ๋‹ค.

 

 

 

 

Pooling์€ feature representation๋“ค์„ ๋” ์ž‘๊ณ  ๊ด€๋ฆฌํ•˜๊ฒŒ ์‰ฝ๊ฒŒ ๋งŒ๋“ ๋‹ค.

Representation์„ ์ž‘๊ฒŒ ๋งŒ๋“œ๋Š” ์ด์œ ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๋ฉฐ ์ผ์ข…์˜ ๊ณต๊ฐ„์ ์ธ ๋ถˆ๋ณ€์„ฑ(invaiance)
์„ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

Pooling layer๋Š” Downsample์˜ ์—ญํ• ๋กœ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

ex) 224 x 224 x 64 -> 112 x 112 x 64

*Depth๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค

 

 

Pooling์—๋„ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ ์ผ๋ฐ˜์ ์œผ๋กœ Max Pooling์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

Pooling ์‹œ์—๋„ ํ•„ํ„ฐ ํฌ๊ธฐ๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์–ผ๋งˆ๋งŒํผ์˜ ์˜์—ญ์„ ํ•œ ๋ฒˆ์— ๋ฌถ์„์ง€๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ex) 2 x 2 ํ•„ํ„ฐ, stride = 2 => conv ์—ฐ์‚ฐ์ฒ˜๋Ÿผ ์Šฌ๋ผ์ด๋”ฉํ•˜๋Š”๋ฐ, ๋‚ด์  ๋Œ€์‹  ํ•„ํ„ฐ ๋‚ด ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๊ณ ๋ฅธ๋‹ค.

 

*Pooling ํ•  ๋•Œ๋Š” ๊ฒน์น˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

 

*Max pooling์ด average pooling๋ณด๋‹ค ๋” ์ข‹์€ ์ด์œ  : ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฃจ๋Š” ๊ฐ’๋“ค์€, ์–ผ๋งˆ๋‚˜ ์ด ๋‰ด๋Ÿฐ์ด ํ™œ์„ฑ๋˜์—ˆ๋Š” ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์œผ๋กœ ์ด ํ•„ํ„ฐ๊ฐ€ ๊ฐ ์œ„์น˜์—์„œ ์–ผ๋งˆ๋‚˜ ํ™œ์„ฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ์˜๋ฏธ. Max pooling์€ ๊ทธ ์ง€์—ญ์ด ์–ด๋””๋“ ,  ์–ด๋–ค ์‹ ํ˜ธ์— ๋Œ€ํ•ด "์–ผ๋งˆ๋‚˜" ๊ทธ ํ•„ํ„ฐ๊ฐ€ ํ™œ์„ฑํ™” ๋˜์—ˆ๋Š”์ง€๋ฅผ ์•Œ๋ ค์ค€๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ๊ฐ’์ด ์–ด๋””์— ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š”
๊ทธ ๊ฐ’์ด ์–ผ๋งˆ๋‚˜ ํฐ์ง€๊ฐ€ ์ค‘์š”ํ•œ ๊ฒƒ

 

*Pooling = Conv Layer์˜ Stride?? = ์ตœ๊ทผ์—๋Š” Downsampleํ• ๋•Œ pooling์„ ํ•˜๊ธฐ๋ณด๋‹จ stride๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ถ”์„ธ์ด๋ฉฐ stride๊ฐ€ ๋” ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ž„.

 

*pooling์„ ์–ผ๋งˆ๋‚˜ ํ•ด์•ผํ• ๊นŒ? => ์ง์ ‘ ์‹œ๋„ํ•ด ๋ด์•ผ ํ•œ๋‹ค. Pool์„ ๋„ˆ๋ฌด ๋งŽ์ดํ•˜๋ฉด ๊ฐ’์ด ๋„ˆ๋ฌด ์ž‘์•„์งˆ ๊ฒƒ์ด๊ณ 
์ „์ฒด ์ด๋ฏธ์ง€๋ฅผ ์ž˜ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋‹ค์–‘ํ•œ pooling ์‚ฌ์ด์ฆˆ, ํ•„ํ„ฐ ํฌ๊ธฐ, ๋ ˆ์ด์–ด ์ˆ˜ ๋“ฑ์„ ์‹œ๋„ํ•ด ๋ณด๋Š”
๋“ฑ์˜ Crossvalidation์„ ํ•ด์•ผ

 

W(width), H(Height), D(Depth)๋กœ Filter Size๋ฅผ ์ •ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ,

Stride๊นŒ์ง€ ์ •ํ•ด์ฃผ๋ฉด, ์•ž์˜ Conv Layer์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ outputํฌ๊ธฐ๋ฅผ ๊ตฌํ•˜๋Š” ์ˆ˜์‹์ด ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋œ๋‹ค.

 

pooling layer์—์„œ๋Š” ๋ณดํ†ต padding์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

why? => downsampling์ด ๋ชฉ์ ์ด๋ฉฐ Conv ๋•Œ์ฒ˜๋Ÿผ ์ฝ”๋„ˆ์˜ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์—†๊ธฐ ๋•Œ๋ฌธ

 

์ผ๋ฐ˜์ ์œผ๋กœ ํ•„ํ„ฐ์‚ฌ์ด์ฆˆ๋Š” 2 x 2, 3 x 3 ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋ณดํ†ต stride๋Š” 2๋กœ ์„ค์ •ํ•œ๋‹ค.

 

 

 

 

๋งˆ์ง€๋ง‰ FC Layer๋ฅผ ์‚ดํŽด๋ณด์ž.

 

๋งˆ์ง€๋ง‰ Conv Layer์˜ ์ถœ๋ ฅ์€ 3์ฐจ์›์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. 

์ด ๊ฐ’๋“ค์„ ์ „๋ถ€ ํŽด์„œ(stretch) 1์ฐจ์› ๋ฒกํ„ฐ๋กœ ๋งŒ๋“ค์–ด์„œ FC Layer์˜ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

=> Conv Net์˜ ๋ชจ๋“  ์ถœ๋ ฅ์„ ์„œ๋กœ ์—ฐ๊ฒฐ

๋งˆ์ง€๋ง‰ Layer๋ถ€ํ„ฐ๋Š” ๊ณต๊ฐ„์  ๊ตฌ์กฐ(spatial structure)๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

*์œ„์˜ ๊ทธ๋ฆผ์—์„œ ๊ฐ layer = ์ถœ๋ ฅ Activation map

 

 

[ConvNetJS demo: training on CIFAR-10]

https://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html

 

ConvNetJS CIFAR-10 demo

 

cs.stanford.edu

 

 

 

 

 

 

CNN๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ  Conv ์™€ Pool ๋ฅผ ์Œ“์•„ ์˜ฌ๋ฆฌ๋‹ค๊ฐ€ ๋งˆ์ง€๋ง‰์— FC Layer๋กœ ๋๋‚œ๋‹ค.

๋„คํŠธ์›Œํฌ์˜ ํ•„ํ„ฐ๋Š” ์ ์  ๋” ์ž‘์•„์ง€๊ณ , ์•„ํ‚คํ…์ณ๋Š” ์ ์  ๊นŠ์–ด์ง„๋‹ค.

Pooling ์ด๋‚˜ FC Layer๋Š” ์ ์  ๋” ์—†์• ๊ณ  Conv layer๋งŒ ๊นŠ๊ฒŒ ์Œ“๋Š” ๊ฒƒ์ด ์ถ”์„ธ

์ „ํ˜•์ ์ธ CNN ์•„ํ‚คํ…์ณ๋Š” Conv์™€ ReLU๋ฅผ ๋ช‡ ๋ฒˆ(n๋ฒˆ) ๋ฐ˜๋ณต + FC Layer + softmax๋กœ Class score๋ฅผ ๊ตฌํ•จ

728x90
๋ฐ˜์‘ํ˜•

'์ธ๊ณต์ง€๋Šฅ ๐ŸŒŒ > CS231n' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

CS231n 4๊ฐ• Introduction to Neural Networks  (0) 2024.03.20
CS231n 3๊ฐ• Loss Functions and Optimization  (1) 2024.03.07
CS231n 2๊ฐ• Image Classification Pipeline  (0) 2024.03.07