โ† ์ฃผ์ฐจ ๋ชฉ๋ก

Week 9. CNN ๊ธฐ์ดˆ โ€” ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง

์ด๋ฏธ์ง€๋ฅผ ์œ„ํ•ด ํƒœ์–ด๋‚œ ์‹ ๊ฒฝ๋ง. ํ•ฉ์„ฑ๊ณฑ์ด๋ผ๋Š” ๋‹จ์ˆœํ•œ ์—ฐ์‚ฐ์ด ์–ด๋–ป๊ฒŒ ๋ชจ์„œ๋ฆฌยท์งˆ๊ฐยท๋ฌผ์ฒด๋ฅผ ์ฐจ๋ก€๋กœ ํ•™์Šตํ•˜๋Š”์ง€ ๋ด…๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ฃผ์— ๋ฐฐ์šฐ๋Š” ๊ฒƒ

  1. ์™„์ „์—ฐ๊ฒฐ๋ง์˜ ํ•œ๊ณ„ โ€” ์ด๋ฏธ์ง€์—๋Š” ๋ถ€์ ํ•ฉ
  2. ํ•ฉ์„ฑ๊ณฑ ์—ฐ์‚ฐ
  3. ์ŠคํŠธ๋ผ์ด๋“œ์™€ ํŒจ๋”ฉ
  4. ํ’€๋ง โ€” ๋‹ค์šด์ƒ˜ํ”Œ๋ง
  5. LeNet โ€” ์ตœ์ดˆ์˜ ์„ฑ๊ณต ์‚ฌ๋ก€

1. ์™„์ „์—ฐ๊ฒฐ๋ง์€ ์™œ ์ด๋ฏธ์ง€์— ๋ถ€์ ํ•ฉํ•œ๊ฐ€

W7 MLP์—์„œ ๋ฐฐ์šด ์™„์ „์—ฐ๊ฒฐ๋ง์„ ์ด๋ฏธ์ง€์— ๊ทธ๋Œ€๋กœ ์“ฐ๋ฉด ๋‘ ๊ฐ€์ง€ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

๋ฌธ์ œ 1 โ€” ํŒŒ๋ผ๋ฏธํ„ฐ ํญ๋ฐœ. $28 \times 28$ ํ”ฝ์…€ MNIST ์ด๋ฏธ์ง€๋ฅผ 1์ฐจ์›์œผ๋กœ ํŽด๋ฉด 784๊ฐœ ์ž…๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค. ์€๋‹‰์ธต์— 256๊ฐœ ๋‰ด๋Ÿฐ๋งŒ ๋‘ฌ๋„ ์ฒซ ์ธต ๊ฐ€์ค‘์น˜ ์ˆ˜๋Š” $784 \times 256 \approx 200{,}000$๊ฐœ. ์ด๋ฏธ์ง€๊ฐ€ $224 \times 224$ ์ปฌ๋Ÿฌ๋ผ๋ฉด ์ž…๋ ฅ์ด $224 \times 224 \times 3 = 150{,}528$๊ฐœ๊ฐ€ ๋˜๊ณ , ๊ฐ™์€ ์€๋‹‰์ธต ํฌ๊ธฐ๋กœ 4์ฒœ๋งŒ ๊ฐœ ๊ฐ€์ค‘์น˜๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์‹ค์šฉ์  ์ด๋ฏธ์ง€ ํฌ๊ธฐ์—์„œ ์™„์ „์—ฐ๊ฒฐ๋ง์€ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ณ„์‚ฐ ๋น„์šฉ ๋ชจ๋‘ ๊ฐ๋‹น ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ 2 โ€” ๊ตฌ์กฐ ์ •๋ณด ์ƒ์‹ค. ๋” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋Š” "์ด๋ฏธ์ง€๋ฅผ 1์ฐจ์›์œผ๋กœ ํŽธ๋‹ค"๋Š” ํ–‰์œ„ ์ž์ฒด์ž…๋‹ˆ๋‹ค. ํ”ฝ์…€ $(5, 5)$์™€ $(5, 6)$์€ ์ด์›ƒ์ด๋ผ ์˜๋ฏธ์ ์œผ๋กœ ์—ฐ๊ด€์ด ๊นŠ์ง€๋งŒ, 1์ฐจ์›์œผ๋กœ ํŽด๋ฉด $(5, 5)$๋Š” ์ธ๋ฑ์Šค 145์ด๊ณ  $(5, 6)$์€ 146์ด ๋˜์–ด ์•„๋ฌด ๊ด€๊ณ„ ์—†๋Š” ์ˆซ์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ $(5, 5)$์™€ $(6, 5)$ (๋ฐ”๋กœ ์•„๋ž˜)๋Š” ์ธ๋ฑ์Šค 145์™€ 173์ด ๋˜์–ด "์ด์›ƒ"์ด๋ผ๋Š” ์ •๋ณด๊ฐ€ ์™„์ „ํžˆ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์™„์ „์—ฐ๊ฒฐ๋ง์€ ์ด ์ •๋ณด๋ฅผ 0๋ถ€ํ„ฐ ์žฌ๋ฐœ๊ฒฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์—„์ฒญ๋‚œ ๋ฐ์ดํ„ฐ์™€ ์‹œ๊ฐ„์ด ๋‚ญ๋น„๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ "๊ณ ์–‘์ด๊ฐ€ ์ด๋ฏธ์ง€ ์™ผ์ชฝ์— ์žˆ์„ ๋•Œ"์™€ "์˜ค๋ฅธ์ชฝ์— ์žˆ์„ ๋•Œ"๋Š” ํ”ฝ์…€ ํŒจํ„ด์ด ์™„์ „ํžˆ ๋‹ค๋ฅด๋ฏ€๋กœ, ์™„์ „์—ฐ๊ฒฐ๋ง์€ ์ด ๋‘ ๊ฒฝ์šฐ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ํ•™์Šตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์—๊ฒŒ "์™ผ์ชฝ ๊ณ ์–‘์ด"์™€ "์˜ค๋ฅธ์ชฝ ๊ณ ์–‘์ด"๋ฅผ ๋ณ„๊ฐœ์˜ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋กœ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ธ๋ฐ, ๋ง์ด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์ด ๋‘ ๋ฌธ์ œ๋ฅผ ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐํ•˜๋Š” ์•„์ด๋””์–ด ๋‘ ๊ฐ€์ง€๊ฐ€ CNN์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค:

