Увага (машинне навчання)

машинне навчання

Ува́га (англ. 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», але насправді всі слова отримують таке ж оброблення паралельно, і результати м'яких ваг та контекстних векторів складаються в матриці для подальшого використання в конкретних завданнях.

Підмережі Q та K однієї «голови уваги» (англ. attention head) обчислюють м'які ваги, що виходять зі слова «that». (варіант QKV лише кодувальника.)

Речення надсилається крізь 3 паралельні потоки (ліворуч), які зливаються в кінці у вектор контексту (англ. context vector, праворуч). Розмір вкладання слів — 300, а кількість нейронів у кожній підмережі голови уваги — 100.

  • Велика літера X позначує матрицю розміру 4 × 300, що складається з вкладень усіх чотирьох слів.
  • Маленька підкреслена літера x позначує вектор вкладення (розміру 300) слова «that».
  • Голова уваги містить три підмережі (розміщені на ілюстрації вертикально), кожна з яких має 100 нейронів з ваговою матрицею розміру 300 × 100.
  • Зірочка в дужках «(*)» позначує softmax( qKT / 100 ), тобто ще не помножене на матрицю V.
  • Перемасштабування на 100 запобігає високій дисперсії в qKT, яка дозволяла би єдиному слову надмірно домінувати в softmax, призводячи до уваги лише до одного слова, як це робив би дискретний жорсткий максимум.

Запис: записана звичним чином порядко́ва формула softmax вище покладає, що вектори є рядками, що суперечить стандартному математичному записові стовпчикових векторів. Коректніше, ми повинні взяти транспонування вектору контекста й використовувати постовпчикову softmax, що дало би коректніший вигляд

Context = (XVW)T × softmax( (KW XT) × (xQw)T / 100 ).

Вектор запиту порівнюється (через скалярний добуток) із кожним словом у ключах. Це допомагає моделі виявляти найвідповідніше слово для слова запиту. В цьому випадку як найвідповідніше слову «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).

Покрокова послідовність мовного перекладу.
 
Кодувальник—декодувальник з увагою.[9] Ліва частина (чорні лінії) це кодувальник—декодувальник, середня частина (помаранчеві лінії) це вузол уваги, а права частина (сіра й кольорова) це обчислювані дані. Сірі області в матиці H та векторі w це нульові значення. Числові нижні індекси вказують роміри векторів, тоді як літерні нижні індекси i та i − 1 вказують часові кроки.
Умовні позначення
Мітка Опис
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
 
Для обчислення уваги потрібні як кодувальник, так і декодувальник.[15]
 
Для обчислення уваги потрібні як кодувальник, так і декодувальник.[21]
 
Декодувальник для обчислення уваги не використовують. Із єдиним входом до corr, W є автокореляцією скалярних добутків. wij = xi xj[22]
 
Декодувальник для обчислення уваги не використовують.[23]
 
Замість скалярнодобуткової кореляції для обчислення уваги використовують повноз'єднаний (англ. fully-connected) шар.[24]
Умовні позначення
Мітка Опис
Змінні 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]

Див. також ред.

Примітки ред.

  1. 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.
  2. Yann Lecun (2020). Deep Learning course at NYU, Spring 2020, video lecture Week 6 (англ.). Подія сталася на 53:00. Процитовано 8 березня 2022.
  3. а б 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.
  4. 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.
  5. а б 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.
  6. Ramachandran, Prajit; Parmar, Niki; Vaswani, Ashish; Bello, Irwan; Levskaya, Anselm; Shlens, Jonathon (2019-06-13). «Stand-Alone Self-Attention in Vision Models» (en). arXiv:1906.05909 [cs.CV]. 
  7. Jaegle, Andrew; Gimeno, Felix; Brock, Andrew; Zisserman, Andrew; Vinyals, Oriol; Carreira, Joao (2021-06-22). «Perceiver: General Perception with Iterative Attention» (en). arXiv:2103.03206 [cs.CV]. 
  8. 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.
  9. Britz, Denny; Goldie, Anna; Luong, Minh-Thanh; Le, Quoc (2017-03-21). «Massive Exploration of Neural Machine Translation Architectures» (en). arXiv:1703.03906 [cs.CV]. 
  10. Pytorch.org seq2seq tutorial (англ.). Процитовано 2 грудня 2021.
  11. а б в Bahdanau, Dzmitry; Cho, Kyunghyun; Bengio, Yoshua (2014). «Neural Machine Translation by Jointly Learning to Align and Translate». arXiv:1409.0473 [cs.CL]. 
  12. 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.
  13. Schlag, Imanol; Irie, Kazuki; Schmidhuber, Jürgen (2021). Linear Transformers Are Secretly Fast Weight Programmers. ICML 2021 (англ.). Springer. с. 9355—9366.
  14. Choromanski, Krzysztof; Likhosherstov, Valerii; Dohan, David; Song, Xingyou; Gane, Andreea; Sarlos, Tamas; Hawkins, Peter; Davis, Jared та ін. (2020). «Rethinking Attention with Performers» (en). arXiv:2009.14794 [cs.CL]. 
  15. а б в Luong, Minh-Thang (2015-09-20). «Effective Approaches to Attention-Based Neural Machine Translation» (en). arXiv:1508.04025v5 [cs.CL]. 
  16. Papers with Code - A Decomposable Attention Model for Natural Language Inference. paperswithcode.com (англ.).
  17. 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.
  18. 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.
  19. Woo, Sanghyun; Park, Jongchan; Lee, Joon-Young; Kweon, In So (2018-07-18). «CBAM: Convolutional Block Attention Module» (en). arXiv:1807.06521 [cs.CV]. 
  20. Georgescu, Mariana-Iuliana; Ionescu, Radu Tudor; Miron, Andreea-Iuliana; Savencu, Olivian; Ristea, Nicolae-Catalin; Verga, Nicolae; Khan, Fahad Shahbaz (2022-10-12). «Multimodal Multi-Head Convolutional Attention with Various Kernel Sizes for Medical Image Super-Resolution» (en). arXiv:2204.04218 [eess.IV]. 
  21. Neil Rhodes (2021). CS 152 NN—27: Attention: Keys, Queries, & Values (англ.). Подія сталася на 06:30. Процитовано 22 грудня 2021.
  22. Alfredo Canziani & Yann Lecun (2021). NYU Deep Learning course, Spring 2020 (англ.). Подія сталася на 05:30. Процитовано 22 грудня 2021.
  23. Alfredo Canziani & Yann Lecun (2021). NYU Deep Learning course, Spring 2020 (англ.). Подія сталася на 20:15. Процитовано 22 грудня 2021.
  24. Robertson, Sean. NLP From Scratch: Translation With a Sequence To Sequence Network and Attention. pytorch.org (англ.). Процитовано 22 грудня 2021.

Посилання ред.