Рабочие процессы и методы кодирования в квантовом машинном обучении
Делиться

В последние годы квантовые вычисления привлекают все большее внимание исследователей, бизнеса и общественности. Слово «квантовый» стало модным термином, который многие используют для привлечения внимания. По мере роста популярности этой области, квантовое машинное обучение (QML) стало областью, где пересекаются квантовые вычисления и машинное обучение.
Как человек, интересующийся машинным обучением и питающий глубокую любовь к математике и квантовым вычислениям, я нашел концепцию квантового машинного обучения очень привлекательной. Но как исследователь в этой области, я также был несколько скептически настроен относительно ближайших перспектив применения квантового машинного обучения.
Сегодня машинное обучение лежит в основе таких инструментов, как рекомендательные системы и медицинская диагностика, благодаря поиску закономерностей в данных и построению прогнозов. Квантовые вычисления, напротив, обрабатывают информацию иначе, используя такие эффекты, как суперпозиция и квантовая запутанность.
Область квантового машинного обучения исследует эту возможность и стремится ответить на этот вопрос.
Могут ли квантовые компьютеры помочь нам эффективнее извлекать уроки из данных?
Однако, как и во всем, что связано с квантовыми вычислениями, важно четко обозначить ожидания. Квантовые компьютеры в настоящее время неисправны и не способны запускать крупномасштабные программы. Тем не менее, они могут продемонстрировать концептуальную возможность применения квантового машинного обучения в различных областях.
Более того, квантовое машинное обучение (QML) не призвано заменить классическое машинное обучение. Вместо этого оно ищет те части процесса обучения, где квантовые системы могут предложить преимущество, такие как представление данных, исследование сложных пространств признаков или оптимизация.
Учитывая это, как же специалисту по анализу данных или инженеру по машинному обучению попробовать свои силы в QML? Любой алгоритм машинного обучения (квантовый или классический) требует данных. Первым шагом всегда является подготовка и очистка данных. Итак, как же подготовить данные для использования в алгоритме QML?
Эта статья посвящена рабочим процессам QML и кодированию данных.
Рабочие процессы квантового машинного обучения
Прежде чем перейти к данным, давайте ненадолго остановимся и кратко определим, что такое квантовое машинное обучение. В общих чертах, квантовое машинное обучение — это алгоритмы, использующие квантовые системы для выполнения задач машинного обучения, включая:
1. Классификация
2. Регрессия
3. Кластеризация
4. Оптимизация
Большинство современных подходов относятся к так называемым гибридным квантово-классическим моделям, в которых классические компьютеры обрабатывают ввод данных и оптимизацию, а квантовые схемы являются частью модели.
Полезно представить это так: классическое машинное обучение фокусируется на разработке признаков, в то время как квантовое машинное обучение часто фокусируется на кодировании признаков в квантовые состояния.
Поскольку данные могут принимать различные формы, рабочие процессы QML могут выглядеть по-разному в зависимости от типа входных данных и алгоритма.

