๋”ฅ๋Ÿฌ๋‹/Today I learned :

[๋”ฅ๋Ÿฌ๋‹] ์˜ค์ฐจ ์—ญ์ „ํŒŒ (Error Back propagation) ,๊ธฐ์šธ๊ธฐ ์†Œ์‹ค(vanishing gradient) ๋ฌธ์ œ, ๊ณ ๊ธ‰ ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•

์ฃผ์˜ ๐Ÿฑ 2021. 3. 20. 10:26
728x90

์‹ ๊ฒฝ๋ง ๋‚ด๋ถ€์˜ ๊ฐ€์ค‘์น˜๋Š” ์˜ค์ฐจ ์—ญ์ „ํŒŒ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด ์ˆ˜์ •ํ•œ๋‹ค.

 

 

  • ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ•์˜ ํ™•์žฅ ๊ฐœ๋… 

               ์ž„์˜์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ฒฐ๊ด๊ฐ’์„ ์ด์šฉํ•ด ์˜ค์ฐจ๋ฅผ ๊ตฌํ•œ ๋’ค ์ด ์˜ค์ฐจ๊ฐ€ ์ตœ์†Œ์ธ ์ง€์ ์œผ๋กœ ๊ณ„์†ํ•ด์„œ ์กฐ๊ธˆ์”ฉ ์ด๋™์‹œํ‚จ๋‹ค.

               ์˜ค์ฐจ๊ฐ€ ์ตœ์†Œ๊ฐ€ ๋˜๋Š” ์ (๋ฏธ๋ถ„ํ–ˆ์„ ๋•Œ ๊ธฐ์šธ๊ธฐ๊ฐ€ 0์ด ๋˜๋Š” ์ง€์ ) ์ฐพ๊ธฐ

 

๋‹ค์ธต ํผ์…‰ํŠธ๋ก ์—์„œ์˜ ์˜ค์ฐจ ์ˆ˜์ • ๊ณผ์ •(์ตœ์ ํ™”)

 

๊ณ„์‚ฐ ๋ฐฉํ–ฅ์ด ์ถœ๋ ฅ์ธต์—์„œ ์‹œ์ž‘ํ•ด ์•ž์œผ๋กœ ์ง„ํ–‰. ์ด๋Ÿฌํ•œ ๋‹ค์ธต ํผ์…‰ํŠธ๋ก ์—์„œ์˜ ์ตœ์ ํ™” ๊ณผ์ •์„ ์˜ค์ฐจ ์—ญ์ „ํŒŒ๋ผ๊ณ  ํ•œ๋‹ค.

 = ์ถœ๋ ฅ์ธต์œผ๋กœ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์•ž์œผ๋กœ ๋˜๋Œ์•„๊ฐ€๋ฉฐ ๊ฐ ์ธต์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

 

์˜ค์ฐจ์—ญ์ „ํŒŒ ๊ตฌ๋™ ๋ฐฉ์‹

 

1 . ์ž„์˜์˜ ์ดˆ๊ธฐ ๊ฐ€์ค‘์น˜(W)๋ฅผ ์ค€ ๋’ค ๊ฒฐ๊ณผ(y out)๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

2 . ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์™€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’ ์‚ฌ์ด์˜ ์˜ค์ฐจ๋ฅผ ๊ตฌํ•œ๋‹ค.

3 . ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•์„ ์ด์šฉํ•ด ๋ฐ”๋กœ ์•ž ๊ฐ€์ค‘์น˜๋ฅผ ์˜ค์ฐจ๊ฐ€ ์ž‘์•„์ง€๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

4 . ์œ„ ๊ณผ์ •์„ ๋”์ด์ƒ ์˜ค์ฐจ๊ฐ€ ์ค„์–ด๋“ค์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค. (๊ฐ€์ค‘์น˜ - ๊ธฐ์šธ๊ธฐ , ๊ฐ€์ค‘์น˜์˜ ๋ณ€ํ™”๊ฐ€ ์—†๋Š” ์ƒํƒœ)

 

 

OR ๋ฌธ์ œ๋ฅผ ์ด๋Ÿฌํ•œ ์˜ค์ฐจ ์—ญ์ „ํŒŒ ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฝ”๋”ฉํ•ด์•ผ ํ• ๊นŒ์š”?

์•ž์„œ XOR ๋ฌธ์ œ๋ฅผ ์ฝ”๋”ฉ์œผ๋กœ ํ™•์ธํ•  ๋•Œ๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์ ‘๊ทผํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ค์ฐจ ์—ญ์ „ํŒŒ๋Š” ์ด๋ฅผ ๋ชฐ๋ผ๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ๋œ ์‹ค์ œ ๊ฐ’๊ณผ ๋‹ค์ธต ํผ์…‰ํŠธ๋ก ์˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ฐ€์ค‘์น˜๋ฅผ ์—ญ์ „ํŒŒ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •ํ•ด ๊ฐ€๋Š” ์ฝ”๋”ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