๋‘ ์•„์ด๋””์–ด๋ฅผ ๊ฒฐํ•ฉํ•œ ์—ฐ์‚ฐ์ด ๋ฐ”๋กœ ํ•ฉ์„ฑ๊ณฑ(convolution)์ž…๋‹ˆ๋‹ค.

2. ํ•ฉ์„ฑ๊ณฑ ์—ฐ์‚ฐ โ€” ์ด๋ฏธ์ง€์˜ ์–ธ์–ด

์ˆ˜ํ•™์—์„œ ํ•ฉ์„ฑ๊ณฑ์€ ๋‘ ํ•จ์ˆ˜์˜ "๋ฐ€์–ด ๊ณฑํ•˜๊ธฐ ์ ๋ถ„"์ด์ง€๋งŒ, ๋”ฅ๋Ÿฌ๋‹ ์‹ค๋ฌด์—์„œ๋Š” ๋” ๋‹จ์ˆœํ•˜๊ฒŒ "์ž‘์€ ํ•„ํ„ฐ๋ฅผ ์ด๋ฏธ์ง€ ์œ„๋กœ ๋ฏธ๋„๋Ÿฌ๋œจ๋ฆฌ๋ฉฐ ์›์†Œ๋ณ„ ๊ณฑ์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ์—ฐ์‚ฐ"์œผ๋กœ ์ดํ•ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:

$$ S(i,j) = \sum_{m=-k}^{k} \sum_{n=-k}^{k} I(i+m, j+n) \cdot K(m,n) $$

์—ฌ๊ธฐ์„œ $I$๋Š” ์ž…๋ ฅ ์ด๋ฏธ์ง€, $K$๋Š” $(2k+1) \times (2k+1)$ ํฌ๊ธฐ์˜ ํ•„ํ„ฐ(์ปค๋„), $S$๋Š” ์ถœ๋ ฅ(ํŠน์ง• ๋งต, feature map)์ž…๋‹ˆ๋‹ค. ํ•„ํ„ฐ์˜ ๊ฐ ์›์†Œ๋Š” ํ•™์Šต ๊ฐ€๋Šฅํ•œ ๊ฐ€์ค‘์น˜. 3ร—3 ํ•„ํ„ฐ๋ผ๋ฉด 9๊ฐœ ๊ฐ€์ค‘์น˜ + 1๊ฐœ ํŽธํ–ฅ = 10๊ฐœ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ํ•œ ํŠน์ง•์„ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ ํ•„ํ„ฐ๋ฅผ ๋ชจ๋“  ์œ„์น˜์— ์“ฐ๋ฏ€๋กœ ๊ฐ€์ค‘์น˜๊ฐ€ ๊ณต์œ ๋˜๊ณ , ๊ทธ ๋•๋ถ„์— ๋‘ ๊ฐ€์ง€ ์ข‹์€ ์„ฑ์งˆ์ด ์ž๋™์œผ๋กœ ์ƒ๊น๋‹ˆ๋‹ค:

