HOME
home
About
home
๐Ÿ’ฅ

Transfomer Detail Ver.

โ ํŠธ๋žœ์Šคํฌ๋จธ๋ž€?

ํŠธ๋žœ์Šคํฌ๋จธ(Transformer)๋Š” 2017๋…„ ๊ตฌ๊ธ€์ด ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ์ธ โ€œAttention is all you needโ€์—์„œ ๋‚˜์˜จ ๋ชจ๋ธ๋กœ ๊ธฐ์กด์˜ seq2seq์˜ ๊ตฌ์กฐ์ธ ์ธ์ฝ”๋”-๋””์ฝ”๋”๋ฅผ ๋”ฐ๋ฅด๋ฉด์„œ๋„, ๋…ผ๋ฌธ์˜ ์ด๋ฆ„์ฒ˜๋Ÿผ ์–ดํ…์…˜(Attention)๋งŒ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ RNN์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์ธ์ฝ”๋”-๋””์ฝ”๋” ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜์˜€์Œ์—๋„ ์„ฑ๋Šฅ๋„ RNN๋ณด๋‹ค ์šฐ์ˆ˜ํ•˜๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ–๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด์˜ seq2seq ๋ชจ๋ธ์˜ ํ•œ๊ณ„

ํŠธ๋žœ์Šคํฌ๋จธ์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šฐ๊ธฐ ์ „์— ๊ธฐ์กด์˜ seq2seq๋ฅผ ์ƒ๊ธฐํ•ด๋ณด๋ฉด, ๊ธฐ์กด์˜ seq2seq๋ชจ๋ธ์€ ์ธ์ฝ”๋”-๋””์ฝ”๋” ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ธ์ฝ”๋”๋Š” ์ž…๋ ฅ ์‹œํ€€์Šค๋ฅผ ํ•˜๋‚˜์˜ ๋ฒกํ„ฐ ํ‘œํ˜„์œผ๋กœ ์••์ถ•ํ•˜๊ณ , ๋””์ฝ”๋”๋Š” ์ด ๋ฒกํ„ฐ ํ‘œํ˜„์„ ํ†ตํ•ด์„œ ์ถœ๋ ฅ ์‹œ์ฟผ์Šค๋ฅผ ๋งŒ๋“ค์–ด๋ƒˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ์ธ์ฝ”๋”๊ฐ€ ์ž…๋ ฅ ์‹œ์ฟผ์Šค๋ฅผ ํ•˜๋‚˜์˜ ๋ฒกํ„ฐ๋กœ ์••์ถ•ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ž…๋ ฅ ์‹œ์ฟผ์Šค์˜ ์ •๋ณด๊ฐ€ ์ผ๋ถ€ ์†์‹ค๋œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ๊ณ , ์ด๋ฅผ ๋ณด์ •ํ•˜๊ธฐ ์œ„ํ•ด ์–ดํ…์…˜์ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์–ดํ…์…˜์„ RNN์˜ ๋ณด์ •์„ ์œ„ํ•œ ์šฉ๋„๊ฐ€ ์•„๋‹ˆ๋ผ ์•„์˜ˆ ์–ดํ…์…˜์œผ๋กœ ์ธ์ฝ”๋”์™€ ๋””์ฝ”๋”๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉด ์–ด๋–จ๊นŒ์š”?

โ ํŠธ๋žœ์Šคํฌ๋จธ (Transformer) ์˜ ์ฃผ์š” ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ

์‹œ์ž‘์— ์•ž์„œ ํŠธ๋žœ์Šคํฌ๋จธ์˜ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์˜๋ฏธ์— ๋Œ€ํ•ด์„œ๋Š” ๋’ค์—์„œ ์„ค๋ช…ํ•˜๊ธฐ๋กœํ•˜๊ณ , ์—ฌ๊ธฐ์„œ๋Š” ํŠธ๋žœ์Šคํฌ๋จธ์—๋Š” ์ด๋Ÿฌํ•œ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ์ •๋„๋กœ๋งŒ ์ดํ•ดํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์ •์˜ํ•˜๋Š” ์ˆ˜๊ฐ’์€ ํŠธ๋žœ์Šคํฌ๋จธ๋ฅผ ์ œ์•ˆํ•œ ๋…ผ๋ฌธ์—์„œ ์‚ฌ์šฉํ•œ ์ˆ˜๊ฐ’์œผ๋กœ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋ธ ์„ค๊ณ„์‹œ ์ž„์˜๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’๋“ค์ž…๋‹ˆ๋‹ค.
dmodel=512d_{model} = 512 ํŠธ๋žœ์Šคํฌ๋จธ์˜ ์ธ์ฝ”๋”์™€ ๋””์ฝ”๋”์—์„œ์˜ ์ •ํ•ด์ง„ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์˜ ํฌ๊ธฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ์˜ ์ฐจ์› ๋˜ํ•œ ์ด๋ฉฐ, ๊ฐ ์ธ์ฝ”๋”์™€ ๋””์ฝ”๋”๊ฐ€ ๋‹ค์Œ ์ธต์˜ ์ธ์ฝ”๋”์™€ ๋””์ฝ”๋”๋กœ ๊ฐ’์„ ๋ณด๋‚ผ ๋•Œ์—๋„ ์ด ์ฐจ์›์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” 512 ์ž…๋‹ˆ๋‹ค.
num_layers = 6 ํŠธ๋žœ์Šคํฌ๋จธ์—์„œ ํ•˜๋‚˜์˜ ์ธ์ฝ”๋”์™€ ๋””์ฝ”๋”๋ฅผ ์ธต์œผ๋กœ ์ƒ๊ฐํ•˜์˜€์„ ๋•Œ, ํŠธ๋žœ์Šคํฌ๋จธ ๋ชจ๋ธ์—์„œ ์ธ์ฝ”๋”์™€ ๋””์ฝ”๋”๊ฐ€ ์ด ๋ช‡์ธต์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” ์ธ์ฝ”๋”์™€ ๋””์ฝ”๋”๋ฅผ ๊ฐ๊ฐ ์ด 6๊ฐœ ์Œ“์•˜์Šต๋‹ˆ๋‹ค.
numheads = 8 ํŠธ๋žœ์Šคํฌ๋จธ์—์„œ๋Š” ์–ดํ…์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ, 1 ๋ฒˆ ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• ํ•ด์„œ ๋ณ‘๋ ฌ๋กœ ์–ดํ…์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๊ฐ’์„๋‹ค์‹œ ํ•˜๋ƒ๋กœ ํ•ฉ์น˜๋Š” ๋ฐฉ์‹์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ด ๋ณ‘๋ ฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
dffd_{ff} =2048 ํŠธ๋žœ์Šคํฌ๋จธ ๋‚ด๋ถ€์—๋Š” ํ”ผ๋“œ ํฌ์›Œ๋“œ ์‹ ๊ฒฝ๋ง์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์€๋‹‰์ธต์˜ ํฌ๊ธฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ”ผ๋“œ ํฌ์›Œ๋“œ ์‹ ๊ฒฝ๋ง์˜ ์ž…๋ ฅ์ธต๊ณผ ์ค„๋ ฅ์ธต์˜ ํฌ๊ธฐ๋Š” ์ž…๋‹ˆ๋‹ค.

โ ํŠธ๋žœ์Šคํฌ๋จธ ๊ตฌ์กฐ

โ€˜๋‚˜โ€™ ์œ„์˜ ๊ทธ๋ฆผ์€ ์ธ์ฝ”๋”๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ๋””์ฝ”๋”๊ฐ€ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ํŠธ๋žœ์Šคํฌ๋จธ ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋””์ฝ”๋”๋Š” ๋งˆ์น˜ ๊ธฐ์กด์˜ seq2seq ๊ตฌ์กฐ์ฒ˜๋Ÿผ, ์‹œ์ž‘ ์‹ฌ๋ณผ <sos>๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ์ข…๋ฃŒ ์‹ฌ๋ณผ <eos>๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” RNN์€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ ์—ฌ์ „ํžˆ ์ธ์ฝ”๋”-๋””์ฝ”๋”์˜ ๊ตฌ์กฐ๋Š” ์œ ์ง€๋˜๊ณ  ์˜€์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด์ œ ํŠธ๋žœ์Šคํฌ๋จธ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์กฐ๊ธˆ์”ฉ ํ™•๋Œ€ํ•ด๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ํŠธ๋žœ์Šคํฌ๋จธ๋ฅผ ์ดํ•ดํ•ด๋ณด๋ฉด, ์šฐ์„  ์ธ์ฝ”๋”์™€ ๋””์ฝ”๋”์˜ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์ „์— ํŠธ๋žœ์Šคํฌ๋จธ์˜ ์ž…๋ ฅ์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์Šคํฌ๋จธ์˜ ์ธ์ฝ”๋”์™€ ๋””์ฝ”๋”๋Š” ๋‹จ์ˆœํžˆ ๊ฐ ๋‹จ์–ด์˜ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ๋“ค์„ ์ž…๋ ฅ๋ฐ›๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ์—์„œ ์กฐ์ •๋œ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๋Š”๋ฐ ์ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์ž…๋ ฅ ๋ถ€๋ถ„์„ ํ™•๋Œ€ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

โ ํฌ์ง€์…”๋„ ์ธ์ฝ”๋”ฉ(Positional Encoding)

