ru:https://highload.today/blogs/kvantovye-vychisleniya-proshhe-chem-kazhutsya-kak-ih-primenit-v-mashinnom-obuchenii/ ua:https://highload.today/uk/blogs/kvantovi-obchislennya-prostishe-nizh-zdayutsya-yak-yih-zastosuvati-u-mashinnomu-navchanni/
logo
Machine Learning      12/08/2022

Квантові обчислення простіші, ніж здаються: як їх застосувати у машинному навчанні

Сергій Пащенко BLOG

Data Engineer в NIX

Комусь може здатися, що квантові комп’ютери і все пов’язане з ними — це десь далеко і не скоро, щось із фантастичних фільмів, але це не так. Квантовий світ вже давно поруч із нами. Причому йдеться не лише про теоретичні дослідження.

У своїй попередній статті на Highload я розповів базу про квантові обчислення. Тому якщо ви хочете почати з початку — рекомендую вам з нею ознайомитися.

А вже у цьому матеріалі ми вже нарешті можемо розглянути техніки обчислень і розібратися, що робити з переводом класичних даних у квантовий світ. Почнемо!


Уявімо деякі класичні дані у деякому просторі. При побудові моделі машинного навчання ви отримуєте фактично feature map — певний ембедінг із гарно розподіленими даними в іншому просторі. На цьому і побудована ця модель:

Натисніть, щоб роздивитися

Натисніть, щоб роздивитися

Проте в квантовому світі перед застосуванням дані треба закодувати. Далі показано, як можна закодувати деяку точку даних у певному узагальненому просторі. За допомогою біта проходить ініціалізації кожної точки. Це може бути не лише 0. Потім проводиться ротація, завдяки чому кожна точка даних кодується в деякій формі та йде на квантову оптимізацію:

Натисніть, щоб роздивитися

Натисніть, щоб роздивитися

Квантовий градієнт

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

Класичні дані кодуються до квантового типу, знаходиться функція втрат, а за нею — градієнт або оператор набла. Якщо леєрів багато, ви отримаєте якобіан. У результаті все зациклюється та повторюється коло за колом:

Натисніть, щоб роздивитися

Натисніть, щоб роздивитися

Що стосується формульного вигляду, то цей процес описується наступним чином:

Натисніть, щоб роздивитися

Натисніть, щоб роздивитися

Типи обчислень

  • Класичні обчислення. Всі дані, модель, виходи, леєри, інпути та інше представляються у класичному вигляді.
Натисніть, щоб роздивитися

Натисніть, щоб роздивитися

  • Комбіновані методи. Являє собою поєднання двох світів. Наприклад, дані кодують у квантовий вигляд, а для розв’язання застосовують класичну модель (як на першій схемі). Через вплив на квантову механіку теплової ентропії часто бувають проблеми зі знаходженням квантового градієнту. Тому використовують комбінацію квантових і класичних обчислювачів. Інколи зустрічається зворотна комбінація: дані у класичному вигляді, а модель — квантова інтерпретація (друга схема).

Натисніть, щоб роздивитися

Натисніть, щоб роздивитися

  • Повністю квантові обчислення. І дані, і сама модель закодовані в квантовому вигляді. Ця схема є найбільш перспективною.

Натисніть, щоб роздивитися

Фреймворки та хмарні квантові інстанси

Квантові механіка та обчислення вже настільки розповсюджені, що ми маємо доволі широкий вибір мов програмування. Наприклад, Q# від Microsoft, PyQuil та Qiskit від IBM, а також Pennylane. Я розглядатиму останню.

Варто зазначити, що при розв’язанні квантових задач немає такого поняття, як квантове машинне навчання. Є квантова оптимізація, оптимізація квантових схем.

Онлайн-курс "Проджект-менеджмент у геймдеві" від Skvot.
Новий левел для тих, хто хоче поєднати менеджерські скіли та любов до ігор.Отримай необхідний скілсет та керуй командою в ігровій індустрії.
Детальніше про курс

