๐Ÿ“š ์Šคํ„ฐ๋””/CS224N

[CS224N] 3. Natural Language Processing with Deep Learning

์žฅ์˜์ค€ 2023. 11. 14. 17:33

1. NER

NER์€ Named Entity Recognition์˜ ์•ฝ์ž๋กœ, ๋‹จ์–ด๋ฅผ ์ฐพ์•„ ๋ถ„๋ฅ˜ํ•˜๊ณ  ์นดํ…Œ๊ณ ๋ฆฌํ™”์‹œํ‚ค๋Š” ์ž‘์—…์ด๋‹ค. ๋‹ค์Œ์„ ์˜ˆ์‹œ๋กœ ๋“ค์–ด๋ณด์ž.

์—ฌ๊ธฐ์„œ Paris๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋‹จ์–ด์žฅ์—์„œ ์ฐพ์œผ๋ฉด ํ”„๋ž‘์Šค์˜ ํŒŒ๋ฆฌ๊ฐ€ ์ฐพ์•„์ง€์ง€๋งŒ, ๋ณธ๋ฌธ์—์„œ๋Š” ์‚ฌ๋žŒ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. ์ด๋ ‡๋“ฏ, NER์„ ์ •ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ญ์ƒ context๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

์ด๊ฑธ Neural Network์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

Simple NER: Window classification using binary logistic classfier

๋จผ์ € ์•„์ด๋””์–ด๋Š” word vectors๋ฅผ ์ด์šฉํ•ด์„œ word vectors๋กœ ์ด๋ฃจ์–ด์ง„ context window๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ๊ฑธ neural network layer์— ๋„ฃ๊ณ , logistic classifier๋ฅผ ํ†ต๊ณผ์‹œ์ผœ ํ•ด๋‹น ๋‹จ์–ด๊ฐ€ ๋ฌด์—‡์„ ๋‚˜ํƒ€๋‚ด๋Š”์ง€ ๋ถ„์„ํ•œ๋‹ค. ์˜ˆ์‹œ๋กœ, ๋‹ค์Œ ๋ฌธ์žฅ์„ ์ƒ๊ฐํ•ด ๋ณด์ž.

์ด ๋ฌธ์žฅ๋“ค์—์„œ Paris์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์‹ถ์œผ๋ฉด, ๋‹จ์–ด 'Paris'๋ฅผ ๊ธฐ์ค€์œผ๋กœ +-2 ๋งŒํผ ํฌ๊ธฐ์˜ ๋‹จ์–ด๋“ค์„ ๊ฐ€์ ธ์™€ window๋ฅผ ๋งŒ๋“ ๋‹ค.

window๋“ค์˜ ๊ฐ ๋‹จ์–ด์— ๋Œ€ํ•ด, word2vec์ด๋‚˜ Glove ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ๋‹จ์–ด๋ฅผ word vector๋“ค๋กœ ๋งŒ๋“ค๊ณ , ์ด ๋ฒกํ„ฐ๋“ค์„ classifier์— ์ „๋‹ฌํ•œ๋‹ค. ๊ทธ๋Ÿผ ๊ฒฐ๊ณผ๋กœ, ํ•ด๋‹น ๋‹จ์–ด๊ฐ€ ์œ„์น˜ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ผ ํ™•๋ฅ ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ classifier๋ฅผ ํ†ต๊ณผํ•˜๋ฉด ํ•ด๋‹น ๋‹จ์–ด๊ฐ€ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์ธ์ง€ ํŒ๋‹จํ•  ์ˆ˜๋„ ์žˆ๋‹ค. (์ด๋Š” ๋‘˜ ๋‹ค binary logistic classifier๋ฅผ ํ™œ์šฉํ•œ ์˜ˆ์‹œ์ด๋‹ค.) ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