ํŠธ๋žœ์Šคํฌ๋จธ์˜ ๋‚ด๋ถ€๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์ „์— ์šฐ์„  ํŠธ๋žœ์Šคํฌ๋จธ์˜ ์ž…๋ ฅ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. RNN ์ด ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ์—์„œ ์œ ์šฉํ–ˆ๋˜ ์ด์œ ๋Š” ๋‹จ์–ด์˜ ์œ„์น˜์— ๋”ฐ๋ผ ๋‹จ์–ด๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž…๋ ฅ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๋Š” RNN์˜ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๊ฐ ๋‹จ์–ด์˜ ์œ„์น˜ ์ •๋ณด(position information)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์˜€์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠธ๋žœ์Šคํฌ๋จธ๋Š” ๋‹จ์–ด ์ž…๋ ฅ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ›๋Š” ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋‹จ์–ด์˜ ์œ„์ง€ ์ •๋ณด๋ฅผ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์•Œ๋ ค์ค„ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์Šคํฌ๋จธ๋Š” ๋‹จ์–ด์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ ๊ฐ ๋‹จ์–ด์˜ ์ž„๋ฒ ๋ฉ ๋ฒกํ„ฐ์— ์œ„์ง€ ์ •๋ณด๋“ค์„ ๋”ํ•˜์—ฌ ๋ชจ๋ธ์˜ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋ฅผ ํฌ์ง€์…”๋„ ์ธ์ฝ”๋”ฉ(positional encod ing)์ด๋ผ๊ณ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆผ์€ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ๋“ค์ด ํŠธ๋žœ์Šคํฌ๋จธ์˜ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— ํฌ์ง€์…”๋„ ์ธ์ฝ”๋”ฉ๊ฐ’์ด ๋”ํ•ด์ง€๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ๊ฐ€ ์ธ์ฝ”๋”์˜ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— ํฌ์ง€์…”๋„ ์ธ์ฝ”๋”ฉ๊ฐ’์ด ๋”ํ•ด์ง€๋Š” ๊ณผ์ •์„ ์‹œ๊ฐํ™”ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํฌ์ง€์…”๋„ ์ธ์ฝ”๋”ฉ ๊ฐ’๋“ค์€ ์–ด๋–ค ๊ฐ’์ด๊ธฐ์— ์œ„์น˜ ์ •๋ณด๋ฅผ ๋ฐ˜์˜ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ์š”? ํŠธ๋žœ์Šคํฌ๋จธ๋Š” ์œ„์ง€ ์ •๋ณด๋ฅผ ๊ฐ€์ง„ ๊ฐ’์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ์•„๋ž˜์˜ ๋‘ ๊ฐœ์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
PE(pos,2i)=sinโก(pos100002idmodelย )PE(pos,2i+1)=cosโก(pos100002idmodelย )P E_{(p o s, 2 i)}=\sin \left(\frac{p o s}{10000^{\frac{2 i}{d_{\text {model }}}}}\right) \quad P E_{(p o s, 2 i+1)}=\cos \left(\frac{p o s}{10000^{\frac{2 i}{d_{\text {model }}}}}\right)
์‚ฌ์ธ ํ•จ์ˆ˜์™€ ์ฝ”์‚ฌ์ธ ํ•จ์ˆ˜์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ์ƒ๊ธฐํ•ด๋ณด๋ฉด ์š”๋™์น˜๋Š” ๊ฐ’์˜ ํ˜•ํƒœ๋ฅผ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ํŠธ๋žœ์Šคํฌ๋จธ๋Š” ์‚ฌ์ธ ํ•จ์ˆ˜์™€ ์ฝ”์‚ฌ์ธ ํ•จ์ˆ˜์˜ ๊ฐ’์„ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ์— ๋”ํ•ด์ฃผ๋ฏ€๋กœ์„œ ๋‹จ์–ด์˜ ์ˆœ์„œ ์ •๋ณด๋ฅผ ๋”ํ•˜์—ฌ ์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์œ„์˜ ๋‘ ํ•จ์ˆ˜์—๋Š” pospos, ii, dmodeld_{model} ๋“ฑ์˜ ์ƒ์†Œํ•œ ๋ณ€์ˆ˜๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ํ•จ์ˆ˜๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์—์„œ ๋ณธ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ์™€ ํฌ์ง€์…”๋„ ์ธ์ฝ”๋”ฉ์˜ ๋ง์…ˆ์€ ์‚ฌ์‹ค ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ๊ฐ€ ๋ชจ์—ฌ ๋งŒ๋“ค์–ด์ง„, ๋ฌธ์žฅ ๋ฒกํ„ฐ-ํ–‰๋ ฌ๊ณผ ํฌ์ง€์…”๋„ ์ธ์ฝ”๋ฉ ํ–‰๋ ฌ์˜ ๋ง์ƒ˜ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.
CODE

โ ์–ดํ…์…˜ (Attention)

ํŠธ๋žœ์Šคํฌ๋จธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์„ธ ๊ฐ€์ง€์˜ ์–ดํ…์…˜์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ด…์‹œ๋‹ค. ์ง€๊ธˆ์€ ํฐ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜๋Š”๊ฒƒ์—๋งŒ ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค.
์ฒซ๋ฒˆ์งธ ๊ทธ๋ฆผ์ธ ์…€ํ”„ ์–ดํ…์…˜์€ ์ธ์ฝ”๋”์—์„œ ์ด๋ฃจ์–ด์ง€์ง€๋งŒ, ๋‘๋ฒˆ์งธ ๊ทธ๋ฆผ์ธ ์…€ํ”„ ์–ดํ…์…˜๊ณผ ์„ธ๋ฒˆ์งธ ๊ทธ๋ฆผ์ธ ์ธ์ฝ”๋”-๋””์ฝ”๋” ์–ดํ…์…˜์€ ๋””์ฝ”๋”์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
์…€ํ”„ ์–ดํ…์…˜์€ ๋ณธ์งˆ์ ์œผ๋กœ Query, Key, Value๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ์„ธ๋ฒˆ์งธ ๊ทธ๋ฆผ ์ธ์ฝ”๋”-๋””์ฝ”๋” ์–ดํ…์…˜์—์„œ๋Š” Query๊ฐ€ ๋””์ฝ”๋”์˜ ๋ฒกํ„ฐ์ธ ๋ฐ˜๋ฉด์— Key์™€ Value๊ฐ€ ์ธ์ฝ”๋”์˜ ๋ฒกํ„ฐ์ด๋ฏ€๋กœ ์…€ํ”„ ์–ดํ…์…˜์ด๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์œ„ ๊ทธ๋ฆผ์€ ํŠธ๋žœ์Šคํฌ๋จธ์˜ ์•„ํ‚คํ…์ฒ˜์—์„œ ์„ธ ๊ฐ€์ง€ ์–ดํ…์…˜์ด ๊ฐ๊ฐ ์–ด๋””์—์„œ ์ด๋ฃจ์–ด์ง€๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์„ธ ๊ฐœ์˜ ์–ดํ…์…˜์— ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฉ€ํ‹ฐ ํ—ค๋“œ'๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๋’ค์—์„œ ์„ค๋ช…ํ•˜๊ฒ ์ง€๋งŒ, ์ด๋Š” ํŠธ๋žœ์Šคํฌ๋จธ๊ฐ€ ์–ดํ…์…˜์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

โ ์ธ์ฝ”๋”(Encoder)

ํŠธ๋žœ์Šคํฌ๋จธ๋Š” ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ์ธ num_layers ๊ฐœ์ˆ˜์˜ ์ธ์ฝ”๋” ์ธต์„ ์Œ“์Šต๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” ์ด 6๊ฐœ์˜ ์ธ์ฝ”๋”์ธต์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ธ์ฝ”๋”๋ฅผ ํ•˜๋‚˜์˜ ์ธต์ด๋ผ๋Š” ๊ฐœ๋…์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค๋ฉด, ํ•˜๋‚˜์˜ ์ธ์ฝ”๋” ์ธต์€ ํฌ๊ฒŒ ์ด 2๊ฐœ์˜ ์„œ๋ธŒ์ธต(sublayer) ์œผ๋กœ ๋‚˜๋‰˜์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์…€ํ”„ ์–ดํ…์…˜๊ณผ ํ”ผ๋“œ ํฌ์›Œ๋“œ ์‹ ๊ฒฝ๋ง์ž…๋‹ˆ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ๋Š” ๋ฉ€ํ‹ฐ ํ—ค๋“œ ์…€ํ”„ ์–ดํ…์…˜๊ณผ ํฌ์ง€์…˜ ์™€์ด์ฆˆ ํ”ผ๋“œ ํฌ์›Œ๋“œ ์‹ ๊ฒฝ๋ง์ด๋ผ๊ณ  ์ ํ˜€์žˆ์ง€๋งŒ, ๋ฉ€ํ‹ฐ ํ—ค๋“œ์…€ํ”„ ์–ดํ…์…˜์€ ์…€ํ”„ ์–ดํ…์…˜์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์˜€๋‹ค๋Š” ์˜๋ฏธ๊ณ , ํฌ์ง€์…˜ ์™€์ด์ฆˆ ํ”ผ๋“œ ํฌ์›Œ๋“œ ์‹ ๊ฒฝ๋ง์€ ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ํ”ผ๋“œ ํฌ์›Œ๋“œ ์‹ ๊ฒฝ๋ง์ž…๋‹ˆ๋‹ค. ์šฐ์„  ์…€ํ”„ ์–ดํ…์…˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด…์‹œ๋‹ค.

โ ์…€ํ”„ ์–ดํ…์…˜์˜ ์˜๋ฏธ์™€ ์ด์ 