Під цей процес можна підв’язати машинне навчання. Адже ML по суті і є оптимізацією. Pennylane — це дуже зручний і, що головне, кросплатформний інструмент. А от Q#, PyQuil та Qiskit працюють відповідно тільки на рішеннях Microsoft та IBM.

Що стосується сервісу, я буду говорити про AWS Braket, де можна запускати IBM та Microsoft Quantum. Він надає достатньо високу варіативність квантових обчислювачів. Їхній вибір також є відносно широким. Можна згадати D-Wawe, IonQ, Rigetti та OCQ. Я буду говорити про перші два, тому що вони зараз найбільш популярні на ринку.

Як це виглядає на реальному квантовому інстансі

Для оцінки можливостей цих інстансів та роботи з ними візьмемо для прикладу MNIST Classification, QNN, та уявімо зображення 28х28. Кожен піксель кодуємо за допомогою квантової схеми. Передусім ми ініціалізуємо це за допомогою нульових кубітів.

Підкреслюю: це не нулі, а кубіти — тобто у розгорнутій формі 1 0 1 0 1 0.

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

Натисніть, щоб роздивитися

На рівні коду це виглядає наступним чином. На першому кроці встановлюється бібліотека Pennylane, далі імпортується RandomLayers, який буде реалізовувати квантові згортки, та numpy, що імпортується з бібліотеки Pennylane та підтримує квантові операції з тензорами.

Натисніть, щоб роздивитися

Щоб показати принципову відмінність, я використаю 500 семплів для train, 100 семплів для test та 30 — для epochs. Також візьму один леєр та запущу це на симуляторі, коли квантові обчислення емулюються за допомогою класичного CPU.

Ви можете побачити, скільки це займе часу, аби потім порівняти з квантовими інстансами. Сам процес нескладний: спочатку відбувається проста операція спліта, потім нормалізація даних та її збереження, а на завершення — створення додаткового розбору для каналу.

Натисніть, щоб роздивитися

Найцікавіше відбувається у наступних двох блоках коду. Перший — це створення квантового сокету або квантової схеми. Другий — створення квантової згортки. У цьому випадку ми беремо чотири кубіти, в якості девайсу обираємо дефолтний кубіт та ініціалізуємо рандомними параметрами.

Кут може бути будь-яким — я обрав 2, помножені на pi. Це не важливо, адже в процесі оптимізації кут буде змінюватися. Для побудови сокету потрібно обернути функцію в декоратор qnode з бібліотеки Pennylane. Зверніть увагу, тут ротація здійснюється навколо осі Y.

Курс UX/UI дизайнер сайтів і застосунків з Alice K.
Курс від практикуючої UI/UX дизайнерки, після якого ви знатимете все про UI/UX дизайн .
Реєстрація на курс

Далі закидуємо параметр в RandomLayers і здійснюємо вимір за допомогою оператора Паулі навколо осі Z. Це принципово важливий аспект. А ось квантова згортка виходить проста: із зображення 28х28 ми отримаємо наступну згортку вже у вигляді 14х14. Здійснюємо це для кожного пікселя та повертаємо результат.

Натисніть, щоб роздивитися

Далі запускаємо все на обробку. На класичному CPU це зайняло близько 18 хвилин.

Натисніть, щоб роздивитися

Якщо побудувати це зображення, то за каналами спостерігається деяка варіативність. Канали 1, 2 і 3 сильно відрізняються, і лише 5-й більш-менш схожий на попередній. Утім, це не проблема. Просто треба знати про такий ефект.

Натисніть, щоб роздивитися

Тепер тренуємо модель із softmax з параметрами, наведеними на ілюстрації. Це категоріальна крос-ентропія та метрика точності:

Натисніть, щоб роздивитися

Також тренуємо і класичну модель:

Натисніть, щоб роздивитися

Нижче можете побачити, що точність майже однакова, але нижче згаданих 99,22%. Нагадаю, що я брав суттєво меншу кількість семплів. Головне — тут прекрасно видно характеристику квантової системи. За рахунок емульованих шумів вона виглядає, як паркан. А ось без квантового леєру вона більш гладка:

