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

ํŒŒ์ดํ† ์น˜ ํŒจํ‚ค์ง€ ๊ธฐ๋ณธ ์กฐ์ž‘๋ฒ• ์ตํžˆ๊ธฐ 1 - ํ…์„œ์˜ ๊ตฌ์กฐ

์ฃผ์˜ ๐Ÿฑ 2022. 12. 26. 02:10
728x90

 

๋”ฅ๋Ÿฌ๋‹์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋‹จ์œ„๋Š” ๋ฒกํ„ฐ, ํ–‰๋ ฌ, ํ…์„œ์ž…๋‹ˆ๋‹ค. 1์ฐจ์›์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ’(1D)์€ ๋ฒกํ„ฐ, 2์ฐจ์›์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ’์„ ํ–‰๋ ฌ(Matrix)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  3์ฐจ์›์ด ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” ํ…์„œ(Tensor)๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์šฐ๋ฆฌ๋Š” 3์ฐจ์›์˜ ์„ธ์ƒ์— ์‚ด๊ณ  ์žˆ์œผ๋ฏ€๋กœ, 4์ฐจ์› ์ด์ƒ๋ถ€ํ„ฐ๋Š” ๋จธ๋ฆฌ๋กœ ์ƒ๊ฐํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. 4์ฐจ์›์€ 3์ฐจ์›์˜ ํ…์„œ๋ฅผ ์œ„๋กœ ์Œ“์•„ ์˜ฌ๋ฆฐ ๋ชจ์Šต์œผ๋กœ ์ƒ์ƒํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

5์ฐจ์›์€ ๊ทธ 4์ฐจ์›์„ ๋‹ค์‹œ ์˜†์œผ๋กœ ํ™•์žฅํ•œ ๋ชจ์Šต์œผ๋กœ ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค. 6์ฐจ์›์€ 5์ฐจ์›์„ ๋’ค๋กœ ํ™•์žฅํ•œ ๋ชจ์Šต์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…์„œ ์ค‘ ๊ฐ€์žฅ ์ „ํ˜•์ ์ธ 2์ฐจ์› ํ…์„œ๋ฅผ ์˜ˆ์‹œ๋กœ ๋ด…์‹œ๋‹ค. 

ํ…์„œ์˜ ํฌ๊ธฐ |t| = (Batch size, dim)

  • ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ ํ•˜๋‚˜์˜ ํฌ๊ธฐ๋ฅผ 256์ด๋ผ๊ณ  ํ•ด๋ด…์‹œ๋‹ค. [3, 1, 2, 5, ...] ์ด๋Ÿฐ ์ˆซ์ž๋“ค์˜ ๋‚˜์—ด์ด 256์˜ ๊ธธ์ด๋กœ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ ํ•˜๋‚˜ = ๋ฒกํ„ฐ์˜ ์ฐจ์›์€ 256์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด๋Ÿฐ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ 3000๊ฐœ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ํ˜„์žฌ ์ „์ฒด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋Š” 3,000 × 256์ž…๋‹ˆ๋‹ค. ํ–‰๋ ฌ์ด๋‹ˆ๊นŒ 2D ํ…์„œ๋„ค์š”. 3,000๊ฐœ๋ฅผ 1๊ฐœ์”ฉ ๊บผ๋‚ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ปดํ“จํ„ฐ๋Š” ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ณดํ†ต ๋ฉ์–ด๋ฆฌ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. 3,000๊ฐœ์—์„œ 64๊ฐœ์”ฉ ๊บผ๋‚ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด ์ด ๋•Œ batch size๋ฅผ 64๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” 2D ํ…์„œ์˜ ํฌ๊ธฐ๋Š” (batch size × dim) = 64 × 256์ž…๋‹ˆ๋‹ค.

 

์กฐ๊ธˆ ๋” ๋ณต์žกํ•œ ์ปดํ“จํ„ฐ ๋น„์ „, ์ž์—ฐ์–ด์ฒ˜๋ฆฌ ๋“ฑ์—๋Š” 3์ฐจ์› ํ…์„œ๊ฐ€ ์“ฐ์ž…๋‹ˆ๋‹ค. 

์ปดํ“จํ„ฐ ๋น„์ „์—์„œ์˜ ํ…์„œ ํฌ๊ธฐ |t| = (batch size, width - ์ด๋ฏธ์ง€์˜ ๊ฐ€๋กœ, height - ์ด๋ฏธ์ง€์˜ ์„ธ๋กœ) | ์ž์—ฐ์–ด์ฒ˜๋ฆฌ ํ…์„œ ํฌ๊ธฐ = (batch size, ๋ฌธ์žฅ ๊ธธ์ด, ๋‹จ์–ด ๋ฒกํ„ฐ์˜ ์ฐจ์›)

 

* NLP ๋ถ„์•ผ์˜ 3D ํ…์„œ ์˜ˆ์ œ๋กœ ์ดํ•ดํ•˜๊ธฐ

