ГоловнаСтаттіКодування позицій: Як Трансформери Знають Порядок Слів

Кодування позицій: Як Трансформери Знають Порядок Слів

Надайте трансформеру слова речення всім разом, без будь-якого внутрішнього відчуття першого, другого або останнього, і він би сприймав 'кіт сидів на килимі' точно так само, як випадковий набір переставлених слів. Кодування позицій – це елегантне рішення, яке надає кожному слову математичний відбиток його положення в послідовності.

mysimulator teamОновлено — червень 2026≈ 8 хв читання▶ Відкрити симуляцію

Проблема: Паралельна обробка не має відчуття порядку

Старіші послідовні моделі, такі як RNN, читають текст слово за словом, тому порядок вбудовано у процес обробки інформації крок за кроком. Трансформери відмовилися від цього підходу заради швидкості, дозволяючи кожному токену одночасно звертатися до кожного іншого токена — але ця паралельність має свою ціну. Відсутність будь-якого додаткового сигналу змушує основний механізм уваги розглядатися речення як нерозсортований набір токенів, що означає, що «кіт сидів на килимку» та його переставлена версія, така як «килимок сидів на кіт», виглядатимуть для нього однаково. Щось має явно повідомляти моделі, яке слово було першим, другим і т.д.

Рішення: Додавання Позиційної Підписи

Виправлення, використане в оригінальному папері про трансформери, полягає у обчисленні векторного кодування позицій для кожного положення в послідовності та простому додаванні його до представлення слова перед тим, як це потрапляє в мережу. Кожен вектор позиції будується з синусоїдних і косинусоїдних хвиль різних частот, один пар на виміру представлення, тому положення 0 отримує один характерний шаблон значень, положення 1 отримує трохи інший, і так далі. Оскільки частоти варіюються від дуже швидких коливань до дуже повільних у вимірах, кожне положення в кінцевому підсумку має унікальну, плавно змінювану підпис, яку модель може навчитися читати як координату.

Чому Синус і Косинус? Математична Вигода

Синусоїдальні функції не були випадковим вибором: ключова властивість полягає в тому, що кодування для будь-якої позиції p+k можна записати як простий лінійний перетворення кодування для позиції p, для будь-якого фіксованого зсуву k. Це означає, що мережа може легше навчитися звертати увагу на відносну відстань між словами, наприклад, 'слово два місця назад', а не лише запам'ятовувати абсолютні позиції. Як бонус, оскільки синус і косинус гладкі та періодичні, схема розумно екстраполює на довжини послідовностей, які перевищують те, що було видно під час навчання, на відміну від таблиці пошуку позицій, яку модель ніколи не зустрічала.

Огляд Позиційного Кодування: Перехід від Синусоїдального до Роторного

Синусоїдальна схема, запропонована Васинскі та співавторами у їхній статті «Attention Is All You Need» 2017 року, залишається чудовим прикладом простоти та наочності, але вона більше не є єдиним підходом. Сучасні великі мовні моделі часто використовують альтернативні методи, такі як навчені позиційні вбудовування, навчені безпосередньо з даних, або роторне позиційне кодування (RoPE), яке обертає вектори запиту та ключа таким чином, щоб закодувати відносну позицію безпосередньо всередині обчислення уваги. Незалежно від конкретної механіки, основна задача залишається незмінною: надати архітектурі, яка за своєю природою не враховує порядок послідовностей, надійний спосіб визначити перший елемент від останнього.

Часті запитання

Чому трансформери не можуть просто вивести порядок слів з контексту?

Механізм самоуваги обчислює взаємозв’язки між токенами лише на основі їх векторів змісту, без урахування положення кожного токена в послідовності. Без явного позиційного сигналу перемішування вхідних токенів призведе до отримання одного і того ж набору виходів уваги, але в іншій послідовності, тому модель дійсно потребує додаткової інформації для розрізнення порядку.

Чи додається позиційне кодування до ембеддингу або воно зберігається окремо?

У оригінальному дизайні вектор позиційного кодування просто додається елемент за елементом до вектора ембеддингу токена, створюючи єдиний об’єднаний вектор, який містить як значення, так і положення. Це працює тому, що розміри ембеддингів достатньо великі, щоб два сигнали могли співіснувати без серйозного впливу один на одного.

Чи використовують усі сучасні моделі трансформерів одну й ту саму синусоїдну формулу?

Ні. Хоча синусоїдна схема з оригінальної статті 2017 року є класичною та найпоширенішою, багато сучасних моделей використовують навчені ембеддинги позицій або новіші підходи, такі як обертові позиційні ембеддинги (RoPE). Усі вони вирішують одну й ту саму основну проблему введення порядку в механізм уваги, який інакше не враховує порядок, просто з використанням різного математичного обладнання.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте Positional Encoding: How Transformers Know Word Order і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію Positional Encoding: How Transformers Know Word Order

Що ви знайшли?

Додати кроки відтворення (опційно)