๐Ÿ’ป My Work/๐Ÿง  AI

[์ธ๊ณต์ง€๋Šฅ/ํ˜ผ๊ณต๋จธ์‹ ] 07-1. ์ธ๊ณต ์‹ ๊ฒฝ๋ง (3)

Jaeseo Kim 2023. 1. 2. 02:25

๐Ÿšฉ ๋”ฅ๋Ÿฌ๋‹๊ณผ ์ธ๊ณต ์‹ ๊ฒฝ๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜๊ณ  ํ…์„œํ”Œ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ„๋‹จํ•œ ์ธ๊ณต ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.

 

 

[์ธ๊ณต์ง€๋Šฅ/ํ˜ผ๊ณต๋จธ์‹ ] 07-1. ์ธ๊ณต ์‹ ๊ฒฝ๋ง (2)

๐Ÿšฉ ๋”ฅ๋Ÿฌ๋‹๊ณผ ์ธ๊ณต ์‹ ๊ฒฝ๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜๊ณ  ํ…์„œํ”Œ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ„๋‹จํ•œ ์ธ๊ณต ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค. [์ธ๊ณต์ง€๋Šฅ/ํ˜ผ๊ณต๋จธ์‹ ] 07-1. ์ธ๊ณต ์‹ ๊ฒฝ๋ง (1) ๐Ÿšฉ ๋”ฅ๋Ÿฌ๋‹๊ณผ ์ธ๊ณต ์‹ ๊ฒฝ๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„

avoc-o-d.tistory.com

 

์ธ๊ณต ์‹ ๊ฒฝ๋ง์œผ๋กœ ํŒจ์…˜ ์•„์ดํ…œ ๋ถ„๋ฅ˜ํ•˜๊ธฐ

์ผ€๋ผ์Šค ๋ชจ๋ธ์€ ํ›ˆ๋ จํ•˜๊ธฐ ์ „์— compile()๋กœ ํ•˜๋Š” ์„ค์ • ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

model.compile(loss="sparse_categorical_crossentropy", metrics="accuracy")

๊ผญ!!! ์ง€์ •ํ•ด์•ผ ํ•  ๊ฒƒ์€ โœจ์†์‹ค ํ•จ์ˆ˜์˜ ์ข…๋ฅ˜โœจ์ž…๋‹ˆ๋‹ค.

๐Ÿ“ loss = "sparse_categorical_crossentropy"

๐Ÿค” categorical_crossentropy

  • (์ฐธ๊ณ )์ด์ง„ ๋ถ„๋ฅ˜ : ์ด์ง„ ํฌ๋กœ์Šค ์—”ํŠธ๋กœํ”ผ ์†์‹ค ํ•จ์ˆ˜ ์‚ฌ์šฉ loss="binary_crossentropy"
  • ๋‹ค์ค‘ ๋ถ„๋ฅ˜ : ํฌ๋กœ์Šค ์—”ํŠธ๋กœํ”ผ ์†์‹ค ํ•จ์ˆ˜ ์‚ฌ์šฉ loss="categorical_crossentropy"

๐Ÿค” sparse

  • ์ด์ง„ ํฌ๋กœ์Šค ์—”ํŠธ๋กœํ”ผ ์†์‹ค์„ ์œ„ํ•ด -log(์˜ˆ์ธก ํ™•๋ฅ ) x ํƒ€๊นƒ๊ฐ’์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ง„ ๋ถ„๋ฅ˜์—์„œ๋Š” ์ถœ๋ ฅ์ธต์˜ ๋‰ด๋Ÿฐ์ด ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • ์ด์ง„ ๋ถ„๋ฅ˜์˜ ์ถœ๋ ฅ ๋‰ด๋Ÿฐ์€ ์˜ค์ง ์–‘์„ฑ ํด๋ž˜์Šค ํ™•๋ฅ (a)๋งŒ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Œ์„ฑ ํด๋ž˜์Šค ํ™•๋ฅ ์€ 1-a๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ์ฃ .
    ๋˜ํ•œ, ์ด์ง„ ๋ถ„๋ฅ˜์˜ ํƒ€๊นƒ๊ฐ’์€ ์–‘์„ฑ ์ƒ˜ํ”Œ 1, ์Œ์„ฑ ์ƒ˜ํ”Œ 0์œผ๋กœ ๋˜์–ด ์žˆ์ฃ . ํƒ€๊นƒ๊ฐ’ 0์„ ๊ณฑํ•˜๋ฉด 0์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์Œ์„ฑ ์ƒ˜ํ”Œ์€ (1-ํƒ€๊นƒ๊ฐ’)์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
    โ–ถ๏ธ ์ฆ‰, ํ•˜๋‚˜์˜ ๋‰ด๋Ÿฐ๋งŒ์œผ๋กœ ์–‘์„ฑ, ์Œ์„ฑ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํฌ๋กœ์Šค ์—”ํŠธ๋กœํ”ผ ์†์‹ค์„ ๋ชจ๋‘ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์•„๋ž˜ ๊ทธ๋ฆผ ์ฐธ๊ณ )

