Transformers — це дуже потужна модель глибокого навчання, яка змогла стати стандартом у багатьох завданнях обробки природної мови, а також готова зробити революцію в області комп’ютерного зору.
Все почалося в 2017 році, коли Google Brain опублікував статтю Attention Is All You Need, яка мала змінити все [4]. Дослідники застосовують цю нову архітектуру до кількох проблем обробки природної мови, і відразу стає очевидним, наскільки це може подолати деякі обмеження, які перешкоджають RNN, які традиційно використовуються для таких завдань, як переклад з однієї мови на іншу.
Якщо цей поглиблений навчальний зміст вам корисний, підпишіться на наш список розсилки досліджень ШІ щоб отримати попередження, коли ми випускаємо новий матеріал.
Протягом багатьох років Transformers стали інституцією в галузі обробки природної мови, а Google Brain у 2020 році запитує, чи будуть вони такими ж ефективними для зображень? Відповідь: так, Vision Transformers народжуються, і з деякими попередніми модифікаціями зображень їм вдається використати класичну архітектуру Transformers і незабаром досягти найсучаснішого рівня в багатьох проблемах також у цій галузі.
Ажіотаж великий, і через кілька місяців, на початку 2021 року, дослідники Facebook опублікували нову версію Трансформерів цього разу, правда, спеціально для відео, TimeSformers. Очевидно, що навіть у цьому випадку з деякими незначними структурними змінами ця архітектура незабаром стане переможцем на відео, і Facebook оголосить у лютому 2021 року, що використовуватиме її з відео своїх соціальних мереж для створення нових моделей для різноманітних цілей.
Навіщо нам трансформатори?
Але давайте зробимо крок назад і дослідимо мотиви, які спонукали дослідників Google до пошуку нової альтернативної архітектури для вирішення завдань обробки природної мови.
Традиційно таке завдання, як переклад, виконувалося за допомогою рекурентних нейронних мереж, які, як відомо, мають ряд проблем. Однією з головних проблем є його послідовна робота. Наприклад, щоб перекласти речення з англійської на італійську, у мережах такого типу перше слово речення, яке потрібно перекласти, передавалося в кодер разом із початковим станом, а наступний стан потім передавався в другий кодер із друге слово речення і так до останнього слова. Отриманий стан від останнього кодера потім передається в декодер, який повертає як вихідні дані як перше перекладене слово, так і наступний стан, який передається в інший декодер, і так далі.
Проблема тут цілком очевидна, щоб виконати наступний крок, я повинен мати результат попереднього кроку. Це великий недолік, тому що ви не використовуєте можливості розпаралелювання сучасних графічних процесорів і, таким чином, втрачаєте продуктивність. Існують також інші проблеми, такі як вибух градієнта, нездатність виявити залежності між віддаленими словами в одному реченні тощо.
Увага – це все, що вам потрібно?
Тоді виникло питання, чи існує механізм, який ми можемо розпаралелізувати, що дозволяє нам витягувати потрібну нам інформацію з речення? Відповідь - так, і цим механізмом є увага.
Якби ми визначили увагу, забувши на мить про будь-які технічні аспекти та аспекти реалізації, як би ми це зробили?
Давайте візьмемо приклад речення і запитаємо себе, зосереджуючись на слові «дав», на які ще слова в реченні мені слід звернути увагу, щоб додати значення цьому слову? Я міг би поставити собі низку запитань, наприклад, хто дав? І в цьому випадку я б зосередився на слові «Я», а потім міг би запитати Кому дав? Звертаю увагу в даному випадку на слово Чарлі і, нарешті, я можу запитати, що дало? Зосереджуючись нарешті на слові їжа.
Ставлячи собі ці запитання і, можливо, роблячи це для кожного слова в реченні, я міг би зрозуміти значення та аспекти. На цьому етапі проблема полягає в тому, як реалізувати цю концепцію на практиці?
Щоб зрозуміти обчислення уваги, ми можемо провести паралелі зі світом баз даних. Коли ми здійснюємо пошук у базі даних, ми надсилаємо запит (Q) і шукаємо серед доступних даних один або більше ключів, які задовольняють запит. Вихід – це значення, пов’язане з ключем, найбільш релевантним для запиту.
Те, що відбувається у випадку обчислення уваги, надзвичайно схоже.
Ми починаємо з розгляду речення, на якому потрібно обчислити увагу, як набору векторів. Кожне слово за допомогою механізму вбудовування слова кодується у вектор. Ми розглядаємо ці вектори як ключі для пошуку по запиту, який ми шукаємо, який може бути словом з того самого речення (самоувага) або з іншого речення. На цьому етапі нам потрібно обчислити подібність між запитом і кожним із доступних ключів математично за допомогою масштабованого скалярного добутку. Цей процес повертає серію реальних значень, які, можливо, дуже відрізняються одне від одного, але оскільки ми хочемо отримати ваги від 0 до 1, сума яких дорівнює 1, ми застосовуємо до результатів SoftMax. Отримавши ваги, ми повинні помножити вагу кожного слова, а отже, його релевантність для запиту, на вектор, який його представляє. Нарешті ми повертаємо комбінацію цих продуктів як вектор уваги.
Для побудови цього механізму ми використовуємо лінійні шари, які, починаючи з вхідного вектора, генерують ключі, запити та значення шляхом множення матриць. Комбінація ключів і запитів дозволить отримати найбільш правильну відповідність між цими двома наборами, результат якої потім буде об’єднано зі значеннями, щоб отримати найбільш відповідну комбінацію.
Але цього механізму було б достатньо, якщо б ми хотіли зосередитися на одному слові, але що, якби ми хотіли подивитися на речення з кількох точок зору, а потім кілька разів паралельно підрахувати увагу? Ми використовуємо так звану багатоголову увагу з подібною структурою, результати якої просто об’єднуються в кінці, щоб отримати єдиний узагальнюючий вектор усієї обчисленої уваги.
Тепер, коли ми зрозуміли, який механізм використовувати, і переконалися в його розпаралелюваності, давайте розберемо структуру, в яку вбудована багатоголова увага і яка становить трансформатор.
Завжди розглядаючи завдання перекладу, давайте спочатку зосередимося на лівій частині зображення, частині кодування, яка приймає як вхідні дані все речення для перекладу з англійської на італійську. Уже тут ми бачимо, що відбувається величезна революція порівняно з підходом RNN, тому що замість обробки речення слово за словом воно подається цілком. Перш ніж приступити до обчислення уваги, вектори, що представляють слова, поєднуються з механізмом позиційного кодування на основі синусу та косинуса, який вбудовує у вектори інформацію про позицію слів у реченні. Це дуже важливо, тому що ми знаємо, що в будь-якій мові позиція слів у реченні є більш ніж актуальною, і це інформація, яку ми не можемо повністю втратити, якщо хочемо зробити правильну оцінку. Уся ця інформація передається в механізм уваги з кількома головками, результат якого нормалізується та передається до прямого каналу. Кодування можна виконати N разів, щоб отримати більш значущу інформацію.
Але речення, яке потрібно перекласти, не є єдиним входом для трансформатора, у нас є другий блок, декодер, який приймає вихідні дані попереднього виконання трансформатора. Якщо ми припустимо, наприклад, що ми вже переклали перші два слова і хочемо передбачити третє слово речення італійською мовою, ми передамо в декодер перші два перекладені слова. Для цих слів буде виконано позиційне кодування та багатостороння увага, а результат буде об’єднано з результатом кодувальника. Увага перераховується на комбінацію, і результат, за допомогою лінійного шару та softmax, буде вектором потенційних слів-кандидатів, які будуть новим перекладеним словом, з імовірністю, пов’язаною з кожним із них. У наступній ітерації декодер також візьме це слово на додаток до попередніх.
Таким чином, ця структура виявилася неймовірно ефективною та продуктивною, тому що вона обробляє речення цілком, а не слово за словом, зберігає інформацію про позицію слів у реченні та використовує увагу, яка є механізмом, здатним ефективно виражати зміст речення.
Після всього цього гарного пояснення ви можете подумати, що трансформатори ідеальні і без будь-яких дефектів. Очевидно, це не так і однією з його сильних сторін є також і слабкість, розрахунок на увагу!
Щоб обчислити увагу кожного слова відносно всіх інших, мені потрібно виконати N² обчислень, які, навіть якщо їх можна частково розпаралелювати, все одно дуже дорогі. З такою складністю давайте уявимо, що означає обчислювати увагу багато разів на абзаці з сотень і сотень слів.
Графічно ви можете уявити собі матрицю, яка має бути заповнена значеннями уваги кожного слова порівняно з будь-яким іншим, і це, безперечно, має відповідну вартість. Важливо зазначити, що за бажанням і зазвичай на декодері можна обчислити масковану увагу, у якій ви уникаєте обчислення уваги між словом запиту та всіма наступними
Тоді дехто може заперечити, але чи справді нам потрібна вся ця структура, розглянута вище, якщо тоді багато переваг, які приносять трансформатори, скоріше пов’язані з механізмом уваги? Але хіба в першій статті Google Brain за 2017 рік не говориться: «Увага — це все, що вам потрібно»? [4] Звичайно, це законно, але в березні 2021 року дослідники Google знову опублікували статтю під назвою «Увага — не все, що вам потрібно» [6]. Що це означає? Дослідники провели експерименти, аналізуючи поведінку механізму самоуважності без будь-яких інших компонентів трансформаторів, і виявили, що він збігається до матриці рангу 1 з подвійною експоненціальною швидкістю. Це означає, що цей механізм сам по собі практично марний. Так чому ж трансформатори такі потужні? Це відбувається через перетягування канату між механізмом самоуважності, який прагне знизити ранг матриці, та двома іншими компонентами трансформаторів, з’єднаннями пропуску та MLP.
Перший дозволяє урізноманітнити розподіл шляхів, уникаючи отримання однакового шляху, і це різко зменшує ймовірність того, що матриця буде приведена до рангу 1. Натомість MLP вдається підвищити ранг результуючої матриці через її нелінійність. Навпаки, було показано, що нормалізація не відіграє жодної ролі в уникненні такої поведінки механізму самоуважності. Тому увага — це не все, що вам потрібно, але архітектурі трансформатора вдається використовувати її на свою користь для досягнення вражаючих результатів.
Трансформери зору
Дійшовши до цього моменту в 2020 році, дослідники Google знову запитали: «Але якщо Transformers виявилися настільки ефективними в області обробки природної мови, як вони працюватимуть із зображеннями?». Трохи подібно до НЛП, ми починаємо з концепції уваги, але цього разу застосовуємо до образів. Спробуємо розібратися в цьому на прикладі.
Якщо ми розглядаємо зображення собаки, що стоїть перед стіною, будь-хто з нас скаже, що це «зображення собаки», а не «зображення стіни», це тому, що ми зосереджуємо свою увагу на домінуючий і розрізняючий предмет зображення, і саме це робить механізм уваги, застосований до зображень.
Тепер, коли ми розуміємо, що концепцію уваги можна поширити і на зображення, нам просто потрібно знайти спосіб вводити зображення в класичний трансформатор.
Ми знаємо, що трансформатор приймає як вхідні вектори слова, тож як ми можемо перетворити зображення на вектори? Безумовно, першим рішенням було б використати всі пікселі зображення та помістити їх «в рядок», щоб отримати вектор. Але давайте зупинимося на мить і подивимося, що станеться, якщо ми виберемо цей варіант.
Раніше ми говорили, що складність обчислення уваги дорівнює O(N²). Це означає, що якщо нам потрібно обчислити складність кожного пікселя відносно всіх інших, у зображенні з низькою роздільною здатністю, наприклад 256×256 пікселів, ми матимемо надзвичайна кількість розрахунків і абсолютно нездоланна за сучасних ресурсів. Так що цей підхід, звичайно, нежиттєздатний.
Рішення досить просте, і в статті «Зображення вартує 16 × 16 слів» [2] пропонується розділити зображення на фрагменти, а потім перетворити кожен фрагмент у вектор за допомогою лінійної проекції, яка відобразить фрагменти у векторі простір.
Тепер нам просто залишилося піти й подивитися на архітектуру Vision Transformer.
Потім зображення ділиться на фрагменти, які проходять через лінійну проекцію для отримання векторів, які поєднуються з інформацією про положення фрагмента в зображенні та подаються в класичний трансформатор. Додавання інформації про початкове положення патча всередині зображення є фундаментальним, оскільки під час лінійної проекції ця інформація буде втрачена, навіть якщо дуже важливо повністю зрозуміти зміст зображення. Додатковий вектор вставляється, який не залежить від зображення, що аналізується, і який використовується для отримання глобальної інформації про все зображення, і фактично вихід, що відповідає цьому патчу, є єдиним, який розглядається та передається в MLP, який повертає прогнозований клас.
Однак у цьому процесі є момент, коли відбувається дуже значна втрата інформації. Насправді при переході від патча до вектора будь-яка інформація про положення пікселів у патчі втрачається. Це, безумовно, серйозна річ, зазначають автори Transformer in Transformer (TnT) [3], оскільки розташування пікселів у частині зображення, яке потрібно проаналізувати, є певною інформацією, яку ми не хотіли б втратити, щоб зробити якісне передбачення.
Потім автори TnT запитали себе, чи можливо знайти кращий спосіб змусити вектори подавати на трансформатор?
Їхня пропозиція полягає в тому, щоб взяти кожну окрему ділянку (pxp) зображення, яка сама по собі є зображенням на 3 каналах RGB, і перетворити його на тензор c-каналу. Потім цей тензор ділиться на p' частин з p'
Потім вони з’єднуються та лінійно проектуються, щоб зробити їх того самого розміру, що й вектор, отриманий із лінійної проекції вихідного фрагмента та об’єднаний із ним.
Завдяки цьому на вхідні вектори трансформатора також впливатиме розташування пікселів у патчах, і завдяки цьому авторам вдалося ще більше підвищити продуктивність у різних завданнях комп’ютерного зору.
TimeSformers
Враховуючи великі успіхи трансформерів спочатку в НЛП, а потім у застосуванні до зображень, у 2021 році дослідники Facebook спробували застосувати цю архітектуру і до відео.
Інтуїтивно зрозуміло, що це можливо, оскільки всі ми знаємо, що відео — це не що інше, як набір кадрів один за одним, а кадри — це не що інше, як зображення.
Є лише одна маленька деталь, яка відрізняє їх від Vision Transformers, ви повинні враховувати не тільки простір, але й час. У цьому випадку фактично, коли ми йдемо до обчислення уваги, ми не можемо дивитися на кадри як ізольовані зображення, але ми повинні знайти певну форму уваги, яка враховує варіації, які виникають між послідовними кадрами, оскільки це є центральним в оцінці відео.
Щоб спробувати вирішити цю проблему, автори запропонували декілька нових механізмів уваги, від тих, які зосереджуються виключно на просторі, який використовується переважно як орієнтир, до тих, які обчислюють увагу аксіально, розсіяно або спільно між простором і часом.
Однак метод, який досяг найкращих результатів, це «розділена простір-часова увага». Він полягає в тому, що кадр у момент t і один із його фрагментів є запитом, обчислюють просторову увагу по всьому кадру, а потім часову увагу в тому самому фрагменті запиту, але в попередньому та наступному кадрі.
Але чому цей підхід працює так добре? Причина в тому, що він вивчає більше окремих функцій, ніж інші підходи, і, отже, краще розуміє відео з різних категорій. Ми можемо побачити це на наступній візуалізації, де кожне відео представлено точкою в просторі, а його колір представляє категорію, до якої воно належить.
Автори також поставили під сумнів відповідність роздільної здатності відео та кількості кадрів у них і виявили, що чим вища роздільна здатність, тим краща точність моделі до певного моменту. Що стосується кількості кадрів, знову ж таки, зі збільшенням кількості кадрів точність також зростає. Цікаво те, що було неможливо провести тести з більшою кількістю кадрів, ніж показано на графіку, і тому потенційно точність може ще покращитися, ми ще не знайшли верхню межу цього покращення.
У Vision Transformers відомо, що більший набір навчальних даних часто призводить до кращої точності. Це також було перевірено авторами на TimeSformers, і, знову ж таки, зі збільшенням кількості розглянутих навчальних відео точність також зростає.
Висновки
Що тепер залишається робити? Трансформери щойно приземлилися у світі комп’ютерного зору і, здається, більш ніж сповнені рішучості замінити традиційні згорткові мережі або принаймні відіграти важливу роль у цій сфері. Тому наукове співтовариство переживає неспокій, намагаючись удосконалити трансформери, поєднати їх з різними техніками та застосувати до реальних проблем, щоб нарешті зробити те, що було неможливо донедавна. Великі гіганти, такі як Facebook і Google, активно працюють над розробкою та застосуванням Transformers, і ми, ймовірно, ще лише подряпали поверхню.
Вам сподобалася стаття? Приєднуйтесь до мене на LinkedIn! А якщо вас цікавлять трансформери прочитайте мою статтю про DINO!
Посилання та ідеї
[1] «Гедас Бертасіус, Хенг Ван і Лоренцо Торресані». »Чи все, що вам потрібно для розуміння відео, потрібна просторово-часова увага?".
[2] ”Олексій Досовицький та ін.”. »Зображення коштує 16×16 слів: трансформатори для розпізнавання зображень у масштабі".
[3] «Кай Хан та ін.». »Трансформер в Трансформері".
[4] «Ашиш Васвані та ін.». »Увага – це все, що вам потрібно".
[5] «Qizhe Xie та ін.». »Самопідготовка з Noisy Student покращує класифікацію ImageNet".
[6] «Yihe Dong та ін.», «Увага — це не все, що вам потрібно: чиста увага втрачає рейтинг вдвічі експоненціально з глибиною"
[7] «Нікола Мессіна та ін.», «Transformer Reasoning Network for Image-Text Matching and Retrieval"
[8] «Нікола Мессіна та ін.», «Точне візуальне текстове вирівнювання для крос-модального пошуку за допомогою трансформаторних кодерів"
[9] «Давиде Коккоміні», «TimeSformer для класифікації відео з навчальним кодом"
Ця стаття була спочатку опублікована на Назустріч науці про дані та повторно опубліковано в TOPBOTS з дозволу автора.
Вам подобається ця стаття? Підпишіться на отримання нових оновлень AI.
Ми повідомимо вас, коли випустимо більше технічної освіти.
споріднений
Джерело: https://www.topbots.com/transformers-timesformers-and-attention/
- 2020
- 2021
- 7
- 9
- рахунки
- Перевага
- AI
- ai дослідження
- ВСІ
- серед
- оголошує
- додаток
- архітектура
- ПЛОЩА
- Art
- стаття
- authors
- КРАЩЕ
- Біт
- будувати
- зміна
- канали
- класифікація
- співтовариство
- обчислення
- Комп'ютерне бачення
- Зв'язки
- зміст
- дані
- Database
- базами даних
- глибоке навчання
- деталь
- розвивати
- Освіта
- освітній
- Ефективний
- англійська
- виконання
- Експлуатувати
- риси
- в кінці кінців
- Перший
- недолік
- Сфокусувати
- харчування
- форма
- GIF
- Глобальний
- Графічні процесори
- великий
- тут
- Як
- HTTPS
- величезний
- Сотні
- зображення
- Розпізнавання зображень
- IMAGEnet
- Augmenter
- інформація
- Установа
- IT
- ключ
- ключі
- мова
- вивчення
- карта
- березня
- модель
- місяців
- Природна мова
- Обробка природних мов
- мережу
- мереж
- Нейронний
- нейронні мережі
- nlp
- варіант
- порядок
- Інше
- інші
- Папір
- пластир
- Патчі
- продуктивність
- картина
- піксель
- Чума
- прогноз
- Product
- Продукти
- пропозиція
- якість
- зменшити
- дослідження
- ресурси
- результати
- Умови повернення
- Пошук
- Серія
- комплект
- простий
- Розмір
- невеликий
- So
- соціальна
- ВИРІШИТИ
- Простір
- просторовий
- старт
- стан
- студент
- представлений
- поверхню
- технічний
- Тести
- Графік
- час
- Навчання
- Переклад
- Updates
- us
- значення
- Відео
- Відео
- вид
- бачення
- візуалізації
- війна
- ВООЗ
- в
- слова
- Work
- світ
- вартість
- років