๋ฅ๋ฌ๋์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋จ์๋ ๋ฒกํฐ, ํ๋ ฌ, ํ ์์ ๋๋ค. 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, ๋ฌธ์ฅ ๊ธธ์ด, ๋จ์ด ๋ฒกํฐ์ ์ฐจ์)์ ํฌ๊ธฐ์ ๋๋ค.