๋งŒ์•ฝ D dimention word vector๋“ค์ด ์žˆ๋‹ค๋ฉด, input(x)์€ 5D dimention์˜ window๊ฐ€ ๋œ๋‹ค. ์ด๋ฅผ neural network์˜ layer์— ๋„ฃ์œผ๋ฉด, ํ•ด๋‹น layer์—์„œ๋Š” vector(x)๋ฅผ matrix(W)์™€ ๊ณฑํ•˜๊ณ , bias vector(b)๋ฅผ ๋”ํ•ด softmax์™€ ๊ฐ™์€ ๋น„์„ ํ˜•์„ฑ(f)์— ๋„ฃ๋Š”๋‹ค. ๊ทธ๋Ÿผ ๊ฒฐ๊ณผ๋กœ hidden vector(h)๋ฅผ ์–ป๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋Š” ํ›จ์”ฌ ์ž‘์€ ์ฐจ์›์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์ดํ›„, ํ•ด๋‹น hidden vector์™€ ์ถ”๊ฐ€์ ์ธ vector(u)์˜ dot product๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•˜๋‚˜์˜ ์‹ค์ œ ์ˆซ์ž ์‹ค์ˆ˜ (s)๋ฅผ ์–ป๊ฒŒ ๋œ๋‹ค. ์ดํ›„, ํ•ด๋‹น ์ˆซ์ž s๋ฅผ logistic classifier์— ๋„ฃ์–ด ๊ฒฐ๊ณผ๋กœ ๋‹จ์–ด์˜ ์˜ˆ์ธก ํ™•๋ฅ ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

2. Stochastic Gradient Descent

์œ„์˜ ์‹ ๊ฒฝ๋ง์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด 1) ์†์œผ๋กœ ์ง์ ‘ SGD๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ, 2) ์‹œ์Šคํ…œ์œผ๋กœ SGD๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‚˜๋ˆ„์–ด ์„ค๋ช…ํ•œ๋‹ค.

๊ฐ๊ฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ธฐ ์ „, ๋จผ์ € SGD๊ฐ€ ์–ด๋–ค ์ž‘์—…์ธ์ง€ ์•Œ์•„๋ณด์ž.

๋ชจ๋ธ์˜ ์†์‹ค์„ ์ค„์ด๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ž˜ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด, ๋ณธ ๊ฐ•์˜์—์„œ๋Š” Stochastic Gradient Descent ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด SGD์™€ Gradient Descent์™€์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๋จผ์ € Gradient Descent๋Š” ์ตœ์†Œ loss๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ํ•œ ์ง€์ ์—์„œ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ง€์ ์„ ์˜ฎ๊ฒจ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์ด๋‹ค.

https://developers.google.com/machine-learning/crash-course/reducing-loss/gradient-descent?hl=ko

๊ทธ๋Ÿฌ๋‚˜, ์ด ๋ฐฉ๋ฒ•์—์„œ๋Š” ๊ฒฝ์‚ฌ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์˜ˆ์˜ ์ง‘ํ•ฉ, batch ๊ฐ€ ๋ชจ๋“  data์ด๋‹ค. ์ฆ‰, dataset์— ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ์–ต ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ผ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํฐ batch๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ„์‚ฐ์„ ์œ„ํ•ด ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

์ด๊ฒƒ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๋ฐฉ๋ฒ•์ด SGD์ธ๋ฐ, ์ด๋Š” ํ•œ ๋ฒˆ์˜ ๋ฐ˜๋ณต๋‹น ๋‹จ ํ•œ ๊ฐœ์˜ batch๋งŒ์„ ๋ฌด์ž‘์œ„๋กœ ๋ฝ‘์•„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. '๋ฌด์ž‘์œ„'๋กœ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋งŒ์„ ์„ ํƒํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋…ธ์ด์ฆˆ๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

๊ทธ๋ž˜์„œ SGD๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๋ฐฉ๋ฒ•์ด Mini Batch SGD์ธ๋ฐ, ๋ง ๊ทธ๋Œ€๋กœ 10~1000๊ฐœ ์ •๋„์˜ batch๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์ด ํ›จ์”ฌ ์•ˆ์ •์ ์ด๋ฉด์„œ ํšจ์œจ์ ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ด์ œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ gradient๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

1. Computing Gradients by Hand

๋จผ์ €, ์†์œผ๋กœ ๊ณ„์‚ฐํ•ด ๋ณด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๋Š” vectorized gradients๋ฅผ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ, ์ด๋Š” ์–ด๋–ค ํ•ญ๋ชฉ์ด ๋ณ€ํ–ˆ์„ ๋•Œ, ๊ทธ ํ•ญ๋ชฉ์˜ ๋ณ€ํ™”๋Ÿ‰์ด ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์— ์–ผ๋งˆ๋งŒํผ์˜ ๋ณ€ํ™”๋ฅผ ์ฃผ๋Š”๊ฐ€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณธ๋‹ค.

๋จผ์ € f(x) = f(x1, x2,... , xn)์ด๋ผ๊ณ  ํ•˜์ž. ๊ทธ๋Ÿผ df/dx๋Š” partial derivatives์— ๋Œ€ํ•œ vector ํ‘œํ˜„์ด๊ณ , ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค:

