e Квантовые нейронные сети на процессорах будущего – Блог Рег.ру
Категории AI да GPU

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

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

В 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.

Похожие публикации

Аутсорсинг VS собственное производство одежды: опыт бренда кроссовок

Один способ позволяет отслеживать каждую деталь изделия, другой – сфокусироваться на брендинге и маркетинге. Разбираемся…

12 минут назад

Как сократить затраты на инфраструктуру в два раза: опыт ИТ-компании Ctrl2GO

Рассказываем, как помогли российскому разработчику систем аналитики мигрировать в частное облако и сократить затраты на…

6 часов назад

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

Рассказываем, как создать сайт-визитку и какой должна быть структура. Внутри — инструкция, которая поможет предпринимателям.

5 дней назад

Как продвигать бизнес с помощью геосервисов

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

6 дней назад

Как открыть своё digital-агентство

Можно стартовать с багажом знаний из найма или практически без опыта. Рассказываем, что нужно делать:…

6 дней назад

Что такое Data Science и кто такой Data Scientist

Что такое наука о данных, чем занимается Data Scientist и можно ли обучиться этой специальности…

1 неделя назад