Artificial Intelligence/Studying

Gradient descent

geum 2020. 11. 14. 23:11

[๋ถ€์ŠคํŠธ์ฝ”์Šค] ํ…์„œํ”Œ๋กœ์šฐ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ์ดˆ

* ์‹ค์Šต ์†Œ์Šค ์ฝ”๋“œ : github.com/nsbg/AI

 

Concept

์ถœ์ฒ˜ : Google Developers

- ๊ฒฝ์‚ฌ๋ฅผ ๋”ฐ๋ผ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ์ตœ์ €์ ์„ ์ฐพ๋„๋ก ์„ค๊ณ„๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 

- ์ตœ์ ํ™” : ์ด๋“ ์ตœ๋Œ€ํ™”, ์†์‹ค ์ตœ์†Œํ™”

- cost ํ•จ์ˆ˜์—์„œ cost๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” W, b๋ฅผ ์ฐพ๋Š” ๊ฒƒ

 

 

How it works

1) ์ถ”์ •์„ ํ†ตํ•ด W, b ์„ค์ •(์–ด๋–ค ๊ฐ’์ด๋“  ์ƒ๊ด€์—†์Œ)

2) cost๊ฐ€ ์กฐ๊ธˆ์”ฉ ์ค„์–ด๋“ค๋„๋ก W, b ๊ฐ’ ์—…๋ฐ์ดํŠธ

3) ์ตœ์ €์ ์— ๋„๋‹ฌํ–ˆ๋‹ค๊ณ  ํŒ๋‹จ๋  ๋•Œ๊นŒ์ง€ ๊ณผ์ • 2) ๋ฐ˜๋ณต

 

∴ ๊ณก์„  ์ƒ์—์„œ ์ž„์˜์˜ ํ•œ ์ง€์ ์„ ์ •ํ•œ ํ›„ ์ด ์ ์—์„œ์˜ ๊ธฐ์šธ๊ธฐ(Gradient)๋ฅผ ๊ตฌํ•˜๊ณ , ๊ฐ€์ค‘์น˜ W์™€ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ W์—์„œ ๋นผ์คฌ์„ ๋•Œ ๊ทธ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‹ค์Œ ๊ฐ€์ค‘์น˜ W(์–ด๋–ค ์ ์—์„œ ์‹œ์ž‘ํ•ด๋„ ๊ฒฐ๊ณผ๊ฐ’์€ ๋™์ผ)

 

 

Formal definition

 

Batch(GPU๊ฐ€ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ฌถ์Œ) gradient descent

์ „์ฒด ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฐฐ์น˜๋กœ ๋ฌถ์–ด์„œ ํ•™์Šต์‹œํ‚ค๋Š” ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•์œผ๋กœ ๊ธฐ์šธ๊ธฐ๋ฅผ ํ•œ๋ฒˆ๋งŒ ๊ณ„์‚ฐํ•˜์—ฌ ๋ชจ๋ธ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์—…๋ฐ์ดํŠธ

 

โญ BGD ํŠน์ง•

- ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ํ•™์Šต์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ์ ๋‹ค. (1 epoch = 1 update)

- ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ์ ์€ ๋ฐ˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๊ณ  ํ•™์Šต์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.

- ์ „์ฒด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด Gradient๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜๋ ด์ด ์•ˆ์ •์ ์ด๋‹ค. (๋ณ€ํ™” ์ •๋„๊ฐ€ ํฌ์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ)

 

 

Stochastic(ํ™•๋ฅ ์ ) gradient descent

์ „์ฒด ํ•™์Šต ๋ฐ์ดํ„ฐ์—์„œ ๋žœ๋คํ•˜๊ฒŒ ์„ ํƒ๋œ ๋‹จ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•์„ ํ•œ๋ฒˆ๋งŒ ์ง„ํ–‰(batch ํฌ๊ธฐ๊ฐ€ 1)ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

โญ SGD ํŠน์ง•

- BGD์— ๋น„ํ•ด ํ•™์Šต์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์–ด์„œ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

- ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋ฏธ๋ถ„์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์šธ๊ธฐ์˜ ๋ฐฉํ–ฅ, ์ฆ‰ ๊ฒฐ๊ณผ์˜ ์ง„ํญ์ด ๋งค๋ฒˆ ๋ถˆ๊ทœ์น™ํ•˜๊ณ  ํฌ๊ฒŒ ๋ณ€ํ™”ํ•œ๋‹ค.

- ๋ชจ๋ธ ์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ๊ฐ€ ์งง๊ณ  ์„ฑ๋Šฅ ๊ฐœ์„  ์ •๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

- cost๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” W์— ์ˆ˜๋ ดํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ํŒ๋‹จ์ด ์–ด๋ ค์šด ํŽธ์ด๋‹ค. 

- ์˜ค์ฐจ์œจ์ด ํฌ๊ณ  GPU์˜ ์„ฑ๋Šฅ์„ ๋ชจ๋‘ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค.

 

 

Mini-batch stochastic gradient descent

ํ˜„์žฌ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ธฐ๋ฒ•์œผ๋กœ BGD๋ณด๋‹ค ๋น ๋ฅด๊ณ  SGD๋ณด๋‹ค ์˜ค์ฐจ์œจ์ด ๋‚ฎ์€ ํ•™์Šต ๋ฐฉ๋ฒ•์ด๋‹ค. ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋ฐฐ์น˜ ์‚ฌ์ด์ฆˆ๋กœ ๋‚˜๋ˆ ์„œ ํ•™์Šต์‹œํ‚จ๋‹ค.

 

ex) ์ „์ฒด ๋ฐ์ดํ„ฐ๊ฐ€ 100๊ฐœ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šต & ๋ฐฐ์น˜ ํฌ๊ธฐ 20์œผ๋กœ ๊ฐ€์ •

→ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ 20๊ฐœ์”ฉ 5๋ฌถ์Œ์˜ ๋ฐฐ์น˜๋กœ ๋‚˜๋ˆ  1 epoch = 5 update ์ง„ํ–‰

 

โญ MSGD ํŠน์ง•

- ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธด ํ•˜์ง€๋งŒ ํ•œ ๋ฐฐ์น˜ ์†์‹ค๊ฐ’์˜ ํ‰๊ท ์œผ๋กœ ํ•™์Šต์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— SGD๋งŒํผ ์˜ค์ฐจ๊ฐ€ ์‹ฌํ•˜์ง€ ์•Š๋‹ค.

 

 

BGD / SGD / MSGD