Использование вероятностной природы кубита

Хотите начать работу с квантовым машинным обучением? Взгляните на Практическое квантовое машинное обучение с помощью Python.

В серии предыдущих публикаций (Наглядный пример квантового преимущества и Улучшение квантового алгоритма Дойча и Йозсы) мы рассмотрели один из первых квантовых алгоритмов, который оказался экспоненциально быстрее, чем его классический аналог. Дэвид Дойч разработал этот алгоритм и позже обобщил его вместе с Ричардом Джозса.

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

Монету можно было обмануть, и она всегда приземлялась на одну сторону. Или, что было бы справедливо, приземление с обеих сторон одинаково вероятно.

Первый алгоритм Дойча охватил всего два подбрасывания монеты. Последнее обобщение рассматривает произвольное количество бросков. Но здесь возникает большое но: предполагается, что сбалансированная функция сбалансирована в определенных границах. Если, например, граница равна двум (как в первом алгоритме Дойча), то алгоритм предполагает, что одна подбрасывание приводит к хедз-апу, а другая - к решке.

Это предположение нереально. Поэтому Дойч и Йозса обобщили алгоритм для работы с любым количеством бросков.

Итак, что, если мы скажем, что граница - четыре? Справедливая монета приземляется с каждой стороны ровно дважды? Может быть, это так. Может, нет. Что, если вы четыре раза увидите одну и ту же сторону? Можно ли с уверенностью сказать, что эта монета - обман?

Как насчет восьми бросков? Как насчет сотни бросков? Может ли честная монета приземлиться на одну и ту же сторону сто раз подряд?

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

Вопрос субъективный. Когда прекратить метание, зависит от вас.

Итак, почему бы нам не создать квантовую схему, которая дает объективную оценку того, является ли монета честной или обманутой?

Подобно алгоритму Дойча и Джозсы, наш алгоритм состоит из четырех частей: кубитов в суперпозиции, оракула, алгоритма разделения и измерения.

Начнем с первого и простого - суперпозиции кубитов. Мы используем один кубит на подбрасывание монеты. Допустим, у нас есть три броска, следовательно, три кубита представляют эти броски.

Мы помещаем их в суперпозицию, применяя вентили Адамара. Поскольку Qiskit инициализирует кубиты в состоянии | 0⟩, вентили Адамара переводят их в состояние | +⟩. В этом состоянии кубит с равной вероятностью будет измерен как 0 или 1.

В нашей схеме мы используем вспомогательный кубит. Мы переводим его в состояние | −⟩. Мы достигаем этого, применяя X-вентиль и вентиль Адамара. В этом состоянии кубит также имеет равную вероятность быть измеренным как 0 или 1. Но это состояние отличается от | +⟩ своей фазой. Хотя фаза не влияет на значение, которое мы измеряем для кубита, это имеет значение, когда мы применяем вентили к кубиту. Например, вентиль Адамара превращает кубит в состоянии | +⟩ обратно в состояние | 0⟩, а кубит в состоянии | −⟩ в состояние | 1⟩.

Имея это в виду, мы смотрим на оракула. Квантовый оракул - не таинственная личность, делающая пророческие предсказания. Это заполнитель для ворот трансформации.

Как и в предыдущем посте, мы не используем целостный оракул для честной монеты, а другой - для обманутой. Хотя это даже упростит остальную работу, нам нужно будет знать, честная монета или обман, когда мы уже выберем правильный оракул. Но это то, чего мы пока не знаем. Классификация монеты - это в первую очередь цель нашей квантовой схемы. Мы не хотим, чтобы алгоритм полагался на оракула, которого мы могли бы создать, только если бы мы уже знали решение.

Таким образом, мы относимся к каждому подбрасыванию монеты отдельно. Мы знаем из алгоритма Дойча и Йожи, как использовать вентиль с управляемым НЕ, чтобы перевернуть кубит с | +⟩ на | −⟩. Хотя вентиль с управляемым НЕ применяет X-вентиль к целевому кубиту, так как управляющий кубит находится в состоянии | 1⟩, он также применяет фазу целевого кубита к управляющему кубиту. Мы знаем это явление как фазовый откат.

Итак, для каждого хедз-апа мы применяем вентиль управляемого НЕ со вспомогательным кубитом в качестве цели. Поскольку он находится в состоянии | −⟩, он не меняет своего состояния. X-вентиль отражает состояние кубита по оси X. Но поскольку | − находится на этой оси, X-вентиль не влияет на целевой кубит.

Но вентиль управляемого НЕ влияет на управляющий кубит, представляющий бросок. Он меняет свою фазу и, следовательно, переводит его в состояние | −⟩.

