… Убедитесь, что вероятности благоприятствуют вам

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

Этот пост является частью книги: Практическое квантовое машинное обучение с помощью Python.

Вы увлекаетесь азартными играми?

Если да, то квантовые вычисления для вас.

Потому что, когда вы измеряете кубит, то, что вы наблюдаете, зависит от случая. Если не измерить, кубит находится в состоянии суперпозиции состояний | 0⟩ и | 1⟩. Но как только вы его измерите, он будет либо 0, либо 1. Если вы измеряете сотню кубитов в одном и том же состоянии, вы не получите один и тот же результат сто раз. Вы получите список 0s и 1s. Соотношение 0s и 1s, которое вы получаете, соответствует распределению вероятностей, которое влечет за собой состояние кубита.

В прошлой статье мы познакомились с воротами Адамара. Это позволяет нам поместить кубит в суперпозицию. Например, если вы начнете с кубита в состоянии | 0⟩, применение вентилей Адамара приведет к кубиту в состоянии | +⟩.

Результирующие амплитуды вероятностей для обоих состояний | 0⟩ и | 1⟩ равны 1 / sqrt (2). Их квадраты обозначают вероятности измерения 0 и 1 соответственно. Обе вероятности равны 1/2. Так что у нас есть шанс 50:50.

Если бы вы сделали ставку на любой исход, хорошего совета не было бы. Если вы играете достаточно долго, у вас будет одинаковое количество побед и поражений. Честная игра.

Но если бы вы были казино, такая честная игра не принесла бы вам денег. Вам нужно увеличить свои шансы на победу. Это то, чем занимаются казино. Отсюда и возникло выражение «банк всегда выигрывает». Например, Колесо фортуны и популярные игровые автоматы больше всего ставят игроков в невыгодное положение. В этих играх преимущество казино составляет 10% и более. Но даже в блэкджеке, самой честной игре, если в нее играть оптимально, преимущество казино составляет около 1%.

Допустим, казино выигрывает, когда мы измеряем 1, а игрок выигрывает, когда мы измеряем 0. Как казино, мы хотим увеличить шанс выигрыша на 10%, чтобы выигрывать в 60% случаев.

Мы уже знаем один способ. Мы можем указать амплитуды вероятности кубита во время его инициализации. Поскольку вероятности являются квадратами амплитуд вероятностей, нам нужно предоставить квадратные корни из вероятностей, которые мы хотим указать (строка 7).

Но как мы можем изменить вероятность измерения 0 или 1 вне инициализации?

В предыдущей статье, вместо того, чтобы указывать точные вероятности, мы контролировали вероятности с помощью угла θ (тета). Это угол между базисным вектором состояния | 0⟩ и состоянием кубита | ψ⟩. θ контролирует близость вектора головы к верху и низу системы (пунктирные линии). И эти близости представляют собой амплитуды вероятностей, квадраты которых представляют собой вероятности измерения 0 или 1 соответственно. α ^ 2 обозначает вероятность измерения | ψ⟩ как 0. β ^ 2 обозначает вероятность измерения как 1.

Мы можем вычесть значения α и β и, следовательно, состояние | ψ⟩:

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

Так почему бы нам не использовать эту интерпретацию для поворота состояния нашего кубита? θ - угол между состоянием | 0⟩ и вектором состояния кубита | ψ⟩. Следовательно, поворот | 0⟩ на θ означает превращение его в | ψ⟩. Кет-бюстгальтер | ψ⟩⟨0 | обозначает эту часть нашего преобразования.

Состояние кубита, которое мы называем | ψ′⟩ на следующем изображении, изображает поворот состояния | 1⟩ на θ. Кет-бюстгальтер | ψ′⟩⟨1 | обозначает эту вторую часть нашего преобразования.

Следующее уравнение описывает вращение нашего кубита:

Эта матрица известна как матрица вращения. Единственная квантовая специфика здесь заключается в том, что мы берем синус и косинус θ / 2, а не θ. Причина этого в том, как мы представляем наш кубит с состояниями | 0⟩ и | 1⟩, противоположными друг другу на одной оси.

Usually, the rotation matrix implies a counter-clockwise rotation because in a standard representation, increasing angles "open" counter-clockwise. But the qubit state vector "opens" clockwise starting from the state |0>. Therefore, the rotation matrix implies a clockwise rotation.

Возникает еще один вопрос: почему в формуле есть −sin (θ / 2)?

Когда вы посмотрите на рисунок выше, вы увидите, что состояние кубита | ψ′⟩ заканчивается слева. Вероятности состояний на этой стороне равны вероятностям состояний на правой стороне (если они отражены на вертикальной оси). Но в предыдущей статье мы также узнали о важности обратимых преобразований. Итак, нам явно нужно отличать вращение по часовой стрелке от вращения против часовой стрелки. Поскольку нам нужно различать, применили ли мы вентиль Адамара к состоянию | 0⟩ (в результате | +⟩) или к состоянию | 1⟩ (в результате | −⟩). Это такое же оправдание.

Но почему мы указываем отрицательное значение для α ′, а не для β ′?