Если у нас есть классические данные и классический алгоритм, это типичный рабочий процесс машинного обучения. А вот остальные три варианта — это уже совсем другая история.
1. Квантовые данные с квантовой моделью (полностью квантовой)
Самый простой подход — это иметь некоторые квантовые данные и использовать их с квантовой моделью. Теоретически, как бы выглядел этот рабочий процесс?
1. Ввод квантовых данных : Входные данные уже представляют собой квантовое состояние: ∣ψ⟩
2. Квантовая обработка : Схема преобразует состояние: U(θ)∣ψ⟩
3. Измерение
Данные, с которыми мы работаем, могут поступать из следующих источников:
1. Квантовый эксперимент (например, измерение параметров физической системы).
2. Квантовый сенсор.
3. Другой квантовый алгоритм или симуляция.
Поскольку данные уже являются квантовыми, этап кодирования не требуется. На концептуальном уровне это «чистейшая» форма квантового машинного обучения, поэтому можно ожидать здесь наиболее сильного квантового преимущества!
Однако на практике этот рабочий процесс по-прежнему имеет ограничения из-за ряда проблем, в том числе:
1. Доступ к квантовым данным: Большинство реальных наборов данных (изображения, текст, табличные данные) являются классическими. Получить квантовые данные гораздо сложнее.
2. Подготовка и управление состоянием: Даже при наличии квантовых данных подготовка и поддержание состояния ∣ψ⟩ с высокой точностью представляет собой сложную задачу из-за шума и декогеренции.
3. Ограничения измерений: Хотя мы откладываем измерения до конца, мы все еще сталкиваемся с ограничениями, такими как получение лишь частичной информации из квантового состояния и необходимость тщательной разработки наблюдаемых величин.
В таком рабочем процессе цель состоит в том, чтобы учиться непосредственно у квантовых систем.
2. Квантовые данные с использованием классических алгоритмов
До сих пор мы рассматривали рабочие процессы, в которых квантовые данные используются в квантовой системе. Но следует также учитывать сценарий, когда у нас есть квантовые данные, и мы хотим использовать их с классическим алгоритмом машинного обучения.
На первый взгляд, это кажется естественным продолжением. Если квантовые системы могут генерировать обширные многомерные данные, почему бы не использовать классические модели машинного обучения для их анализа?
На практике такой рабочий процесс осуществим, но имеет важное ограничение.
Квантовая система описывается таким состоянием, как:
|ψ⟩=∑i=02n−1αi|i⟩|psirangle = sum_{i=0}^{2^n – 1} alpha_i |irangle
которое содержит экспоненциально большое количество амплитуд. Однако классические алгоритмы не могут напрямую получить доступ к этому состоянию. Вместо этого мы должны измерить систему, чтобы извлечь классическую информацию, например, с помощью ожидаемых значений:
xi=⟨ψ|Oi|ψ⟩x_i = langle psi | О_и | psi rangle
Затем эти измеренные величины можно использовать в качестве характеристик в классической модели.
Проблема заключается в том, что измерение принципиально ограничивает объем информации, которую мы можем извлечь. Каждое измерение предоставляет лишь частичную информацию о состоянии, а для восстановления полного состояния потребовалось бы непрактично большое количество повторных экспериментов.
Тем не менее, классическое машинное обучение может сыграть важную роль в анализе зашумленных данных измерений, выявлении закономерностей или улучшении обработки сигналов.
Таким образом, большинство подходов к квантовому машинному обучению направлены на сохранение данных в квантовой системе как можно дольше, что возвращает нас к главной задаче этой статьи:
Как вообще происходит кодирование классических данных в квантовые состояния?
Итак, давайте поговорим об окончательном варианте рабочего процесса.
3. Классические данные с квантовой моделью (гибридная квантовая модель)
Это наиболее распространенный на сегодняшний день рабочий процесс. По сути, это модель, в которой мы кодируем классические данные в квантовые состояния, а затем применяем QML для получения результатов. Гибридные алгоритмы QML, подобные этому, состоят из 5 шагов:
1. Классический ввод данных
Исходные данные имеют привычную форму:
x=(x1,x2,…,xn)x=(x1,x2,…,xn)
2. Этап кодирования
Данные отображаются в квантовое состояние:
x→|ψ(x)⟩x rightarrow |psi(x)rangle
3. Квантовая обработка
Данные обрабатываются параметризованной схемой:
U(θ)|ψ(x)⟩U(theta)|psi(x)rangle
4. Измерение
Результаты извлекаются в виде ожидаемых значений:
y=⟨ψ|O|ψ⟩y = langle psi | О | psi rangle
5. Классический цикл оптимизации
Параметры θ обновляются с помощью классических оптимизаторов.
Этот рабочий процесс создает новую проблему, которой нет в классическом машинном обучении:
Как эффективно закодировать классические данные в квантовую систему?
На этот вопрос мы ответим далее!