Натисніть, щоб роздивитися

Наступне питання: як впливає сама ротація? Збережемо конфігурацію системи в попередньому вигляді та будемо крутити кубіти за різними напрямками. Результати — на наступній ілюстрації.

RY ви вже бачили вище, на RX картина схожа, а ось з RZ все погано. Адже тут якраз спостерігається згадане квантове схоплювання:

Натисніть, щоб роздивитися

Цю ситуацію я б розглянув більш детально. Якщо подивитися на отримані зображення, то можна побачити: 2-й, 3-й та 4-й канали практично однакові (5-й я не виводив).

Натисніть, щоб роздивитися

Тобто якщо навколо осі Z крутити кубіт, який на сфері Блоха спрямований певним чином, то Z у цієї частинки не змінюється. Хоча при вимірах за X та Y варіативність різних каналів нікуди не зникає. Це велика помилка, за цим треба уважно слідкувати.

Натисніть, щоб роздивитися

AWS пропонує досить багато квантових обчислювачів для розв’язання задачі. У нас є вибір з інстансів D-Wawe, IonQ та інших. Я оберу D-Wawe на 2048 кубітів та IonQ на 11 кубітів. За цими показниками перший здається набагато потужнішим. Однак насправді ситуація не така прямолінійна.

D-Wawe за своєю квантово-фізичною природою працює саме з хвильовими функціями. Це найсиріша інтерпретація, яка тільки може бути. IonQ працює з повноцінними кубітами. І якщо для реалізації кубіту на D-Wawe потрібно декілька хвильових функцій, то на IonQ за кубіт відповідає саме один кубіт.

Онлайн-курс Pyton від Powercode academy.
Опануйте PYTHON з нуля та майте проект у своєму портфоліо вже через 4 місяця.
Приєднатися

При порівнянні потужності цих інстансів в однакових задачах різниця малопомітна. Хоча за рахунок можливості комплексної реалізації більшої кількості повноцінних кубітів D-Wawe може інколи вигравати.

Натисніть, щоб роздивитися

Запуск на реальному інстансі

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

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

Натисніть, щоб роздивитися

Також треба згадати, що у IonQ є топологія: його 11 кубітів пов’язані та заплутані один з одним. У D-Wawe такого нема, адже він працює з операторами хвильових функцій, і кубіти неповноцінні. Через це фізично принцип обчислення у цих систем принципово різний, але на практиці для нас різниці немає.

Для запуску задачі на Pennylane на інстансі AWS треба зареєструвати обраний інстанс і передати ендпойнт для Pennylane, для чого потрібно лише під’єднатися. Розрахункову математику цей фреймворк виконає сам. Нам залишається лише побудувати квантовий оптимізатор.

Натисніть, щоб роздивитися

Для розрахунку свого прикладу я використовував IonQ із 2 та 4 леєрами та D-Wawe також із 2 та 4 леєрами. Для кожної згортки я застосував 4, 8 і 16 кубітів для того, щоб подивитися на результати. Вони з точки зору обчислювальної потужності квантових інстансів не суттєво відрізняються між собою. Проте вони дуже сильно виграють на фоні класичного CPU.

Нижче я повторно навів скрін із минулими результатами на класичному комп’ютері, де весь процес тривав близько 18 хвилин. IonQ для 4 леєрів досяг такого ж показника приблизно за 200 секунд (для 2 леєрів і того менше). У D-Wawe результати ще краще. Економія приблизно в 6 разів — це дуже круто. До речі, залежність може здаватися лінійною, хоча вона квазінелінійна.

Натисніть, щоб роздивитися

У вас може виникнути питання: чи не будуть показники ще кращими з GPU? На правду кажучи, ці пристрої швидші, але саме в цей час. У майбутньому вони точно програють квантовим комп’ютерам.

