Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Challenge: Structурування Блоків Енкодера Та Декодера | Побудова компонентів Transformer
Трансформери для обробки природної мови
Секція 2. Розділ 5
single

single

bookChallenge: Structурування Блоків Енкодера Та Декодера

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

Розуміння структури блоків енкодера та декодера є ключовим для опанування того, як трансформери обробляють і генерують текст. Кожен блок енкодера у трансформері призначений для перетворення вхідних послідовностей у контекстно-насичені представлення, тоді як кожен блок декодера генерує вихідні послідовності, звертаючись як до попередніх виходів, так і до представлень енкодера. У задачах обробки послідовностей, таких як переклад або узагальнення, енкодер приймає вхідний текст і кодує його у серію прихованих станів. Декодер потім використовує ці приховані стани разом із власною самоувагою для покрокового створення цільової послідовності. Така взаємодія між блоками енкодера і декодера дозволяє моделі захоплювати складні залежності у тексті, що робить трансформери надзвичайно ефективними для широкого спектра завдань обробки природної мови.

У наступній таблиці підсумовано послідовність операцій у блоці енкодера трансформера та підкреслено їхню важливість для текстових даних:

StepOperationPurpose for Text Data
1Multi-head self-attentionCaptures relationships between all tokens in the input.
2Add & NormalizeStabilizes training and preserves information.
3Feed-forward networkApplies non-linear transformations to each token.
4Add & NormalizeFurther stabilizes and enables deep stacking.

Each operation ensures that the encoder builds increasingly abstract and context-aware representations of the input text, which are essential for downstream sequence-to-sequence tasks.

Завдання

Проведіть, щоб почати кодувати

Ваше завдання — заповнити відсутні частини класу TransformerEncoderBlock, правильно ініціалізувавши його ключові компоненти та забезпечивши їх використання у прямому проході (forward computation).

Клас TransformerEncoderBlock моделює один блок енкодера в архітектурі Transformer. Необхідно коректно ініціалізувати два основних компоненти у конструкторі класу (__init__ метод):

  • Шар самоуваги (self-attention layer) за допомогою MultiHeadAttention(hidden_dim). Цей шар дозволяє кожному токену у вхідних даних звертати увагу на всі інші токени, захоплюючи контекстуальні зв'язки;
  • Мережа прямого поширення (feed-forward network) за допомогою FeedForward(hidden_dim). Цей шар застосовує нелінійні перетворення до кожного представлення токена окремо, додатково обробляючи вихід із шару самоуваги;
  • У методі forward ці два шари слід застосовувати послідовно:
    • спочатку передати вхідний x через шар самоуваги;
    • потім передати вихід із шару самоуваги через мережу прямого поширення;
    • повернути фінальний результат.

Переконайтеся, що обидва компоненти — MultiHeadAttention та FeedForward — створюються з параметром hidden_dim, який передається до класу. Ці компоненти є основою структури блоку енкодера і повинні застосовуватися у правильному порядку для коректної роботи блоку.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

some-alt