๐Ÿ’ฟ Data/๋ถ€ํŠธ์บ ํ”„

[TIL]72. ์‹ ๊ฒฝ๋ง ํ•™์Šต

Jayden1116 2022. 2. 23. 22:16

ํ‚ค์›Œ๋“œ

  • ์‹ ๊ฒฝ๋ง ํ•™์Šต ๋ฉ”์ปค๋‹ˆ์ฆ˜(์ˆœ์ „ํŒŒ, ์†์‹ค ๊ณ„์‚ฐ, ์—ญ์ „ํŒŒ)
  • ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•(Gradient Descent ; GD) : ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐฑ์‹ ๋˜๋Š” ๊ณผ์ •
  • ์˜ตํ‹ฐ๋งˆ์ด์ €(Optimizer)์˜ ๊ฐœ๋…

์‹ ๊ฒฝ๋ง ํ•™์Šต

  1. ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋ฐ ์‹ ๊ฒฝ๋ง ๊ฐ ์ธต์—์„œ ๊ฐ€์ค‘์น˜ ๋ฐ ํ™œ์„ฑํ™” ํ•จ์ˆ˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰
  2. ๋ชจ๋“  ์ธต์—์„œ 1์˜ ๊ณผ์ •์„ ์ง„ํ–‰ ํ›„ ๋งˆ์ง€๋ง‰ ์ถœ๋ ฅ์ธต์—์„œ ๊ฐ’์„ ์ถœ๋ ฅ(์ถœ๋ ฅ๊ฐ’)
  3. ์†์‹ค ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์˜ˆ์ธก๊ฐ’(prediction)๊ณผ ์‹ค์ œ๊ฐ’(target)์˜ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐ
  4. ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ•๊ณผ ์—ญ์ „ํŒŒ๋ฅผ ํ†ตํ•ด ๊ฐ ๊ฐ€์ค‘์น˜๋ฅผ ์ƒˆ๋กญ๊ฒŒ ๊ฐฑ์‹ 
  5. ์–ด๋–ค ํ•™์Šต ์ค‘์ง€ ๊ธฐ์ค€์„ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ 1-4์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณต

  • Iteration : 1-4์˜ ๊ณผ์ •์„ ๋งํ•˜๋ฉฐ ๋งค Iteration๋งˆ๋‹ค ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐฑ์‹ ๋จ
  • 1๋ฒˆ์˜ Iteration์—๋Š” ์ˆœ์ „ํŒŒ ๊ณผ์ •(1-2), ์†์‹ค๊ณ„์‚ฐ ๊ณผ์ •(3), ์—ญ์ „ํŒŒ ๊ณผ์ •(4)์œผ๋กœ ํฌ๊ฒŒ 3๊ฐ€์ง€์˜ ๊ณผ์ •์ด ์žˆ์Œ

์ˆœ์ „ํŒŒ(Forward Propagation)

  • ์‹ ๊ฒฝ๋ง์˜ ํ•™์Šต ๊ณผ์ • ์ค‘ 1๋ฒˆ์งธ ๊ณผ์ •

  1. ์ž…๋ ฅ์ธต(ํ˜น์€ ์ด์ „์˜ ์€๋‹‰์ธต)์œผ๋กœ๋ถ€ํ„ฐ ์‹ ํ˜ธ(๊ฐ’)๋ฅผ ์ „๋‹ฌ๋ฐ›์Œ
  2. ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ์— ๊ฐ€์ค‘์น˜-ํŽธํ–ฅ ์—ฐ์‚ฐ(๊ฐ€์ค‘ํ•ฉ) ์ˆ˜ํ–‰
  3. 2๋ฒˆ์„ ํ†ตํ•ด ๊ตฌํ•ด์ง„ ๊ฐ’์— ํ™œ์„ฑํ™” ํ•จ์ˆ˜ ์ฒ˜๋ฆฌ ํ›„ ๋‹ค์Œ ์ธต์œผ๋กœ ์ „๋‹ฌ(์ตœ์ข…์ ์œผ๋กœ ์ถœ๋ ฅ์ธต์—์„œ ์ถœ๋ ฅ๊ฐ’๊นŒ์ง€ ์ถœ๋ ฅ)

์†์‹ค ํ•จ์ˆ˜(Loss Function) ; ์†์‹ค ๊ณ„์‚ฐ

  • ์ถœ๋ ฅ์ธต์„ ํ†ตํ•ด ๋„์ถœ๋œ ์ถœ๋ ฅ๊ฐ’(์˜ˆ์ธก๊ฐ’)๊ณผ ํƒ€๊ฒŸ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ํ•จ์ˆ˜
  • ์ฆ‰, ๊ฐ’์ด ์ž‘์„์ˆ˜๋ก '์˜ˆ์ธก์„ ์ž˜ ํ–ˆ๋‹ค'๋Š” ์˜๋ฏธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์†์‹ค ํ•จ์ˆ˜๋ฅผ ์ž˜ ์ •์˜ํ•ด์ฃผ์–ด์•ผ ํ•จ
  • ๋Œ€ํ‘œ์ ์œผ๋กœ ํšŒ๊ท€ -> MSE, ์ด์ง„ ๋ถ„๋ฅ˜ -> categorical_cross_entropy, ๋‹ค์ค‘ ๋ถ„๋ฅ˜ -> sparse_categorical_cross_entropy ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ญ์ „ํŒŒ(Back Propagation)

  • ๋ง ๊ทธ๋Œ€๋กœ ์ˆœ์ „ํŒŒ์™€๋Š” ๋ฐ˜๋Œ€์˜ ๋ฐฉํ–ฅ์œผ๋กœ ์†์‹ค ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐ๋œ ์†์‹ค ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๊ณผ์ •
  • ์†์‹ค ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์–ป์–ด์ง„ ์†์‹ค ์ •๋ณด๋ฅผ ๋‹ค์‹œ ๋’ค๋กœ ์ „๋‹ฌํ•˜๋ฉฐ ๊ฐ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธ
  • ๋งค ๋ฒˆ์˜ itertaion๋งˆ๋‹ค ์†์‹ค์„ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธ
  • ์ด๋ ‡๊ฒŒ ์†์‹ค์„ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ๋ฐฉ๋ฒ•์ด ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•

๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•(Gradient Descent)

image


  • ์†์‹ค ํ•จ์ˆ˜ J์˜ ๊ฒฝ์‚ฌ(Gradient)๊ฐ€ ์ž‘์•„์ง€๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๋ฉด์„œ ์†์‹ค ํ•จ์ˆ˜์˜ ๊ฐ’์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋งค๋ฒˆ์˜ Iteration๋งˆ๋‹ค ํ•ด๋‹น ๊ฐ€์ค‘์น˜์—์„œ์˜ ๋น„์šฉ ํ•จ์ˆ˜์˜ ๋„ํ•จ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฒฝ์‚ฌ๊ฐ€ ์ ์ฐจ ์ž‘์•„์งˆ ์ˆ˜ ์žˆ๋„๋ก ๊ฐ€์ค‘์น˜๋ฅผ ๋ณ€๊ฒฝ

image

  • ๊ธฐ์šธ๊ธฐ๊ฐ€ ์–‘์ˆ˜์ผ ๋•Œ๋Š” ์Œ์˜ ๋ฐฉํ–ฅ์œผ๋กœ, ๊ธฐ์šธ๊ธฐ๊ฐ€ ์Œ์ˆ˜์ผ ๋•Œ๋Š” ์–‘์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ–ฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์ค‘์น˜

  • ํŠน์ • ๊ฐ€์ค‘์น˜(ฮธi)์— ๋Œ€ํ•œ ๊ธฐ์šธ๊ธฐ๋Š” ์†์‹ค ํ•จ์ˆ˜๋ฅผ ํ•ด๋‹น ๊ฐ€์ค‘์น˜๋กœ ํŽธ๋ฏธ๋ถ„ํ•˜์—ฌ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

  • ๋ชจ๋“  ๊ฐ€์ค‘์น˜์— ๋Œ€ํ•œ ํŽธ๋ฏธ๋ถ„ ๊ฐ’์€ ์œ„์™€ ๊ฐ™์€ Chain Rule์„ ํ†ตํ•ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ตํ‹ฐ๋งˆ์ด์ €(Optimizer)

๊ฒฝ์‚ฌํ•˜๊ฐ•ํ•˜๋Š” ๋ฐฉ๋ฒ•


image

  • ์œ„ ํ‘œ๋ฅผ ๋ณด์‹œ๋ฉด, ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ•(GD)์€ ๋ชจ๋“  ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ์†์‹ค ํ•จ์ˆ˜์˜ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ณ„์‚ฐ ํ›„ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๊ต‰์žฅํžˆ ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๋ฐฉ๋ฒ•์ด ํ™•๋ฅ ์  ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•(Stochastic Gradient Descent; SGD)์œผ๋กœ Iteration ๋งˆ๋‹ค ์ž…๋ ฅ๊ฐ’ 1๊ฐœ๋งŒ ์ด์šฉํ•˜์—ฌ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์•„์ฃผ ๋น ๋ฅด์ง€๋งŒ, ๊ทธ ๋ฐฉํ–ฅ์„ฑ์ด ์ž˜๋ชป๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(๋น ๋ฅธ๋ฐ ๋ถˆ์•ˆ์ •)
  • ๊ทธ ๋‹ค์Œ, SGD์˜ ๋‹จ์ ์„ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๋ฐฉ๋ฒ•์ด ๋ฏธ๋‹ˆ๋ฐฐ์น˜ ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•(Mini-batch Gradient Descent)์ž…๋‹ˆ๋‹ค.
  • batch_size(์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜)๋ฅผ N๊ฐœ๋กœ ์„ค์ •ํ•˜๊ณ  Iteration๋งˆ๋‹ค N๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๊ฐ€์ค‘์น˜๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

image

๋ฐ์ดํ„ฐ ์ˆ˜, Batch Size, Iteration, Epoch์˜ ๊ด€๊ณ„

  • ๋ฐ์ดํ„ฐ ์ˆ˜ : # of Data ๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค
  • Batch size : ํ•œ ๋ฒˆ์˜ Iteration ๋™์•ˆ ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ˆ˜, ์ฃผ๋กœ 2์˜ ๋ฐฐ์ˆ˜๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • Iteration : (์ˆœ์ „ํŒŒ, ์†์‹ค๊ณ„์‚ฐ, ์—ญ์ „ํŒŒ)์˜ ๊ณผ์ •
  • Epoch : ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ•œ ํšŸ์ˆ˜

์˜ˆ์‹œ) ์ „์ฒด ๋ฐ์ดํ„ฐ ์ˆ˜ = 1000, batch_size = 125, epoch = 5 ์ผ ๋•Œ, ์ „์ฒด Iteration์€?
๋‹ต : 1๋ฒˆ์˜ epoch์— Iteraion ์€ 1000/125 == 8 ์ด๋ฏ€๋กœ, 8 * 5 == 40 ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.