๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/AI, ๋”ฅ๋Ÿฌ๋‹

AI๋”ฅ๋Ÿฌ๋‹ ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๋ฐ์ดํ„ฐ์…‹์˜ ๋ชจ๋“  ๊ฒƒ์ด๋ž€?

by ๐Ÿ”ฅ๊นก ๋‹ค ๊ณ ! 2025. 3. 30.

๋ฐ์ดํ„ฐ์…‹์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์—ฌ๋Ÿฌ๋ถ„, ๋”ฅ๋Ÿฌ๋‹ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด '๋ฐ์ดํ„ฐ์…‹'์ด๋ผ๋Š” ๋ง์„ ์ •๋ง ์ž์ฃผ ๋“ฃ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์…‹(Dataset)์ด๋ž€ ๋ง ๊ทธ๋Œ€๋กœ '๋ฐ์ดํ„ฐ๋“ค์˜ ์ง‘ํ•ฉ'์ด์—์š”. ๋ง์ด ์–ด๋ ต์ง€, ๊ทธ๋ƒฅ ๋จธ์‹ ๋Ÿฌ๋‹์ด๋‚˜ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด ํ•™์Šตํ•˜๊ฑฐ๋‚˜ ํ‰๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ชจ์Œ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋ผ์š”.

์‰ฝ๊ฒŒ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณผ๊นŒ์š”? ํ•™์ƒ์ด ์‹œํ—˜๊ณต๋ถ€๋ฅผ ํ•  ๋•Œ ๋ฌธ์ œ์ง‘์„ ํ’€์ž–์•„์š”. ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ์ง‘์ด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ์…‹์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์™ ๋˜์‹ค ๊ฑฐ์˜ˆ์š”. ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ ๊ณต๋ถ€(ํ•™์Šต)๋ฅผ ํ•˜๊ณ , ๋ชจ์˜๊ณ ์‚ฌ(๊ฒ€์ฆ)๋ฅผ ๋ณด๋ฉด์„œ ์‹ค๋ ฅ์„ ์ฒดํฌํ•˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹œํ—˜(ํ…Œ์ŠคํŠธ)์„ ์น˜๋Š” ๊ฑฐ์ฃ !

๋ฐ์ดํ„ฐ์…‹์˜ ์ข…๋ฅ˜: ํ•™์Šต, ๊ฒ€์ฆ, ํ…Œ์ŠคํŠธ

๋จธ์‹ ๋Ÿฌ๋‹๊ณผ ๋”ฅ๋Ÿฌ๋‹์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ฐ€์ง€๋กœ๋งŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์š”. **์ด ์„ธ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ์…‹**์œผ๋กœ ๋‚˜๋ˆ ์„œ ์‚ฌ์šฉํ•ด์š”.

๋ฐ์ดํ„ฐ์…‹ ์ข…๋ฅ˜ ์„ค๋ช… ์˜ˆ์‹œ
ํŠธ๋ ˆ์ด๋‹ ๋ฐ์ดํ„ฐ์…‹ ๋ชจ๋ธ์ด ์‹ค์ œ๋กœ ํ•™์Šตํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ train_images, train_labels
๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์…‹ ํ•™์Šต ์ค‘ ๋ชจ๋ธ์ด ์ž˜ ๋ฐฐ์šฐ๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ val_images, val_labels
ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์…‹ ๋ชจ๋ธ ํ•™์Šต ์™„๋ฃŒ ํ›„ ์ตœ์ข… ์„ฑ๋Šฅ ํ‰๊ฐ€ test_images, test_labels

AI๋”ฅ๋Ÿฌ๋‹

Validation ๋ฐ์ดํ„ฐ์˜ ์ค‘์š”์„ฑ

๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์…‹์€ ํŠนํžˆ ๋”ฅ๋Ÿฌ๋‹์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ด์š”. ๋‹จ์ˆœํžˆ ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚ค๋Š” ๊ฒƒ์—์„œ ๊ทธ์น˜์ง€ ์•Š๊ณ , ๋ชจ๋ธ์ด ์ž˜ ๋ฐฐ์šฐ๊ณ  ์žˆ๋Š”์ง€ ์ค‘๊ฐ„์— ๊ณ„์† ์ฒดํฌํ•˜๋Š” ๊ฑฐ์ฃ . ์™œ ์ค‘์š”ํ• ๊นŒ์š”? ๋ฐ”๋กœ ๊ณผ์ ํ•ฉ(overfitting)์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ์˜ˆ์š”.

  1. ๊ณผ์ ํ•ฉ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ์กฐ๊ธฐ์— ํ™•์ธ
  2. ํ•™์Šต์ด ์ž˜ ๋˜๊ณ  ์žˆ๋Š”์ง€ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง
  3. ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ(ํ•™์Šต๋ฅ , ๋ฐฐ์น˜์‚ฌ์ด์ฆˆ ๋“ฑ) ํŠœ๋‹์— ํ™œ์šฉ
  4. ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์กฐ๊ธฐ ์ข…๋ฃŒ(Early Stopping) ๊ฐ€๋Šฅ

๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ์ฝ”๋“œ ๋ถ„์„

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด๋ณผ๊นŒ์š”? ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” Keras์˜ Sequential API๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ„๋‹จํ•œ ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ์ด์—์š”. ํ•˜๋‚˜์”ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ์‚ดํŽด๋ณผ๊ฒŒ์š”!

์ฝ”๋“œ ๋ผ์ธ๋ณ„ ์ƒ์„ธ ์„ค๋ช…

์ฝ”๋“œ ์„ค๋ช…
from tensorflow import keras
from tensorflow.keras import layers
TensorFlow์˜ Keras API์™€ ๋ ˆ์ด์–ด ๊ด€๋ จ ๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
network = models.Sequential() Sequential ๋ชจ๋ธ ์ƒ์„ฑ (์ธต์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์Œ“๋Š” ๊ตฌ์กฐ)
network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,))) ์ž…๋ ฅ์ธต + ์ฒซ ๋ฒˆ์งธ ์€๋‹‰์ธต, ๋…ธ๋“œ 512๊ฐœ, ํ™œ์„ฑํ™” ํ•จ์ˆ˜ ReLU
network.add(layers.Dense(256, activation='relu')) ๋‘ ๋ฒˆ์งธ ์€๋‹‰์ธต, ๋…ธ๋“œ 256๊ฐœ, ReLU ์‚ฌ์šฉ
network.add(layers.Dense(128, activation='relu')) ์„ธ ๋ฒˆ์งธ ์€๋‹‰์ธต, ๋…ธ๋“œ 128๊ฐœ, ReLU ์‚ฌ์šฉ
network.add(layers.Dense(10, activation='softmax')) ์ถœ๋ ฅ์ธต, ๋…ธ๋“œ 10๊ฐœ, ๋‹ค์ค‘ ๋ถ„๋ฅ˜๋ฅผ ์œ„ํ•œ Softmax ์‚ฌ์šฉ

๋งˆ๋ฌด๋ฆฌ ๋ฐ ํ•ต์‹ฌ ์š”์•ฝ

์—ฌ๊ธฐ๊นŒ์ง€ ์ž˜ ๋”ฐ๋ผ์˜ค์…จ๋‚˜์š”? ๐Ÿ˜„ ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ์„ ํ•œ๋ˆˆ์— ์ •๋ฆฌํ•ด๋ณผ๊ฒŒ์š”!

  • ๋ฐ์ดํ„ฐ์…‹์€ ํ•™์Šต, ๊ฒ€์ฆ, ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.
  • ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ๋Š” ๊ณผ์ ํ•ฉ ๋ฐฉ์ง€์™€ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹์— ์ค‘์š”ํ•˜๋‹ค.
  • Sequential ๋ชจ๋ธ์€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ธต์„ ์Œ“๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ReLU์™€ Softmax๋Š” ๊ฐ๊ฐ ์€๋‹‰์ธต๊ณผ ์ถœ๋ ฅ์ธต์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
