Градиенты высших порядков
Contents
Градиенты высших порядков#
Автор(ы):
План лекции#
В этой лекции мы посмотрим на ту математику, которая лежит “под капотом” у parameter-shift rule. Мы познакомимся с обобщением parameter shift, а также увидим, как можно оптимизировать этот метод. В конце мы узнаем, как можно посчитать производную второго порядка за минимальное количество обращений к квантовому компьютеру.
Для более детального погружения в вопрос можно сразу рекомендовать статью [MBK21].
Важность гейтов вращений#
Если задуматься, то одним из основных (если не единственных) способов сделать параметризованную квантовую схему является использование гейтов вращений, таких как
где
Если представить схему, содержащую множество параметризованных операторов, то итоговая запись имеет вид:
Производная от измерения#
Давайте вспомним, как выглядит квантово-классическая схема обучения с VQC.
Fig. 70 Квантово-классическая схема#
Видно, что мы хотим считать производную не от самой параметризованной схемы
То есть нам важно посчитать производную от результата измерения, так как именно результат измерения у нас будет определять “предсказание” нашей квантовой нейронной сети. Причем нам нужно уметь считать производную от любого параметра
Parameter-shift для гейтов Паули#
Note
Тут мы для простоты предложим, что
Тогда сам оператор
Запишем результат математического ожидания через состояние
где
Тогда частная производная от математического ожидания по
Этот коммутатор может быть переписан следующим образом:
Тогда соответствующий градиент
По аналогии с классическими нейронными сетями и backpropagation (для тех, кто забыл это понятие, рекомендуем вернуться к вводным лекциями про классическое машинное обучение) тут явно можно выделить forward проход со смещением
Обобщенный parameter-shift#
Предложенное в [MNKF18] выражение может быть на самом деле получено в более общем виде из других соображений. Так, выражение для нашей наблюдаемой
где
Note
Действительно, явно выписав выражение для наблюдаемой и вспомнив формулы для косинуса и синуса двойного угла, а также воспользовавшись тем, что
Тогда можно воспользоваться правилами тригонометрии, а именно, тем что для любого
И подставим это в выражение для
Легко заметить, что подстановка сюда
Наконец, запишем полученное выражение в более удобном виде, который позволит нам более эффективно выписывать производные высших порядков. Для этого введем вектор
Вторая производная и гессиан#
В классической теории оптимизации, также как и в машинном обучении, очень часто на первый план выходят так называемые методы 2-го порядка. Эти методы похожи на обычный градиентный спуск, но для ускорения сходимости они также используют информацию из матрицы вторых производных, которая называется гессианом. Более подробно про методы 2-го порядка и гессиан можно посмотреть в вводных лекциях курса.
Методы второго порядка требуют больше вызовов, чтобы вычислить гессиан, но взамен они обеспечивают гораздо лучшую сходимость, а также менее склонны “застревать” в локальных минимумах. Это обеспечивает, в итоге, более быстрое обучение. В классических нейронных сетях вычисление гессиана это часто проблема, так как это матрица размерности
Пользуясь обобщенным правилом parameter shift, можно выписать выражение для второй производной [MBK21]:
Взяв
Но чаще всего нам необходимо не просто посчитать гессиан, а еще и посчитать градиент, так как в большинстве методов 2-го порядка требуются оба эти значения. В этом случае хочется попробовать подобрать такое значение для
Внимательно взглянув на выражение для 2-х производных, можно заметить, что оптимизация там возможна при расчете диагональных элементов гессиана. Давайте выпишем выражение для диагонального элемента явно:
Можно заметить, что, например, использование
Note
На самом деле, диагональные элементы гессиана можно использовать и сами по себе, например для квазиньютоновских методов оптимизации, где матрица Гессе аппроксимируется какой-то другой матрицей, чтобы не считать все вторые производные. Например, она может быть аппроксимирована диагональной матрицой, как в работе [And19].
Заключение#
В этой лекции мы познакомились с классическим parameter shift rule, а также его обобщением. Также мы узнали, как можно посчитать гессиан VQC, и даже узнали маленькие хитрости, которые можно применять для уменьшения общего количества вызовов квантовой схемы.