Скобки
Contents
Скобки#
Автор(ы):
Дисклеймер: нам нужен инструментарий для работы с более абстрактными пространствами!
Символ Кронекера и остальные специальные тензора – это удобные примитивы для низкоуровневой работы с матрицами и векторами. Физики смогли придумать поверх примитивов линейной алгебры отличный синтаксический сахар, т.н. нотацию Дирака. Но давайте начнем с определения гильбертова пространства.
Гильбертово пространство#
Гильбертово пространство – это полное линейное векторное пространство, определяемое:
скалярным произведением
, в простейшем частном случае - ;зафиксированной нормой вида
;метрикой
.
Полное пространство#
При нахождении предела некоторой последовательности полное метрическое пространство дает возможность не думать о принадлежности этого предела данному пространству, то есть по своей сути разрешает предельный переход и позволяет доказать множество красивых теорем. Подробнее строгое определение можно посмотреть тут.
Нотация Дирака, или Bra-Ket нотация#
Напомним, что в гильбертовом пространстве для пространства
и обозначение Bra для элемента
Bra-ket
Часто, например, требуется показать два граничных состояния кубита
Внешнее произведение (outer-product)#
Также имеет смысл и переставленная запись Ket-Bra, которая называется внешним произведением:
По сути это матрица
Мы вернемся к Ket-Bra чуть ниже, когда будем говорить про операторы проекции.
Эрмитов оператор#
Оператор
Унитарный оператор#
Унитарный оператор
Напомним, что операция
import numpy as np
import scipy as sp
from scipy import linalg
U_hat = np.array([
[1 + 0j, 0 + 0j],
[0 + 0j, 1 + 0j]
])
U_hat_star_byhands = U_hat.conj().T
U_hat_star_long = np.conjugate(np.transpose(U_hat))
print(np.allclose(U_hat_star_long, U_hat_star_byhands))
True
Также в Python
для многих операций есть соответствующие методы вместо функций и их сокращения, например U.transpose()
– то же самое, что U.T
, а U.conjugate()
– U.conj()
.
Важное свойство, что любой эрмитов оператор
Давайте докажем быстро этот факт: для эрмитовых квадратных матриц можно определить матричные функции через спектральное разложение матрицы, которое в силу свойств эрмитовых матриц имеет вид:
Note
В качестве упражнения для самопроверки можете показать, что такое определение эквивалентно определению через степенной ряд:
Доказательство:
Проверим определение унитарной матрицы:
Заметим, что теперь у нас уже скалярная экспонента, которая применяется к элементам диагональной матрицы, и мы можем воспользоваться тем, что произведение экспонент превращается в экспоненту от суммы степеней:
В конце мы еще раз воспользовались тем, что
Note
Кстати, любая матрица вида
Давайте продемонстрируем доказанный факт на примере матрицы дискретного преобразования Фурье без нормировочного коэффициента
N = 3
w = np.sqrt(np.exp(-1j * 2 * np.pi / N))
D = np.array([
[1, 1, 1],
[1, w, w ** 2],
[1, w ** 2, w ** 4]
])
U = D @ D.conj().T
print(f"{U = }")
print(f"{D = }")
print(f"{np.allclose(U @ U.T.conj(), np.eye(N)) = }") # no
U_hat = linalg.expm(1j * U)
print(f"\n{np.allclose(U_hat @ U_hat.conj().T, np.eye(N)) = }")
print(f"\n{np.allclose(U_hat.conj().T @ U_hat, np.eye(N)) = }")
U = array([[ 3.00000000e+00+0.00000000e+00j, 1.00000000e+00+1.73205081e+00j,
-1.11022302e-16+7.77156117e-16j],
[ 1.00000000e+00-1.73205081e+00j, 3.00000000e+00+0.00000000e+00j,
1.00000000e+00+1.73205081e+00j],
[-1.11022302e-16-7.77156117e-16j, 1.00000000e+00-1.73205081e+00j,
3.00000000e+00+0.00000000e+00j]])
D = array([[ 1. +0.j , 1. +0.j , 1. +0.j ],
[ 1. +0.j , 0.5-0.8660254j, -0.5-0.8660254j],
[ 1. +0.j , -0.5-0.8660254j, -0.5+0.8660254j]])
np.allclose(U @ U.T.conj(), np.eye(N)) = False
np.allclose(U_hat @ U_hat.conj().T, np.eye(N)) = True
np.allclose(U_hat.conj().T @ U_hat, np.eye(N)) = True
Пример: оператор-проектор#
Оператором проекции является оператор
Покажем, что Ket-Bra вида
поскольку вектор состояния – нормированный:
Оператор Ket-Bra с вектором состояния
Пример: оператор поворота#
Оператором поворота по оси вращения
Например, матрица поворота относительно оси
Если у нас больше измерений, то по тем измерениям, которые не затрагиваются этим поворотом, у нас в строке и столбце стоят нули, кроме пересечения строки и столбца, отвечающих за это измерение - там стоит единица.
Операторы поворота очень важны в квантовых вычислениях. Они рассматриваются отдельно в лекции про квантовые гейты и далее используются в вариационных квантовых схемах для кодирования классических данных в квантовые операторы.
Пример: оператор дифференцирования#
В пространстве многочленов
Тогда производная многочлена
Про разницу между оператором и матрицей преобразования
Мы с вами рассматривали операторы через конечные матрицы, но на самом деле гильбертово пространство было придумано как раз, чтобы можно было работать с бесконечномерными векторами и применять непрерывные операторы. Можно считать, что есть некоторый дуализм между непрерывным оператором и пределом бесконечной матрицы. Иногда удобнее работать с матрицей, а иногда – с абстрактным оператором.
Произведение Кронекера#
Давайте рассмотрим еще одну интересную операцию, которая называется матричным тензорным произведением (является тензорным произведением для линейных операторов) или произведением Кронекера.
Проще всего его необходимость можно продемонстрировать на примере двух игр: Орел/Решка и бросок кубика. Мы можем записать состояния этих игр через вероятности событий и давайте возьмем монетку со смешенным центром тяжести и такой же кубик:
Либо в виде матрицы, где по строкам будут события монетки, а по столбцам – кубика:
С помощью произведения Кронекера (или, повторимся, – матричного тензорного произведения) похожие огромные вектора и матрицы можно очень компактно записать:
В общем случае,
Основные его свойства вы можете прочитать в статье: Произведение Кронекера
Есть и другие нужные тензорные операции, например, чуть больший список вы можете найти в этой статье или в рекомендованной литературе по квантовой механике.
Рекомендованная литература#
Quantum Mechanics: The Theoretical Minimum Illustrated Edition by Leonard Susskind, Art Friedman [SF14] или его русский перевод [15b]. Книга сочетает в себе довольно строгий формализм вместе с интуицией квантовой механики. Главы построены в виде конкретных примеров или задач, которые понимают, зачем та или иная теория необходима.
Mathematics for machine learning by Marc Peter Deisenroth, A. Aldo Faisal, and Cheng Soon Ong [DFO20] - отличная книжка чтобы освежить воспоминания о базовых алгоритмах в машинном обучении и о математике, которая применяется в них. Доступна бесплатная электронная версия.
Deep Learning by Ian Goodfellow, Yoshua Bengio, Aaron Courville [GBC16] - отличная книжка, чтобы разобраться в основах глубокого обучения, чем-то может заменить предыдущую книгу, отличный старт, если вы хотите разобраться в автоэнкодерах или в других нейросетевых моделях. Доступна бесплатная электронная версия.
Что мы узнали#
произвол со скобками
Гильбертовы пространства
Эрмитовый оператор
Унитарный оператор
Примеры различных операторов