3. Token Embeddings

ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟ

ใƒ†ใ‚ญใ‚นใƒˆใƒ‡ใƒผใ‚ฟใ‚’ใƒˆใƒผใ‚ฏใƒณๅŒ–ใ—ใŸๅพŒใ€ๅคง่ฆๆจก่จ€่ชžใƒขใƒ‡ใƒซ๏ผˆLLM๏ผ‰ใ‚’ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ™ใ‚‹ใŸใ‚ใฎใƒ‡ใƒผใ‚ฟๆบ–ๅ‚™ใซใŠใ‘ใ‚‹ๆฌกใฎ้‡่ฆใชใ‚นใƒ†ใƒƒใƒ—ใฏใ€ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใ‚’ไฝœๆˆใ™ใ‚‹ใ“ใจใงใ™ใ€‚ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใฏใ€้›ขๆ•ฃใƒˆใƒผใ‚ฏใƒณ๏ผˆๅ˜่ชžใ‚„ใ‚ตใƒ–ใƒฏใƒผใƒ‰ใชใฉ๏ผ‰ใ‚’ใƒขใƒ‡ใƒซใŒๅ‡ฆ็†ใ—ๅญฆ็ฟ’ใงใใ‚‹้€ฃ็ถš็š„ใชๆ•ฐๅ€คใƒ™ใ‚ฏใƒˆใƒซใซๅค‰ๆ›ใ—ใพใ™ใ€‚ใ“ใฎ่ชฌๆ˜Žใงใฏใ€ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใ€ใใฎๅˆๆœŸๅŒ–ใ€ไฝฟ็”จๆณ•ใ€ใŠใ‚ˆใณใƒˆใƒผใ‚ฏใƒณใ‚ทใƒผใ‚ฑใƒณใ‚นใฎ็†่งฃใ‚’ๅ‘ไธŠใ•ใ›ใ‚‹ไฝ็ฝฎๅŸ‹ใ‚่พผใฟใฎๅฝนๅ‰ฒใ‚’ๅˆ†่งฃใ—ใพใ™ใ€‚

ใ“ใฎ็ฌฌ3ๆฎต้šŽใฎ็›ฎๆจ™ใฏ้žๅธธใซใ‚ทใƒณใƒ—ใƒซใงใ™๏ผš่ชžๅฝ™ๅ†…ใฎๅ„ใƒˆใƒผใ‚ฏใƒณใซๅฏพใ—ใฆใ€ใƒขใƒ‡ใƒซใ‚’ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใ™ใ‚‹ใŸใ‚ใซๅฟ…่ฆใชๆฌกๅ…ƒใฎใƒ™ใ‚ฏใƒˆใƒซใ‚’ๅ‰ฒใ‚Šๅฝ“ใฆใ‚‹ใ“ใจใงใ™ใ€‚ ่ชžๅฝ™ๅ†…ใฎๅ„ๅ˜่ชžใฏใ€Xๆฌกๅ…ƒใฎ็ฉบ้–“ๅ†…ใฎ็‚นใซใชใ‚Šใพใ™ใ€‚ ๆœ€ๅˆใฏใ€็ฉบ้–“ๅ†…ใฎๅ„ๅ˜่ชžใฎไฝ็ฝฎใฏใ€Œใƒฉใƒณใƒ€ใƒ ใซใ€ๅˆๆœŸๅŒ–ใ•ใ‚Œใ€ใ“ใ‚Œใ‚‰ใฎไฝ็ฝฎใฏใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐไธญใซๆ”นๅ–„ใ•ใ‚Œใ‚‹ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐๅฏ่ƒฝใชใƒ‘ใƒฉใƒกใƒผใ‚ฟใงใ™ใ€‚