์ดํ›„, Jacobian Matrix๋ฅผ ๋„์ž…ํ•œ๋‹ค. ๋จผ์ €, n๊ฐœ์˜ input์œผ๋กœ m๊ฐœ์˜ output์„ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜ f(x)๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋œ๋‹ค: f(x) = [f1(x1, x2, x3,..., xn),..., fn(x1, x2, x3,..., xn)]

์—ฌ๊ธฐ์„œ df/dx๋ฅผ ๊ตฌํ•˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด m*n matrix๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์„ Jacobian matrix๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, ๋‹ค์Œ ์˜ˆ์‹œ ๋ฌธ์ œ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ž.

f๊ฐ€ softmax ํ•จ์ˆ˜์ผ ๊ฒฝ์šฐ, h=f(z), z=Wx+b ๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๋Š” h, f, z, W, b ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. (h, z๋Š” ๋‘˜ ๋‹ค n์ฐจ์›์ด๋‹ค.)

Q. ์—ฌ๊ธฐ์„œ dh/dz๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ• ๊นŒ?

A. ๋‹ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

๋‹น์—ฐํžˆ, j ์š”์†Œ์— ๋Œ€ํ•œ i ์š”์†Œ์˜ ํŽธ๋ฏธ๋ถ„ ๊ฐ’์„ ๊ตฌํ•˜๋Š”๋ฐ, j์™€ ๊ด€๋ จ์ด ์—†์œผ๋ฉด ๊ทธ ๊ฐ’์€ 0์ด ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ, i์™€ j๊ฐ€ ๊ฐ™์„ ๋•Œ๋งŒ ๊ฐ’์ด ๋‚˜์˜ค๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋กœ jacobian matrix๋Š” ๋Œ€๊ฐํ–‰๋ ฌ์ด ๋œ๋‹ค.

 

๋‹ค๋ฅธ jacobain matrix์˜ ์˜ˆ์‹œ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค:

๋งˆ์ง€๋ง‰์€ ๋‚ด์ ๊ณฑ์— ๋Œ€ํ•œ jacobian์ธ๋ฐ, ์ด๋Š” ๋’ค ์š”์†Œ์˜ ์ „์น˜๋œ ํ–‰๋ ฌ์ด ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค.

Back to NeuralNet

์›๋ž˜๋Š” loss J๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด์ง€๋งŒ, ๊ฐ„๋‹จํ•˜๊ฒŒ score s์˜ gradient๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋Œ€์‹ ํ•ด ๋ณด์ž. ๊ทธ๋Ÿผ ๊ตฌํ•ด์•ผ ํ•  ๊ฒƒ์€ ds/db๊ฐ€ ๋œ๋‹ค. ์ฃผ์–ด์ง„ ์‹๋“ค๊ณผ Chain rule์„ ์ ์šฉํ•ด์„œ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

๋งˆ์ง€๋ง‰์˜ ํฐ์ƒ‰ ๋™๊ทธ๋ผ๋ฏธ๋Š” Hadamard product๋ฅผ ๋œปํ•œ๋‹ค.

Reusing Computation

์ด์ œ ds/db๋ฅผ ๊ตฌํ–ˆ์œผ๋‹ˆ, ds/dW๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ด๊ฑธ Chain Rule์„ ์‚ฌ์šฉํ•ด์„œ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

ds/dW = ds/dh * dh/dz * dz/dW

๊ทผ๋ฐ, ์ด๋Š” ds/db๋ฅผ ๊ตฌํ•˜๋Š” ์œ„ ์‚ฌ์ง„์˜ ์‹๊ณผ ์•ž 2 ์š”์†Œ๊ฐ€ ์™„์ „ํžˆ ๊ฐ™๋‹ค. ๋”ฐ๋ผ์„œ, duplicated computation์„ ํ”ผํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

ํŒŒ๋ž€์ƒ‰ ๋ถ€๋ถ„์€ delta๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์‹๋“ค์„ ๋‹ค์‹œ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌ๋ฉด, ๋ณต์žกํ•œ ๋˜‘๊ฐ™์€ ๊ณ„์‚ฐ์„ ๋‘ ๋ฒˆ ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ์˜ delta๋ฅผ local error signal์ด๋ผ๊ณ  ํ•œ๋‹ค. 

Output Shape - Shape Convention