В квантовой механике мы обычно интерпретируем все векторы в левой части вертикальной оси как отрицательные значения β. Хотя это правда, на самом деле нет способа определить разницу между состояниями

а также

И когда мы смотрим на матрицу вращения в классическом двумерном векторном пространстве с ортогональными осями, мы можем видеть, что это значение для α ’, которое находится в отрицательной области, а не значение для β’.

Как видите, вектор | ψ′⟩ заканчивается в отрицательной области оси абсцисс. Расстояние до оси Y равно sinθ. Следовательно, верхнее значение (представляющее координату x) отрицательно.

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

Давайте посмотрим на нашу трансформацию в действии.

Объект Qiskit QuantumCircuit предоставляет функцию ry (строка 13). ry для ворот Ry. Поскольку она вращает кубит вокруг оси y квантовой системы, эта функция принимает угол θ (в радианах) в качестве первого параметра. Значение 2*pi означает полный поворот на 360 °. Положение кубита, к которому применяется вентиль, является вторым параметром.

Ворота Ry легко реверсивны. Просто примените другой вентиль RyRy с параметром −θ.

Мы начали с цели увеличить шансы казино на выигрыш на 10%. Что составляет 10% по углу θ?

θ обозначает угол между базисным состоянием | 0⟩ и | ψ⟩. Из нашей формулы квантового состояния ...

… Мы можем видеть, что у нас есть амплитуда вероятности для состояния | 1⟩ sin (θ / 2). Таким образом, вероятность измерить кубит в состоянии | ψ⟩ как 1 - это квадрат амплитуды вероятности.

Решим это уравнение относительно угла θ.

Эта формула показывает угол θ, который представляет вероятность измерения | ψ⟩ как 1.

Следующая функция prob_to_angle реализует это уравнение в Python. Требуется вероятность измерить кубит как 1 и получить соответствующий угол θ.

Давайте воспользуемся этой функцией, чтобы установить вероятность измерения нашего кубита как 1 на 60%.

Мы инициализируем наш кубит состоянием | 0⟩ (строка 4). Мы применяем вентиль Ry к кубиту и передаем в качестве первого параметра результат вызова prob_to_angle со значением вероятности 0.6 (строка 13). Остальной код остается без изменений.

В результате мы видим 60% шанс измерить кубит как значение 1. Мы нашли эффективный способ контролировать вероятности измерения 0 и 1 соответственно.

Давайте посмотрим, что произойдет, если мы применим Ry-вентиль к кубиту в другом состоянии, например, в

В следующем примере мы инициализируем кубит в состоянии | +⟩. Он имеет вероятность 50% измерения кубита в состоянии 0 или 1 (строка 4). И мы поворачиваем его на угол, который вычисляем с вероятностью 10% (строка 13).

Подождите, это неправильно. У нас есть 80% шанс измерить кубит как 1. Но мы ожидали только 60%.

Проблема в том, как мы вычислили угол θ из вероятности, которую он представляет. θ - угол между вектором | ψ⟩ и вектором базисного состояния | 0⟩. Но градиенты тригонометрических функций (таких как синус и арксинус) непостоянны. Таким образом, вероятность того, что угол, который начинается с вершины круга (состояние | 0⟩), представляет собой другую вероятность того, что тот же угол начинается с горизонтальной оси, например, состояние | +⟩.

Мы можем это исправить. Мы вычисляем общий угол θ, который представляет собой сумму априорной вероятности и вероятности, которую мы хотим, чтобы наш кубит изменился 2*asin(sqrt(prob+prior)). Мы вычитаем из него угол, который представляет предыдущий -2*asin(sqrt(prior)). В результате получается угол, который представляет изменение вероятности в текущем состоянии кубита.

Пишем новую функцию prob_to_angle_with_prior (строки 3-7). Эта функция принимает в качестве первого параметра вероятность, на которую мы хотим, чтобы наш кубит изменился. И он принимает априорную вероятность кубита в качестве второго параметра.

Когда мы запускаем код, мы видим ожидаемый результат.

Вращение кубита вокруг оси y позволяет управлять вероятностями измерения 0 и 1 по углу θ. И вы можете представить θ изменением вероятности измерения кубита как 1 (P1 (ψ ′)) и априорной вероятностью измерения 1 (P1 (ψ))

Заключение

Во-первых, это не беззаботный способ подтолкнуть вероятности в определенном направлении. Хотя вы можете сдвигать угол θ все дальше и дальше, влияние, которое он оказывает на результирующие вероятности, зависит от направления вектора состояния вашего кубита | ψ⟩. Если вектор | ψ⟩ указывает на правую часть оси y, поворот его на θ увеличивает вероятность измерения 1. Но если вектор | ψ⟩ указывает на левую сторону оси y, поворот его на θ снижает вероятность измерения 1.

В квантовых вычислениях то, куда вы пойдете, всегда зависит от того, откуда вы.

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

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

Чтобы добиться успеха за пределами отслеживаемых манипуляций с состояниями кубитов, нам нужно работать с несколькими кубитами одновременно. Когда мы объединяем кубиты, становятся возможными более сложные преобразования.

Этот пост является частью книги: Практическое квантовое машинное обучение с помощью Python.

Первые три главы получите бесплатно здесь.