Классическое кодирование данных
Если мы посмотрим на эти рабочие процессы со стороны, то станет ясно одно: главное структурное различие заключается в этапе кодирования.
Поскольку в большинстве реальных приложений используются классические наборы данных, этот шаг обычно необходим. Итак, как же представить классические данные в квантовой системе?
В классических вычислениях данные хранятся в памяти в виде чисел.
В квантовых вычислениях данные должны быть представлены в виде квантового состояния:
|ψ⟩=α0|0⟩+α1|1⟩|psirangle = alpha_0 |0rangle + alpha_1 |1rangle
Для нескольких кубитов:
|ψ⟩=∑i=02n−1αi|i⟩|psirangle = sum_{i=0}^{2^n – 1} alpha_i |irangle
Где: αialpha_i — комплексные амплитуды (∑|αi|2=1)( sum |alpha_i|^2 = 1 ). Таким образом, простыми словами, кодирование означает: преобразование классических данных в амплитуды, фазы или вращения квантового состояния.
Теперь давайте подробнее рассмотрим различные типы кодирования данных.
1. Базовое кодирование (бинарное отображение)
Это простейший подход к кодированию классических данных. По сути, мы представляем классические двоичные данные непосредственно в виде состояний кубитов.
x=(1,0,1)→|101⟩x = (1,0,1) rightarrow |101rangle
Пример использования Qiskit
from qiskit import QuantumCircuit qc = QuantumCircuit(3) qc.x(0) # 1 qc.x(2) # 1 qc.draw('mpl')

Здесь каждый бит напрямую соответствует кубиту, и принцип суперпозиции не используется. Такой подход работает только в том случае, если используемый нами набор данных прост, и обычно применяется в демонстрациях и обучении, а не в непосредственной реализации QML.
При таком типе кодирования данных для каждой характеристики потребуется один кубит, что плохо масштабируется для решения более крупных и реалистичных задач.
2. Кодирование угла
Для более надежного кодирования вместо преобразования значений в 0 или 1 мы используем вращения для кодирования наших классических данных. Квантовые данные можно вращать в трех направлениях: X, Y и Z.
При угловом кодировании мы берем классический признак x и отображаем его на квантовое состояние с помощью вращения:
∣ψ(x)⟩=Rα(x) ∣0⟩∣ψ(x)⟩=Rα(x) ∣0⟩, где α∈{x, y, z}.
Таким образом, в принципе, можно использовать Rx(x), Ry(x) или Rz(x).
Однако не все из них кодируют данные одинаково. В большинстве случаев для кодирования данных используется Rx или Ry.
Ry(x)∣0⟩=cos(2x)∣0⟩+sin(2x)∣1⟩Ry(x)∣0⟩=cos(2x)∣0⟩+sin(2x)∣1⟩
Rx(x)∣0⟩=cos(2x)∣0⟩−isin(2x)∣1⟩Rx(x)∣0⟩=cos(2x)∣0⟩−i sin(2x)∣1⟩
Пример использования Qiskit
from qiskit import QuantumCircuit import numpy as np x = [0.5, 1.2] qc = QuantumCircuit(2) qc.ry(x[0], 0) qc.ry(x[1], 1) qc.draw('mpl')

В принципе, кодирование углов может быть реализовано с помощью вращений вокруг любой оси (например, Rx, Ry, Rz). Однако вращения вокруг осей Y и X напрямую влияют на вероятности измерения, в то время как вращения вокруг оси Z кодируют информацию в фазе и требуют дополнительных операций для того, чтобы стать наблюдаемыми.
При использовании вращения для кодирования данных непрерывные данные обрабатываются естественным образом, что приводит к компактному представлению, которое легко реализовать. Сам по себе этот метод в основном линеен, если не добавить запутанность.
3. Амплитудное кодирование
Вот здесь-то и начинают проявляться «квантовые» свойства. При амплитудном кодировании данные кодируются в амплитуды квантового состояния.
x=(x0,x1,x2,x3)x = (x_0, x_1, x_2, x_3)
|ψ⟩=x0|00⟩+x1|01⟩+x2|10⟩+x3|11⟩|psirangle = x_0|00rangle + x_1|01rangle + x_2|10rangle + x_3|11rangle
Используя n кубитов, мы можем закодировать 2n²ⁿ значений, что означает экспоненциальное сжатие.
Пример использования Qiskit
from qiskit import QuantumCircuit from qiskit.quantum_info import Statevector import numpy as np x = np.array([1, 1, 0, 0]) x = x / np.linalg.norm(x) qc = QuantumCircuit(2) qc.initialize(x, [0,1]) qc.draw('mpl')

