Увага (машинне навчання)
Ува́га (англ. attention) на основі машинного навчання — це механізм, який інтуїтивно імітує когнітивну увагу. Він обчислює «м'які» (англ. "soft") ваги для кожного слова, точніше, для його вкладення, у контекстному вікні. Ці ваги можливо обчислювати або паралельно (як у трансформерах), або послідовно (як у рекурентних нейронних мережах). «М'які» ваги можуть змінюватися протягом кожного виконання, на противагу до «жорстких» (англ. "hard") ваг, які тренують (наперед), тонко настроюють та залишають після цього замороженими.
Увагу розробили для подолання слабкостей використання інформації з прихованих виходів рекурентних нейронних мереж. Рекурентні нейронні мережі віддають перевагу свіжішій інформації, що міститься в словах наприкінці речення, тоді як раніша інформація в реченні очікувано приглушується. Увага дозволяє обчисленню прихованого подання токена мати рівний доступ до будь-якої частини речення безпосередньо, а не лише через попередній прихований стан.
Раніші використання додавали цей механізм до послідовної системи мовного перекладу рекурентними нейронними мережами (нижче), але пізніші використання у великих мовних моделях трансформерів усунули рекурентні нейронні мережі, й покладалися значною мірою на швидшу паралельну схему уваги.
Попередники цього механізму використовували в рекурентних нейронних мережах, які, проте, обчислювали «м'які» ваги послідовно, і на кожному кроці розглядали поточне слово й інші слова у контекстному вікні. Вони були відомі як мультиплікативні модулі (англ. multiplicative modules), вузли сигма-пі (англ. sigma pi units)[1] та гіпермережі (англ. hyper-networks).[2] Їх використовували в мережах довгої короткочасної пам'яті (ДКЧП), обробці мультисенсорних даних (звуку, зображень, відео та тексту) в персіверах, пам'яті контролера швидких ваг,[3] завданнях міркування в диференційовних нейрокомп'ютерах[en], та в нейронних машинах Тюрінга.[4][5][6][7][8]
Мережу уваги розробили для встановлювання найвищих кореляцій між словами в реченні, виходячи з припущення, що вона навчилася цих закономірностей з тренувального корпусу. Ця кореляція фіксується в нейронних вагах через зворотне поширення, або з самокерованого попереднього тренування, або з керованого тонкого настроювання.
Наведений нижче приклад показує, як встановлюються кореляції, коли мережа натренована й має правильні ваги. Розглядаючи слово «that» в реченні «see that girl run», мережа повинна вміти встановити «girl» як слово з високою кореляцією. Для спрощення цей приклад зосереджено на слові «that», але насправді всі слова отримують таке ж оброблення паралельно, і результати м'яких ваг та контекстних векторів складаються в матриці для подальшого використання в конкретних завданнях.
Вектор запиту порівнюється (через скалярний добуток) із кожним словом у ключах. Це допомагає моделі виявляти найвідповідніше слово для слова запиту. В цьому випадку як найвідповідніше слову «that» було визначено слово «girl». Результат (розміру 4 в цьому випадку) проганяється крізь функцію softmax, даючи вектор розміру 4 з імовірностями, що дають у сумі 1. Перемноження його на матрицю значень дієво підсилює сигнал для найважливіших слів у реченні, й послаблює сигнал для менш важливих слів.[5]
Структура даних входу вловлюється у вагах Qw та Kw, а ваги Vw виражають цю структуру в термінах змістовніших ознак для задачі, для якої здійснюється тренування. Через це складові голови уваги називають «запитом» (англ. Query, Q), «ключем» (англ. Key, K) та «значенням» (англ. Value, V) — вільна та можливо оманлива аналогія з системами реляційних баз даних.
Зауважте, що вектор контексту для «that» не залежить від векторів контексту для інших слів, тож вектори контексту для всіх слів можливо обчислювати, використовуючи всю матрицю X, яка містить всі вкладення слів, замість вектора x вкладення єдиного слова у наведеній вище формулі, відтак запаралелюючи обчислення. Тепер softmax можливо інтерпретувати як матричну softmax, що діє на окремі рядки. Це величезна перевага над рекурентними мережами, які мусять діяти послідовно.
Щоби побудувати машину, яка перекладає з англійської французькою, до звичайного кодувальника—декодувальника прищеплюють вузол уваги (схема нижче). В найпростішому випадку вузол уваги (англ. attention unit) складається зі скалярних добутків рекурентних станів кодувальника й не потребує тренування. На практиці вузол уваги складається з 3 тренованих повнозв'язних шарів нейронних мереж, званих запитом (англ. query), ключем (англ. key) та значенням (англ. value).
Мітка | Опис |
---|---|
100 | максимальна довжина речення |
300 | розмір вкладення (розмірність слова) |
500 | довжина прихованого вектора |
9k, 10k | розміри словників мов входу й виходу відповідно. |
x, Y | словникові вектори унітарного кодування розмірів 9k та 10k. x → x втілено як таблицю пошуку, а не векторне множення. Y це унітарний максимізувальник лінійного шару декодувальника D, тобто, він бере argmax виходу лінійного шару D. |
x | 300-елементний вектор вкладення слів. Ці вектори зазвичай обчислюють заздалегідь за допомогою інших проєктів, таких як GloVe чи Word2Vec. |
h | 500-елементний прихований вектор кодувальника. На кожному часовому кроці цей вектор узагальнює всі слова, що йому передували. Остаточний h можливо розглядати як вектор «речення» або вектор думки[en], як його називає Гінтон. |
s | 500-елементний вектор прихованого стану декодувальника. |
E | 500-нейронний рекурентно-нейромережний кодувальник (англ. encoder). 500 виходів. Кількість входів становить 800: 300 з первинного вкладення + 500 з рекурентних зв'язків. Кодувальник здійснює пряму подачу до декодувальника лише щоби встановити його в початковий стан, але не після, тому цей прямий зв'язок заледве показано. |
D | 2-шаровий декодувальник (англ. decoder). Рекурентний шар має 500 нейронів, а повноз'єднаний лінійний шар має 10k нейронів (розмір цільового словника).[10] Лише лінійний шар має 5 мільйонів (500 × 10k) ваг — приблизно вдесятеро більше за рекурентний. |
score | 100-елементна оцінка відповідності положення (англ. alignment score) |
w | 100-елементний вектор ваг уваги. Це — «м'які» ваги, які змінюються під час прямого проходження, на противагу до «жорстких» нейронних ваг, які змінюються під час етапу навчання. |
A | Модуль уваги (англ. attention module) — це може бути скалярний добуток рекурентних станів, або повноз'єднані шари запит—ключ—значення. Вихід — 100-елементний вектор w. |
H | 500×100. 100 прихованих векторів h, об'єднаних у матрицю |
c | 500-елементний вектор контексту = H * w. c — лінійна комбінація векторів h, зважених w. |
Розглянуті як матриця, ваги уваги показують, як мережа підлаштовує своє зосередження відповідно до контексту.[11]
I | love | you | |
je | 0.94 | 0.02 | 0.04 |
t' | 0.11 | 0.01 | 0.88 |
aime | 0.03 | 0.95 | 0.02 |
Цей погляд на ваги уваги торкається проблеми «поясненності» нейронних мереж. Мережі, що виконують дослівний переклад незалежно від порядку слів, показували би найвищі оцінки уздовж (головної) діагоналі матриці. Позадіагональне домінування показує, що механізм уваги є витонченішим. Під час першого проходження декодувальником 94 % ваги уваги припадає на перше англійське слово «I», тому мережа пропонує слово «je». На другому проході декодувальника 88 % ваги уваги припадає на третє англійське слово «you», тому вона пропонує «t'». На останньому проході 95 % ваги уваги припадає на друге англійське слово «love», тому вона пропонує «aime».
М'які ваги втілено багатьма варіантами уваги, такими як
- «внутрішні центри уваги» (англ. "internal spotlights of attention"),[12] породжувані програмувальниками швидких ваг або контролерами швидких ваг (1992)[3] (відомі також як трансформери з «лінеаризованою самоувагою», англ. "linearized self-attention"[13][14]). Повільна нейронна мережа вчиться за допомогою градієнтного спуску програмувати швидкі ваги іншої нейронної мережі через тензорні добутки самопороджуваних шаблонів збудження, званих «FROM» та «TO», які в трансформеровій термінології називають «ключем» (англ. "key") та «значенням» (англ. "value"). Це відображення уваги (англ. attention mapping) швидкими вагами застосовують до запитів (англ. queries).
- Увага в стилі Багданова (англ. Bahdanau-style Attention),[11] яку також називають адитивною увагою (англ. additive attention)
- Увага в стилі Луонга (англ. Luong-style Attention),[15] відома як мультиплікативна увага (англ. multiplicative attention),
- високорозпаралелювана самоувага (англ. self-attention), представлена 2016 року як розкладана самоувага (англ. decomposable attention),[16] й успішно використана в трансформерах роком пізніше.
Для згорткових нейронних мереж механізми уваги можливо розрізняти за виміром, на якому вони працюють, а саме: просторова увага (англ. spatial attention),[17] канальна увага (англ. channel attention),[18] та комбінації.[19][20]
Ці варіанти рекомбінують входи з боку кодувальника, щоби перерозподілювати ці впливи на кожен цільовий вихід. Часто коефіцієнти перезважування задає матриця скалярних добутків у стилі кореляції.
1. скалярний добуток кодувальника й декодувальника | 2. QKV кодувальника й декодувальника | 3. скалярний добуток лише кодувальника | 4. QKV лише кодувальника | 5. посібник Pytorch |
---|---|---|---|---|
Мітка | Опис |
---|---|
Змінні X, H, S, T | Змінні великими літерами подають все речення, а не лише поточне слово. Наприклад, H — це матриця прихованого стану кодувальника, по слову на стовпець |
S, T | S — прихований стан декодувальника; T — вкладення цільових слів. У посібнику Pytorch на етапі тренування T перемикається між двома джерелами залежно від використовуваного рівня вчителевого нав'язування. T може бути вкладенням слова виходу мережі, тобто вкладення(argmax(вихід FC)). Як альтернатива за вчителевого примусу, T може бути вкладенням відомого правильного слова, що може траплятися зі сталою ймовірністю примусу, скажімо, 1/2. |
X, H | H — прихований стан кодувальника, X — вкладення слів входу. |
W | Коефіцієнти уваги |
Qw, Kw, Vw, FC | Вагові матриці для запиту (англ. query), ключа (англ. key), значення (англ. value) відповідно. FC — повноз'єднана (англ. fully-connected) вагова матриця. |
⊕, ⊗ | ⊕ — векторна конкатенація; ⊗ — матричне множення. |
corr | Постовпчикова softmax(матриця всіх комбінацій скалярних добутків). Скалярні добутки це xi * xj у варіанті № 3, hi * sj у варіанті 1, стовпець i ( Kw * H ) * стовпець j ( Qw * S ) у варіанті 2, та стовпець i ( Kw * X ) * стовпець j ( Qw * X ) у варіанті 4. Варіант 5 для встановлення коефіцієнтів використовує повноз'єднаний шар. Якщо варіант з QKV, то скалярні добутки унормовують √d, де d — висота матриць QKV. |
де — матриці запиту, ключа та значення відповідно, — розмірність ключів. Вектори значень у матриці зважують за допомогою ваг, отриманих в результаті операції softmax.
де кожна з голів обчислюється як
а та — матриці параметрів.
де , а та — навчані вагові матриці.[11]
де — навчана вагова матриця.[15]
- ↑ Rumelhart, David E.; Mcclelland, James L.; Group, PDP Research (29 липня 1987). Parallel Distributed Processing, Volume 1: Explorations in the Microstructure of Cognition: Foundations, Chapter 2 (PDF) (англ.). Cambridge, Mass: Bradford Books. ISBN 978-0-262-68053-0.
- ↑ Yann Lecun (2020). Deep Learning course at NYU, Spring 2020, video lecture Week 6 (англ.). Подія сталася на 53:00. Процитовано 8 березня 2022.
- ↑ а б Schmidhuber, Jürgen (1992). Learning to control fast-weight memories: an alternative to recurrent nets. Neural Computation (англ.). 4 (1): 131—139. doi:10.1162/neco.1992.4.1.131. S2CID 16683347.
- ↑ Graves, Alex; Wayne, Greg; Reynolds, Malcolm; Harley, Tim; Danihelka, Ivo; Grabska-Barwińska, Agnieszka; Colmenarejo, Sergio Gómez; Grefenstette, Edward; Ramalho, Tiago; Agapiou, John; Badia, Adrià Puigdomènech; Hermann, Karl Moritz; Zwols, Yori; Ostrovski, Georg; Cain, Adam; King, Helen; Summerfield, Christopher; Blunsom, Phil; Kavukcuoglu, Koray; Hassabis, Demis (12 жовтня 2016). Hybrid computing using a neural network with dynamic external memory. Nature (англ.). 538 (7626): 471—476. Bibcode:2016Natur.538..471G. doi:10.1038/nature20101. ISSN 1476-4687. PMID 27732574. S2CID 205251479.
- ↑ а б Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N; Kaiser, Łukasz; Polosukhin, Illia (2017). Attention is All you Need (PDF). Advances in Neural Information Processing Systems (англ.). Curran Associates, Inc. 30.
- ↑ Ramachandran, Prajit; Parmar, Niki; Vaswani, Ashish; Bello, Irwan; Levskaya, Anselm; Shlens, Jonathon (13 червня 2019). Stand-Alone Self-Attention in Vision Models (англ.). arXiv:1906.05909 [cs.CV].
- ↑ Jaegle, Andrew; Gimeno, Felix; Brock, Andrew; Zisserman, Andrew; Vinyals, Oriol; Carreira, Joao (22 червня 2021). Perceiver: General Perception with Iterative Attention (англ.). arXiv:2103.03206 [cs.CV].
- ↑ Ray, Tiernan. Google's Supermodel: DeepMind Perceiver is a step on the road to an AI machine that could process anything and everything. ZDNet (англ.). Процитовано 19 серпня 2021.
- ↑ Britz, Denny; Goldie, Anna; Luong, Minh-Thanh; Le, Quoc (21 березня 2017). Massive Exploration of Neural Machine Translation Architectures (англ.). arXiv:1703.03906 [cs.CV].
- ↑ Pytorch.org seq2seq tutorial (англ.). Процитовано 2 грудня 2021.
- ↑ а б в Bahdanau, Dzmitry; Cho, Kyunghyun; Bengio, Yoshua (2014). Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473 [cs.CL].
- ↑ Schmidhuber, Jürgen (1993). Reducing the ratio between learning complexity and number of time-varying variables in fully recurrent nets. ICANN 1993 (англ.). Springer. с. 460—463.
- ↑ Schlag, Imanol; Irie, Kazuki; Schmidhuber, Jürgen (2021). Linear Transformers Are Secretly Fast Weight Programmers. ICML 2021 (англ.). Springer. с. 9355—9366.
- ↑ Choromanski, Krzysztof; Likhosherstov, Valerii; Dohan, David; Song, Xingyou; Gane, Andreea; Sarlos, Tamas; Hawkins, Peter; Davis, Jared; Mohiuddin, Afroz; Kaiser, Lukasz; Belanger, David; Colwell, Lucy; Weller, Adrian (2020). Rethinking Attention with Performers (англ.). arXiv:2009.14794 [cs.CL].
- ↑ а б в Luong, Minh-Thang (20 вересня 2015). Effective Approaches to Attention-Based Neural Machine Translation (англ.). arXiv:1508.04025v5 [cs.CL].
- ↑ Papers with Code - A Decomposable Attention Model for Natural Language Inference. paperswithcode.com (англ.).
- ↑ Zhu, Xizhou; Cheng, Dazhi; Zhang, Zheng; Lin, Stephen; Dai, Jifeng (2019). An Empirical Study of Spatial Attention Mechanisms in Deep Networks. 2019 IEEE/CVF International Conference on Computer Vision (ICCV) (англ.). с. 6687—6696. arXiv:1904.05873. doi:10.1109/ICCV.2019.00679. ISBN 978-1-7281-4803-8. S2CID 118673006.
- ↑ Hu, Jie; Shen, Li; Sun, Gang (2018). Squeeze-and-Excitation Networks. 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition (англ.). с. 7132—7141. arXiv:1709.01507. doi:10.1109/CVPR.2018.00745. ISBN 978-1-5386-6420-9. S2CID 206597034.
- ↑ Woo, Sanghyun; Park, Jongchan; Lee, Joon-Young; Kweon, In So (18 липня 2018). CBAM: Convolutional Block Attention Module (англ.). arXiv:1807.06521 [cs.CV].
- ↑ Georgescu, Mariana-Iuliana; Ionescu, Radu Tudor; Miron, Andreea-Iuliana; Savencu, Olivian; Ristea, Nicolae-Catalin; Verga, Nicolae; Khan, Fahad Shahbaz (12 жовтня 2022). Multimodal Multi-Head Convolutional Attention with Various Kernel Sizes for Medical Image Super-Resolution (англ.). arXiv:2204.04218 [eess.IV].
- ↑ Neil Rhodes (2021). CS 152 NN—27: Attention: Keys, Queries, & Values (англ.). Подія сталася на 06:30. Процитовано 22 грудня 2021.
- ↑ Alfredo Canziani & Yann Lecun (2021). NYU Deep Learning course, Spring 2020 (англ.). Подія сталася на 05:30. Процитовано 22 грудня 2021.
- ↑ Alfredo Canziani & Yann Lecun (2021). NYU Deep Learning course, Spring 2020 (англ.). Подія сталася на 20:15. Процитовано 22 грудня 2021.
- ↑ Robertson, Sean. NLP From Scratch: Translation With a Sequence To Sequence Network and Attention. pytorch.org (англ.). Процитовано 22 грудня 2021.
- Dan Jurafsky[en] and James H. Martin (2022) Speech and Language Processing (3rd ed. draft, January 2022), ch. 10.4 Attention and ch. 9.7 Self-Attention Networks: Transformers (англ.)
- Алекс Ґрейвс[en] (4 травня 2020 р.), Attention and Memory in Deep Learning (відеолекція), DeepMind / UCL, на YouTube (англ.)
- Rasa Algorithm Whiteboard - Attention на YouTube (англ.)