์•„๋ž˜์™€ ๊ฐ™์ด 4๊ฐœ์˜ ๋ฌธ์žฅ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ „์ฒด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

[[๋‚˜๋Š” ์‚ฌ๊ณผ๋ฅผ ์ข‹์•„ํ•ด], [๋‚˜๋Š” ๋ฐ”๋‚˜๋‚˜๋ฅผ ์ข‹์•„ํ•ด], [๋‚˜๋Š” ์‚ฌ๊ณผ๋ฅผ ์‹ซ์–ดํ•ด], [๋‚˜๋Š” ๋ฐ”๋‚˜๋‚˜๋ฅผ ์‹ซ์–ดํ•ด]]

์ปดํ“จํ„ฐ๋Š” ์•„์ง ์ด ์ƒํƒœ๋กœ๋Š” '๋‚˜๋Š” ์‚ฌ๊ณผ๋ฅผ ์ข‹์•„ํ•ด'๊ฐ€ ๋‹จ์–ด๊ฐ€ 1๊ฐœ์ธ์ง€ 3๊ฐœ์ธ์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  ์ปดํ“จํ„ฐ์˜ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹จ์–ด๋ณ„๋กœ ๋‚˜๋ˆ ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[['๋‚˜๋Š”', '์‚ฌ๊ณผ๋ฅผ', '์ข‹์•„ํ•ด'], ['๋‚˜๋Š”', '๋ฐ”๋‚˜๋‚˜๋ฅผ', '์ข‹์•„ํ•ด'], ['๋‚˜๋Š”', '์‚ฌ๊ณผ๋ฅผ', '์‹ซ์–ดํ•ด'], ['๋‚˜๋Š”', '๋ฐ”๋‚˜๋‚˜๋ฅผ', '์‹ซ์–ดํ•ด']]

์ด์ œ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋Š” 4 × 3์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๋Š” 2D ํ…์„œ์ž…๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ๋Š” ํ…์ŠคํŠธ๋ณด๋‹ค๋Š” ์ˆซ์ž๋ฅผ ๋” ์ž˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋ฐ. ์ด์ œ ๊ฐ ๋‹จ์–ด๋ฅผ ๋ฒกํ„ฐ๋กœ ๋งŒ๋“ค๊ฒ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹จ์–ด๋ฅผ 3์ฐจ์›์˜ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ–ˆ๋‹ค๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

'๋‚˜๋Š”' = [0.1, 0.2, 0.9]
'์‚ฌ๊ณผ๋ฅผ' = [0.3, 0.5, 0.1]
'๋ฐ”๋‚˜๋‚˜๋ฅผ' = [0.3, 0.5, 0.2]
'์ข‹์•„ํ•ด' = [0.7, 0.6, 0.5]
'์‹ซ์–ดํ•ด' = [0.5, 0.6, 0.7]

์œ„ ๊ธฐ์ค€์„ ๋”ฐ๋ผ์„œ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

[[[0.1, 0.2, 0.9], [0.3, 0.5, 0.1], [0.7, 0.6, 0.5]],
 [[0.1, 0.2, 0.9], [0.3, 0.5, 0.2], [0.7, 0.6, 0.5]],
 [[0.1, 0.2, 0.9], [0.3, 0.5, 0.1], [0.5, 0.6, 0.7]],
 [[0.1, 0.2, 0.9], [0.3, 0.5, 0.2], [0.5, 0.6, 0.7]]]

์ด์ œ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋Š” 4 × 3 × 3์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๋Š” 3D ํ…์„œ์ž…๋‹ˆ๋‹ค. ์ด์ œ batch size๋ฅผ 2๋กœ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฒซ๋ฒˆ์งธ ๋ฐฐ์น˜ #1
[[[0.1, 0.2, 0.9], [0.3, 0.5, 0.1], [0.7, 0.6, 0.5]],
 [[0.1, 0.2, 0.9], [0.3, 0.5, 0.2], [0.7, 0.6, 0.5]]]

๋‘๋ฒˆ์งธ ๋ฐฐ์น˜ #2
[[[0.1, 0.2, 0.9], [0.3, 0.5, 0.1], [0.5, 0.6, 0.7]],
 [[0.1, 0.2, 0.9], [0.3, 0.5, 0.2], [0.5, 0.6, 0.7]]]

์ปดํ“จํ„ฐ๋Š” ๋ฐฐ์น˜ ๋‹จ์œ„๋กœ ๊ฐ€์ ธ๊ฐ€์„œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ๊ฐ ๋ฐฐ์น˜์˜ ํ…์„œ์˜ ํฌ๊ธฐ๋Š” (2 × 3 × 3)์ž…๋‹ˆ๋‹ค. ์ด๋Š” (batch size, ๋ฌธ์žฅ ๊ธธ์ด, ๋‹จ์–ด ๋ฒกํ„ฐ์˜ ์ฐจ์›)์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•