Проблема такого подхода заключается в том, что подготовка состояния обходится дорого (с точки зрения схемы), что может привести к созданию сложных и зашумленных схем. Поэтому, хотя амплитудное кодирование кажется мощным инструментом в теории, оно не всегда применимо на практике с современным оборудованием.
4. Карты признаков (кодирование высшего порядка)
До сих пор мы в основном просто загружали классические данные в квантовые состояния. Карты признаков идут на шаг дальше, вводя нелинейность, улавливая взаимодействия признаков и используя квантовую запутанность.
Структура такого кодирования будет выглядеть следующим образом:
Uϕ(x)=exp(i∑j,kϕjk(x)ZjZk)U_phi(x) = expleft(i sum_{j,k} phi_{jk}(x) Z_j Z_k right)
Это означает, что характеристики не просто действуют независимо друг от друга; они взаимодействуют друг с другом.
Пример использования Qiskit
from qiskit import QuantumCircuit x1, x2 = 0.5, 1.0 qc = QuantumCircuit(2) qc.ry(x1, 0) qc.ry(x2, 1) qc.cx(0, 1) qc.rz(x1 * x2, 1) qc.draw('mpl')

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

Заключительные мысли
Хотя квантовые компьютеры ещё не достигли полного совершенства в аппаратном плане, сегодня мы можем многое с ними сделать. Одно из наиболее перспективных применений квантовых компьютеров — это квантовое машинное обучение. Если из этой статьи и есть какая-то важная идея, то это:
В квантовом машинном обучении способ кодирования данных зачастую имеет такое же значение, как и используемая модель.
На первый взгляд это может показаться удивительным, но на самом деле это похоже на классическое машинное обучение. Разница в том, что в QML кодирование — это не просто предварительная обработка; это часть самой модели.
И, как и в более широкой области квантовых вычислений, эта сфера все еще развивается. Мы пока не знаем «лучших» стратегий кодирования. Аппаратные ограничения определяют то, что сегодня является практически осуществимым, и новые подходы все еще находятся в стадии исследования.
Поэтому, если вы хотите заняться квантовыми вычислениями, квантовое машинное обучение — одно из наиболее перспективных направлений для начала. Не стоит сразу переходить к сложным алгоритмам, а лучше начать с гораздо более простого вопроса: как мои данные могут взаимодействовать с квантовой системой?
Ответ на этот вопрос позволит нам в полной мере использовать возможности современных квантовых компьютеров.
Список литературы и дополнительные материалы
- Шульд, М., и Петруччоне, Ф. (2018). Обучение с учителем на квантовых компьютерах (том 17, стр. 3). Берлин: Springer.
- Гавличек, В., Корколес, А.Д., Темме, К., Харроу, А.В., Кандала, А., Чоу, Дж.М., и Гамбетта, Дж.М. (2019). Обучение с учителем с использованием квантово-улучшенных пространств признаков. Nature, 567(7747), 209-212.
- Документация Qiskit: https://qiskit.org/documentation/
- Шульд, М., и Киллоран, Н. (2019). Квантовое машинное обучение в гильбертовых пространствах признаков. Physical Review Letters, 122(4), 040504.
Сара А. Метвалли. Все публикации Сары А. Метвалли.
Источник: towardsdatascience.com





















