-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Лекция 2 #3
Лекция 2 #3
Conversation
On branch l2 Changes to be committed: new file: lecture_notes/L2 Gates/RU/gates_RU.html new file: lecture_notes/L2 Gates/RU/gates_RU.org new file: lecture_notes/L2 Gates/RU/gates_RU.pdf new file: lecture_notes/L2 Gates/RU/gates_RU.tex new file: lecture_notes/L2 Gates/RU/images/Blochcolor-alt.png
On branch l2 Changes to be committed: modified: lecture_notes/L2 Gates/RU/gates_RU.org
On branch l2 Changes to be committed: modified: lecture_notes/L2 Gates/RU/gates_RU.org
On branch l2 Changes to be committed: modified: lecture_notes/L2 Gates/RU/gates_RU.org new file: lecture_notes/L2 Gates/RU/images/CNOT_gate.svg.png
On branch l2 Changes to be committed: renamed: lecture_notes/L2 Gates/RU/gates_RU.org -> lecture_notes/lecture2_gates/RU/gates_RU.org renamed: lecture_notes/L2 Gates/RU/images/Blochcolor-alt.png -> lecture_notes/lecture2_gates/RU/images/Blochcolor-alt.png renamed: lecture_notes/L2 Gates/RU/images/CNOT_gate.svg.png -> lecture_notes/lecture2_gates/RU/images/CNOT_gate.svg.png renamed: lecture_notes/L2 Gates/RU/images/Layer-VQE.png -> lecture_notes/lecture2_gates/RU/images/Layer-VQE.png
Зачем мы и то и ругое тут держим -- я не знаю. Но раз держим, надо сказать что это одно и то же.
Добавляю это в ветку, тогда все исправления сделаю уже там.
В лекции про гейты можно, кстати, упомянуть, что в русской литературе гейты часто называются вентилями, но это, конечно, ужасное слово и использовать его нет смысла:) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Лекция просто огонь, спасибо большое!:) Дайте знать, если от меня требуется какая-то дополнительная помощь.
Помимо важной роли в математики квантовых вычислений, гейт Адамара и T-гейт интересны тем, что именно на них построено большинство предложений по реализации квантовых вычислений с топологической защитой или с коррекцией ошибок. На сегодняшний день эти схемы реально пока не очень работают: никаких топологически защищённых кубитов продемонстрировано не было, а коррекция ошибок не выходит за пределы двух логических кубитов. | ||
|
||
** Гейты поворота вокруг оси | ||
Поворотные гейты играют центральную роль в квантовом машинном обучении. Вспомним на секунду, как выглядят наши однокубитные состояния на сфере Блоха: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Будем ли мы рассказывать про смешанные состояния? Строго говоря, на сфере Блоха лежат только чистые состояния, а внутри -- смешанные. Но не факт, что эта информация пригодится людям, берущим данный курс.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Матрицы плотнрсти и смешанные состояния будут идти в продвинутой лекции (там де будет и энтропия). В базовой части курса хочется обойтись без них - все же этот концепт довольно сложен для понимания.
random_state = np.array([0.42 + 0j, np.sqrt(1 - 0.42**2) + 0j]).reshape((2, 1)) | ||
#+end_src | ||
|
||
Измерим его по осям $\mathbf{X}$ и $\mathbf{Z}$, затем повернем его на угол $2\pi$ и измерм снова: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Опечатка -- измерим :)
return np.array([[1, 0], [0, np.exp(1j * phi)]]) @ state | ||
#+end_src | ||
|
||
Легко видеть, что с точностью до глобального фазового множителя, который ни на что не влияет, Phase-shift-гейт -- это тот же $\hat{RZ}(\phi)$. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Может стоит добавить небольшое объяснение, почему фазовый множитель ни на что не влияет? Кажется, в первой лекции этого не упоминалось.
* Многокубитные состояния и гейты | ||
Очевидно, что с одним кубитом мы ничего интересного (ну кроме генератора истинно-случайных чисел) мы не сделаем. Давайте для начала разберемся, как выглядят состояния для многокубитных систем. | ||
** Многокубитные состояния | ||
В классическом компьютере 1 бит имеет два значения - 0 и 1; 2 бита имеют 4 - 00, 01, 10, 11; 3 бита 8 значений и т.д. По аналогии, состояние двух кубит это вектор в пространстве $\mathbf{C}^4$; состояние трех кубит, соответственно, в пространстве $\mathbf{C}^8$ и т.д., то есть состояние $N$ кубит описывается вектором размерности $2^N$ в комплексном пространстве. Вероятности каждой из возможных битовых строк ($0000...00$, $0000...01$, $0000...10$, и т.д.) получаются по методу Шрёдингера, который мы обсуждали в конце прошлой лекции: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Мне кажется, здесь уже можно начинать говорить про тензорное произведение (произведение Кронекера, tensor product, Kronecker product etc) в контексте многокубитных состояний.
Заберу на редактирование. |
Пока дошёл до раздела "Многокубитные состояния и гейты" (на самом деле полчаса до этого редачил, вспомнил, что лучше отписаться). Пара общих замечаний:
Потом продолжу редактировать, не сейчас |
наблюдаемые, кажется, до этого нигде не определялись. Пример с PennyLane показался сложноватым по части NumPy. Может, напомнить математику, стоящую за этим делом? В частности, вот это сложно
А так закончил править. В целом классная лекция. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В целом здорово, немного расширить бы примеры – см. два комментария выше
basis = np.array([1 + 0j, 0 + 0j]).reshape((2, 1)) | ||
#+end_src | ||
|
||
Внимательно посмотрев на сферу Блоха, можно заметить, что повернув состояние из $\ket{0}$ на $\pi$ и измерив значение $\hat{\sigma^z}$ мы получим 1, а повернув на $-\pi$ мы получим 0: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
не особо понятно откуда взялось $\hat{\sigma^z}$
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
0
плохо отображается в html. хочется сказать что это o
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ну типа по вертикали измеряем
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А почему тогда в коде pauli_x
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Что-то, кажется, не то с этим примером - если |0> повернуть что на pi что на -pi вокруг Y – придешь в |1>, то есть -1 по Z. А в коде ты делаешь поворот на +/- pi/2 и измеряешь по Х.
@SemyonSinchenko а напиши пжлст правильную команду |
Я не до конца уверен как заставить работать pandoc и экспортирую используя встроенный в emacs экспорт, потому что у меня там настроен бэкграунд для кода (и экспорт в tex идет через minted). Я могу лишь скинуть то, как выглядит итоговый файл, чтобы ты убедился, что он красивый. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@SemyonSinchenko а напиши пжлст правильную команду
pandoc
для экспорта в html, дабы все нормально тображалось, а тоpandoc --pdf-engine xelatex -f org input.org -o output.pdf
плохо отрабатываетЯ не до конца уверен как заставить работать pandoc и экспортирую используя встроенный в emacs экспорт, потому что у меня там настроен бэкграунд для кода (и экспорт в tex идет через minted). Я могу лишь скинуть то, как выглядит итоговый файл, чтобы ты убедился, что он красивый.
главное чтобы на ods.ai в итоге все красиво отображалось
basis = np.array([1 + 0j, 0 + 0j]).reshape((2, 1)) | ||
#+end_src | ||
|
||
Внимательно посмотрев на сферу Блоха, можно заметить, что повернув состояние из $\ket{0}$ на $\pi$ и измерив значение $\hat{\sigma^z}$ мы получим 1, а повернув на $-\pi$ мы получим 0: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
0
плохо отображается в html. хочется сказать что это o
\begin{align*} | ||
\large \hat{R}^\vec{n}(\alpha) = e^{-\frac{i\alpha\hat{\vec{\sigma}}\vec{n}}{2}}, | ||
\end{align*} | ||
где $\alpha$ -- это угол поворота, $\vec{n}$ -- единичный вектор в направлении оси поворота, а $\hat{\vec{\sigma}} = \{\sigma^x, \sigma^y, \sigma^z\}$ -- это вектор, составленный из операторов Паули. Если использовать покоординатную запись и $\vec{n} = \{n_x, n_y, n_z\}$ задаёт ось вращения, то |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
пожалуй а
можно и убрать и Если..
лучше с новой строки
где $\alpha$ -- это угол поворота, $\vec{n}$ -- единичный вектор в направлении оси поворота, а $\hat{\vec{\sigma}} = \{\sigma^x, \sigma^y, \sigma^z\}$ -- это вектор, составленный из операторов Паули. Если использовать покоординатную запись и $\vec{n} = \{n_x, n_y, n_z\}$ задаёт ось вращения, то | ||
|
||
\begin{align*} | ||
\large \hat{R}^\vec{n}(\alpha) = e^{-i\frac{\alpha}{2}\left(\hat{\sigma}^xn_x+\hat{\sigma}^yn_y+\hat{\sigma}^zn_z\right)}. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
\hat{R}^\vec{n}(\alpha)
обрезаны по верху (речь о html)
1 | ||
/ np.sqrt(2) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
не хочешь в одну строку сконкатенировать?
) | ||
|
||
|
||
np.allclose(u2_direct(np.pi / 6, np.pi / 3), u2_inferenced(np.pi / 6, np.pi / 3)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а почему внизу именно 6
и 3
(не особо понимаю)?
\begin{align*} | ||
\mathrm{iSWAP} = \begin{bmatrix} | ||
1 & 0 & 0 & 0\\ | ||
0 & 0 & -i & 0\\ | ||
0 & -i & 0 & 0\\ | ||
0 & 0 & 0 & 1 | ||
\end{bmatrix} | ||
\end{align*} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
\begin{align*} | ||
\mathrm{fSim}(\theta, \phi) = \begin{bmatrix} | ||
1 & 0 & 0 & 0\\ | ||
0 & \cos\theta & -i\sin\theta & 0\\ | ||
0 & -i\sin\theta & \cos\theta & 0\\ | ||
0 & 0 & 0 & e^{-i\phi} | ||
\end{bmatrix}. | ||
\end{align*} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@vtrokhymenko Я добавил HTML/PDF, можешь посмотреть как они сейчас выглядят? Просто если они выглядят норм, то нет смысла сейчас морочиться по этому.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Если прямо у всех (кроме меня) все оч плохо то давайте рассмотрим вопрос о том, чтобы писать в другом формате. Чистый tex (правда количество строк резко вырастет), markdown (если кто-то его настроит) и т.д. Я выбрал org потому что у меня он работает (потому что использую emacs и это логично) и потому что у меня был печальный опыт с markdown. Но если прямо у всех бомбит от .org - го обсуждать это.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А это наверное какой-то косяк уже в коде. Я поправлю. Про шапки Юра уже писал - надо выносить нижний индекс за шапку.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Перенесем обсуждение в #33
Первый аргумент тут -- указание устройства, а второй -- число кубит. | ||
|
||
** QNode | ||
Основной /строительный блок/ в =PennyLane= -- это =qnode=. Это функция, которая отмечена специальным декоратором и включает в себя несколько операций с кубитами. Результатом такой функции всегда является измерение. Напишем функцию, которая поворачивает первый кубит на $45^o$, после чего измеряет оба кубита по оси $\mathbf{Z}$. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
плохо видно $45^o$
- Мы знаем что такое кубит | ||
- Мы понимаем линейную алгебру, которая описывает квантовые вычисления | ||
- Мы понимаем, как можно сконструировать нужный нам оператор и как применить его | ||
- Мы знаем, что такое измерение и наблюдаемые |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
мб перед этими пунктами написать мол «теперь мы», убрав мы
, а то его тут очень много или что-то иное
0 & 0 & 0 & 1 | ||
\end{bmatrix}. | ||
\end{align*} | ||
Попробуйте составить последовательность гейтов, реализующую $\mathrm{SWAP}$, из гейтов $\mathrm{iSWAP}$, $\hat{CZ}$ и $\hat{RZ}(\phi)$. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
не особо видно, чтобы относилось к последнему пункту, если оно так должно быть
On branch l2 Changes to be committed: modified: .gitignore new file: lecture_notes/lecture2_gates/RU/gates_RU.html modified: lecture_notes/lecture2_gates/RU/gates_RU.org new file: lecture_notes/lecture2_gates/RU/gates_RU.pdf
Добавил немного про многокубитные состояния.
0 & \frac{1+i}{\sqrt{2}} | ||
\end{bmatrix} | ||
\end{align*} | ||
Любой однокубитный гейт можно аппроксимировать последовательностью гейтов Адамара и T-гейтов. Чем точнее требуется аппроксимация, тем длиннее будет аппроксимирующая последовательность. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Любой однокубитный гейт можно аппроксимировать последовательностью гейтов Адамара и T-гейтов.
Тут бы ссылку
\end{align*} | ||
Любой однокубитный гейт можно аппроксимировать последовательностью гейтов Адамара и T-гейтов. Чем точнее требуется аппроксимация, тем длиннее будет аппроксимирующая последовательность. | ||
|
||
Помимо важной роли в математике квантовых вычислений, гейт Адамара и T-гейт интересны тем, что именно на них построено большинство предложений по реализации квантовых вычислений с топологической защитой или с коррекцией ошибок. На сегодняшний день эти схемы реально пока не очень работают: никаких топологически защищённых кубитов продемонстрировано не было, а коррекция ошибок не выходит за пределы двух логических кубитов. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а коррекция ошибок не выходит за пределы двух логических кубитов.
И тут бы ссылку
Читатель может сам легко убедиться, что эти формы записи эквивалентны. Для этого надо написать примерно такой же код, какой мы писали раньше для $\hat{U}_2$. | ||
|
||
** Еще пара слов об однокубитных гейтах | ||
На этом мы завершаем обзор основных однокубитных гейтов. Маленькое замечание -- гейты, связанные со свдигом фазы, никак не меняют состояние кубита, если оно сейчас $\ket{0}$. Учитывая, что мы всегда предполагаем, что наше начальное состояние кубитов это именно $\ket{0}$, то перед тем как применять, например, гейт $\hat{U}_1$, рекомендуется применить гейт Адамара: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
рекомендуется применить гейт Адамара
Я не понял, почему рекомендуется и что иллюстрирует следующий за этим сниппет.
#+end_src | ||
|
||
** Наблюдаемые для многокубитных гейтов | ||
Аналогичным образом можно сконструировать и наблюдаемые. Например, если мы хотим измерять одновременно два спина по оси $\mathbf{Z}$, то наблюдаемая будет выглядеть так: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
наблюдаемые
Что это? нужно определение. В 1-ой лекции не упоминается. То же со спином
On branch l2 Changes to be committed: modified: lecture_notes/lecture2_gates/RU/gates_RU.html modified: lecture_notes/lecture2_gates/RU/gates_RU.org modified: lecture_notes/lecture2_gates/RU/gates_RU.pdf
Читатель может сам легко убедиться, что эти формы записи эквивалентны. Для этого надо написать примерно такой же код, какой мы писали раньше для $\hat{U}_2$. | ||
|
||
** Еще пара слов об однокубитных гейтах | ||
На этом мы завершаем обзор основных однокубитных гейтов. Маленькое замечание -- гейты, связанные со сдвигом фазы, никак не меняют состояние кубита, если оно сейчас $\ket{0}$. Учитывая, что мы всегда предполагаем, что наше начальное состояние кубитов это именно $\ket{0}$, то перед тем как применять, например, гейт $\hat{U}_1$, рекомендуется применить гейт Адамара: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"состояние кубитов -- это именно"
Также есть в лекции нестыковка по склонению слова "кубит".
Если "кубит" мужского рода - то тогда "3 кубита", но в тексте используется "3 кубит", как будто женский
\mathbf{P}(\vec{s}) = | \bra{\Psi}\ket{\vec{s}} |^2 | ||
\end{align*} | ||
|
||
Напомню, что по сути мы должны отсортировать наши битовые строки в лексикографическом порядке и вероятность /i/-й битовой строки будет равна квадрату /i/-го элемента вектора $\ket{\Psi}$. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
в лексикографическом порядке, и вероятность
#+end_src | ||
|
||
* Основные двухкубитные гейты | ||
Основные многокубитные гейты, которые предоставляют современные квантовые компьютеры, это двухкубитные гейты. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
компьютеры, -- это двухкубитные гейты.
\end{align*} | ||
|
||
** Гейт iSWAP | ||
Гейты $\hat{CX}$, $\hat{CY}$ и $\hat{CZ}$ эквивалентны с точностью до однокубитных гейтов. Это означает, что любой из них можно получить добавив необходимые однокубитные гейты до и после другого гейта. Так, например, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
любой из них можно получить, добавив
\begin{align*} | ||
\hat{CZ} = \left(\hat{I}\times\hat{H}\right)\hat{CX}\left(\hat{I}\times\hat{H}\right). | ||
\end{align*} | ||
Этим свойством обладают отнюдь не все двухкубитные гейты! Например, таковым является гейт iSWAP: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Этим свойством обладают отнюдь не все двухкубитные гейты! Например, им не обладает гейт iSWAP:"
Сейчас "таковым является" непонятно к чему относится - к "обладающим свойством" или наоборот
\end{align*} | ||
|
||
** Гейт fSim | ||
Для разных архитектур квантовых процессоров "естественный" гейт может выглядеть по-разному. Так, например, в квантовом процессоре Google Sycamore естественным является так называемый fermionic simulation gate, или fSim. Это двухпараметрическое семейство гейтов вида |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Лично я что-то вообще не въехал в этот абзац. Если я правильно понял, то здесь речь пошла о том, через какой наиболее удобный для кокретной архитектуры оператор на самом деле выражаются предыдущие при определенных параметрах. Если это так - то стоит раскрыть и расписать подробнее имхо. Что такое "естественный" непонятно, по-крайней мере тем, кто не знаком с как устроены QC на уровне железа :)
Ну и в целом имхо стоит придерживаться одного уровня абстракции в одной лекции: если здесь пока знакомство с операторами и математикой, то по возможность стоит не примешивать детали реализации.
@SemyonSinchenko этот PR закрываем? Вроде #35 покрыл эти изменения |
Я только за. |
Закрываем, поскольку предложенные тут изменения учтены в #35 |
Текст второй лекции.
Closed #21