์ด์ง„ ํฌ๋กœ์Šค ์—”ํŠธ๋กœํ”ผ ์†์‹ค ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„

 

  • ๋‹ค์ค‘ ๋ถ„๋ฅ˜์—์„œ ์ถœ๋ ฅ์ธต์€ 10๊ฐœ์˜ ๋‰ด๋Ÿฐ์ด ์žˆ๊ณ , 10๊ฐœ์˜ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ™•๋ฅ ์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    ex. ์ฒซ ๋ฒˆ์งธ ๋‰ด๋Ÿฐ์€ ํ‹ฐ์…”์ธ ์ผ ํ™•๋ฅ  ์ถœ๋ ฅ
  • ์ด์ง„ ๋ถ„๋ฅ˜์™€ ๋‹ฌ๋ฆฌ, ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ™•๋ฅ ์ด ๋ชจ๋‘ ์ถœ๋ ฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํƒ€๊นƒ์— ํ•ด๋‹นํ•˜๋Š” ํ™•๋ฅ ๋งŒ ๋‚จ๊ฒจ ๋†“๊ธฐ ์œ„ํ•ด ๋‚˜๋จธ์ง€ ํ™•๋ฅ ์—๋Š” ๋ชจ๋‘ 0์„ ๊ณฑํ•ฉ๋‹ˆ๋‹ค.
    ex. ์ƒ˜ํ”Œ์ด ํ‹ฐ์…”์ธ ์ผ ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ ๋‰ด๋Ÿฐ์˜ ํ™œ์„ฑํ™” ํ•จ์ˆ˜ ์ถœ๋ ฅ์ธ a1์— ํฌ๋กœ์Šค ์—”ํŠธ๋กœํ”ผ ์†์‹ค ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€ ํ™œ์„ฑํ™” ํ•จ์ˆ˜ ์ถœ๋ ฅ a2~a10๊นŒ์ง€๋Š” ๋ชจ๋‘ 0์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. โ–ถ๏ธ [1, 0, ..., 0]
    โ–ถ๏ธ ์ถœ๋ ฅ์ธต์˜ ํ™œ์„ฑํ™” ๊ฐ’์˜ ๋ฐฐ์—ด๊ณผ ์œ„ ๋ฐฐ์—ด์„ ๊ณฑํ•ฉ๋‹ˆ๋‹ค. [a1, a2, ..., a10] x [1, 0, ..., 0]
    โ–ถ๏ธ ๊ฒฐ๊ตญ, a1๋งŒ ๋‚จ๊ฒ ๊ตฐ์š”. (์•„๋ž˜ ๊ทธ๋ฆผ ์ฐธ๊ณ )

  • ์ฆ‰, ์‹ ๊ฒฝ๋ง์€ ํ•ด๋‹น ์ƒ˜ํ”Œ์—์„œ ์†์‹ค์„ ๋‚ฎ์ถ”๋ ค๋ฉด ํ•ด๋‹น ๋‰ด๋Ÿฐ์˜ ํ™œ์„ฑํ™” ์ถœ๋ ฅ a ๊ฐ’์„ ์ตœ๋Œ€ํ•œ 1์— ๊ฐ€๊น๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!!!
  • โ–ถ๏ธ ์›-ํ•ซ ์ธ์ฝ”๋”ฉ : ํƒ€๊นƒ๊ฐ’์„ ํ•ด๋‹น ํด๋ž˜์Šค๋งŒ 1์ด๊ณ , ๋‚˜๋จธ์ง€๋Š” 0์ธ ๋ฐฐ์—ด๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ
  • ๋”ฐ๋ผ์„œ, ๋‹ค์ค‘ ๋ถ„๋ฅ˜์—์„œ ํฌ๋กœ์Šค ์—”ํŠธ๋กœํ”ผ ์†์‹ค ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํ˜„์žฌ ์ •์ˆ˜์ธ ํƒ€๊นƒ๊ฐ’(0~9)์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ , ์›-ํ•ซ ์ธ์ฝ”๋”ฉ์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

ํŒจ์…˜ MNIST ๋ฐ์ดํ„ฐ์˜ ํƒ€๊นƒ๊ฐ’

  • ๊ทธ์น˜๋งŒ ๊ฒฐ๋ก ์ ์œผ๋กœ, ํ…์„œํ”Œ๋กœ์—์„œ๋Š” sparse_categorical_crossentropy์„ ํ†ตํ•ด ์ •์ˆ˜ ํƒ€๊นƒ๊ฐ’์„ ์›-ํ•ซ ์ธ์ฝ”๋”ฉ์œผ๋กœ ๋ฐ”๊พธ์–ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ์›-ํ•ซ ์ธ์ฝ”๋”ฉ์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋ฌผ๋ก , ์›-ํ•ซ ์ธ์ฝ”๋”ฉ์œผ๋กœ ํƒ€๊นƒ๊ฐ’์„ ์ค€๋น„ํ–ˆ๋‹ค๋ฉด categorical_crossentropy๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ metrics = "accuracy"

  • ์ผ€๋ผ์Šค๋Š” ๋ชจ๋ธ์ด ํ›ˆ๋ จํ•  ๋•Œ ๊ธฐ๋ณธ์œผ๋กœ ์—ํฌํฌ๋งˆ๋‹ค ์†์‹ค ๊ฐ’์„ ์ถœ๋ ฅํ•ด ์ค๋‹ˆ๋‹ค.
    ์†์‹ค์ด ์ค„์–ด๋“œ๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ํ›ˆ๋ จ์ด ์ž˜๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ ์ •ํ™•๋„๋ฅผ ํ•จ๊ป˜ ์ถœ๋ ฅํ•˜๋ฉด ๋” ์ข‹์œผ๋‹ˆ๊นŒ! ์ •ํ™•๋„ ์ง€ํ‘œ๋ฅผ ์˜๋ฏธํ•˜๋Š” accuracy๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ! ํ›ˆ๋ จํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ ์—ํฌํฌ ํšŸ์ˆ˜๋Š” 5๋ฒˆ์œผ๋กœ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

model.fit(train_scaled, train_target, epochs=5)

ํ›ˆ๋ จ  (๋žœ๋คํ•˜๊ฒŒ ๋™์ž‘)

์—ํฌํฌ๋งˆ๋‹ค ๊ฑธ๋ฆฐ ์‹œ๊ฐ„๊ณผ ์†์‹ค(loss), ์ •ํ™•๋„(accuracy)๋ฅผ ์ถœ๋ ฅํ•ด ์ฃผ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5๋ฒˆ ๋ฐ˜๋ณต์— ์ •ํ™•๋„๊ฐ€ 86%๋ฅผ ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค! ๊ทธ๋Ÿผ ๊ฒ€์ฆ ์„ธํŠธ๋กœ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

model.evaluate(val_scaled, val_target)

์„ฑ๋Šฅ ํ‰๊ฐ€ ๊ฒฐ๊ณผ

85%์˜ ์ •ํ™•๋„๋ฅผ ๋ƒˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ,, ๊ฒ€์ฆ ์„ธํŠธ์˜ ์ ์ˆ˜๋Š” ํ›ˆ๋ จ ์„ธํŠธ ์ ์ˆ˜๋ณด๋‹ค ์กฐ๊ธˆ ๋‚ฎ์€ ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. fit()์ฒ˜๋Ÿผ์š”! (์•„๋ฌด๋ž˜๋„ ํ›ˆ๋ จ ์„ธํŠธ๋กœ ํ›ˆ๋ จํ–ˆ๋‹ค๋ณด๋‹ˆ ํ›ˆ๋ จ ์„ธํŠธ์— ๋Œ€ํ•ด ์ ์ˆ˜๊ฐ€ ๋†’์€ ๊ฒŒ ๋‹น์—ฐํ•˜์ฃ .)

 

 

์ด๋ ‡๊ฒŒ ์ธ๊ณต ์‹ ๊ฒฝ๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ํŒจ์…˜ ์•„์ดํ…œ์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ชจ๋ธ์„ ์ž˜ ํ›ˆ๋ จํ–ˆ์Šต๋‹ˆ๋‹ค!

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.. ๐Ÿฆ•๐Ÿฆ•๐Ÿฆ• )))