Алгоритм HHL
Contents
Алгоритм HHL#
Автор(ы):
Сегодня пришла пора поговорить о знаменитом алгоритме Харроу, Хассидима и Ллойда, более известном как HHL-алгоритме, способном решать системы линейных уравнений.
Очень надеюсь, что к данному занятию у вас уже есть представление об алгоритме фазовой оценки (QPE), использующем обратное квантовое преобразование Фурье, на котором и базируется HHL. Глубокое понимание всех тонкостей этого алгоритма потребует от вас уверенного владения математическим аппаратом. За детальным описанием вы всегда можете обратиться к статьям [DHM+18], [HHL09], и [HZL+17]. Приготовьтесь потратить время и умственные ресурсы, если алгоритм вас зацепит и вы решите в нем как следует покопаться. Мы же поможем вам заинтересоваться, рассмотрим основные принципы и небольшой пример.
Note
Именно HHL-алгоритм произвел настоящую революцию в области квантового машинного обучения. Ведь решение систем линейных уравнений так или иначе находится “под капотом” почти любого известного алгоритма машинного обучения. И действительно:
классические линейная и логистическая регрессия сводятся именно к этой задаче;
задача SVM может быть переформулирована в терминах решений систем линейных уравнений;
задача нахождения обартной матрицы (часто используется в глубоком обучении) внутри обычно решается через решение линейной системы;
И это только малая часть примеров!
Так что знакомство с QML не будет полным без ознакомления с этим прекрасным, но очень сложным алгоритмом!
Fig. 64 Сет Ллойд, профессор MIT и один из создателей HHL-алгоритма#
Задача#
Представим обычную систему линейных уравнений:
Что в операторной форме можно переписать как:
где
Мы будем решать задачу на квантовом компьютере, то нам нужно перейти к квантовым состояниям:
Чтобы найти искомый вектор
Распишем применительно к нашей задаче поиска вектора
Оказывается, что и это все можно провернуть с помощью известных квантовых преобразований. Принципиальный вид нашей схемы представлен следующим образом:
Fig. 65 Квантовая схема, реализующая алгоритм HHL#
В нижний регистр загружается вектор
Реализация HHL#
Для начала мы должны подготовить наши регистры по всем квантовым законам:
Мы будем использовать оператор
Note
В случае, когда
И рассматривается задача
Вспомним, что эрмитову матрицу
Тогда вектор
Чтобы понять, почему это тоже ключевой момент, давайте вспомним, что значит собственный вектор и собственное значение матрицы.
Note
Собственным вектором
Таким образом, искомый вектор
Итак, фазовая оценка. Мы применяем к кубитам второго регистра матрицы Адамара, тем самым приводим их в суперпозицию. Следом запускаем оператор
Для того, чтобы узнать собственное значение оператора
Параметр
Параметр
Алгоритм обратного квантового Фурье переводит фазу в конкретный вектор.
Принципиальная схема QPE выглядит следующим образом:
Fig. 66 Схема алгоритма QPE#
Итак, мы подготовились, вспомнили много хорошего, теперь пошагово распишем наш алгоритм.
Стартуем мы со следующим состоянием:
Т.е. наше состояние будет храниться в трех регистрах, в каждом из которых содержится столько кубитов, сколько нужно для решения задачи.
Применение QPE с использованием преобразования
, после чего мы получим собственное значение оператора во втором регистре:Поворачиваем первый кубит (с индексом
), используя специальный оператор вращения :где
– константа, которая должна быть меньше минимального из лямбда: [Почему?].Переводим первый кубит
:Применяем
(т.е. обратное получение фазы) и получаем следующее состояние:В конце мы измеряем верхний кубит и если получаем единицу, то знаем, что в нижнем регистре хранится искомый
с учетом нормировки:
Пример#
Рассмотрим небольшой, но удобный пример. Удобный в том отношении, что, вообще говоря, алгоритм HHL имеет определенное приближение. Если собственные значения не представимы в бинарной форме, то о 100% точности говорить не приходится. Мы также опустим ряд вопросов, связанных с подбором параметров и количества кубитов второго регистра. Главное сейчас – понять, что происходит, и для этого наша матрица
Итак, пусть задача выглядит так :
Собственные значения и соответствующие собственные векторы:
Зададим параметр
Как мы видим, для перевода угла
Подберем константу
В конце мы производим измерение верхнего кубита (с индексом