1 | ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ง€์ •: ํ™˜๊ฒฝ ๋ณ€์ˆ˜์—๋Š” ์ž…๋ ฅ ๊ฐ’๊ณผ ํƒ€๊นƒ ๊ฒฐ๊ด๊ฐ’์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์…‹, ํ•™์Šต๋ฅ  ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ™œ์„ฑํ™” ํ•จ์ˆ˜์™€ ๊ฐ€์ค‘์น˜ ๋“ฑ๋„ ์„ ์–ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2 | ์‹ ๊ฒฝ๋ง ์‹คํ–‰: ์ดˆ๊นƒ๊ฐ’์„ ์ž…๋ ฅํ•˜์—ฌ ํ™œ์„ฑํ™” ํ•จ์ˆ˜์™€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฑฐ์ณ ๊ฒฐ๊ด๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

3 | ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ ๊ฐ’๊ณผ ๋น„๊ต: ์˜ค์ฐจ๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.

4 | ์—ญ์ „ํŒŒ ์‹คํ–‰: ์ถœ๋ ฅ์ธต๊ณผ ์€๋‹‰์ธต์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

5 | ๊ฒฐ๊ณผ ์ถœ๋ ฅ

 


 

๋‹ค์ธต ํผ์…‰ํŠธ๋ก  , ์˜ค์ฐจ ์—ญ์ „ํŒŒ -> ์‹ ๊ฒฝ๋ง -> XOR๋ฌธ์ œ ํ•ด๊ฒฐ

 

 

์˜ค์ฐจ ์—ญ์ „ํŒŒ์˜ ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค(vanishing gradient) ๋ฌธ์ œ

์ธต์ด ๋Š˜์–ด๋‚˜๋ฉด์„œ ์—ญ์ „ํŒŒ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋Š” ์ด ๊ธฐ์šธ๊ธฐ์˜ ๊ฐ’์ด ์ ์  ์ž‘์•„์ ธ ๋งจ ์ฒ˜์Œ ์ธต๊นŒ์ง€ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š”๋‹ค

 

 

์ด์œ ๋Š” ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉ๋œ ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜์˜ ํŠน์„ฑ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.  ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜๋ฅผ ๋ฏธ๋ถ„ํ•˜๋ฉด ์ตœ๋Œ€์น˜๋Š” 0.3, 1๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ๊ณ„์† ๊ณฑํ•˜๋‹ค ๋ณด๋ฉด 0์— ๊ฐ€๊นŒ์›Œ์ง„๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ์ธต์„ ๊ฑฐ์น ์ˆ˜๋ก ๊ธฐ์šธ๊ธฐ๊ฐ€ ์‚ฌ๋ผ์ ธ ๊ฐ€์ค‘์น˜๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค.

 

 

ํ•ด๊ฒฐ : ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ์‹œ๊ทธ๋ชจ์ด๋“œ๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋กœ ๋Œ€์ฒด

 

๋ ๋ฃจ ํ•จ์ˆ˜ : ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ™œ์„ฑํ™” ํ•จ์ˆ˜

 

 


 

๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ•์œผ๋กœ ๊ฐ€์ค‘์น˜ ์—…๋ฐ์ดํŠธ -- ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ถ„ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ณ„์‚ฐ๋Ÿ‰์ด ๋งŽ๋‹ค --> ๋ณด์•ˆ์ฑ…: ๊ณ ๊ธ‰ ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•

 

  • ํ™•๋ฅ ์  ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•(Stochastic Gradient Descent, SGD)

์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋žœ๋คํ•˜๊ฒŒ ์ถ”์ถœํ•œ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋” ๋นจ๋ฆฌ ๊ทธ๋ฆฌ๊ณ  ์ž์ฃผ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ

 

 

  • ๋ชจ๋ฉ˜ํ…€(momentum)

๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•์— ํƒ„๋ ฅ์„ ๋”ํ•ด ์ฃผ๋Š” ๊ฒƒ. ๋‹ค์‹œ ๋งํ•ด์„œ, ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋งค๋ฒˆ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ตฌํ•˜์ง€๋งŒ, ์ด๋ฅผ ํ†ตํ•ด ์˜ค์ฐจ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์ „ ๋ฐ”๋กœ ์•ž ์ˆ˜์ • ๊ฐ’๊ณผ ๋ฐฉํ–ฅ(+, -)์„ ์ฐธ๊ณ ํ•˜์—ฌ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ์ผ์ •ํ•œ ๋น„์œจ๋งŒ ์ˆ˜์ •๋˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•.

 