์›๋ž˜์˜ ds/dW๋Š” W์™€ ๊ฐ™์€ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ ธ์•ผ parameter๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿผ, ๊ณ„์‚ฐ์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ matrix์˜ ๋ชจ์–‘์„ ๋ณด์ž. s๋Š” ํ•˜๋‚˜์˜ score์ด์–ด์•ผ ํ•˜๋ฏ€๋กœ, output์€ 1์ฐจ์›์ด ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ, ds/dW๋Š” 1x(nm) ์ฐจ์›์ด ๋œ๋‹ค. ์ด๋Š” ์›๋ž˜ W์™€์˜ ์ฐจ์› ํฌ๊ธฐ๊ฐ€ ๋งž์ง€ ์•Š์œผ๋ฉฐ, ์ด ๋•Œ๋ฌธ์— SGD๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ, Shape Convention์„ ํ†ตํ•ด 1x(nm)์„ nxm ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค. ๋ฐ”๋€ ds/dW๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

๊ทธ๋Ÿผ ๊ฒฐ๋ก ์ ์œผ๋กœ ds/dW๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„๋œ๋‹ค.

์ด๋•Œ, delta๋ฅผ ๊ตฌํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜, z = Wx + b ์ด๋ฏ€๋กœ dz/dW๋Š” x๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ •์ž‘ delta์™€ x๋ฅผ ๊ณ„์‚ฐํ•œ ๊ฒƒ์˜ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

Why Transposes?

์™œ ์ „์น˜๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ผ๊นŒ? 

์‚ฌ์‹ค ์ด์ „๊ณผ ๋น„์Šทํ•˜๊ฒŒ shape convention์œผ๋กœ dimension์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. ๋‹ค์Œ ์‚ฌ์ง„์„ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ, Jacobian Matrix๊ฐ€ ์ˆ˜ํ•™์ ์œผ๋กœ๋Š” ์ข‹์ง€๋งŒ, SGD์— ์“ฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” shape convention์ด ํ•„์ˆ˜์ ์ด๋‹ค.

 

2. Backpropagation

๊ทธ๋Ÿผ ์œ„์˜ ๊ณผ์ •๋“ค์„ ์†Œํ”„ํŠธ์›จ์–ด์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด์ž.

๋จผ์ € Backpropagation ๋ฐฉ์‹์€ higher layer์˜ derivatives๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, Computation Graph๋ฅผ ๋จผ์ € ์‚ดํŽด๋ณด์ž.

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด, ์•ž์œผ๋กœ ์ˆœ์ฐจ์ ์ธ ํŒŒ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ Forward Propagation, ์ˆœ์ „ํŒŒ๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด backpropagation์€ ๋‹น์—ฐํžˆ ๋’ค์˜ ํŒŒ๋ฅผ ์•ž์œผ๋กœ ๋ณด๋‚ด์ฃผ๋Š” ์—ญ๋ฐฉํ–ฅ์ด ๋˜๊ฒ ๊ณ , ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ณด๋‚ด์ฃผ๋Š” ํŒŒ๋Š”, gradients๋ฅผ ๋ณด๋‚ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋กœ ์ธํ•ด parameter๋“ค์ด ์—…๋ฐ์ดํŠธ๋œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๊ณผ์ •์„ ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์„์ง€๊ฐ€ ๊ด€๊ฑด์ด ๋˜๊ฒ ๋‹ค.

Backpropagation: Single Node

๋จผ์ € ์ด๋ก ์„ ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ๊ธฐ ์œ„ํ•ด single node ํ˜•ํƒœ๋ฅผ ์‚ดํŽด๋ณด์ž.

๋จผ์ €, ์œ„์—์„œ ๋‚ด๋ ค์˜ค๋Š” ์—ญ์ „ํŒŒ๋ฅผ upstream gradient, node์—์„œ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” gradient๋ฅผ Local gradient, ๊ณ„์‚ฐ๋˜์–ด ์•„๋ž˜๋กœ ๋‚ด๋ ค์ง€๋Š” gradient๋ฅผ Downstream gradient๋ผ๊ณ  ํ•˜์ž. ๊ทธ๋ ‡๋‹ค๋ฉด, backpropagation์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์ง„ ์† ๋งจ ์œ„ ๊ณต์‹์„ ๋งŒ์กฑํ•˜๊ฒŒ ๋œ๋‹ค. ๊ณต์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

[Downstream Gradient] = [Upstream Gradient] * [Local Gradient]

๊ณ„์‚ฐ ์‹œ Chain rule์„ ์ ์šฉํ•˜์—ฌ ์‚ฌ์ง„ ์† ์™ผ์ชฝ ํ•˜๋‹จ์— ๋ณด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