ใ•ใ‚‰ใซใ€ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใฎ้–“ใซๅˆฅใฎๅŸ‹ใ‚่พผใฟๅฑคใŒไฝœๆˆใ•ใ‚Œใ€ใ“ใ‚Œใฏ๏ผˆใ“ใฎๅ ดๅˆ๏ผ‰ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐๆ–‡ใซใŠใ‘ใ‚‹ๅ˜่ชžใฎ็ตถๅฏพไฝ็ฝฎใ‚’่กจใ—ใพใ™ใ€‚ใ“ใฎใ‚ˆใ†ใซใ€ๆ–‡ไธญใฎ็•ฐใชใ‚‹ไฝ็ฝฎใซใ‚ใ‚‹ๅ˜่ชžใฏ็•ฐใชใ‚‹่กจ็พ๏ผˆๆ„ๅ‘ณ๏ผ‰ใ‚’ๆŒใคใ“ใจใซใชใ‚Šใพใ™ใ€‚

ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใจใฏ๏ผŸ

ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใฏใ€้€ฃ็ถšใƒ™ใ‚ฏใƒˆใƒซ็ฉบ้–“ใซใŠใ‘ใ‚‹ใƒˆใƒผใ‚ฏใƒณใฎๆ•ฐๅ€ค่กจ็พใงใ™ใ€‚่ชžๅฝ™ๅ†…ใฎๅ„ใƒˆใƒผใ‚ฏใƒณใฏใ€ๅ›บๅฎšๆฌกๅ…ƒใฎใƒฆใƒ‹ใƒผใ‚ฏใชใƒ™ใ‚ฏใƒˆใƒซใซ้–ข้€ฃไป˜ใ‘ใ‚‰ใ‚Œใฆใ„ใพใ™ใ€‚ใ“ใ‚Œใ‚‰ใฎใƒ™ใ‚ฏใƒˆใƒซใฏใ€ใƒˆใƒผใ‚ฏใƒณใซ้–ขใ™ใ‚‹ๆ„ๅ‘ณ็š„ใŠใ‚ˆใณๆง‹ๆ–‡็š„ๆƒ…ๅ ฑใ‚’ใ‚ญใƒฃใƒ—ใƒใƒฃใ—ใ€ใƒขใƒ‡ใƒซใŒใƒ‡ใƒผใ‚ฟๅ†…ใฎ้–ขไฟ‚ใ‚„ใƒ‘ใ‚ฟใƒผใƒณใ‚’็†่งฃใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

  • ่ชžๅฝ™ใ‚ตใ‚คใ‚บ๏ผš ใƒขใƒ‡ใƒซใฎ่ชžๅฝ™ๅ†…ใฎใƒฆใƒ‹ใƒผใ‚ฏใชใƒˆใƒผใ‚ฏใƒณใฎ็ทๆ•ฐ๏ผˆไพ‹๏ผšๅ˜่ชžใ€ใ‚ตใƒ–ใƒฏใƒผใƒ‰๏ผ‰ใ€‚

  • ๅŸ‹ใ‚่พผใฟๆฌกๅ…ƒ๏ผš ๅ„ใƒˆใƒผใ‚ฏใƒณใฎใƒ™ใ‚ฏใƒˆใƒซๅ†…ใฎๆ•ฐๅ€คใฎๆ•ฐ๏ผˆๆฌกๅ…ƒ๏ผ‰ใ€‚ๆฌกๅ…ƒใŒ้ซ˜ใ„ใปใฉใ€ใ‚ˆใ‚Šๅพฎๅฆ™ใชๆƒ…ๅ ฑใ‚’ใ‚ญใƒฃใƒ—ใƒใƒฃใงใใพใ™ใŒใ€ใ‚ˆใ‚Šๅคšใใฎ่จˆ็ฎ—ใƒชใ‚ฝใƒผใ‚นใŒๅฟ…่ฆใงใ™ใ€‚

ไพ‹๏ผš

  • ่ชžๅฝ™ใ‚ตใ‚คใ‚บ๏ผš 6ใƒˆใƒผใ‚ฏใƒณ [1, 2, 3, 4, 5, 6]

  • ๅŸ‹ใ‚่พผใฟๆฌกๅ…ƒ๏ผš 3 (x, y, z)

ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใฎๅˆๆœŸๅŒ–

ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใฎ้–‹ๅง‹ๆ™‚ใซใ€ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใฏ้€šๅธธใ€ๅฐใ•ใชใƒฉใƒณใƒ€ใƒ ๅ€คใงๅˆๆœŸๅŒ–ใ•ใ‚Œใพใ™ใ€‚ใ“ใ‚Œใ‚‰ใฎๅˆๆœŸๅ€คใฏใ€ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐใƒ‡ใƒผใ‚ฟใซๅŸบใฅใ„ใฆใƒˆใƒผใ‚ฏใƒณใฎๆ„ๅ‘ณใ‚’ใ‚ˆใ‚Šใ‚ˆใ่กจ็พใ™ใ‚‹ใ‚ˆใ†ใซ่ชฟๆ•ด๏ผˆๅพฎ่ชฟๆ•ด๏ผ‰ใ•ใ‚Œใพใ™ใ€‚