2.1 ๋Œ€ํ‘œ ํ•„ํ„ฐ์˜ ์˜๋ฏธ

์†์œผ๋กœ ์„ค๊ณ„ํ•œ ๊ณ ์ „์  ํ•„ํ„ฐ๋“ค์„ ๋ณด๋ฉด ํ•ฉ์„ฑ๊ณฑ์ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ง๊ด€์ด ์žกํž™๋‹ˆ๋‹ค.

CNN์ด ๋†€๋ผ์šด ์ด์œ : ์ด๋Ÿฐ ํ•„ํ„ฐ๋“ค์„ ์‚ฌ๋žŒ์ด ์„ค๊ณ„ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ํ›ˆ๋ จ๋œ CNN์˜ ์ฒซ ์ธต ํ•„ํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•ด๋ณด๋ฉด Sobel๊ณผ ๋น„์Šทํ•œ ๋ชจ์„œ๋ฆฌ ๊ฒ€์ถœ๊ธฐ, ์ƒ‰ ๋Œ€๋น„ ๊ฒ€์ถœ๊ธฐ, ์งˆ๊ฐ ๊ฒ€์ถœ๊ธฐ ๋“ฑ์ด ์ž๋™์œผ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋’ค์ชฝ ์ธต๋“ค๋กœ ๊ฐˆ์ˆ˜๋ก ๋” ์ถ”์ƒ์ ์ธ ํŠน์ง•(๋ˆˆ, ๋ฐ”ํ€ด, ์–ผ๊ตด ์ผ๋ถ€)์ด ํ•™์Šต๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณ„์ธต์  ํŠน์ง• ํ•™์Šต์ด ๋”ฅ๋Ÿฌ๋‹์˜ ๋ณธ์งˆ์ด์ž W10 ์ „์ดํ•™์Šต์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

๐ŸŽฎ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ: 3ร—3 ํ•„ํ„ฐ ํŽธ์ง‘๊ธฐ

์ด๋ฏธ์ง€์— ์ ์šฉํ•  3ร—3 ์ปค๋„์„ ์ง์ ‘ ๊ณ ๋ฅด์„ธ์š”. ์†Œ๋ฒจ XยทY๋Š” ๋ชจ์„œ๋ฆฌ๋ฅผ, ๋ธ”๋Ÿฌ๋Š” ๋ถ€๋“œ๋Ÿฌ์›€์„, ์ƒคํ”„๋‹์€ ๊ฐ•์กฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

3. ์ŠคํŠธ๋ผ์ด๋“œ์™€ ํŒจ๋”ฉ

์ŠคํŠธ๋ผ์ด๋“œ(stride)๋Š” ํ•„ํ„ฐ๊ฐ€ ํ•œ ๋ฒˆ์— ๋ฏธ๋„๋Ÿฌ์ง€๋Š” ์นธ ์ˆ˜. ๋ณดํ†ต 1์ด์ง€๋งŒ 2๋กœ ๋‘๋ฉด ์ถœ๋ ฅ ํฌ๊ธฐ๊ฐ€ ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

ํŒจ๋”ฉ(padding)์€ ์ž…๋ ฅ ๊ฐ€์žฅ์ž๋ฆฌ์— 0์„ ๋‘˜๋Ÿฌ์ฃผ๋Š” ๊ฒƒ. "same" ํŒจ๋”ฉ์ด๋ฉด ์ถœ๋ ฅ ํฌ๊ธฐ๊ฐ€ ์ž…๋ ฅ๊ณผ ๊ฐ™์•„์ง‘๋‹ˆ๋‹ค.

$$ \text{out} = \left\lfloor \frac{\text{in} + 2p - k}{s} \right\rfloor + 1 $$

4. ํ’€๋ง