Для каждой решки вверх мы применяем вентиль Адамара.

Мы создаем вспомогательную функцию для создания оракула за нас.

Например, следующая схема изображает инициализацию и оракул для "орел-хвост-орел".

На следующем рисунке представлена ​​схема, на которой до сих пор представлены три головы подряд.

В отличие от исходного алгоритма, мы не используем другую серию вентилей Адамара для возврата кубитов в базовые состояния. Вместо этого мы возвращаем вспомогательный кубит в состояние | 0⟩ и применяем вентиль с тройным управлением-НЕ с подбрасываемыми кубитами в качестве элементов управления и вспомогательным кубитом в качестве цели.

Если все кубиты представляют собой хедз-ап (они находятся в состоянии | −⟩), мы переворачиваем вспомогательный кубит в | 1⟩, когда все остальные кубиты также находятся в состоянии | 1⟩. Когда мы запускаем схему, мы видим, что вероятность этого состояния составляет 1 / 2³ = 1/8 = 0,125. И это точная вероятность того, что монета будет честной, учитывая наличие трех орлов подряд.

Неточности связаны с эмпирическим характером используемого моделирования.

Когда один бросок показывает решку, вентиль с тройным управлением НЕ не применяется, потому что кубит, к которому мы применили вентиль Адамара, находится в состоянии | 0⟩. Затем вспомогательный кубит остается в состоянии | 0⟩, представляющем честную монету. Следовательно, мы всегда измеряем вспомогательный кубит как 0.

Проблема: мы хотим, чтобы состояние | 1⟩ вспомогательного кубита представляло вероятность того, что монета будет честной. Как нам изменить схему?

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

Итак, мы добавляем еще одну деталь в нашу схему. В конце этой части мы также хотим применить вентиль с тройным управлением-НЕ с тремя подбрасываемыми кубитами в качестве элементов управления и вспомогательным кубитом в качестве цели.

Следовательно, нам нужно перевести кубиты, находящиеся в состоянии | 0⟩ (представляющие хвосты вверх), в состояние | +⟩, потому что мы измеряем кубит в состоянии | +⟩ как 1 в 1/2 случаев. Если все три кубита находятся в этом состоянии, вентиль с тройным управлением НЕ применяется к 1 / 2³ случаев.

В то же время, нам нужно перевести кубиты, которые находятся в состоянии | −⟩ (представляющие хедз-ап), в состояние | 0⟩, чтобы вентиль с тройным управлением НЕ не применялся вообще, если в этом состоянии находится единственный кубит. государство.

Мы достигаем этих преобразований, применяя Z-вентиль и вентиль Адамара к каждому кубиту.

Z-вентиль превращает хедз-ап кубиты из | −⟩ обратно в | +⟩, но не влияет на хвостовые кубиты в состоянии | 0⟩. Следующие ниже вентили Адамара превращают хедз-ап кубит из | +⟩ в | 0⟩, а хвостовые кубиты из | 0⟩ в | +⟩. В результате мы превратили кубиты, представляющие броски решкой вверх, в | +⟩, а кубиты бросков один на один - в | 0⟩. Когда все три кубита представляют собой хвостовое состояние, вентиль с тройным управлением НЕ переводит вспомогательный кубит в состояние | 1⟩ в 1 / 2³ случаев. Это вероятность получения честной монеты при наличии трех решек подряд.

Давайте запустим схему с оракулом, представляющим три хвоста подряд, и посмотрим на результаты.

Опять же, мы видим вероятность получения честной монеты около 0,1250,125.

Но как только в схеме происходит одиночный бросок хедз-ап, вентиль с тройным управлением-НЕ не применяется, поскольку один элемент управления находится в состоянии | 0⟩.

Когда бывают броски хедз-ап и решка, мы знаем, что у нас честная монета.

Вывод

Алгоритм Дойча и Йосы учит нас, как мы можем использовать фазовый откат, чтобы перевернуть кубит с | +⟩ на | −⟩.

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

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

Когда мы мыслим классически, мы хотим, чтобы наши программы были детерминированными. Мы предоставляем четкие данные и ожидаем однозначного результата. Тем не менее, мир, в котором мы живем, не детерминирован. Наши квантовые схемы тоже.

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

Наконец, еще есть возможности для улучшения. Когда наша схема включает в себя броски один на один и один на один, мы уверены, что монета честная. Затем мы всегда измеряем вспомогательный кубит как 0.

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

Можете ли вы соответственно отредактировать схему?

Хотите начать работу с квантовым машинным обучением? Взгляните на Практическое квантовое машинное обучение с помощью Python.

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