Рубріки: Machine LearningОпыт

Квантовые вычисления проще, чем кажутся: как их применить в машинном обучении

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

Кому-то может показаться, что квантовые компьютеры и все связанное с ними — это далеко и не скоро, что-то из фантастических фильмов, но это не так. Квантовый мир уже давно рядом с нами. Причем речь идет не только о теоретических исследованиях.

В своей предыдущей статье на Highload я поделился базовыми знаниями о квантовых вычислениях. Поэтому если вы хотите начать сначала — рекомендую вам с ней ознакомиться.

А уже в этом материале мы наконец можем рассмотреть техники вычислений и разобраться, что делать с переводом классических данных в квантовый мир. Начнем!


Представим некие классические данные в неком пространстве. При построении модели машинного обучения вы получаете фактически feature map — определенный эмбединг с хорошо распределенными данными в другом пространстве. На этом и построена эта модель:

Нажмите, чтобы посмотреть

Но в квантовом мире перед применением данные нужно закодировать. Далее показано, как закодировать некоторую точку данных в определенном обобщенном пространстве. С помощью бита проходит инициализация каждой точки. Это может быть не только 0. Затем производится ротация, благодаря чему каждая точка данных кодируется в некоторой форме и идет на квантовую оптимизацию:

Нажмите, чтобы посмотреть

Квантовый градиент

Для проведения квантовой оптимизации нужно также понимать, насколько близко вы находитесь к оптимуму целевой функции. Он записывается в классическом машинном обучении с помощью функции потерь. На иллюстрации изображена схема этого процесса.

Классические данные кодируются к квантовому типу, находится функция потерь, а за ней — градиент или оператор набла. Если лэеров много, вы получите якобиан. В результате все зацикливается и повторяется круг за кругом:

Нажмите, чтобы посмотреть

Что касается формульного вида, то этот процесс описывается следующим образом:

Нажмите, чтобы посмотреть

Типы вычислений

  • Классические вычисления. Все данные, модель, выходы, лэеры, инпуты и прочее представляются в классическом виде.

Нажмите, чтобы посмотреть

  • Комбинированные способы. Представляет собой соединение двух миров. К примеру, данные кодируют в квантовый вид, а для решения используют классическую модель (как на первой схеме). Из-за воздействия на квантовую механику тепловой энтропии часто бывают проблемы с нахождением квантового градиента. Поэтому используют комбинацию квантовых и классических вычислителей. Иногда встречается обратная комбинация: данные в классическом виде, а модель — квантовая интерпретация (вторая схема).

Нажмите, чтобы посмотреть

Нажмите, чтобы посмотреть

  • Полностью квантовые вычисления. И данные, и сама модель закодированы в квантовом виде. Эта схема наиболее перспективна.

Нажмите, чтобы посмотреть

Фреймворки и облачные квантовые инстансы

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

Следует отметить, что при решении квантовых задач нет такого понятия, как квантовое машинное обучение. Есть квантовая оптимизация, оптимизация квантовых схем.

Под этот процесс можно подвязать машинное обучение. Ведь 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.

Далее забрасываем параметр в 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 за кубит отвечает именно один кубит.

При сравнении мощности этих инстанций в одинаковых задачах разница малозаметна. Хотя за счет возможности комплексной реализации большего количества полноценных кубитов 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? По правде говоря, эти устройства более быстрые, но именно в это время. В будущем они точно проигрывают квантовым компьютерам.

Подытожим самое главное

  • Базовая оптимизация квантовых схем — это сама ротация. Для получения оптимальных значений квантовой системы нужно только крутить кубиты, которые будут опираться на квантовый градиент.
  • Выбор правильного направления ротации — это основополагающая концепция осуществления качественной квантовой оптимизации.
  • Квантовые компьютеры уже позволяют решать существующие проблемы и тренировать ML-модели. Но нужно смотреть в будущее. Хотя сейчас GPU позволяют решать очень большой спектр задач, лет через 10 появятся настолько сложные модели, которые потребуют принципиально иного подхода. И здесь бизнесу пригодятся именно квантовые компьютеры.
  • Квантовый претрейн невозможен, и это досадно. Обычно претрейн заключается в тренировке модели, сохранении веса и применении фитовой модели для получения новых результатов. У квантовой модели другой принцип: когда она тренируется, значения не снимаются. Они ведь во время прохода сигнала находятся в состоянии суперпозиции. Именно поэтому все работает очень быстро и одноразово. Если снять значение, то вся магия квантовой системы рушится. Поэтому для этого, вероятно, придется искать некоторые другие подходы.
  • Квантовые вычисления пока сырые по сравнению с классическими подходами и пайплайнами. Сегодня существует очень много традиционных претренированных моделей и готовых реализаций, которые можно найти на тензорхабе. Вам достаточно выбрать нужную, доработать под свои условия и запустить в продакшн. С квантовыми моделями это сложно. К тому же вы не можете поставить квантовый компьютер под стол и обращаться к клауд-инстансам, которые сейчас дороги, а масштабировать их трудно.
  • Квантовые вычисления проще, чем могут показаться сначала. Особенно на фоне развития облачных платформ и фреймворков, как тот же Pennylane.

По-моему, именно квантовым компьютерам мы со временем будем обязаны появлением первого человекообразного искусственного интеллекта. Такая разработка будет учиться и принимать взвешенные решения. При этом будет делать все на одном домене.

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

Читайте также: Специалистам по Machine Learning платят больше, чем разработчикам: как им стать, нужна ли математика и другие ответы от эксперта

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Останні статті

Токсичные коллеги. Как не стать одним из них и прекратить ныть

В благословенные офисные времена, когда не было большой войны и коронавируса, люди гораздо больше общались…

07.12.2023

Делать что-то впервые всегда очень трудно. Две истории о начале карьеры PM

Вот две истории из собственного опыта, с тех пор, когда только начинал делать свою карьеру…

04.12.2023

«Тыжпрограммист». Как люди не из ІТ-отрасли обесценивают профессию

«Ты же программист». За свою жизнь я много раз слышал эту фразу. От всех. Кто…

15.11.2023

Почему чат GitHub Copilot лучше для разработчиков, чем ChatGPT

Отличные новости! Если вы пропустили, GitHub Copilot — это уже не отдельный продукт, а набор…

13.11.2023

Как мы используем ИИ и Low-Code технологии для разработки IT-продукта

Несколько месяцев назад мы с командой Promodo (агентство инвестировало в продукт более $100 000) запустили…

07.11.2023

Университет или курсы. Что лучше для получения IT-образования

Пару дней назад прочитал сообщение о том, что хорошие курсы могут стать альтернативой классическому образованию.…

19.10.2023