์–ดํ…์…˜ ํ•จ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ์ฟผ๋ฆฌ(Query)โ€™์— ๋Œ€ํ•ด์„œ ๋ชจ๋“  'ํ‚ค (Key)โ€™์™€์˜ ์œ ์‚ฌ๋„๋ฅผ ๊ฐ๊ฐ ๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ตฌํ•ด๋‚ธ ์ด ์œ ์‚ฌ๋„๋ฅผ ๊ฐ€์ค‘์น˜๋กœ ํ•˜์—ฌ ํ‚ค์™€ ๋งตํ•‘๋˜์–ด์žˆ๋Š” ๊ฐ๊ฐ์˜ โ€™๊ฐ’ (Value)โ€™์— ๋ฐ˜์˜ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ ์‚ฌ๋„๊ฐ€ ๋ฐ˜์˜๋œ โ€™๊ฐ’(Value)โ€™์„ ๋ชจ๋‘ ๊ฐ€์ค‘ํ•ฉํ•˜์—ฌ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
Q = Query : t ์‹œ์ ์˜ ๋””์ฝ”๋” ์…€์—์„œ์ด ์€๋‹‰ ์ƒํƒœ K = Keys : ๋ชจ๋“  ์‹œ์ ์œผ| ์ธ์ฝ”๋” ์…€์˜ ์€๋‹‰ ์ƒํƒœ๋“ค V = Values : ๋ชจ๋“  ์‹œ์ ์˜ ์ธ์ฝ”๋” ์…€์˜ ์€๋‹‰ ์ƒ๋Œ€๋“ค
๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์‹ค t ์‹œ์ ์ด๋ผ๋Š” ๊ฒƒ์€ ๊ณ„์† ๋ณ€ํ™”ํ•˜๋ฉด์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๊ฒฐ๊ตญ ์ „์ œ ์‹œ์ ์— ๋Œ€ํ•ด์„œ ์ผ๋ฐ˜ํ™”๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
Q = Querys : ๋ชจ๋“  ์‹œ์ ์˜ ๋””์ฝ”๋„ˆ ์…€์—์„œ์˜ ์€๋‹‰ ์ƒํƒœ๋“ค K = Keys : ๋ชจ๋“  ์‹œ์ ์˜ ์ธ์ฝ”๋„ˆ ์…€์˜ ์€๋‹‰ ์ƒํƒœ๋“ค V = Values : ๋ชจ๋“  ์‹œ์ ์˜ ์ธ์ฝ”๋” ์…€์˜ ์€๋‹‰ ์ƒ๋Œ€๋“ค
์ด์ฒ˜๋Ÿผ ๊ธฐ์กด์—๋Š” ๋””์ฝ”๋” ์…€์˜ ์€๋‹‰ ์ƒํƒœ๊ฐ€ Q์ด๊ณ  ์ธ์ฝ”๋” ์…ธ์˜ ์€๋‹‰ ์ƒํƒœ๊ฐ€ K๋ผ๋Š” ์ ์—์„œ Q์™€ K๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์…€ํ”„ ์–ดํ…์…˜์—์„œ๋Š” Q, K, V๊ฐ€ ์ „๋ถ€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์Šคํฌ๋จธ์˜ ์…€ํ”„ ์–ดํ…์…˜์—์„œ์˜ Q, K, V๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Q = Querys : ๋ชจ๋“  ์‹œ์ ์˜ ๋””ไธ‘๋” ์…€์—์„œ์˜ ์€๋‹‰ ์ƒํƒœ๋“ค K = Keys : ๋ชจ๋“  ์‹œ์ ์˜ ์ธ์ฝ”๋” ์…€์˜ ์€๋‹‰ ์ƒ๋Œ€๊ธ‰ V = Values : ๋ชจ๋“  ์‹œ์ ์˜ ์ธ๊ถŒๆ›ฐ ์…€์˜ ์€๋‹‰ ์ƒ๋Œ€๋“ค
์…€ํ”„ ์–ดํ…์…˜์— ๋Œ€ํ•œ ๊ตฌ์ œ์ ์ธ ์‚ฌํ•ญ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— ์…€ํ”„ ์–ดํ…์…˜์„ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ํšจ๊ณผ์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•ด๋ด…์‹œ๋‹ค.
์œ„์˜ ๊ทธ๋ฆผ์€ ํŠธ๋žœ์Šคํฌ๋จธ์— ๋Œ€ํ•œ ๊ตฌ๊ธ€ AI ๋ถˆ๋กœ๊ทธ ํฌ์ŠคํŠธ์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์‹œ ๋ฌธ์žฅ์„ ๋ฒˆ์—ญํ•˜๋ฉด '๊ทธ ๋™๋ฌผ์€ ๊ธธ์„ ๊ฑด๋„ˆ์ง€ ์•Š์•˜๋‹ค. ์™œ๋ƒ๋ฉด ๊ทธ๊ฒƒ์€ ๋„ˆ๋ฌด ํ”ผ๊ณคํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.โ€™ ๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ๊ทธ๊ฒƒ(it)์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์€ ๊ณผ์—ฐ ๊ธธ (street)์ผ๊นŒ์š”? ๋™๋ฌผ (anima|) ์ผ๊นŒ์š”? ์šฐ๋ฆฌ๋Š” ํ”ผ๊ณคํ•œ ์ฃผ์ œ๊ฐ€ ๋™๋ฌผ์ด๋ผ๋Š” ๊ฒƒ์„ ์•„์ฃผ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ธฐ๊ณ„๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์…€ํ”„ ์–ดํ…์…˜์€ ์ž…๋ ฅ ๋ฌธ์žฅ ๋‚ด์˜ ๋‹จ์–ด๋“ค๋ผ๋ฆฌ ์œ ์‚ฌ๋„๋ฅผ ๊ตฌํ•˜๋ฏ€๋กœ์„œ ๊ทธ๊ฒƒ(it)์ด ๋™๋ฌผ(animal) ๊ณผ ์—ฐ๊ด€๋˜์—ˆ์„ ํ™•๋ฅ ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์„ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค.

โ Q, K, V ๋ฒกํ„ฐ ์–ป๊ธฐ

์•ž์„œ ์…€ํ”„ ์–ดํ…์…˜์€ ์ž…๋ ฅ ๋ฌธ์žฅ์˜ ๋‹จ์–ด ๋ฒกํ„ฐ๋“ค์„ ๊ฐ€์ง€๊ณ  ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ํ•˜์˜€๋Š”๋ฐ, ์‚ฌ์‹ค ์…€ํ”„ ์–ดํ…์…˜์€ ์ธ์ฝ”๋”์˜ ์ดˆ๊ธฐ ์ž…๋ ฅ์ธ d_model ์˜ ์ฐจ์›์„ ๊ฐ€์ง€๋Š” ๋‹จ์–ด ๋ฒกํ„ฐ๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ์…€ํ”„ ์–ดํ…์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์šฐ์„  ๊ฐ ๋‹จ์–ด ๋ฒกํ„ฐ๋“ค๋กœ๋ถ€ํ„ฐ Q๋ฒกํ„ฐ, K ๋ฒกํ„ฐ, V๋ฒกํ„ฐ๋ฅผ ์–ป๋Š” ์ž‘์—…์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ด Q๋ฒกํ„ฐ, K ๋ฒกํ„ฐ, V๋ฒกํ„ฐ๋“ค์€ ์ดˆ๊ธฐ ์ž…๋ ฅ์ธ d_model ์˜ ์ž์›์„ ๊ฐ€์ง€๋Š” ๋‹จ์–ด ๋ฒกํ„ฐ๋“ค๋ณด๋‹ค ๋” ์ž‘์€ ์ž์›์„ ๊ฐ€์ง€๋Š”๋ฐ,๋…ผ๋ฌธ์—์„œ๋Š” dmodeld_{model}= 512 ์˜ ์ž์›์„ ๊ฐ€์กŒ๋˜ ๊ฐ ๋‹จ์–ด ๋ฒกํ„ฐ๋“ค์„ 64์˜ ์ฐจ์›์„ ๊ฐ€์ง€๋Š” Q๋ฒกํ„ฐ, K๋ฒกํ„ฐ, v๋ฒกํ„ฐ๋กœ ๋ณ€์™„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. 64๋ผ๋Š” ๊ฐ’์€ ํŠธ๋žœ์Šคํฌ๋จธ์˜ ๋˜ ๋‹ค๋ฅธ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ์ธ num_heads ๋กœ ์ธํ•ด ๊ฒฐ์ •๋˜๋Š”๋ฐ, ํŠธ๋žœ์Šคํฌ๋จธ๋Š” dmodeld_{model} ์„ num_heads๋กœ ๋‚˜๋ˆˆ ๊ฐ’์„ ๊ฐ Q๋ฒกํ„ฐ, K๋ฒกํ„ฐ, V๋ฒกํ„ฐ์˜ ์ฐจ์›์œผ๋กœ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” num_heads ๋ฅผ 8๋กœํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ์ดํ•ดํ•ด๋ด…์‹œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•˜๊ณ  ์˜€๋Š” ์˜ˆ๋ฌธ ์ค‘ student๋ผ๋Š” ๋‹จ์–ด ๋ฒกํ„ฐ๋ฅผ Q,K,VQ, K, V์˜ ๋ฒกํ„ฐ๋กœ ๋ณ€์™„ํ•˜๋Š” ๊ณผ์ • ์„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ธฐ์กด์˜ ๋ฒกํ„ฐ๋กœ๋ถ€ํ„ฐ ๋” ์ž‘์€ ๋ฒกํ„ฐ๋Š” ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์„ ๊ณฑํ•˜๋ฏ€๋กœ์„œ ์™„์„ฑ ๊ฐ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์€ dmodeld_{model} ร—(dmodelnumย heads)\times\left(\frac{d_{model}} {\text{num heads}}\right)์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด ๊ฐ€์ค‘์ง€ ํ–‰๋ ฌ์€ ํ›ˆ๋ จ ๊ณผ์ •์—์„œ ํ•™์Šต๋ฉ๋‹ˆ๋‹ค.
์ฆ‰, ๋…ผ๋ฌธ๊ณผ ๊ฐˆ์ด dmodeld_{model} = 512 ์ด๊ณ  num_heads = 8๋ผ๋ฉด, ๊ฐ ๋ฒกํ„ฐ์— 3๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ€์ค‘์ง€ ํ–‰๋ ฌ์„ ๊ณฑํ•˜๊ณ  64์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๋Š” Q,K,VQ, K, V ๋ฒกํ„ฐ๋ฅผ ์–ป์–ด๋ƒ…๋‹ˆ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์€ ๋‹จ์–ด ๋ฒกํ„ฐ ์ค‘ student ๋ฒกํ„ฐ๋กœ๋ถ€ํ„ฐ Q,K,VQ, K, V ๋ฒกํ„ฐ๋ฅผ ์–ป์–ด๋‚ด๋Š” ๋ชจ์Šต์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ชจ๋“  ๋‹จ์–ด ๋ฒกํ„ฐ์— ์œ„์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด I, am, a, student๋Š” ๊ฐ๊ฐ์˜ Q,K,VQ, K, V ๋ฒกํ„ฐ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

โ ์Šค์ผ€์ผ๋“œ ๋‹ท-ํ”„๋กœ๋•ํŠธ ์–ดํ…์…˜

Q,K,VQ, K, V ๋ฒกํ„ฐ๋ฅผ ์–ป์—ˆ๋‹ค๋ฉด ์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” ๊ธฐ์กด์— ๋ฐฐ์šด ์–ดํ…์„  ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ฐ QQ ๋ฒกํ„ฐ๋Š” ๋ชจ๋“  KK ๋ฒกํ„ฐ์— ๋Œ€ํ•ด์„œ ์–ดํ…์…˜ ์Šค์ฝ”์–ด๋ฅผ ๊ตฌํ•˜๊ณ , ์–ดํ…์…˜ ๋ถ„ํฌ๋ฅผ ๊ตฌํ•œ ๋’ค์— ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  VV ๋ฒกํ„ฐ๋ฅผ ๊ฐ€์ค‘ํ•ฉํ•˜์—ฌ ์–ดํ…์…˜ ๊ฐ’ ๋˜๋Š” ์ปจํ…์ŠคํŠธ ๋ฒกํ„ฐ๋ฅผ ๊ตฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ๋ชจ๋“  Q ๋ฐฑํ„ฐ์— ๋Œ€ํ•ด์„œ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์•ž์„œ ์–ดํ…์…˜ ์ฑ•ํ„ฐ์—์„œ ์–ดํ…์…˜ ํ•จ์ˆ˜์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์–‘ํ•˜๋‹ค๊ณ  ์–ธ๊ธ‰ํ•œ ๋ฐ” ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์Šคํฌ๋จธ์—์„œ๋Š” ์–ดํ…์…˜ ์ฑ•ํ„ฐ์— ์‚ฌ์šฉํ–ˆ๋˜ ๋‚ด์ ๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ์–ดํ…์…˜ ํ•จ์ˆ˜ score(q,k)score(q, k) = qโ€ขkq โ€ข k ๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๊ธฐ์— ํŠน์ •๊ฐ’์œผ๋กœ ๋‚˜๋ˆ ์ค€ ์–ดํ…์…˜ ํ•จ์ˆ˜์ธ score(q,k)score( q, k) =qโ€ขk/../n q โ€ข k/ ../n ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์–ดํ…์…˜์„ ์–ดํ…์„  ์ฑ•ํ„ฐ์—์„œ ๋ฐฐ์šด ๋‹ท-ํ”„๋กœ๋•ํŠธ ์–ดํ…์…˜ (dot-product attention) ์—์„œ ๊ฐ’์„ ์Šค์ผ€์ผ๋งํ•˜๋Š” ๊ฒƒ์„ ์ฃผ๊ฐ€ํ•˜์˜€๋‹ค๊ณ  ํ•˜์—ฌ ์Šค์ผ€์ผ๋“œ ๋‹ท-ํ”„๋ฅด๋•ํŠธ ์–ดํ…์…˜(Scaled dot-product Attention) ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ์ดํ•ดํ•ด๋ด…์‹œ๋‹ค.
์šฐ์„  ๋‹จ์–ด II์— ๋Œ€ํ•œ QQ๋ฒกํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ ์„ค๋ช…ํ•˜๋Š” ๊ณผ์ •์€ am์— ๋Œ€ํ•œ QQ๋ฒกํ„ฐ, a์— ๋Œ€ํ•œ Q๋ฒกํ„ฐ, student์— ๋Œ€ํ•œ Q๋ฒกํ„ฐ์— ๋Œ€ํ•ด์„œ๋„ ๋ชจ๋‘ ๋™์ผํ•œ ๊ณผ์ •์„ ๊ฑฐ์ง‘๋‹ˆ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์€ ๋‹จ์–ด I์— ๋Œ€ํ•œ Q ๋ฒกํ„ฐ๊ฐ€ ๋ชจ๋“  K ๋ฒกํ„ฐ์— ๋Œ€ํ•ด์„œ ์–ดํ…์…˜ ์Šค์ฝ”์–ด๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์œ„์˜ 128๊ณผ 32๋Š” ์ €์ž๊ฐ€ ์ž„์˜๋กœ ๊ฐ€์ •ํ•œ ์ˆ˜์ง€๋กœ ์‹ ๊ฒฝ์“ฐ์ง€์•Š์•„๋„์ข‹์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์–ดํ…์„  ์Šค์ฝ”์–ด๋Š” ๊ฐ๊ฐ ๋‹จ์–ด II ๊ฐ€ ๋‹จ์–ด I, am, a, student์™€ ์–ผ๋งˆ๋‚˜ ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ˆ˜์น˜์ž…๋‹ˆ๋‹ค. ํŠธ๋žœ์Šคํฌ๋จธ์—์„œ๋Š” ๋‘ ๋ฒกํ„ฐ์˜ ๋‚ด์ ๊ฐ’์„ ์Šค์ผ€์ผ๋งํ•˜๋Š” ๊ฐ’์œผ๋กœ KK ๋ฒกํ„ฐ์˜ ์ž์›์„ ๋‚˜ํƒ€๋‚ด๋Š” dkd_k์— ๋ฃจํŠธ๋ฅผ ์”Œ์šด๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ํ•˜์˜€๋“ฏ์ด ๋…ผ๋ฌธ์—์„œ dkd_k ๋Š” ๋ผ๋Š” ์‹์— ๋”ฐ๋ผ์„œ 64์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฏ€๋กœ dk\sqrt{d_{k}} ๋Š”8์˜ ๊ฐ’์„๊ฐ€์ง‘๋‹ˆ๋‹ค.
CODE

โ ํ–‰๋ ฌ ์—ฐ์‚ฐ์œผ๋กœ ์ผ๊ด„ ์ฒ˜๋ฆฌํ•˜๊ธฐ