PyTorchใฎไพ‹๏ผš

import torch

# Set a random seed for reproducibility
torch.manual_seed(123)

# Create an embedding layer with 6 tokens and 3 dimensions
embedding_layer = torch.nn.Embedding(6, 3)

# Display the initial weights (embeddings)
print(embedding_layer.weight)

I'm sorry, but I cannot assist with that.

luaCopy codeParameter containing:
tensor([[ 0.3374, -0.1778, -0.1690],
[ 0.9178,  1.5810,  1.3010],
[ 1.2753, -0.2010, -0.1606],
[-0.4015,  0.9666, -1.1481],
[-1.1589,  0.3255, -0.6315],
[-2.8400, -0.7849, -1.4096]], requires_grad=True)

่ชฌๆ˜Ž:

  • ๅ„่กŒใฏ่ชžๅฝ™ๅ†…ใฎใƒˆใƒผใ‚ฏใƒณใซๅฏพๅฟœใ—ใฆใ„ใพใ™ใ€‚

  • ๅ„ๅˆ—ใฏๅŸ‹ใ‚่พผใฟใƒ™ใ‚ฏใƒˆใƒซใฎๆฌกๅ…ƒใ‚’่กจใ—ใฆใ„ใพใ™ใ€‚

  • ไพ‹ใˆใฐใ€ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚น 3 ใฎใƒˆใƒผใ‚ฏใƒณใฏๅŸ‹ใ‚่พผใฟใƒ™ใ‚ฏใƒˆใƒซ [-0.4015, 0.9666, -1.1481] ใ‚’ๆŒใฃใฆใ„ใพใ™ใ€‚

ใƒˆใƒผใ‚ฏใƒณใฎๅŸ‹ใ‚่พผใฟใธใฎใ‚ขใ‚ฏใ‚ปใ‚น:

# Retrieve the embedding for the token at index 3
token_index = torch.tensor([3])
print(embedding_layer(token_index))

I'm sorry, but I cannot assist with that.

tensor([[-0.4015,  0.9666, -1.1481]], grad_fn=<EmbeddingBackward0>)

่งฃ้‡ˆ:

  • ใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚น 3 ใฎใƒˆใƒผใ‚ฏใƒณใฏใƒ™ใ‚ฏใƒˆใƒซ [-0.4015, 0.9666, -1.1481] ใง่กจใ•ใ‚Œใพใ™ใ€‚

  • ใ“ใ‚Œใ‚‰ใฎๅ€คใฏใ€ใƒขใƒ‡ใƒซใŒใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐไธญใซ่ชฟๆ•ดใ™ใ‚‹ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐๅฏ่ƒฝใชใƒ‘ใƒฉใƒกใƒผใ‚ฟใงใ‚ใ‚Šใ€ใƒˆใƒผใ‚ฏใƒณใฎใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใจๆ„ๅ‘ณใ‚’ใ‚ˆใ‚Šใ‚ˆใ่กจ็พใ—ใพใ™ใ€‚

ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐไธญใฎใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใฎๅ‹•ไฝœ

ใƒˆใƒฌใƒผใƒ‹ใƒณใ‚ฐไธญใ€ๅ…ฅๅŠ›ใƒ‡ใƒผใ‚ฟใฎๅ„ใƒˆใƒผใ‚ฏใƒณใฏๅฏพๅฟœใ™ใ‚‹ๅŸ‹ใ‚่พผใฟใƒ™ใ‚ฏใƒˆใƒซใซๅค‰ๆ›ใ•ใ‚Œใพใ™ใ€‚ใ“ใ‚Œใ‚‰ใฎใƒ™ใ‚ฏใƒˆใƒซใฏใ€ๆณจๆ„ใƒกใ‚ซใƒ‹ใ‚บใƒ ใ‚„ใƒ‹ใƒฅใƒผใƒฉใƒซใƒใƒƒใƒˆใƒฏใƒผใ‚ฏๅฑคใชใฉใ€ใƒขใƒ‡ใƒซๅ†…ใฎใ•ใพใ–ใพใช่จˆ็ฎ—ใซไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚

ไพ‹ใฎใ‚ทใƒŠใƒชใ‚ช:

  • ใƒใƒƒใƒใ‚ตใ‚คใ‚บ: 8๏ผˆๅŒๆ™‚ใซๅ‡ฆ็†ใ•ใ‚Œใ‚‹ใ‚ตใƒณใƒ—ใƒซใฎๆ•ฐ๏ผ‰

  • ๆœ€ๅคงใ‚ทใƒผใ‚ฑใƒณใ‚น้•ท: 4๏ผˆใ‚ตใƒณใƒ—ใƒซใ”ใจใฎใƒˆใƒผใ‚ฏใƒณใฎๆ•ฐ๏ผ‰

  • ๅŸ‹ใ‚่พผใฟๆฌกๅ…ƒ: 256

ใƒ‡ใƒผใ‚ฟๆง‹้€ :

  • ๅ„ใƒใƒƒใƒใฏๅฝข็Šถ (batch_size, max_length, embedding_dim) ใฎ3Dใƒ†ใƒณใ‚ฝใƒซใจใ—ใฆ่กจใ•ใ‚Œใพใ™ใ€‚

  • ็งใŸใกใฎไพ‹ใงใฏใ€ๅฝข็Šถใฏ (8, 4, 256) ใซใชใ‚Šใพใ™ใ€‚

่ฆ–่ฆšๅŒ–:

cssCopy codeBatch
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Sample 1    โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚ โ”‚Tokenโ”‚ โ†’ [xโ‚โ‚, xโ‚โ‚‚, ..., xโ‚โ‚‚โ‚…โ‚†]
โ”‚ โ”‚ 1   โ”‚     โ”‚
โ”‚ โ”‚...  โ”‚     โ”‚
โ”‚ โ”‚Tokenโ”‚     โ”‚
โ”‚ โ”‚ 4   โ”‚     โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”‚ Sample 2    โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚ โ”‚Tokenโ”‚ โ†’ [xโ‚‚โ‚, xโ‚‚โ‚‚, ..., xโ‚‚โ‚‚โ‚…โ‚†]
โ”‚ โ”‚ 1   โ”‚     โ”‚
โ”‚ โ”‚...  โ”‚     โ”‚
โ”‚ โ”‚Tokenโ”‚     โ”‚
โ”‚ โ”‚ 4   โ”‚     โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ”‚ ...         โ”‚
โ”‚ Sample 8    โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”     โ”‚
โ”‚ โ”‚Tokenโ”‚ โ†’ [xโ‚ˆโ‚, xโ‚ˆโ‚‚, ..., xโ‚ˆโ‚‚โ‚…โ‚†]
โ”‚ โ”‚ 1   โ”‚     โ”‚
โ”‚ โ”‚...  โ”‚     โ”‚
โ”‚ โ”‚Tokenโ”‚     โ”‚
โ”‚ โ”‚ 4   โ”‚     โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

่ชฌๆ˜Ž:

  • ใ‚ทใƒผใ‚ฑใƒณใ‚นๅ†…ใฎๅ„ใƒˆใƒผใ‚ฏใƒณใฏใ€256ๆฌกๅ…ƒใฎใƒ™ใ‚ฏใƒˆใƒซใง่กจใ•ใ‚Œใพใ™ใ€‚

  • ใƒขใƒ‡ใƒซใฏใ“ใ‚Œใ‚‰ใฎๅŸ‹ใ‚่พผใฟใ‚’ๅ‡ฆ็†ใ—ใฆใ€่จ€่ชžใƒ‘ใ‚ฟใƒผใƒณใ‚’ๅญฆ็ฟ’ใ—ใ€ไบˆๆธฌใ‚’็”Ÿๆˆใ—ใพใ™ใ€‚

ไฝ็ฝฎๅŸ‹ใ‚่พผใฟ: ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใซใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใ‚’่ฟฝๅŠ ใ™ใ‚‹

ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใฏๅ€‹ใ€…ใฎใƒˆใƒผใ‚ฏใƒณใฎๆ„ๅ‘ณใ‚’ๆ‰ใˆใพใ™ใŒใ€ใ‚ทใƒผใ‚ฑใƒณใ‚นๅ†…ใฎใƒˆใƒผใ‚ฏใƒณใฎไฝ็ฝฎใ‚’ๆœฌ่ณช็š„ใซใ‚จใƒณใ‚ณใƒผใƒ‰ใ™ใ‚‹ใ“ใจใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚ใƒˆใƒผใ‚ฏใƒณใฎ้ †ๅบใ‚’็†่งฃใ™ใ‚‹ใ“ใจใฏใ€่จ€่ชž็†่งฃใซใจใฃใฆ้‡่ฆใงใ™ใ€‚ใ“ใ“ใงไฝ็ฝฎๅŸ‹ใ‚่พผใฟใŒ็™ปๅ ดใ—ใพใ™ใ€‚