Підсумуємо найголовніше

  • Базова оптимізація квантових схем — це сама ротація. Для отримання оптимальних значень квантової системи потрібно лише крутити кубіти, які будуть опиратися на квантовий градієнт.
  • Онлайн-інтенсив "Як створити рекомендаційну модель за 2 дні" від robot_dreams.
    Ви пройдете етапи вибору, навчання, оцінки рекомендаційної моделі для електронної бібліотеки та отримаєте індивідуальний фідбек від лекторки.
    Приєднатись до інтенсиву
  • Вибір правильного напрямку ротації — це основоположна концепція здійснення якісної квантової оптимізації.
  • Квантові комп’ютери вже дозволяють вирішувати існуючі проблеми та тренувати ML-моделі. Проте потрібно дивитися у майбутнє. Хоча зараз GPU дозволяють вирішувати дуже великий спектр задач, років через 10 з’являться настільки складні моделі, які потребують принципово іншого підходу. І тут бізнесу в нагоді стануть саме квантові комп’ютери.
  • Квантовий претрейн неможливий, і це прикро. Зазвичай претрейн полягає у тренуванні моделі, збереженні ваги та застосуванні фітової моделі для отримання нових результатів. У квантовій моделі інший принцип: коли вона тренується, значення не знімаються. Адже вони під час проходу сигналу знаходяться у стані суперпозиції. Саме через це все працює дуже швидко та одноразово. Якщо зняти значення, то вся магія квантової системи руйнується. Тому для цього, мабуть, доведеться шукати деякі інші підходи.
  • Квантові обчислення поки що сирі — у порівнянні з класичними підходами та пайплайнами. Сьогодні існує дуже багато традиційних претренованих моделей та готових реалізацій, які можна знайти на тензорхабі. Вам достатньо обрати потрібну, доопрацювати під свої умови та запустити в продакшн. З квантовими моделями це досі складно. До того ж ви не можете поставити квантовий комп’ютер під стіл та маєте звертатися до клауд-інстансів, які наразі дорогі, а масштабувати їх важко.
  • Квантові обчислення простіші, ніж можуть здатися спочатку. В особливості на тлі розвитку хмарних платформ та фреймворків, як той же Pennylane.

Як на мене, саме квантовим комп’ютерам ми згодом будемо завдячувати появою першого людиноподібного штучного інтелекту. Така розробка буде навчатися і приймати виважені рішення. При цьому робитиме це все на одному домені.

Квантова система зможе синтезувати дані з різних досвідів й отримувати принципово нові висновки у порівнянні з сучасними моделями. Тож ми на порозі справжньої революції, і ви, як дата-саєнтисти, вже можете долучитися до неї.

Читайте також: Фахівцям з Machine Learning платять більше, ніж розробникам: як ними стати, чи потрібна математика та інші відповіді від експерта

Курс-професія "Motion Designer" від Skvot.
Навчіться створювати 2D- та 3D-анімації у софтах After Effects, Cinema 4D та Octane Render. Протягом курсу ви створите 14 моушн-роликів, 2 з яких — для реального клієнта.
Детальніше про курс

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

Практичний інтенсивний курс з дизайну - Design Booster від Powercode academy.
Навчіться дизайну з нуля за 3 місяці і заробляйте перші $1000, навіть якщо ви не маєте креативного мислення, смаку або вміння малювати. Отримайте практичні навички, необхідні для успішної кар'єри в дизайні.
Зарееструватися

Цей матеріал – не редакційний, це – особиста думка його автора. Редакція може не поділяти цю думку.

Топ-5 найпопулярніших блогерів березня

PHP Developer в ScrumLaunch
Всего просмотровВсього переглядів
2434
#1
Всего просмотровВсього переглядів
2434
Founder at Shallwe, Python Software Engineer (Django/React)
Всего просмотровВсього переглядів
113
#2
Всего просмотровВсього переглядів
113
Career Consultant в GoIT
Всего просмотровВсього переглядів
95
#3
Всего просмотровВсього переглядів
95
CEO & Founder в Trustee
Всего просмотровВсього переглядів
94
#4
Всего просмотровВсього переглядів
94
Рейтинг блогерів

Найбільш обговорювані статті

Топ текстів

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: