Поиск по сайту Поиск

Квантовые нейронные сети на процессорах будущего

Законы квантовой механики в теории позволяют создать новый тип вычислительных машин, способных решать сверхпроизводительные задачи, недоступные даже самым мощным современным суперкомпьютерам. Квантовые процессоры смогут манипулировать огромными объёмами данных за один проход и моделировать нейронные сети экспоненциального размера. В этой статье мы расскажем об особенностях и преимуществах квантового искусственного интеллекта по сравнению с классическим машинным обучением.

В 2013 году компания Google открыла лабораторию по квантовым исследованиям в области ИИ, а концерн Volkswagen в ноябре 2018 года объявил о разработке системы управления дорожным движением на квантовых компьютерах D-Wave. С тех пор «процессоры будущего» стали доступны не только крупным корпорациям, но и обычным пользователям: так, IBM в 2016 году запустила облачную платформу IBM Q Experience с удалённым доступом к квантовому компьютеру. Вслед за ней в 2017 году Microsoft разработала эмулятор квантовых вычислений Quantum Development Kit. Похожий инструмент есть и у Google под названием Quantum Computing Playground.

Но по каким принципам на подобных вычислительных машинах смогут работать нейронные сети? Чтобы разобраться в особенностях квантовых архитектур, соотнесём основные понятия машинного обучения с квантовой моделью. 

Квантовая модель

Искусственный интеллект добился больших успехов в классификации данных. Рассмотрим следующий пример: пусть у нас есть датасет, состоящий из строк, где каждая строка имеет двоичную метку. Для простоты исключим шум и будем уверены, что все метки правильные. Также у нас есть обучающая выборка — набор из определённого числа строк с их метками, и наша цель — использовать эту информацию для прогнозирования меток новых объектов. Это возможно только когда все метки описываются общей базовой функцией. Если же функции меток будут случайными (то есть не взаимосвязаны друг с другом), то мы можем анализировать их на обучающей выборке, но дать новые прогнозы уже не получится.

Пример бинарной классификации

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

Для начала поясним, что вычислительными единицами квантовых компьютеров являются кубиты (квантовые биты). В отличие от классических битов, которые принимают значения 0 или 1, квантовые системы находятся в обоих состояниях одновременно. Это позволяет ускорить решение задач за счёт параллелизма.

Рассмотрим конкретный набор из n строк, в котором каждая строка — бит, принимающий значение +1 или –1, и соответствующие им двоичные метки также равны +1 или –1. Пусть наш датасет состоит из 2n строк. Мы будем использовать квантовый процессор, который работает строго на n+1 кубитах. Последний кубит служит выводом. Для входных состояний процессор выполняет унитарные преобразования, определяемые экспериментальными соображениями. 

Теперь у нас есть набор базовых унитарных единиц, каждая из которых действует на подмножестве кубитов и зависит от непрерывного управляющего параметра 𝚹. Если мы возьмём L таких структур, то получим следующую схему:

Здесь |ψ,1〉 — подготовленная входная строка, которая преобразуется с помощью последовательности нескольких унитарных кубитов Ui(𝚹i). Во время обучения кубиты корректируются — мы измеряем оператор Паули Yn+1 на считываемом кубите и получаем в ответ метку: +1 или –1. Наша цель — соотнести результат измерения с правильной меткой исходной строки. Для этого нам нужно подобрать параметры 𝚹i, чтобы прогнозируемая метка находилась рядом с истинным значением. Мы рассмотрим, существуют ли такие параметры (представление) и можно ли их определить эффективным способом (обучение) с учётом потерь.  

Квантовый градиентный спуск

Предположим, что наша сеть достаточно подробна и параметры для представления меток существуют. Начнём, например, со случайных значений 𝚹 и возьмём первую строку обучающей выборки. Применим к ней унитарное преобразование с помощью квантового процессора и измерим оператор Паули на последнем кубите. Повторим это достаточное количество раз, пока не получим правильную оценку Yn+1 и посчитаем потери.

Теперь мы хотим немного изменить параметры 𝚹, чтобы уменьшить потери. Можно сделать это, выбрав близкие случайные значения или посчитав градиент по отношению к 𝚹, а затем сделать небольшой шаг в направлении уменьшения. Теперь у нас есть новые параметры 𝚹1. Мы можем взять следующую строку обучающей выборки и снова оценить потери. Затем немного изменить 𝚹1, чтобы опять уменьшить потери — и так далее. Эту операцию можно продолжать до тех пор, пока мы не найдём параметры, при которых получим правильные метки для входной строки.

Визуализация градиентного спуска

То, что мы описали, в классическом машинном обучении называется «стохастический градиентный спуск». Стохастичность проявляется в том, что обучающие примеры взяты в случайном порядке из исходной выборки. Когда обучение проходит успешно, после обработки достаточного количества примеров параметры располагаются там, где можно предсказать правильные метки. Значений параметров при этом может быть много, поэтому, даже взяв случайную строку в качестве стартовой, у нас есть шанс найти правильное решение. 

В традиционном машинном обучении параметры называются весами и представляют собой матрицы, линейно оперирующие с внутренними векторами. К компонентам векторов применяются нелинейные операции, прежде чем они умножаются на другие зависимые матрицы весов. Часть искусства построения успешной реализации машинного обучения — введение правильной нелинейности. В нашей модели каждая унитарная единица оперирует с выходными данными предыдущей, и никаких нелинейностей не вводится. Градиент функции потерь ограничен числом параметров, что позволяет избежать проблемы «взрыва», которая может возникнуть в классических нейронных сетях.

Представление

Важно заметить, что квантовая нейросеть способна работать не только на уровне «кошка-собака», но и вообще с любыми сколь угодно сложными бинарными функциями меток. Не вдаваясь в детали, поясним, что достигается это при помощи представления Рида-Мюллера (РМ). Можно показать, что для нашего квантового описания справедлив аналог классической теоремы о представлении: любая Булева функция метки может быть представлена в виде трёхслойной нейронной сети с внутренним слоем размером 2n. Это представление приводит к огромной матрице, которую невозможно обработать на обычном компьютере. Чтобы решить проблему в рамках квантовой модели, мы будем работать в Гильбертовом пространстве экспоненциальной размерности. 

Обучение

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

Сначала мы оцениваем потери выборки, делая многократные измерения оператора Паули Yn+1 на подготовленной входной строке (наборе унитарных единиц). После этого нам надо оценить потери и рассчитать градиент относительно 𝚹. Первый простой способ — изменять компоненты вектора параметров по одному и пересчитывать потери на каждом шаге. Для этого мы должны быть уверены, что при любом новом параметре ошибка в оценке потерь не превышает O(n3). Чтобы получить полный градиент, нам придётся повторять процесс для всех объектов обучающей выборки L.

Второй способ — ввести вспомогательный кубит и рассматривать нашу схему U(𝚹) как состоящую из 2L+2 унитарных единиц, каждая из которых зависит от нескольких кубитов. С помощью вспомогательного кубита мы можем добиться точной оценки потерь при выполнении повторных измерений. Это позволяет избежать проблемы численной точности, но требует корректной установки скорости обучения.

У нас ещё нет квантовой вычислительной машины, но мы можем моделировать процесс на обычном компьютере. Это возможно только при небольшом количестве битов, поскольку доступная нам размерность гильбертова пространства равна 2n+1. После вычисления входного квантового состояния мы непосредственно оцениваем ожидаемое значение Yn+1 без каких-либо измерений. Также мы можем оценить градиент потерь с достаточной точностью, не прибегая к методу конечных разностей.

Учимся различать цифры

Традиционные нейронные сети могут классифицировать рукописные цифры. Возьмём пример из набора данных MNIST, который состоит из 55000 обучающих примеров — пиксельных изображений рукописных цифр 28 на 28. 

Несколько примеров из датасета MNIST

Наша квантовая нейросеть моделируется на обычном компьютере. Ограничение будет состоять в том, что мы сможем обрабатывать только 16-битные данные с помощью классического симулятора 17-кубитового квантового компьютера с одним битом считывания. Поэтому будем использовать уменьшенную версию MNIST с изображениями 4 на 4 пикселя. С одним битом считывания у нас не получится взять все 10 меток (от 0 до 9), поэтому мы выберем две цифры — например, 3 и 6, — и оставим в наборе данных только их образцы. 

55000 примеров разбиты на группы по 5500 для каждого числа. Но при более детальном рассмотрении мы видим, что выборки, скажем, для цифры 3, состоят из 797 16-битных строк, а для цифры 6 — из 617. Многие изображения размыты, и на самом деле для цифр 3 и 6 существует только 197 строк. В нашей задаче мы решили полностью исключить ошибку Байеса, удалив неоднозначные строки. 

Таким образом, у нас останется 3514 образцов для числа 3 и 2517 для 6. Объединим их вместе и получим обучающую выборку из 6031 образцов.

В качестве предварительного шага обучим классическую нейросеть. Запустим классификатор Matlab с одним внутренним слоем из 10 нейронов. Каждый нейрон имеет 16 весовых коэффициентов и один коэффициент смещения, то есть 170 параметров на внутреннем слое и 4 на выходном. В классической сети нет проблем с нахождением весов, которые дают ошибку классификации менее 1% на обучающей выборке. Matlab отбирает 15% входных данных в качестве тестовой выборки и оценивает ошибку при обобщении, которая тоже составляет менее 1%.

Теперь перейдём к квантовому классификатору. Мы решили ограничить набор операций для унитарных единиц: он состоит из оператора для единичных кубитов и оператора для пар кубитов. Примем оператор для единичных кубитов 𝝨 за XY и Z, действующие на любой из 17 кубитов. Для пары кубитов мы принимаем 𝝨 за XYYZ, ZXXX, YY и ZZ.  В контексте квантового компьютера эти операторы называются вентилями. Вентиль — это базовый элемент квантовой машины, преобразующий входные состояния кубитов на выходные по определённому закону.

Первое, что мы попробовали — случайно выбрать 500 или 1000 унитарных единиц. Случайность заключается в выборе одного из 9 вентилей и кубитов, к которым он будет применяться. После нескольких сотен обучающих выборок категориальная ошибка достигла примерно 10%. Но потери для отдельных строк были чуть ниже 1, что соответствует вероятности успеха около 50% у большинства строк. Мы двигались в верном направлении, но надеялись добиться большего.

После нескольких попыток мы ограничили набор вентилей ZX и XX, причём второй кубит всегда был кубитом считывания, а первый — одним из других 16. Полные слои ZX и XX имеют 16 параметров. Мы попытались чередовать три слоя ZX с тремя слоями XX для 96 параметров и достигли 2% категориальной ошибки.

Этот пример позволил продемонстрировать, что квантовая нейронная сеть может научиться классифицировать реальные данные. Теперь наша задача — уточнить модель, чтобы она работала лучше.

А теперь сразу пакетом

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

Снова рассмотрим бинарную классификацию. Разделим выборку на классы с метками +1 и –1. Каждое из наших состояний можно рассматривать как пакет, содержащий все образцы с одинаковой меткой. Пакетное обучение тоже предполагает две стратегии. Сначала мы объединяем различные выборки в единичные состояния суперпозиции, а затем оцениваем градиент для подходящей функции потерь. В качестве альтернативы мы можем вычислить градиенты каждой выборки за раз, а затем усреднить их, как это делается в традиционном пакетном обучении. Здесь мы рассматриваем первый подход.