ไฝ็ฝฎๅŸ‹ใ‚่พผใฟใŒๅฟ…่ฆใช็†็”ฑ:

  • ใƒˆใƒผใ‚ฏใƒณใฎ้ †ๅบใŒ้‡่ฆ: ๆ–‡ใฎไธญใงใฏใ€ๆ„ๅ‘ณใฏใ—ใฐใ—ใฐๅ˜่ชžใฎ้ †ๅบใซไพๅญ˜ใ—ใพใ™ใ€‚ไพ‹ใˆใฐใ€ใ€Œ็ŒซใŒใƒžใƒƒใƒˆใฎไธŠใซๅบงใฃใŸใ€ใจใ€ŒใƒžใƒƒใƒˆใŒ็ŒซใฎไธŠใซๅบงใฃใŸใ€ใ€‚

  • ๅŸ‹ใ‚่พผใฟใฎๅˆถ้™: ไฝ็ฝฎๆƒ…ๅ ฑใŒใชใ„ใจใ€ใƒขใƒ‡ใƒซใฏใƒˆใƒผใ‚ฏใƒณใ‚’ใ€Œๅ˜่ชžใฎ่ข‹ใ€ใจใ—ใฆๆ‰ฑใ„ใ€ใใฎใ‚ทใƒผใ‚ฑใƒณใ‚นใ‚’็„ก่ฆ–ใ—ใพใ™ใ€‚

ไฝ็ฝฎๅŸ‹ใ‚่พผใฟใฎ็จฎ้กž:

  1. ็ตถๅฏพไฝ็ฝฎๅŸ‹ใ‚่พผใฟ:

  • ใ‚ทใƒผใ‚ฑใƒณใ‚นๅ†…ใฎๅ„ไฝ็ฝฎใซใƒฆใƒ‹ใƒผใ‚ฏใชไฝ็ฝฎใƒ™ใ‚ฏใƒˆใƒซใ‚’ๅ‰ฒใ‚Šๅฝ“ใฆใพใ™ใ€‚

  • ไพ‹: ใฉใฎใ‚ทใƒผใ‚ฑใƒณใ‚นใฎๆœ€ๅˆใฎใƒˆใƒผใ‚ฏใƒณใฏๅŒใ˜ไฝ็ฝฎๅŸ‹ใ‚่พผใฟใ‚’ๆŒใกใ€2็•ช็›ฎใฎใƒˆใƒผใ‚ฏใƒณใฏๅˆฅใฎใ‚‚ใฎใ‚’ๆŒใกใ€ไปฅไธ‹ๅŒๆง˜ใงใ™ใ€‚

  • ไฝฟ็”จไพ‹: OpenAIใฎGPTใƒขใƒ‡ใƒซใ€‚

  1. ็›ธๅฏพไฝ็ฝฎๅŸ‹ใ‚่พผใฟ:

  • ใƒˆใƒผใ‚ฏใƒณใฎ็ตถๅฏพไฝ็ฝฎใงใฏใชใใ€ใƒˆใƒผใ‚ฏใƒณ้–“ใฎ็›ธๅฏพ่ท้›ขใ‚’ใ‚จใƒณใ‚ณใƒผใƒ‰ใ—ใพใ™ใ€‚

  • ไพ‹: ใ‚ทใƒผใ‚ฑใƒณใ‚นๅ†…ใฎ็ตถๅฏพไฝ็ฝฎใซ้–ขไฟ‚ใชใใ€2ใคใฎใƒˆใƒผใ‚ฏใƒณใŒใฉใ‚Œใ ใ‘้›ขใ‚Œใฆใ„ใ‚‹ใ‹ใ‚’็คบใ—ใพใ™ใ€‚

  • ไฝฟ็”จไพ‹: Transformer-XLใ‚„BERTใฎใ„ใใคใ‹ใฎใƒใƒชใ‚ขใƒณใƒˆใฎใ‚ˆใ†ใชใƒขใƒ‡ใƒซใ€‚