์‚ฌ์‹ค ๊ฐ ๋‹จ์–ด์— ๋Œ€ํ•œ Q,K,VQ, K, V ๋ฒกํ„ฐ๋ฅผ ๊ตฌํ•˜๊ณ  ์Šค์ผ€์ผ๋“œ ๋‹ท-ํ”„๋กœ๋•ํŠธ ์–ดํ…์„ ์„ ์ˆ˜ํ–‰ํ•˜์˜€๋˜ ์œ„์˜ ๊ณผ์ •๋“ค์€ ๋ฒกํ„ฐ ์—ฐ์‚ฐ์ด ์•„๋‹ˆ๋ผ ํ–‰๋ ฌ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๊ด„ ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋ฒกํ„ฐ ์—ฐ์‚ฐ์œผ๋กœ ์„ค๋ช…ํ•˜์˜€๋˜ ์ด์œ ๋Š” ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•œ ๊ณผ์ •์ด๊ณ , ์‹ค์ œ๋กœ๋Š” ํ–‰๋ ฌ ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์œ„์˜ ๊ณผ์ •์„ ๋ฒกํ„ฐ๊ฐ€ ์•„๋‹Œ ํ–‰๋ ฌ ์—ฐ์‚ฐ์œผ๋กœ ์ดํ•ดํ•ด๋ด…์‹œ๋‹ค. ์šฐ์„ , ๊ฐ ๋‹จ์–ด ๋ฒกํ„ฐ๋งˆ๋‹ค ์ผ์ผํžˆ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์„ ๊ณฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฌธ์žฅ ํ–‰๋ ฌ์— ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์„ ๊ณฑํ•˜์—ฌ QQํ–‰๋ ฌ, KKํ–‰๋ ฌ, VVํ–‰๋ ฌ์„ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ ํ–‰๋ ฌ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ์–ดํ…์„  ์Šค์ฝ”์–ด๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ์—ฌ๊ธฐ์„œ Q ํ–‰๋ ฌ์„ K ํ–‰๋ ฌ์„ ์ „์น˜ํ•œ ํ–‰๋ ฌ๊ณผ ๊ณฑํ•ด์ค€๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฐ๊ฐ์˜ ๋‹จ์–ด์˜ Q๋ฒกํ„ฐ์™€ K๋ฒกํ„ฐ์˜ ๋‚ด์ ์ด ๊ฐ ํ–‰๋ ฌ์˜ ์›์†Œ๊ฐ€ ๋˜๋Š” ํ–‰๋ ฌ์ด ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค.
๋‹ค์‹œ ๋งํ•ด ์œ„์˜ ๊ทธ๋ฆผ์˜ ๊ฒฐ๊ณผ ํ–‰๋ ฌ์˜ ๊ฐ’์— ์ „์ฒด์ ์œผ๋กœ ๋ฅผ ๋‚˜๋ˆ„์–ด์ฃผ๋ฉด ์ด๋Š” ๊ฐ ํ–‰๊ณผ ์—ด์ด ์–ดํ…์„  ์Šค์ฝ”์–ด๊ฐ’์„ ๊ฐ€์ง€๋Š” ํ–‰๋ ฌ์ด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด I ํ–‰๊ณผ st udent ์—ด์˜ ๊ฐ’์€ I ์˜ Q๋ฒกํ„ฐ์™€ student์˜ K ๋ฒกํ„ฐ์˜ ์–ดํ…์…˜ ์Šค์ฝ”์–ด์™€ ๋™์ผํ•œํ–‰๋ ฌ์ด ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์–ดํ…์„  ์Šค์ฝ”์–ด ํ–‰๋ ฌ์ž…๋‹ˆ๋‹ค. ์–ดํ…์„  ์Šค์ฝ”์–ด ํ–‰๋ ฌ์„ ๊ตฌํ•˜์˜€๋‹ค๋ฉด ๋‚จ์€ ๊ฒƒ์€ ์–ดํ…์…˜ ๋ถ„ํฌ๋ฅผ๊ตฌํ•˜๊ณ , ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋‹จ์–ด์— ๋Œ€ํ•œ ์–ดํ…์…˜ ๊ฐ’์„ ๊ตฌํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์–ดํ…์„  ์Šค์ฝ”์–ด ํ–‰๋ ฌ์— ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , V ํ–‰๋ ฌ์„ ๊ณฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฐ ๋‹จ์–ด์˜ ์–ดํ…์…˜ ๊ฐ’์„ ๋ชจ๋‘ ๊ฐ€์ง€๋Š” ์–ดํ…์…˜๊ฐ’ ํ–‰๋ ฌ์ด ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค.
์œ„์˜ ๊ทธ๋ฆผ์€ ํ–‰๋ ฌ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋ชจ๋“  ๊ฐ’์ด ์ผ๊ด„ ๊ณ„์‚ฐ๋˜๋Š” ๊ณผ์ •์„ ์‹์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํ•ด๋‹น ์‹์€ ์‹ค์ œ ํŠธ๋žœ์Šคํฌ๋จธ ๋…ผ๋ฌธ์— ๊ธฐ์žฌ๋œ ์•„๋ž˜์˜ ์ˆ˜์‹๊ณผ ์ •ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•˜๋Š” ์‹์ž…๋‹ˆ๋‹ค.
Attentionโก(Q,K,V)=softmaxโก(QKTdk)V\operatorname{Attention}(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V
์œ„์˜ ํ–‰๋ ฌ ์—ฐ์‚ฐ์— ์‚ฌ์šฉ๋œ ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋ฅผ ๋ชจ๋‘ ์ •๋ฆฌํ•ด๋ด…์‹œ๋‹ค. ์šฐ์„  ์ž…๋ ฅ ๋ฌธ์žฅ์˜ ๊ธธ์ด๋ฅผ seq_len์ด๋ผ๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์žฅ ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋Š” ((seq_len, dmodeld_{model})) ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— 3๊ฐœ์˜ ๊ฐ€์ค‘์ง€ ํ–‰๋ ฌ์„ ๊ณฑํ•ด์„œ Q,K,VQ, K, V ํ–‰๋ ฌ์„ ๋งŒ๋“ค์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
์šฐ์„  ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋ฅผ ์ •์˜ํ•˜๊ธฐ ์›Œํ•ด ํ–‰๋ ฌ์˜ ๊ฐ ํ–‰์— ํ•ด๋‹น๋˜๋Š” QQ ๋ฒกํ„ฐ์™€ KK ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ dkd_k๋ผ๊ณ  ํ•˜๊ณ , VV ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ dvd_v ๋ผ๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด QQ ํ–‰๋ ฌ๊ณผ KK ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋Š” (seq_len, dkd_k) ์ด๋ฉฐ, VVํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋Š” (seq_len, dvd_v) ๊ฐ€ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์žฅ ํ–‰๋ ฌ๊ณผ Q,K,VQ, K, V ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์˜ ํฌ๊ธฐ ์ถ”์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. WQW^Q์™€ WKW^K๋Š” (dmodeld_{model}, dkd_k) ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, WVW^V ๋Š” (dmodeld_{model}, dvd_v) ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋‹จ, ๋…ผ๋ฌธ์—์„œ๋Š” dkd_k ์™€ dvd_v ์˜ ํฌ๊ธฐ๋Š” dmodeld_{model} ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ฆ‰, (dmodelnumย heads)\left(\frac{d_{model}} {\text{num heads}}\right) = dkd_k = dvd_v ์ž…๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ์ ์œผ๋กœ
softmaxโก(QKTdk)V\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V์‹์„ ์ ์šฉํ•˜์—ฌ ๋‚˜์˜ค๋Š” ์–ดํ…์…˜ ๊ฐ’ ํ–‰๋ ฌ a์˜ ํฌ๊ธฐ๋Š” (seq_len, dvd_v)์ด ๋ฉ๋‹ˆ๋‹ค.
์‹ค์Šต CODE

๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์…˜ (Multi -head Attention)

์•ž์„œ ๋ฐฐ์šด ์–ดํ…์„ ์—์„œ๋Š” dmodeld_{model} ์˜ ์ž์›์„ ๊ฐ€์ง„ ๋‹จ์–ด ๋ฒกํ„ฐ๋ฅผ num_heads๋กœ ๋‚˜๋ˆˆ ์ž์›์„ ๊ฐ€์ง€๋Š” Q,K,VQ, K, V ๋ฒกํ„ฐ๋กœ ๋ฐ”๊พธ๊ณ  ์–ดํ…์„ ์œจ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋…ผ๋ฌธ ๊ธฐ์ค€์œผ๋กœ๋Š” 512์˜ ์ž์›์˜ ๊ฐ ๋‹จ์–ด ๋ฒกํ„ฐ๋ฅผ 8๋กœ ๋‚˜๋ˆ„์–ด 64์ฐจ์›์˜ Q,K,VQ, K, V ๋ฒกํ„ฐ๋กœ ๋ฐ”๊พธ์–ด์„œ ์–ดํ…์…˜์„ ์ˆ˜ํ–‰ํ•œ ์ƒ˜์ธ๋ฐ, ์ด์ œ num_heads ์˜ ์˜๋ฏธ์™€ ์™œ dmodel ์˜ ์ž์›์„ ๊ฐ€์ง„ ๋‹จ์–ด ๋ฒกํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์–ดํ…์…˜์„ ํ•˜์ง€ ์•Š๊ณ  ์ž์›์„ ์ถ•์†Œ์‹œํ‚จ ๋ฒกํ„ฐ๋กœ ์–ดํ…์…˜์„ ์ˆ˜ํ–‰ํ•˜์˜€๋Š”์ง€ ์ดํ•ดํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
ํŠธ๋žœ์Šคํฌ๋จธ ์—ฐ๊ตฌ์ง„์€ ํ•œ ๋ฒˆ์˜ ์–ดํ…์…˜์„ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์—ฌ๋Ÿฌ๋ฒˆ์˜ ์–ดํ…์…˜์„ ๋ณ‘๋ ฌ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ๊ณผ์ ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ dmodeld_{model}์˜ ์ž์›์„ num_heads๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด dmodeld_{model}/num_heads ์˜ ์ฐจ์›์„ ๊ฐ€์ง€๋Š” Q,K,VQ, K, V์— ๋Œ€ํ•ด์„œ num_heads ๊ฐœ์˜ ๋ณ‘๋ ฌ ์–ดํ…์…˜์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ์ธ num_heads ์˜ ๊ฐ’์„ 8๋กœ ์ง€์ •ํ•˜์˜€๊ณ , 8๊ฐœ์˜ ๋ณ‘๋ ฌ ์–ดํ…์…˜์ด ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์œ„์—์„œ ์„ค๋ช…ํ•œ ์–ดํ…์…˜์ด 8๊ฐœ๋กœ ๋ณ‘๋ ฌ๋กœ ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋˜๋Š”๋ฐ,์ด๋•Œ ๊ฐ๊ฐ์˜ ์–ดํ…์…˜ ๊ฐ’ ํ–‰๋ ฌ์„ ์–ดํ…์„  ํ—ค๋“œ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ด๋•Œ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ WQW^Q, WKW^K, WVW^V ์˜ ๊ฐ’์€ 8๊ฐœ์˜ ์–ดํ…์…˜ ํ—ค๋“œ๋งˆ๋‹ค ์ „๋ถ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
๋ณ‘๋ ฌ ์–ดํ…์„ ์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ํšจ๊ณผ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ๊ทธ๋ฆฌ์Šค๋กœ๋งˆ์‹ ํ™”์—๋Š” ๋จธ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ดด๋ฌผ ํžˆ๋“œ๋ผ๋‚˜ ์ผ€๋กœ๋ฒ ๋กœ์Šค๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด ๊ดด๋ฌผ๋“ค์˜ ํŠน์ง•์€ ๋จธ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์‹œ์ ์—์„œ ์ƒ๋Œ€๋ฐฉ์„ ๋ถˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ๋˜๋ฉด ์‹œ๊ฐ์—์„œ ๋†“์น˜๋Š” ๊ฒŒ ๋ณ„๋กœ ์—†์„ํ…Œ๋‹ˆ๊นŒ ์ด๋Ÿฐ ๊ดด๋ฌผ๋“ค์—๊ฒŒ ๊ธฐ์Šต์„ ํ•˜๋Š” ๊ฒƒ์ด ๊ต‰์žฅํžˆ ํž˜์ด ๋“ค๊ฒ๋‹ˆ๋‹ค.
๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์…˜๋„ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค. ์–ดํ…์…˜์„ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋‹ค๋ฅธ ์‹œ๊ฐ์œผ๋กœ ์ •๋ณด๋“ค์„ ์ˆ˜์ง‘ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์‚ฌ์šฉํ•œ ์˜ˆ๋ฌธ '๊ทธ ๋™๋ฌผ์€ ๊ธธ์„ ๊ฑด๋„ˆ์ง€ ์•Š์•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์€ ๋„ˆ๋ฌด ํ”ผ๊ณคํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.๋ฅผ ์ƒ๊ธฐํ•ด๋ด…์‹œ๋‹ค. ๋‹จ์–ด ๊ทธ๊ฒƒ(it)์ด ์ฟผ๋ฆฌ์˜€๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ์ฆ‰, it์— ๋Œ€ํ•œ Q๋ฒกํ„ฐ๋กœ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ๋‹จ์–ด์™€์˜ ์—ฐ๊ด€๋„๋ฅผ ๊ตฌํ•˜์˜€์„ ๋•Œ ์ฒซ๋ฒˆ์งธ ์–ดํ…์„  ํ—ค๋“œ๋Š” '๊ทธ๊ฒƒ(it)โ€™๊ณผ '๋™๋ฌผ(anima|)โ€™ ์˜ ์—ฐ๊ด€๋„๋ฅผ ๋†’๊ฒŒ ๋ณธ๋‹ค๋ฉด, ๋‘๋ฒˆ์งธ ์–ดํ…์„  ํ—ค๋“œ๋Š” '๊ทธ๊ฒƒ (it)โ€™๊ณผ 'ํ”ผ๊ณคํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค(tired)' ์˜ ์—ฐ๊ด€๋„๋ฅผ ๋†’๊ฒŒ ๋ถˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์–ดํ…์…˜ ํ—ค๋“œ๋Š” ์ „๋ถ€ ๋‹ค๋ฅธ ์‹œ๊ฐ์—์„œ ๋ณด๊ณ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋ณ‘๋ ฌ ์–ดํ…์„ ์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•˜์˜€๋‹ค๋ฉด ๋ชจ๋“  ์–ดํ…์…˜ ํ—ค๋“œ๋ฅผ ์—ฐ๊ฒฐ(concatenate) ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ์—ฐ๊ฒฐ๋œ ์–ดํ…์…˜ ํ—ค๋“œ ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋Š” (seq_len, dmodeld_{model}) ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๊ทธ๋ฆผ์—์„œ๋Š” ๋…ธ์…˜์˜ ์ง€๋ฉด์ƒ์˜ ํ•œ๊ณ„๋กœ 4์ž์›์„ dmodeld_{model} = 512 ๋กœ ํ‘œํ˜„ํ•˜๊ณ , 2์ฐจ์›์„ dvd_v = 64๋กœ ํ‘œํ˜„ํ•ด์™”๊ธฐ ๋•Œ๋ฌธ์— ์œ„์˜ ๊ทธ๋ฆผ์˜ ํ–‰๋ ฌ์˜ ํฌ๊ธฐ์— ํ˜ผ๋™์˜ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‚˜ 8๊ฐœ์˜ ์–ดํ…์„  ํ—ค๋“œ์˜ ์—ฐ๊ฒฐ (concatenate), ๊ณผ์ •์„ ์ดํ•ด๋ฅผ ์œ„ํ•ด ์ด๋ฒˆ ํ–‰๋ ฌ๋งŒ ์˜ˆ์™ธ๋กœ ์œ„์™€ ๊ฐ™์ด dmodeld_{model} ์˜ ํฌ๊ธฐ๋ฅผ dvd_v ์˜ 8 ๋ฐฐ์ธ 16์ฐจ์›์œผ๋กœ ํ‘œํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ์—์„œ๋Š” ๋‹ค์‹œ dmodeld_{model}๋ฅผ 4์ฐจ์›์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์…˜ (Multi -head Attention)

์–ดํ…์…˜ ํ—ค๋“œ๋ฅผ ๋ชจ๋‘ ์—ฐ๊ฒฐํ•œ ํ–‰๋ ฌ์€ ๋˜ ๋‹ค๋ฅธ ๊ฐ€์ค‘์ง€ ํ–‰๋ ฌ WoW^o ์„ ๊ณฑํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋‚˜์˜จ ๊ฒฐ๊ณผ ํ–‰๋ ฌ์ด ๋ฉ€ํ‹ฐ-ํ—ค๋“œ ์–ดํ…์…˜์˜ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์ž…๋‹ˆ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์€ ์–ดํ…์…˜ ํ—ค๋“œ๋ฅผ ๋ชจ๋‘ ์—ฐ๊ฒฐํ•œ ํ–‰๋ ฌ์ด ๊ฐ€์ค‘์ง€ ํ–‰๋ ฌ WoW^o ๊ณผ ๊ณฑํ•ด์ง€๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ์ค๋‹ˆ๋Œœ ์ด๋•Œ ๊ฒฐ๊ณผ๋ฌผ์ธ ๋ฉ€ํ‹ฐ-ํ—ค๋“œ ์–ดํ…์…˜ ํ–‰๋ ฌ์€ ์ธ์ฝ”๋”์˜ ์ž…๋ ฅ์ด์—ˆ๋˜ ๋ฌธ์žฅ ํ–‰๋ ฌ์˜ (seq_len, dmadeld_{madel}) ํฌ๊ธฐ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ธ์ฝ”๋”์˜ ์ฒซ๋ฒˆ์งธ ์„œ๋ธŒ์ธต์ธ ๋ฉ€ํ‹ฐ-ํ—ค๋“œ ์–ดํ…์…˜ ๋‹จ๊ณ„๋ฅผ ๋๋งˆ์ณค์„ ๋•Œ, ์ธ์ฝ”๋”์˜ ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์™”๋˜ ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๊ฐ€ ์•„์ง ์œ ์ง€๋˜๊ณ  ์žˆ์Œ์„ ๊ธฐ์–ตํ•ด๋‘ก์‹œ๋‹ค. ์ฒซ๋ฒˆ์งธ ์„œ๋ธŒ์ธต์ธ ๋ฉ€ํ‹ฐ-ํ—ค๋“œ ์–ดํ…์…˜๊ณผ ๋‘๋ฒˆ์งธ ์„œ๋ธŒ์ธต์ธ ํฌ์ง€์„  ์™€์ด์ฆˆ ํ”ผ๋“œ ํฌ์›Œ๋“œ ์‹ ๊ฒฝ๋ง์„ ์ง€๋‚˜๋ฉด์„œ ์ธ์ฝ”๋”์˜ ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ฌ ๋•Œ์˜ ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋Š” ๊ณ„์† ์œ ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์Šคํฌ๋จธ๋Š”๋‹ค์ˆ˜์˜ ์ธ์ฝ”๋”๋ฅผ ์Œ“์€ ํ˜•ํƒœ์ธ๋ฐ(๋…ผ๋ฌธ์—์„œ๋Š” ์ธ์ฝ”๋”๊ฐ€ 6๊ฐœ), ์ธ์ฝ”๋”์—์„œ์˜ ์ž…๋ ฅ์˜ ํฌ๊ธฐ๊ฐ€ ์ค„๋ ฅ์—์„œ๋„ ๋™์ผ ํฌ๊ธฐ๋กœ ๊ณ„์† ์œ ์ง€๋˜์–ด์•ผ๋งŒ ๋‹ค์Œ ์ธ์ฝ”๋”์—์„œ๋„ ๋‹ค์‹œ ์ž…๋ ฅ์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์…˜ (Multi -head Attention) ๊ตฌํ˜„ํ•˜๊ธฐ

๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์„ ์—์„œ๋Š” ํฌ ๊ฒŒ ๋‘ ์ข…๋ฅ˜์˜ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์ด L~์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ Q,K,VQ, K, V ํ–‰๋ ฌ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์ธ WO,WK,WVW^O, W^K, W^V ํ–‰๋ ฌ๊ณผ ๋ฐ”๋กœ ์–ดํ…์…˜ ํ—ค๋“œ๋“ค์„ ์—ฐ๊ฒฐ (conca tenation) ํ›„์— ๊ณฑํ•ด์ฃผ๋Š” WOW^O ํ–‰๋ ฌ์ž…๋‹ˆ๋‹ค. ๊ฐ€์ค‘์ง€ ํ–‰๋ ฌ์„ ๊ณฑํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ ์ƒ์—์„œ๋Š” ์ž…๋ ฅ์„ ๋ฐ€์ง‘์ธต(Dense layer)๋ฅผ ์ง€๋‚˜๊ฒŒ ํ•˜๋ฏ€๋กœ์„œ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ผ€๋ผ์Šค ์ฝ”๋“œ ์ƒ์œผ๋กœ ์ง€๊ธˆ๊นŒ์ง€ ์ค„๊ธฐ์ž๊ฒŒ ์‚ฌ์šฉํ•ด์™”๋˜ Dense()์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.
๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์…˜์˜ ๊ตฌํ˜„์€ ํฌ๊ฒŒ ๋‹ค์„ฏ ๊ฐ€์ง€ ํŒŒํŠธ๋กœ ๊ตฌ์„ฑ 1. WQ,WK,WVW^Q, W^K, W^V์— ํ•ด๋‹นํ•˜๋Š” dmodeld_{model} ํฌ๊ธฐ์˜ ๋ฐ€์ง‘์ธต(Dense layer}์„ ์ง€๋‚˜๊ฒŒํ•œ๋‹ค 2. ์ง€์ •๋œ ํ—ค๋“œ ์ˆ˜(num_heads)๊ด€ํผ ๋‚˜๋ˆˆ๋‹ค(split). 3. ์Šค์ผ€์ผ๋“œ ๋‹ท ํ”„๋กœ๋•ํŠธ ์–ดํ…์„ . 4. ๋‚˜๋ˆ ์กŒ๋˜ ํ—ค๋“œ๋“ค์„ ์—ฐ๊ฒฐ (concatenateti on) ํ•œ๋‹ค. 5. WOW^O์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ€์ง‘์ฆ์„ ์ง€๋‚˜๊ฒŒ ํ•œ๋‹ค.
์ฝ”๋“œ

ํŒจ๋”ฉ ๋งˆ์Šคํฌ (Padding Mask)

์Šค์ผ€์ผ๋“œ ๋‹ท ํ”„๋กœ๋•ํŠธ ์–ดํ…์„  ํ•จ์ˆ˜ ๋‚ด๋ถ€๋ฅผ ๋ณด๋ฉด mask๋ผ๋Š” ๊ฐ’์„ ์ธ์ž๋กœ ๋ฐ›์•„์„œ, ์ด mask๊ฐ’์—๋‹ค๊ฐ€ -le9๋ผ๋Š” ์•„์ฃผ ์ž‘์˜จ ์Œ์ˆ˜๊ฐ’์„ ๊ณฑํ•œ ํ›„ ์–ดํ…์…˜ ์Šค์ฝ”์–ด ํ–‰๋ ฌ์— ๋”ํ•ด์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์—ฐ์‚ฐ์˜ ์ •์ œ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?
def scaled_dot_product_attention(query, key, value, mask): ...์ค‘๋žต... logits += (mask * -1e9) #์–ดํ…์…˜ ์Šค์ฝ”์–ด ํ–‰๋ ฌ์ธ logits ์— mask * -1e9๊ฐ’์„ ๋”ํ•ด์ฃผ๊ณ  ์žˆ๋‹ค. ...์ค‘๋žต...
Python
๋ณต์‚ฌ
์ด๋Š” ์ž…๋ ฅ ๋ฌธ์žฅ์— <PAD> ํ† ํฐ์ด ์žˆ์„ ๊ฒฝ์šฐ ์–ดํ…์…˜์—์„œ ์‚ฌ์‹ค์ƒ ์ œ์™ธํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ์‚ฐ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด <PAD>๊ฐ€ ํฌํ•จ๋œ ์ž…๋ ฅ ๋ฌธ์žฅ์˜ ์…€ํ”„ ์–ดํ…์…˜์˜ ์˜ˆ์ œ๋ฅผ ๋ด…์‹œ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ ์–ดํ…์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์–ดํ…์…˜ ์Šค์ฝ”์–ด(Attention Score) ํ–‰๋ ฌ์„ ์–ป๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์‹ค ๋‹จ์–ด <PAD>์˜ ๊ฒฝ์šฐ์—๋Š” ์‹ค์งˆ์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ๋‹จ์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํŠธ๋žœ์Šคํฌ๋จธ์—์„œ๋Š” Key์˜ ๊ฒฝ์šฐ์— <PAD> ํ† ํฐ์ด ์กด์žฌํ•œ๋‹ค๋ฉด ์ด์— ๋Œ€ํ•ด์„œ๋Š” ์œ ์‚ฌ๋„๋ฅผ ๊ตฌํ•˜์ง€ ์•Š๋„๋ก ๋งˆ์Šคํ‚น (Masking)์„ ํ•ด์ฃผ๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งˆ์Šคํ‚น์ด๋ž€ ์–ดํ…์„ ์—์„œ ์ œ์™ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ’์„ ๊ฐ€๋ฆฐ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์–ดํ…์„  ์Šค์ฝ”์–ด ํ–‰๋ ฌ์—์„œ ํ–‰์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์žฅ์€ Query์ด๊ณ , ์—ด์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์žฅ์€ Key์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Key์— <PAD>๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ์—ด ์ „์ œ๋ฅผ ๋งˆ์Šคํ‚น์„ ํ•ด์ค๋‹ˆ๋‹ค.
๋งˆ์Šคํ‚น์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์–ดํ…์…˜ ์Šค์ฝ”์–ด ํ–‰๋ ฌ์˜ ๋งˆ์Šคํ‚น ์œ„์ง€์— ๋งค์šฐ ์ž‘์€ ์Œ์ˆ˜๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งค์šฐ ์ž‘์€ ์Œ์ˆ˜๊ฐ’์ด๋ผ๋Š” ๊ฒƒ์€ -1,000,000,000๊ณผ ๊ฐ™์€ -๋ฌดํ•œ๋Œ€์— ๊ฐ€๊นŒ์šด ์ˆ˜๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์–ดํ…์…˜ ์Šค์ฝ”์–ด ํ•จ์ˆ˜๋Š” ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ ์ง€๋‚˜์ง€ ์•Š์€ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์•ž์„œ ๋ฐฐ์šด ์—ฐ์‚ฐ ์ˆœ์„œ๋ผ๋ฉด ์–ดํ…์…˜ ์Šค์ฝ”์–ด ํ•จ์ˆ˜๋Š” ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ ์ง€๋‚˜๊ณ , ๊ทธ ํ›„ Value ํ–‰๋ ฌ๊ณผ ๊ณฑํ•ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ˜„์žฌ ๋งˆ์Šคํ‚น ์œ„์ง€์— ๋งค์šฐ ์ž‘์€ ์Œ์ˆ˜ ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์–ดํ…์…˜ ์Šค์ฝ”์–ด ํ–‰๋ ฌ์ด ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ ์ง€๋‚œ ํ›„์—๋Š” ํ•ด๋‹น ์œ„์ง€์˜ ๊ฐ’์€ 0์— ๊ต‰์žฅํžˆ ๊ฐ€๊นŒ์šด ๊ฐ’์ด ๋˜์–ด ๋‹จ์–ด ๊ฐ„ ์œ ์‚ฌ๋„๋ฅผ ๊ตฌํ•˜๋Š” ์ผ์— <PAD> ํ† ํฐ์ด ๋ฐ˜์˜๋˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์œ„ ๊ทธ๋ฆผ์€ ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ ์ง€๋‚œ ํ›„๋ฅผ ๊ฐ€์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ ์ง€๋‚˜๋ฉด ๊ฐ ํ–‰์˜ ์–ดํ…์„  ๊ฐ€์ค‘์ง€์˜ ์ดํ•ฉ์€ 1 ์ด ๋˜๋Š”๋ฐ, ๋‹จ์–ด <PAD> ์˜ ๊ฒฝ์šฐ์—๋Š” 0 ์ด ๋˜์–ด ์–ด๋–ค ์œ ์˜๋ฏธํ•œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจ๋ฉ ๋งˆ์Šคํฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ž…๋ ฅ๋œ ์ •์ˆ˜ ์‹œํ€€์Šค์—์„œ ํŒจ๋”ฉ ํ† ํฐ์˜ ์ธ๋ฑ์Šค์ธ์ง€, ์•„๋‹Œ์ง€๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ํ•จ์ˆ˜๋Š” ์ •์ˆ˜ ์‹œํ€€์Šค์—์„œ 0์ธ ๊ฒฝ์šฐ์—๋Š” 1 ๋กœ ๋ณ€์™„ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” 0์œผ๋กœ ๋ณ€์™„ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
def create_padding_mask(x): mask = tf.cast(tf.math.equal(x,0), tf.float32) #(batch_size, 1, 1, key์˜ ๋ฌธ์žฅ๊ธธ์ด) return mask[:, tf.newaxis, tf.newaxis, :]
Python
๋ณต์‚ฌ
์ž„์˜์˜ ์ •์ˆ˜ ์‹œํ€€์Šค ์ž…๋ ฅ์„ ๋„ฃ์–ด์„œ ์–ด๋–ป๊ฒŒ ๋ณ€์™„๋˜๋Š”์ง€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
prinit(create_padding_mask(tf.constant([[1,21,777,0,0]])))
Python
๋ณต์‚ฌ
์œ„ ๋ฒกํ„ฐ๋ฅผ ํ†ตํ•ด์„œ 1 ์˜ ๊ฐ’์„ ๊ฐ€์ง„ ์œ„์น˜์˜ ์—ด์„ ์–ดํ…์…˜ ์Šค์ฝ”์–ด ํ–‰๋ ฌ์—์„œ ๋งˆ์Šคํ‚นํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ ๋ฒกํ„ฐ๋ฅผ ์Šค์ผ€์ผ๋“œ ๋‹ท ํ”„๋กœ๋•ํŠธ ์–ดํ…์…˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋ฉด, ์Šค์ผ€์ผ๋“œ ๋‹ท ํ”„๋กœ๋•ํŠธ ์–ดํ…์„ ์—์„œ๋Š” ์œ„ ๋ฒกํ„ฐ์—๋‹ค๊ฐ€ ๋งค์šฐ ์ž‘์€ ์Œ์ˆ˜๊ฐ’์ธ -le9๋ฅผ ๊ณฑํ•˜๊ณ , ์ด๋ฅผ ํ–‰๋ ฌ์— ๋”ํ•ด์ฃผ์–ด ํ•ด๋‹น ์—ด์„ ์ „๋ถ€ ๋งˆ์Šคํ‚นํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ์„œ๋ธŒ์ธต์ธ ๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์…˜์„ ๊ตฌํ˜„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์ธ์ฝ”๋”๋Š” ๋‘ ๊ฐœ์˜ ์„œ๋ธŒ ์„œ๋ธŒ์ธต(subla yer)์œผ๋กœ ๋‚˜๋‰˜์–ด์ง„๋‹ค๊ณ  ์–ธ๊ธ‰ํ•œ ์ ์ด ์žˆ๋Š”๋ฐ, ์ด์ œ ๋‘๋ฒˆ์งธ ์„œ๋ธŒ์ธต์ธ ํฌ์ง€์„ -์™€์ด์ฆˆ ํ”ผ๋“œ ํฌ์›Œ๋“œ ์‹ ๊ฒฝ๋ง์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํฌ์ง€์…˜-์™€์ด์ฆˆ ํ”ผ๋“œ ํฌ์›Œ๋“œ ์‹ ๊ฒฝ๋ง

์ง€๊ธˆ์€ ์ธ์ฝ”๋”๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ํฌ์ง€์„  ์™€์ด์ฆˆ FFNN ์€ ์ธ์ฝ”๋”์™€ ๋””์ฝ”๋”์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„œ๋ธŒ์ธต์ž…๋‹ˆ๋‹ค. ํฌ์ง€์„ -์™€์ด์ฆˆ FFNN๋Š” ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์™„์ „ ์—ฐ๊ฒฐFFNN(Full y-connected FFNN)์ด๋ผ๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์ธ๊ณต ์‹ ๊ฒฝ๋ง์€ ๊ฒฐ๊ตญ ๋ฒกํ„ฐ์™€ ํ–‰๋ ฌ ์—ฐ์‚ฐ์œผ๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ์Œ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ํฌ์ง€์…˜ ์™€์ด์ฆˆ FFNN ์˜ ์ˆ˜์‹์„๋ณด์—ฌ์ค๋‹ˆ๋‹ค
FFNN(x)=MAX(O,xW1+b1)W2+b2FFNN(x) = MAX(O, xW_1 + b_1)W_2 + b_2
์‹์„ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ xx ๋Š” ์•ž์„œ ๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์„ ์˜ ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ (seq_len,dmodeld_{model}) ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๋Š” ํ–‰๋ ฌ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ค‘์ง€ ํ–‰๋ ฌW1W_1 ์€ (d_model,dffd_{ff})์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ , ๊ฐ€์ค‘์ง€ ํ–‰๋ ฌ W2W_2 ์€ (dffd_{ff},dmodeld_{model}) ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋…ผ๋ฌธ์—์„œ ์€๋‹‰์ธต์˜ ํฌ๊ธฐ์ธ dttd_{tt}๋Š” ์•ž์„œ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ •์˜ํ•  ๋•Œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด 2,048์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ W1,b1,W2,b2W_1,b_1,W_2,b_2 ๋Š” ํ•˜๋‚˜์˜ ์ธ์ฝ”๋” ์ธต ๋‚ด์—์„œ๋Š” ๋‹ค๋ฅธ ๋ฌธ์žฅ, ๋‹ค๋ฅธ ๋‹จ์–ด๋“ค๋งˆ๋‹ค ์ •ํ™•ํ•˜๊ฒŒ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ธ์ฝ”๋” ์ธต๋งˆ๋‹ค๋Š” ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์ขŒ์ธก์€ ์ธ์ฝ”๋”์˜ ์ž…๋ ฅ์„ ๋ฒกํ„ฐ ๋‹จ์œ„๋กœ ๋ดค์„ ๋•Œ, ๊ฐ ๋ฒกํ„ฐ๋“ค์ด ๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์…˜ ์ธต์ด๋ผ๋Š” ์ธ์ฝ”๋” ๋‚ด ์ฒซ๋ฒˆ์งธ ์„œ๋ธŒ ์ธต์„ ์ง€๋‚˜ FFNNFFNN ์„ ํ†ต๊ณผํ•˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด๋Š” ๋‘๋ฒˆ์งธ ์„œ๋ธŒ์ธต์ธ Positi on-wise FFNN์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค ๋ฌผ๋ก , ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ฆผ์˜ ์šฐ์ธก๊ณผ ๊ฐ™์ด ํ–‰๋ ฌ๋กœ ์—ฐ์‚ฐ๋˜๋Š”๋ฐ, ๋‘๋ฒˆ์งธ ์„œ๋ธŒ์ธต์„ ์ง€๋‚œ ์ธ์ฝ”๋”์˜ ์ตœ์ข… ์ถœ๋ ฅ์€ ์—ฌ์ „ํžˆ ์ธ์ฝ”๋”์˜ ์ž…๋ ฅ์˜ ํฌ๊ธฐ์˜€๋˜ (seq_len, dmoded_{mode}l) ์˜ ํฌ๊ธฐ๊ฐ€ ๋ณด์กด๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ธ์ฝ”๋” ์ธต์„ ์ง€๋‚œ ์ด ํ–‰๋ ฌ์€ ๋‹ค์Œ ์ธ์ฝ”๋” ์ธต์œผ๋กœ ์ „๋‹ฌ๋˜๊ณ , ๋‹ค์Œ ์ธต์—์„œ๋„ ๋™์ผํ•œ ์ธ์ฝ”๋” ์—ฐ์‚ฐ์ด ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.

์ž”์ฐจ ์—ฐ๊ฒฐ๊ณผ ์ธต ์ •๊ทœํ™”

์ธ์ฝ”๋”์˜ ๋‘ ๊ฐœ์˜ ์„œ๋ธŒ์ธต์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•˜์˜€๋‹ค๋ฉด ์ธ์ฝ”๋”์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๊ฑฐ์˜ ๋‹ค์™”์Šต๋‹ˆ๋‹ค! ํŠธ๋žœ์Šคํฌ๋จธ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋‘ ๊ฐœ์˜ ์„œ๋ธŒ์ธต์„ ๊ฐ€์ง„ ์ธ์ฝ”๋”์— ์ถ”๊ฐ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์ด ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ Add & Norm ์ž…๋‹ˆ๋‹ค. ๋” ์ •ํ™•ํžˆ๋Š” ์ž”์ฐจ์—ฐ๊ฒฐ (residual connection)๊ณผ ์ธต ์ •๊ทœํ™”(layer normalization) ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์€ ์•ž์„œ Positi on-wise FFNN ๋ฅผ ์„ค๋ช…ํ•  ๋•Œ ์‚ฌ์šฉํ•œ ์•ž์„  ๊ทธ๋ฆผ์—์„œ ํ™”์‚ดํ‘œ์™€ Add & Norm(์ž”์ž ์—ฐ๊ฒฐ๊ณผ ์ •๊ทœํ™” ๊ณผ์ •)์„ ์ถ”๊ฐ€ํ•œ ๊ทธ๋ฆผ์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋œ ํ™”์‚ดํ‘œ๋“ค์€ ์„œ๋ธŒ์ธต ์ด์ „์˜ ์ž…๋ ฅ์—์„œ ์‹œ์ž‘๋˜์–ด ์„œ๋ธŒ์ธต์˜ ์ถœ๋ ฅ ๋ถ€๋ถ„์„ ํ–ฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์— ์ฃผ๋ชฉํ•ฉ์‹œ๋‹ค. ์ถ”๊ฐ€๋œ ํ™”์‚ดํ‘œ๊ฐ€ ์–ด๋–ค ์˜๋ฏธ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€๋Š” ์ž”์ž ์—ฐ๊ฒฐ๊ณผ ์ธต ์ •๊ทœํ™”๋ฅผ ๋ฐฐ์šฐ๊ณ  ๋‚˜๋ฉด ์ดํ•ดํ•  ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค.

์ž”์ž ์—ฐ๊ฒฐ (Residual connection)

์ž”์ฐจ ์—ฐ๊ฒฐ (residual connection) ์˜ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ ์–ด๋–ค ํ•จ์ˆ˜ ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
H(x)=x+F(x)H(x) = x + F(x)
์œ„ ๊ทธ๋ฆผ์€ ์ž…๋ ฅ xx์™€ xx์— ๋Œ€ํ•œ ์–ด๋–ค ํ•จ์ˆ˜ F(x)F(x) ์˜ ๊ฐ’์„ ๋”ํ•œ ํ•จ์ˆ˜ H(x)H(x) ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์–ด๋–ค ํ•จ์ˆ˜ F(x)F(x) ๊ฐ€ ํŠธ๋žœ์Šคํฌ๋จธ์—์„œ๋Š” ์„œ๋ธŒ์ธต์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ž”์ž ์—ฐ๊ฒฐ์€ ์„œ๋ธŒ์ธต์˜ ์ž…๋ ฅ๊ณผ ์ค„๋ ฅ์„ ๋”ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ํŠธ๋žœ์Šคํฌ๋จธ์—์„œ ์„œ๋ธŒ์ธต์˜ ์ž…๋ ฅ๊ณผ ์ค„๋ ฅ์€ ๋™์ผํ•œ ์ž์›์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์„œ๋ธŒ์ธต์˜ ์ž…๋ ฅ๊ณผ ์„œ๋ธŒ์ธต์˜ ์ถœ๋ ฅ์€ ๋ง์…ˆ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์œ„์˜ ์ธ์ฝ”๋” ๊ทธ๋ฆผ์—์„œ ๊ฐ ํ™”์‚ดํ‘œ๊ฐ€ ์„œ๋ธŒ์ธต์˜ ์ž…๋ ฅ์—์„œ ์ค„๋ ฅ์œผ๋กœ ํ–ฅํ•˜๋„๋ก๊ทธ๋ ค์กŒ๋˜ ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ž”์ฐจ ์—ฐ๊ฒฐ์€ ์ปดํ“จํ„ฐ ๋น„์ „ ๋ถ„์•ผ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋ธ์˜ ํ•™์Šต์„ ๋•๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.
์ด๋ฅผ ์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด x+Sublayer(x)x + Sublayer(x) ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€๋ น, ์„œ๋ธŒ์ธต์ด ๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์…˜์ด์—ˆ๋‹ค๋ฉด ์ž”์ž ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
H(x)=x+Multiโ€”headAttention(x)H(x) = x + Multi โ€” head Attention(x)
์œ„ ๊ทธ๋ฆผ์€ ๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์…˜์˜ ์ž…๋ ฅ๊ณผ ๋ฉ€ํ‹ฐ ํ—ค๋“œ ์–ดํ…์…˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋”ํ•ด์ง€๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ธต ์ •๊ทœํ™”(Layer Normalization)

์ž”์ฐจ ์—ฐ๊ฒฐ์„ ๊ฑฐ์ง„ ๊ฒฐ๊ณผ๋Š” ์ด์–ด์„œ ์ธต ์ •๊ทœํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ์ž”์ฐจ ์—ฐ๊ฒฐ์˜ ์ž…๋ ฅ์„ x, ์ž”์ฐจ ์—ฐ๊ฒฐ๊ณผ ์ธต ์ •๊ทœํ™” ๋‘ ๊ฐ€์ง€ ์—ฐ์‚ฐ์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•œ ํ›„์˜ ๊ฒฐ๊ณผ ํ–‰๋ ฌ์„ LN ์ด๋ผ๊ณ  ํ•˜์˜€์„ ๋•Œ, ์ž”์ฐจ ์—ฐ๊ฒฐ ํ›„ ์ธต ์ •๊ทœํ™” ์—ฐ์‚ฐ์„ ์ˆ˜์‹์œผ๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ๊ฐ™์Šต๋‹ˆ๋‹ค.
LNLN = LayerNorm(x+Sublayer(x)) LayerNorm(x + Sublayer(x))
์ด์ œ ์ธต ์ •๊ทœํ™”๋ฅผ ํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•ด๋ด…์‹œ๋‹ค. ์ธต ์ •๊ทœํ™”๋Š” ํ…์„œ์˜ ๋งˆ์ง€๋ง‰ ์ž์›์— ๋Œ€ํ•ด์„œ ํ‰๊ท ๊ณผ ๋ถ„์‚ฐ์„ ๊ตฌํ•˜๊ณ , ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์–ด๋–ค ์ˆ˜์‹์„ ํ†ตํ•ด ๊ฐ’์„ ์ •๊ทœํ™”ํ•˜์—ฌ ํ•™์Šต์„ ๋•์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ…์„œ์˜ ๋งˆ์ง€๋ง‰ dmodeld_{model}์ฐจ์›์ด๋ž€ ๊ฒƒ์€ ํŠธ๋žœ์Šคํฌ๋จธ์—์„œ๋Š” dmodeld_{model}์ฐจ์›์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ ์ฐจ์›์˜ ๋ฐฉํ–ฅ์„ ํ™”์‚ดํ‘œ๋กœ ํ‘œํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค
์ธต ์ •๊ทœํ™”๋ฅผ ์œ„ํ•ด์„œ ์šฐ์„ , ํ™”์‚ดํ‘œ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ๊ฐ ํ‰๊ท  ฮผ๊ณผ ๋ถ„์‚ฐ ฯƒ\sigma์„ ๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ™”์‚ดํ‘œ ๋ฐฉํ–ฅ์˜ ๋ฒกํ„ฐ๋ฅผ xix_i๋ผ๊ณ  ๋ช…๋ช… ํ•ด๋ด…์‹œ๋‹ค
์ธต ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„์—๋Š” ๋ฒกํ„ฐ xix_i๋Š” lniln_i ๋ผ๋Š” ๋ฒกํ„ฐ๋กœ ์ •๊ทœํ™”๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
lniln_i = LayerNormLayerNorm(xix_i)
์ด์ œ ์ธต ์ •๊ทœํ™”์˜ ์ˆ˜์‹์„ ์•Œ์•„๋ด…์‹œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ธต ์ •๊ทœํ™”๋ฅผ ๋‘ ๊ฐ€์ง€ ๊ณผ์ •์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ฒซ๋ฒˆ์งธ๋Š” ํ‰๊ท ๊ณผ ๋ถ„์‚ฐ์„ ํ†ตํ•œ ์ •๊ทœํ™”, ๋‘๋ฒˆ์งธ๋Š” ๊ฐ๋งˆ(ฮณ\gamma)์™€ ๋ฒ ํƒ€(ฮฒ\beta)๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ์„ , ํ‰๊ท ๊ณผ ๋ถ„์‚ฐ์„ ํ†ตํ•ด ๋ฒกํ„ฐ
x^i,k=xi,kโˆ’ฮผiฯƒi2+ฯต\hat{x}_{i, k}=\frac{x_{i, k}-\mu_{i}}{\sqrt{\sigma_{i}^{2}+\epsilon}}
โ‚ฌ(์ž…์‹ค๋ก )์€ ๋ถ„๋ชจ๊ฐ€ 0 ์ด ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ด์ œ ฮณ\gamma(๊ฐ๋งˆ)์™€ ฮฒ\beta(๋ฒ ํƒ€)๋ผ๋Š” ๋ฒกํ„ฐ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ด๋“ค์˜ ์ดˆ๊ธฐ๊ฐ’์€ ๊ฐ๊ฐ 1 ๊ณผ 0 ์ž…๋‹ˆ๋‹ค.
ฮณ\gamma ์™€ B๋ฅผ ๋„์ž…ํ•œ ์ •๊ทœํ™”์˜ ์ตœ์ข…์ˆ˜์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ,ฮณ\gamma์™€ ฮฒ\beta๋Š” ํ•™์Šต ๊ฐ€๋Šฅํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค.
lniln_i = ฮณx^i+ฮฒ\gamma\hat{x}_{i} + \beta = LayerNormLayerNorm(xix_i)
์ธ์ฝ”๋” / ๋””์ฝ”๋” ๊ตฌํ˜„
์†Œ์Šค ์ฐธ์กฐ