ํ•ฉ์„ฑ๊ณฑ ๋’ค์— ๋ณดํ†ต ๋งฅ์Šคํ’€๋ง์„ ๋‘ก๋‹ˆ๋‹ค. 2ร—2 ์˜์—ญ์—์„œ ์ตœ๋Œ“๊ฐ’๋งŒ ๊ณจ๋ผ ์ถœ๋ ฅ ํฌ๊ธฐ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ž…๋‹ˆ๋‹ค. ์ด๋กœ์จ โ‘  ๊ณ„์‚ฐ๋Ÿ‰์„ ์ค„์ด๊ณ , โ‘ก ์ž‘์€ ์œ„์น˜ ๋ณ€ํ™”์— ๊ฐ•์ธํ•ด์ง‘๋‹ˆ๋‹ค.

๐ŸŽฎ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ: 2ร—2 ํ’€๋ง

๊ฐ™์€ ์ž…๋ ฅ์— ๋งฅ์Šคํ’€๋ง๊ณผ ํ‰๊ท ํ’€๋ง์„ ์ ์šฉํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

3.1 ์ŠคํŠธ๋ผ์ด๋“œยทํŒจ๋”ฉยท์ถœ๋ ฅ ํฌ๊ธฐ ๊ณต์‹

ํ•ฉ์„ฑ๊ณฑ ์—ฐ์‚ฐ์„ ์‹ค์ œ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•  ๋•Œ ํ•„์š”ํ•œ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ:

์ž…๋ ฅ ํฌ๊ธฐ $W_\text{in}$์— ๋Œ€ํ•ด ์ถœ๋ ฅ ํฌ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

$$ W_\text{out} = \left\lfloor \frac{W_\text{in} + 2p - k}{s} \right\rfloor + 1 $$

์˜ˆ๋ฅผ ๋“ค์–ด $28 \times 28$ ์ž…๋ ฅ์— $3 \times 3$ ์ปค๋„, $s=1$, $p=1$์„ ์“ฐ๋ฉด ์ถœ๋ ฅ์€ $28 \times 28$ ๊ทธ๋Œ€๋กœ. ์ด๋ฅผ "same padding"์ด๋ผ ๋ถ€๋ฅด๊ณ , ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ํ•ฉ์„ฑ๊ณฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. $s=2$๋กœ ๋ฐ”๊พธ๋ฉด ์ถœ๋ ฅ์€ $14 \times 14$๋กœ ์ ˆ๋ฐ˜.

3.2 ํ’€๋ง โ€” ํ•ด์ƒ๋„ ์ค„์ด๊ธฐ์™€ ๋ถˆ๋ณ€์„ฑ ์–ป๊ธฐ

ํ’€๋ง(pooling)์€ ํ•ฉ์„ฑ๊ณฑ์˜ ์ง๊ฟ์ž…๋‹ˆ๋‹ค. ํŠน์ง• ๋งต์„ ์ž‘์€ ์˜์—ญ(๋ณดํ†ต $2 \times 2$)์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๊ฐ ์˜์—ญ์—์„œ ๋Œ€ํ‘œ๊ฐ’ ํ•˜๋‚˜๋งŒ ๋‚จ๊น๋‹ˆ๋‹ค.

$2 \times 2$ ํ’€๋ง์€ ๊ณต๊ฐ„ ํ•ด์ƒ๋„๋ฅผ 4๋ถ„์˜ 1๋กœ ์ค„์ž…๋‹ˆ๋‹ค. ํ•ด์ƒ๋„๊ฐ€ ๋‚ฎ์•„์ง„ ๋งŒํผ ๋‹ค์Œ ์ธต์˜ ํ•„ํ„ฐ๋Š” ๋” ๋„“์€ ์‹ค์ œ ์˜์—ญ์„ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ "์ˆ˜์šฉ์žฅ(receptive field)์ด ์ปค์ง„๋‹ค"๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณ„์ธต์  ํ™•๋Œ€ ๋•๋ถ„์—, ๊นŠ์€ ์ธต์€ ์ „์ฒด ์ด๋ฏธ์ง€ ์ˆ˜์ค€์˜ ํฐ ๊ตฌ์กฐ(์–ผ๊ตด ์ „์ฒด, ์ž๋™์ฐจ ์ „์ฒด)๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ’€๋ง์˜ ๋˜ ๋‹ค๋ฅธ ์žฅ์ ์€ ์ž‘์€ ํ‰ํ–‰์ด๋™์— ๋Œ€ํ•œ ๋ถˆ๋ณ€์„ฑ์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅ์ด 1ํ”ฝ์…€ ์›€์ง์—ฌ๋„ $2 \times 2$ ํ’€๋ง์˜ ์ถœ๋ ฅ์€ ๋Œ€๊ฐœ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” "๋Œ€๋žต ์ด ์˜์—ญ์— ํŠน์ง•์ด ์žˆ๋‹ค"๋งŒ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ. ์ด๋Š” CNN์ด ์ •ํ™•ํ•œ ์œ„์น˜ ๋Œ€์‹  "์žˆ์Œ/์—†์Œ"์— ์ง‘์ค‘ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

5. LeNet โ€” ์ตœ์ดˆ์˜ ์„ฑ๊ณต ์‚ฌ๋ก€

1989~1998๋…„์— ๊ฑธ์ณ Bell Labs์˜ Yann LeCun์ด ๊ฐœ๋ฐœํ•œ LeNet-5๋Š” CNN์˜ ํ˜„๋Œ€์  ์›ํ˜•์ž…๋‹ˆ๋‹ค. 1998๋…„ ๋…ผ๋ฌธ "Gradient-Based Learning Applied to Document Recognition"์—์„œ ์šฐํŽธ๋ฒˆํ˜ธ ์†๊ธ€์”จ ์ธ์‹๊ณผ ์ˆ˜ํ‘œ ๊ธˆ์•ก ํŒ๋…์— ์“ฐ์˜€๊ณ , ์‹ค์ œ๋กœ 1990๋…„๋Œ€ ํ›„๋ฐ˜ ๋ฏธ๊ตญ ์€ํ–‰์˜ ์ˆ˜ํ‘œ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์— ๋ฐฐ์น˜๋˜์–ด ์ „์ฒด ์ˆ˜ํ‘œ ์ฒ˜๋ฆฌ๋Ÿ‰์˜ 10-20%๋ฅผ ์ž๋™ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋”ฅ๋Ÿฌ๋‹ ์ด์ „์— CNN์ด ์‹ค์šฉํ™”๋œ ๊ฑฐ์˜ ์œ ์ผํ•œ ์‚ฌ๋ก€๋กœ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

LeNet-5์˜ ๊ตฌ์กฐ: [Conv5โ†’Pool2โ†’Conv5โ†’Pool2โ†’FCโ†’FCโ†’Out]. ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜๋Š” ์•ฝ 6๋งŒ ๊ฐœ, ํ˜„๋Œ€ ๊ธฐ์ค€์œผ๋กœ ๋ณด๋ฉด ๊ทน๋„๋กœ ์ž‘์ง€๋งŒ ๋‹น์‹œ ํ•˜๋“œ์›จ์–ด๋กœ๋Š” ํฐ ํŽธ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ๊ฐ€ ์˜ค๋Š˜๋‚  ResNet, Inception ๊ฐ™์€ ๊ฑฐ๋Œ€ ๋ชจ๋ธ์˜ ๊ธฐ๋ณธ ๋ ˆ์ด์•„์›ƒ์„ ์ด๋ฏธ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค โ€” "ํ•ฉ์„ฑ๊ณฑ์œผ๋กœ ํŠน์ง• ์ถ”์ถœ, ํ’€๋ง์œผ๋กœ ๊ณต๊ฐ„ ์ถ•์†Œ, ๋งˆ์ง€๋ง‰์— ์™„์ „์—ฐ๊ฒฐ์ธต์œผ๋กœ ๋ถ„๋ฅ˜".

LeNet ์ดํ›„ 14๋…„๊ฐ„ CNN ์—ฐ๊ตฌ๋Š” ๊ฑฐ์˜ ์ •์ฒด๋์Šต๋‹ˆ๋‹ค. ์›์ธ์€ ๋‘ ๊ฐ€์ง€: ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถ€์กฑํ–ˆ๊ณ (๋‹น์‹œ MNIST ์™ธ์— ์ œ๋Œ€๋กœ ๋œ ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์—†์—ˆ์Œ), ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋А๋ ธ์Šต๋‹ˆ๋‹ค. ์ด ์นจ๋ฌต์€ 2012๋…„ Alex Krizhevsky์˜ AlexNet์ด ImageNet ๋Œ€ํšŒ์—์„œ 2๋“ฑ๊ณผ 10%p ์ด์ƒ์˜ ๊ฒฉ์ฐจ๋กœ ์••๋„์  ์šฐ์Šน์„ ๊ฑฐ๋‘๋ฉด์„œ ํ•œ ๋ฒˆ์— ๊นจ์ง‘๋‹ˆ๋‹ค. GPU, ๋น…๋ฐ์ดํ„ฐ, ๊ทธ๋ฆฌ๊ณ  Hinton์˜ ๋ˆ์งˆ๊ธด ๋ฏฟ์Œ โ€” ์ด ์…‹์ด ๋งŒ๋‚œ ์ˆœ๊ฐ„์ด ํ˜„๋Œ€ ๋”ฅ๋Ÿฌ๋‹์˜ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ด์•ผ๊ธฐ๋Š” W10์—์„œ.

5.1 MNIST์—์„œ LeNet์ด ๋ณธ ๊ฒƒ โ€” ํ…์„œ ๋ชจ์–‘ ๋”ฐ๋ผ๊ฐ€๊ธฐ

ํ•œ ์ด๋ฏธ์ง€๊ฐ€ LeNet์„ ํ†ต๊ณผํ•˜๋ฉฐ ์–ด๋–ป๊ฒŒ ๋ณ€ํ˜•๋˜๋Š”์ง€ ๋‹จ๊ณ„๋ณ„๋กœ ๋ด…์‹œ๋‹ค. ์ž…๋ ฅ์€ $28 \times 28$ ํšŒ์ƒ‰์กฐ ์ด๋ฏธ์ง€ ํ•œ ์žฅ, ํ…์„œ ๋ชจ์–‘ $[1, 28, 28]$ (์ฑ„๋„, ๋†’์ด, ๋„ˆ๋น„).

  1. Conv1: $5 \times 5$ ํ•„ํ„ฐ 6๊ฐœ, stride=1, padding=0 โ†’ ์ถœ๋ ฅ $[6, 24, 24]$. ์™œ 24? $(28 - 5)/1 + 1 = 24$.
  2. Pool1: $2 \times 2$ max pooling, stride=2 โ†’ $[6, 12, 12]$.
  3. Conv2: $5 \times 5$ ํ•„ํ„ฐ 16๊ฐœ โ†’ $[16, 8, 8]$.
  4. Pool2: $2 \times 2$ โ†’ $[16, 4, 4]$.
  5. Flatten: $16 \times 4 \times 4 = 256$์ฐจ์› ๋ฒกํ„ฐ.
  6. FC1: 256 โ†’ 120.
  7. FC2: 120 โ†’ 84.
  8. Out: 84 โ†’ 10 (ํด๋ž˜์Šค ๊ฐœ์ˆ˜).

๊ณต๊ฐ„ ํ•ด์ƒ๋„๋Š” $28 \to 24 \to 12 \to 8 \to 4$๋กœ ์ค„๊ณ , ์ฑ„๋„ ์ˆ˜(ํŠน์ง•์˜ ์ข…๋ฅ˜)๋Š” $1 \to 6 \to 16$์œผ๋กœ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. "ํ•ด์ƒ๋„๋Š” ์ค„์ด๊ณ  ์ถ”์ƒํ™”๋Š” ๋†’์ด๋Š”" ์ด ํ”ผ๋ผ๋ฏธ๋“œ ๊ตฌ์กฐ๊ฐ€ ํ˜„๋Œ€ CNN์˜ ๋ณดํŽธ์  ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

6. ์ฝ”๋“œ ์˜ˆ์ œ (PyTorch)

import torch.nn as nn

class LeNet(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(1, 6, 5)     # 1ch โ†’ 6ch, 5ร—5 ํ•„ํ„ฐ
        self.pool  = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(6, 16, 5)
        self.fc1   = nn.Linear(16*4*4, 120)
        self.fc2   = nn.Linear(120, 84)
        self.fc3   = nn.Linear(84, 10)

    def forward(self, x):
        x = self.pool(torch.relu(self.conv1(x)))
        x = self.pool(torch.relu(self.conv2(x)))
        x = x.view(x.size(0), -1)
        x = torch.relu(self.fc1(x))
        x = torch.relu(self.fc2(x))
        return self.fc3(x)

๐Ÿ“– ๋” ๊นŠ์ด ๊ณต๋ถ€ํ•˜๊ธฐ