๋”ฐ๋ผ์„œ ์ˆ˜์ • ๋ฐฉํ–ฅ์ด ์–‘์ˆ˜(+) ๋ฐฉํ–ฅ์œผ๋กœ ํ•œ ๋ฒˆ, ์Œ์ˆ˜(-) ๋ฐฉํ–ฅ์œผ๋กœ ํ•œ ๋ฒˆ ์ง€๊ทธ์žฌ๊ทธ๋กœ ์ผ์–ด๋‚˜๋Š” ํ˜„์ƒ์ด ์ค„์–ด๋“ค๊ณ , ์ด์ „ ์ด๋™ ๊ฐ’์„ ๊ณ ๋ คํ•˜์—ฌ ์ผ์ • ๋น„์œจ๋งŒํผ๋งŒ ๋‹ค์Œ ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๋ฏ€๋กœ ๊ด€์„ฑ์˜ ํšจ๊ณผ

 

 

 

๊ณ ๊ธ‰ ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•

๊ฐœ์š”

ํšจ๊ณผ

์ผ€๋ผ์Šค ์‚ฌ์šฉ๋ฒ•

ํ™•๋ฅ ์  ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•(SGD)

๋žœ๋คํ•˜๊ฒŒ ์ถ”์ถœํ•œ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋” ๋นจ๋ฆฌ, ์ž์ฃผ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ

์†๋„ ๊ฐœ์„ 

keras.optimizers.SGD(lr = 0.1)

์ผ€๋ผ์Šค ์ตœ์ ํ™” ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ฉ˜ํ…€

(Momentum)

๊ด€์„ฑ์˜ ๋ฐฉํ–ฅ์„ ๊ณ ๋ คํ•ด ์ง„๋™๊ณผ ํญ์„ ์ค„์ด๋Š” ํšจ๊ณผ

์ •ํ™•๋„

๊ฐœ์„ 

keras.optimizers.SGD(lr = 0.1, momentum = 0.9)

๋ชจ๋ฉ˜ํ…€ ๊ณ„์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋„ค์Šคํ…Œ๋กœํ”„ ๋ชจ๋ฉ˜ํ…€(NAG)

๋ชจ๋ฉ˜ํ…€์ด ์ด๋™์‹œํ‚ฌ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฏธ๋ฆฌ ์ด๋™ํ•ด์„œ ๊ทธ๋ ˆ์ด๋””์–ธํŠธ๋ฅผ ๊ณ„์‚ฐ. ๋ถˆํ•„์š”ํ•œ ์ด๋™์„ ์ค„์ด๋Š” ํšจ๊ณผ

์ •ํ™•๋„

๊ฐœ์„ 

keras.optimizers.SGD(lr = 0.1, momentum = 0.9, nesterov = True)

๋„ค์Šคํ…Œ๋กœํ”„ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ค๊ทธ๋ผ๋“œ

(Adagrad)

๋ณ€์ˆ˜์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žฆ์œผ๋ฉด ํ•™์Šต๋ฅ ์„ ์ ๊ฒŒ ํ•˜์—ฌ ์ด๋™ ๋ณดํญ์„ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ณดํญ ํฌ๊ธฐ ๊ฐœ์„ 

keras.optimizers.Adagrad(lr = 0.01, epsilon = 1e - 6)

์•„๋‹ค๊ทธ๋ผ๋“œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โ€ป ์ฐธ๊ณ : ์—ฌ๊ธฐ์„œ epsilon, rho, decay ๊ฐ™์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ lr, ์ฆ‰ learning rate(ํ•™์Šต๋ฅ ) ๊ฐ’๋งŒ ์ ์ ˆํžˆ ์กฐ์ ˆํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์•Œ์— ์—์Šคํ”„๋กญ

(RMSProp)

์•„๋‹ค๊ทธ๋ผ๋“œ์˜ ๋ณดํญ ๋ฏผ๊ฐ๋„๋ฅผ ๋ณด์™„ํ•œ ๋ฐฉ๋ฒ•

๋ณดํญ ํฌ๊ธฐ ๊ฐœ์„ 

keras.optimizers.RMSprop(lr = 0.001,rho = 0.9, epsilon = 1e - 08, decay = 0.0)

์•Œ์— ์—์Šคํ”„๋กญ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ด(Adam)

๋ชจ๋ฉ˜ํ…€๊ณผ ์•Œ์— ์—์Šคํ”„๋กญ ๋ฐฉ๋ฒ•์„ ํ•ฉ์นœ ๋ฐฉ๋ฒ•

์ •ํ™•๋„์™€

๋ณดํญ ํฌ๊ธฐ

๊ฐœ์„ 

keras.optimizers.Adam(lr = 0.001, beta_1 = 0.9, beta_2 = 0.999, epsilon = 1e - 08, decay = 0.0)

์•„๋‹ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 ์•„๋‹ด(Adam) =  ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ณ ๊ธ‰ ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•

๋ฐ˜์‘ํ˜•