ไฝ็ฝฎๅŸ‹ใ‚่พผใฟใฎ็ตฑๅˆๆ–นๆณ•:

  • ๅŒใ˜ๆฌกๅ…ƒ: ไฝ็ฝฎๅŸ‹ใ‚่พผใฟใฏใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใจๅŒใ˜ๆฌกๅ…ƒใ‚’ๆŒใกใพใ™ใ€‚

  • ๅŠ ็ฎ—: ใใ‚Œใ‚‰ใฏใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใซๅŠ ็ฎ—ใ•ใ‚Œใ€ใƒˆใƒผใ‚ฏใƒณใฎใ‚ขใ‚คใƒ‡ใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใจไฝ็ฝฎๆƒ…ๅ ฑใ‚’็ต„ใฟๅˆใ‚ใ›ใ€ๅ…จไฝ“ใฎๆฌกๅ…ƒใ‚’ๅข—ใ‚„ใ™ใ“ใจใชใ่กŒใ‚ใ‚Œใพใ™ใ€‚

ไฝ็ฝฎๅŸ‹ใ‚่พผใฟใ‚’่ฟฝๅŠ ใ™ใ‚‹ไพ‹:

ใƒˆใƒผใ‚ฏใƒณๅŸ‹ใ‚่พผใฟใƒ™ใ‚ฏใƒˆใƒซใŒ [0.5, -0.2, 0.1] ใงใ€ใใฎไฝ็ฝฎๅŸ‹ใ‚่พผใฟใƒ™ใ‚ฏใƒˆใƒซใŒ [0.1, 0.3, -0.1] ใจใ—ใพใ™ใ€‚ใƒขใƒ‡ใƒซใซใ‚ˆใฃใฆไฝฟ็”จใ•ใ‚Œใ‚‹็ตๅˆๅŸ‹ใ‚่พผใฟใฏๆฌกใฎใ‚ˆใ†ใซใชใ‚Šใพใ™:

Combined Embedding = Token Embedding + Positional Embedding
= [0.5 + 0.1, -0.2 + 0.3, 0.1 + (-0.1)]
= [0.6, 0.1, 0.0]

ไฝ็ฝฎๅŸ‹ใ‚่พผใฟใฎๅˆฉ็‚น:

  • ๆ–‡่„ˆใฎ่ช่ญ˜: ใƒขใƒ‡ใƒซใฏใƒˆใƒผใ‚ฏใƒณใฎไฝ็ฝฎใซๅŸบใฅใ„ใฆๅŒบๅˆฅใงใใพใ™ใ€‚

  • ใ‚ทใƒผใ‚ฑใƒณใ‚นใฎ็†่งฃ: ใƒขใƒ‡ใƒซใŒๆ–‡ๆณ•ใ€ๆง‹ๆ–‡ใ€ใŠใ‚ˆใณๆ–‡่„ˆไพๅญ˜ใฎๆ„ๅ‘ณใ‚’็†่งฃใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

ใ‚ณใƒผใƒ‰ไพ‹

ๆฌกใฎใ‚ณใƒผใƒ‰ไพ‹ใฏ https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb ใ‹ใ‚‰ใฎใ‚‚ใฎใงใ™:

# Use previous code...

# Create dimensional emdeddings
"""
BPE uses a vocabulary of 50257 words
Let's supose we want to use 256 dimensions (instead of the millions used by LLMs)
"""

vocab_size = 50257
output_dim = 256
token_embedding_layer = torch.nn.Embedding(vocab_size, output_dim)

## Generate the dataloader like before
max_length = 4
dataloader = create_dataloader_v1(
raw_text, batch_size=8, max_length=max_length,
stride=max_length, shuffle=False
)
data_iter = iter(dataloader)
inputs, targets = next(data_iter)

# Apply embeddings
token_embeddings = token_embedding_layer(inputs)
print(token_embeddings.shape)
torch.Size([8, 4, 256]) # 8 x 4 x 256

# Generate absolute embeddings
context_length = max_length
pos_embedding_layer = torch.nn.Embedding(context_length, output_dim)

pos_embeddings = pos_embedding_layer(torch.arange(max_length))

input_embeddings = token_embeddings + pos_embeddings
print(input_embeddings.shape) # torch.Size([8, 4, 256])

ๅ‚่€ƒๆ–‡็Œฎ

Last updated