Example

๊ทธ๋Ÿผ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ๋ณด์ž.

์ด๋Ÿฐ ์‹์„ ๋งŒ์กฑํ•˜๋Š” f, a, b, x, y, z๊ฐ€ ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ๊ฐ x, y, z๊ฐ€ f์— ์–ผ๋งˆ๋งŒํผ์˜ ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ์•Œ์•„๋ณด์ž.

๋จผ์ € ๊ฐ๊ฐ์˜ local gradient๋ฅผ ๊ณ„์‚ฐํ•ด ๋†“๊ณ , chain rule์„ ํ†ตํ•ด ์—ญ์ „ํŒŒ๋ฅผ ๊ณ„์† ์•ž์œผ๋กœ ์ง„ํ–‰์‹œํ‚ค๋ฉด ํŒŒ๋ž€์ƒ‰ ์ˆซ์ž๊ฐ€ '์˜ํ–ฅ์„ ์ฃผ๋Š” ์ •๋„'๊ฐ€ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  y์˜ ๊ฒฝ์šฐ์—๋Š” 2๊ฐˆ๋ž˜๋กœ ๋‚˜๋ˆ„์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ๋”ํ•œ๋‹ค.

Node Intuitions

๋˜, ๋…ธ๋“œ๋ณ„ ํŠน์ง•์ด ์žˆ๋‹ค:

1. +๋…ธ๋“œ๋Š” upstream gradient๋ฅผ ๊ฐ๊ฐ ๋ถ„๋ฐฐํ•œ๋‹ค. ์œ„์—์„œ x์™€ y์—๊ฒŒ 2๊ฐ€ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ๋์Œ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

2. max ๋…ธ๋“œ๋Š” ํฐ ๊ฐ’์—์„œ upstream gradient๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ์œ„์—์„œ 3์ด (y, z) ์ค‘ ํฐ y์—๊ฒŒ ์ „๋‹ฌ๋์Œ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

3. * ๋…ธ๋“œ๋Š” ์ˆœ์ „ํŒŒ๋กœ ์˜จ ๊ฐ’์„ ๋ฐ”๊พธ์–ด์„œ ๋ฐ˜์˜ํ•œ๋‹ค. *์—๊ฒŒ ์ „๋‹ฌ๋œ *์˜ 3๊ณผ max์˜ 2๊ฐ€ ์—ญ์ „ํŒŒ์—์„œ๋Š” ์„œ๋กœ ๋’ค๋ฐ”๋€Œ์—ˆ์Œ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Efficiency

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

3. Pytorch code examples

์‚ฌ์‹ค ์œ„์˜ ๊ณผ์ •๋“ค์€ pytorch๋‚˜ tensorflow๋“ฑ์˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ฝ”๋“œ๋กœ ๋ชจ๋‘ ์ œ๊ณตํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ์ฝ”๋“œ๋งŒ ์ ์žฌ์ ์†Œ์— ์ž˜ ๋งž๊ฒŒ ์“ฐ๋ฉด ๋œ๋‹ค. ์˜ˆ์‹œ๋กœ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด, 

์ง๊ด€์ ์œผ๋กœ forward๋Š” ์ˆœ์ „ํŒŒ, backward๋Š” ์—ญ์ „ํŒŒ๋ฅผ ๋œปํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.


์ด๋ ‡๊ฒŒ, NeuralNet๊ณผ Backpropagation์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. ์ „์—๋„ ์•Œ๊ณ  ์žˆ๋˜ ๋‚ด์šฉ์ด๊ธด ํ–ˆ์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์ž์„ธํ•˜๊ฒŒ ์†์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์†Œํ”„ํŠธ์›จ์–ด์ ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๋ฒ•๊นŒ์ง€ ๋ฐฐ์šฐ๊ฒŒ ๋˜์–ด ์ข‹์•˜๋‹ค. ์‹ค์Šต๋„ ํ•ด๋ณด๊ณ  ์‹ถ์€๋ฐ.. ์šฐ์„  ๊ฐ•์˜๋ฅผ ๋‹ค ๋“ฃ๋Š” ๊ฒƒ์ด ๋จผ์ €์ธ ๊ฒƒ ๊ฐ™์•„์„œ ์•ž์œผ๋กœ๋Š” ๊ฐ•์˜๋งŒ ๊ณ„์† ์ •๋ฆฌํ•  ์ƒ๊ฐ์ด๋‹ค.