Написано вместе с Марком Фингерхутом

Как мы можем использовать квантовые вычисления для решения задач машинного обучения? Исследователи, в большинстве своем физики, в последние пару лет все чаще стали задавать этот вопрос. Некоторые первые ответы подходили к проблеме так, как это обычно делается в квантовых вычислениях: возьмите классический алгоритм машинного обучения и найдите квантовый алгоритм, который быстрее вычисляет то же решение. (И для тех, кто не знаком с вычислительной сложностью, «быстрее» в этом контексте не означает «абсолютно быстрее», но с лучшей производительностью для растущих размеров проблем, таких как больше данных.)

В нашей статье Реализация классификатора на основе расстояний с помощью схемы помех (Schuld, Fingerhuth and Petruccione, 2017), которая была удостоена второго места на конкурсе IBM Q Best Paper Award, мы изменили этот подход. Можем ли мы придумать простую модель машинного обучения, так называемый классификатор, который можно реализовать с помощью небольшой квантовой схемы? Вкратце, классификаторы - это модели, функции или алгоритмы, которые выводят из выборки точек данных {(x, y)} входных данных x и меток классов y , чтобы угадать y для невидимых входов x.

Идея

Схема квантовой классификации, которую мы придумали, действительно очень короткая: она состоит из одного вентиля Адамара и двух измерений одного кубита, действующих на вспомогательную и назначенный кубит класса. ( Одно из измерений включает последующий отбор, но на практике с разумными показателями успеха.)

Подготовка данных

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

Классификатор

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

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

Реализация

Мы хотели запустить пример на IBM Quantum Experience, который в то время был ограничен 5-кубитной машиной. Это оказалось не так просто, как мы думали, поскольку даже для 2-го примера схема подготовки состояния, которая в принципе состоит из нескольких вентилей, была легко поглощена шумом. Марк придумал созданную вручную схему для двух выбранных входных векторов для проведения экспериментального эксперимента.

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

В общем, кажется, что даже для самого маленького классификатора в мире нам нужно немного больше времени, прежде чем мы сможем делать «аппаратные вычисления». С другой стороны, все развивается быстро, так что следите за обновлениями!

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

Пример

Предположим, у вас есть образец x¹ = (0, -1) класса y¹ = 0 и образец x² = (- 0,789, -0,615) класса y² = 1, и вы хотите знать, какой из двух классов является новым образцом данных. x = (- 0,948, 0,318) принадлежит.

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

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

Теперь вентиль Адамара влияет на амплитуды. В нашей кодировке это означает, что вычисляется сумма и разность точек данных.

Постселективное измерение «убивает» половину амплитуд.

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