Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Як компонувати блоки трансформера | Побудова компонентів Transformer
Трансформери для обробки природної мови

bookЯк компонувати блоки трансформера

Свайпніть щоб показати меню

123456789101112131415161718192021222324252627282930313233343536373839404142434445
import torch import torch.nn as nn class EncoderBlock(nn.Module): def __init__(self, embed_dim, num_heads, ff_dim): super().__init__() self.attn = nn.MultiheadAttention(embed_dim, num_heads, batch_first=True) self.norm1 = nn.LayerNorm(embed_dim) self.ff = nn.Sequential( nn.Linear(embed_dim, ff_dim), nn.ReLU(), nn.Linear(ff_dim, embed_dim) ) self.norm2 = nn.LayerNorm(embed_dim) def forward(self, x): attn_output, _ = self.attn(x, x, x) x = self.norm1(x + attn_output) ff_output = self.ff(x) x = self.norm2(x + ff_output) return x class StackedEncoder(nn.Module): def __init__(self, num_layers, embed_dim, num_heads, ff_dim): super().__init__() self.layers = nn.ModuleList([ EncoderBlock(embed_dim, num_heads, ff_dim) for _ in range(num_layers) ]) def forward(self, x): for layer in self.layers: x = layer(x) return x # Example usage: stack 4 encoder blocks for input text embeddings embed_dim = 64 num_heads = 4 ff_dim = 256 num_layers = 4 stacked_encoder = StackedEncoder(num_layers, embed_dim, num_heads, ff_dim) input_tensor = torch.rand(2, 10, embed_dim) # batch_size=2, seq_len=10 output = stacked_encoder(input_tensor) print("Stacked encoder output shape:", output.shape)
copy

Під час обробки тексту за допомогою Transformer зазвичай використовують кілька енкодерних або декодерних блоків, розташованих один над одним. У наведеному вище коді показано, як створити стек енкодерних блоків за допомогою PyTorch. Кожен EncoderBlock містить багатоголову самоувагу, прямий поширювальний шар та нормалізацію шару. Клас StackedEncoder формує послідовність таких блоків, передаючи вихід одного блоку як вхід до наступного. Таке стекування дозволяє моделі навчатися дедалі складнішим уявленням тексту на кожному шарі. Для NLP-завдань, таких як класифікація тексту або переклад, стекування блоків допомагає захоплювати глибші зв'язки та контекст у даних. Початковий вхід — текст, перетворений у ембедінги — проходить через кожен енкодерний блок, і кожен блок уточнює уявлення на основі як вхідних даних, так і контексту, отриманого на попередніх шарах.

Архітектури Transformer можна згрупувати у три основні типи, кожен з яких підходить для різних NLP-завдань:

Тільки енкодерні моделі

  • Структура: складаються зі стеку енкодерних блоків.
  • Типові випадки використання: ці моделі ідеально підходять для розуміння або аналізу тексту. Поширені застосування включають класифікацію тексту, аналіз тональності та розпізнавання іменованих сутностей. Відомим прикладом такого типу є BERT.

Тільки декодерні моделі

  • Структура: складаються зі стеку декодерних блоків.
  • Типові випадки використання: ці моделі призначені для генерації тексту, наприклад, у задачах мовного моделювання та автодоповнення коду. Яскравим прикладом декодерної моделі є GPT.

Енкодер-декодерні моделі

  • Структура: поєднують енкодерні блоки для обробки вхідних даних і декодерні блоки для генерації виходу, при цьому інформація передається від енкодера до декодера.
  • Типові випадки використання: застосовуються для задач типу "послідовність у послідовність", де і вхід, і вихід є послідовностями. Приклади застосування: машинний переклад, реферування та відповіді на запитання. T5 та оригінальний Transformer — приклади енкодер-декодерних архітектур.

Підсумовуючи, вибір архітектури визначає типи NLP-проблем, які можна вирішити: енкодерні моделі — для аналізу, декодерні — для генерації, а енкодер-декодерні — для задач, що потребують відображення однієї послідовності в іншу.

question mark

Яку архітектуру Transformer зазвичай використовують для завдання машинного перекладу?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 2. Розділ 6
some-alt