1.2Kпросмотров
16 сентября 2025 г.
Score: 1.4K
Attention Sinks: Allowing Attention Not To Pay Attention 🙅♂️ Нещодавно читав гарний пост про архітектуру GPT-OSS. Більшість змін порівняно з GPT2 були вже знайомі з таких відкритих архітектур як LLaMa, Qwen, або Gemma, але є одна цікава ідея, про яку раніше не чув — attention sinks. Recap: Attention Patterns ✍️ Пригадаємо, що у механізмі уваги для кожного токену формується так званий attention pattern — ваги, з якими він “зверне увагу” на попередні токени з контексту (включно з ним самим). Для кожної голови цей pattern буде різним: іноді увага звертається на попередній токен, іноді — на останнє згадане імʼя, іноді — на надані few-shot examples, тощо. What’s the problem? 🤔 Через те, що attention pattern формується через softmax, сума його коефіцієнтів завжди дорівнює одиниці. Тобто кожний токен в будь-якому разі “змушений” звернути на щось увагу. Але справа в тому, що не існує текстів, для яких кожна з attention heads має зробити щось корисне — зазвичай більшість з них не є активними. Тому часто голови уваги вивчають наступну поведінку: якщо жодна з ознак, яку вони очікують, не зустрічається у контексті, то вся увага просто йде на перші кілька токенів (саме вони й називаються attention sinks у оригінальній роботі, де це було виявлено). Тобто перші токени стають таким собі буфером, який не несе в собі корисного сенсу, і в який заглядають просто якщо в тексті не відбувається нічого надзвичайного. Цей “хак” призводить до таких проблем як ускладнена інтерпретованість моделі, або погіршення якості при роботі з великими послідовностями, коли ці самі перші токени випадають з KV cache. What’s the solution? ✅ Для уникнення цього є кілька способів (тик, тик), але реалізація від OpenAI здається найбільш елегантною. Для кожної голови створюється додатковий параметр (sink), який конкатенується до рядків QK scores, і … це все 🙂 Ми отримуємо новий ”фейковий” елемент у softmax, який може перейняти увагу на себе, якщо жодного патерну не було виявлено. Так як голов зазвичай не багато, це не створює великого overhead, а зазначені раніше проблеми зникають. Висновок: Цікавий приклад того, як інтерпретація дозволяє виявляти і вирішувати реальні проблеми в моделях, які важко було б ідентифікувати, сприймаючи їх як чорний ящик.