Проверим нашу идею на распознавании двух цифр из предыдущего раздела. Сформируем состояние +1 как наложение базовых вычислительных состояний, соответствующих всем строкам цифры 3. Точно также –1 будет квантовой суперпозицией базовых состояний строк цифры 6. Выберем диагональные вентили ZX и ZZX, где Z всегда действует на кубиты данных, а X — на кубит считывания. Это даёт нам 16 + 16 · 15/2 = 136 параметров. Выбрав их случайным образом, мы выполнили градиентный спуск, чтобы уменьшить эмпирический риск. В результате он снизился до 0.5 (в нашем примере 1 соответствует случайному угадыванию, а 0 — совершенной модели). Далее мы провели обучение, проверив категориальную ошибку на случайной выборке входных строк — она составила несколько процентов. Здесь мы не использовали достаточно хорошую методику машинного обучения, так как тестовые строки входили в состояния суперпозиции. Но суть эксперимента в том, что мы можем настроить квантовую нейронную сеть, которая обучается на суперпозициях реальных данных.

Далее мы расширили набор вентилей за пределы диагональных, выбрав XX и ZX, где первый кубит — кубит данных, а второй — кубит считывания. Нам снова удалось приблизить эмпирический риск к 0.5, и квантовая нейронная сеть имела низкую категориальную ошибку на тестовом наборе.

Превосходит ли обучение с квантовыми пакетами обычное обучение на последовательных данных? Если мы проследим потери для индивидуальной выборки, то увидим, что они колеблются случайным образом, пока не снизятся до определённого низкого значения. В случае квантового пакета эмпирический риск плавно уменьшается до достижения локального минимума. Численные эксперименты показали, что сложность квантово-пакетного обучения увеличилась на порядок. При этом эмпирический риск является более гладкой функцией, чем потери отдельной выборки. Поэтому наверняка существуют более эффективные методы его минимизации, чем метод градиентного спуска.

Свойства квантовых состояний

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

Мы провели простой численный эксперимент. Работая с 8 кубитами данных и одним выходным кубитом, мы составили кубический граф с 12 рёбрами. Для обучающих и тестовых наборов состояния формируются случайном образом, поэтому мы можем быть уверены, что эти выборки различны. После представления примерно 1000 тестовых состояний квантовая сеть правильно классифицировала 97% из них.

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

Заключение

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

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

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

С оригинальной статьёй можно ознакомиться на сайте arxiv.org.

Победить конкурентов и увеличить выручку: кейс горизонтального масштабирования клиники

Рассказываем путь развития стоматологической клиники к повышению выручки на 40% с сохранением рентабельности.
Read More

Руководство по CI/CD в GitLab для новичка

В статье разбираем, как устроена практика CI/CD, какие у нее нюансы и преимущества использования. А также расписываем пошаговый процесс использования...
Read More

Что такое GitLab, кому нужен, как пользоваться

GitLab — платформа для совместной разработки. Она позволяет командам организовывать свои процессы от планирования до мониторинга и может работать в...
Read More

Как продавать представителям разных поколений

Рассказываем, как работает теория поколений и чем она оказывается полезной для маркетинга в малом и среднем бизнесе.
Read More

Как привлечь новую аудиторию и победить конкурентов. 3 кейса-стратегии

На примере трёх кейсов разбираем трансформацию продуктов на основе методологии jobs-to-be-done.
Read More

Что стоит автоматизировать в бизнесе с самого начала

Экономить силы, время и деньги – это база, а не привилегия. Автоматизируйте процессы и уделяйте внимание стратегическим задачам.
Read More

Как составить бизнес-план: пошаговая инструкция

Бизнес-план — стратегия развития проекта, без которой не стоит начинать ни один бизнес. Рассказываем, как правильно его составить.
Read More

Сильная презентация для инвесторов: от содержания до выступления

Всё про качественную презентацию для инвесторов. Что разместить на слайдах, как держаться на встрече и увеличить свои шансы на сделку.
Read More

Дёшево и эффективно: как малому бизнесу продвигать свой сайт

Как выделиться среди конкурентов и получить внимание потенциальных клиентов. Бюджетные методы продвижения сайта – в этом обзоре.  
Read More

Как перевести бизнес в онлайн: 7 шагов

Пошаговая инструкция по переводу существующего бизнеса в онлайн: от создания сайта до начала продаж и запуска рекламы.
Read More