Q ๋ฐ์ดํ„ฐ์…‹์€ ์™œ ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„๋‚˜์š”?

๊ฐ ๋ฐ์ดํ„ฐ์…‹์€ ๋ชจ๋ธ ํ•™์Šต, ๊ฒ€์ฆ, ์ตœ์ข… ํ‰๊ฐ€๋ผ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์š”. ํ•˜๋‚˜๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ์ •ํ™•ํžˆ ํ‰๊ฐ€ํ•  ์ˆ˜ ์—†์–ด์š”.

Q ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ๋Š” ๊ผญ ํ•„์š”ํ•œ๊ฐ€์š”?

๋„ค, ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ๊ณผ์ ํ•ฉ ์—ฌ๋ถ€๋ฅผ ์•Œ๊ธฐ ์–ด๋ ค์›Œ์š”. ๋ชจ๋ธ์ด ํ•™์Šต ๋ฐ์ดํ„ฐ๋งŒ ์ž˜ ์™ธ์šฐ๊ณ  ์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•˜๋ ค๋ฉด ๊ผญ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Q Sequential ๋ชจ๋ธ ์™ธ ๋‹ค๋ฅธ ๋ชจ๋ธ๋„ ์žˆ๋‚˜์š”?

๋„ค, Keras์—๋Š” Functional API๋‚˜ Subclassing API ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ์ƒ์„ฑ ๋ฐฉ์‹์ด ์žˆ์–ด์š”. ๋” ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Q Softmax ํ•จ์ˆ˜๋Š” ์™œ ์ถœ๋ ฅ์ธต์— ์‚ฌ์šฉํ•˜๋‚˜์š”?

Softmax๋Š” ๋‹ค์ค‘ ํด๋ž˜์Šค ๋ถ„๋ฅ˜ ๋ฌธ์ œ์—์„œ ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ™•๋ฅ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”. ํ™•๋ฅ  ํ•ฉ์ด 1์ด ๋˜๋„๋ก ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

Q ReLU ํ•จ์ˆ˜๋Š” ์™œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋‚˜์š”?

ReLU๋Š” ๊ณ„์‚ฐ์ด ๋น ๋ฅด๊ณ , ๋”ฅ๋Ÿฌ๋‹์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ ์ด์–ด์„œ ๋„๋ฆฌ ์“ฐ์—ฌ์š”.

Q input_shape๋Š” ์™œ ๊ผญ ์ž…๋ ฅ์ธต์— ์žˆ์–ด์•ผ ํ•˜๋‚˜์š”?

๋ชจ๋ธ์˜ ์ฒซ ๋ฒˆ์งธ ์ธต์€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๋ฅผ ์•Œ์•„์•ผ ํ•˜๋‹ˆ๊นŒ์š”! ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡ ์ฐจ์›์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ์…‹์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ๋”ฅ๋Ÿฌ๋‹ ์ฝ”๋“œ๊นŒ์ง€ ํ•จ๊ป˜ ์•Œ์•„๋ดค์–ด์š”! ์ฒ˜์Œ์—” ์กฐ๊ธˆ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž์ฃผ ์ ‘ํ•˜๋‹ค ๋ณด๋ฉด ๋ถ„๋ช… ์ต์ˆ™ํ•ด์งˆ ๊ฑฐ์˜ˆ์š”. ์•ž์œผ๋กœ๋„ ํ•จ๊ป˜ ๋”ฅ๋Ÿฌ๋‹ ์—ฌ์ •์„ ์ด์–ด๊ฐ€๋ฉฐ ๋” ๊นŠ์ด ์žˆ๋Š” ๋‚ด์šฉ๋„ ๋‹ค๋ค„๋ณผ๊ฒŒ์š”. ํ˜น์‹œ ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ๋” ์•Œ๊ณ  ์‹ถ์€ ์ฃผ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”. ๐Ÿ˜Š ์—ฌ๋Ÿฌ๋ถ„์˜ ์„ฑ์žฅ์ด ์ €์˜ ๊ธฐ์จ์ž…๋‹ˆ๋‹ค!