[PYTHON] Ich habe versucht, Deep VQE zu implementieren

Es gibt VQE (Variational Quantum Eigen Solver) als Methode zur Berechnung des Grundzustands des elektronischen Hamilton-Operators unter Verwendung eines Quantencomputers. Ich habe das folgende Papier über Deep VQE gelesen, eine Methode zur Berechnung des Basiszustands von Hamiltonian, die die Anzahl der Bits überschreitet, die von einem Quantencomputer verarbeitet werden können, und habe die Methode zusammengefasst.

https://arxiv.org/abs/2007.10917 https://qunasys.com/news/2020/8/10/deep-vqe

Ich habe auch versucht, das Modell von BILD 3 (a) N = 2, das ebenfalls in der Arbeit berechnet wird, unter Verwendung von Qulacs zu implementieren. * Ich denke, es gibt einige Ungenauigkeiten in meinem Verständnis, daher wäre es hilfreich, wenn Sie darauf hinweisen könnten. </ font>

Überblick über die Methode

Der Gesamtfluss ist in Fig. 1 gezeigt, die in dem Papier beschrieben ist.

fig1.png

  1. Zerlegen Sie Hamiltonian in ein Teilsystem und eine Interaktion. (ein)
  2. Berechnen Sie das Teilsystem mit VQE, um den Basiszustand zu ermitteln. (b, 1. VQE)
  3. Erstellen Sie eine lokale Basis aus Interaktionen und Basiszuständen. (lokale Basis)
  4. Berechnen Sie Hamilton-Matrixelemente unter Verwendung lokaler Basen.
  5. Erstellen Sie einen effektiven Hamilton-Operator, der Interaktionen enthält. (effektiver Hamiltonianer)
  6. Führen Sie eine VQE mit einem gültigen Hamilton-Operator durch. (2. VQE)

Ich verstehe, dass es möglich ist, die Anzahl der Quantenbits zu reduzieren, die in der Phase verwendet werden, in der die Anzahl der lokalen Basen Quantenbits entspricht. Wenn Sie eine lokale Basis mit 3 erstellen, die Anzahl jedoch $ K $ ist, ist die Anzahl der Quantenbits, die erforderlich sind, um dies auszudrücken, $ \ lceil \ log_2 {K} \ rceil $. Daraus ergibt sich, dass die Anzahl der Quantenbits, die erforderlich sind, um den in 5 erstellten effektiven Hamilton-Operator auszudrücken, $ 2 \ lceil \ log_2 {K} \ rceil $ ist, da die beiden Subsysteme kombiniert sind.

Betrachten Sie den Fall, in dem zwei in der Arbeit berechnete 4-Quanten-Bit-Heisenberg-Modelle verbunden sind. Wenn Sie versuchen, ohne Zerlegung zu berechnen, benötigen Sie 8 Quantenbits. Bei der Zerlegung und Berechnung wird VQE anfänglich unter Verwendung von 4 Quantenbits durchgeführt, und da die Anzahl der Wechselwirkungen $ K = 7 $ beträgt, werden bei der nächsten Berechnung für jedes Subsystem 3 Quantenbits benötigt. Da zwei dieser Subsysteme zusammengeführt werden, beträgt die Gesamtzahl der erforderlichen Quantenbits sechs. Da es sich um ein Spielzeugmodell handelt, handelt es sich um eine kleine Menge, aber Sie können sehen, dass es auf 8 bis 6 US-Dollar reduziert wurde.

Als nächstes werden wir uns ansehen, wie man eine lokale Basis und einen effektiven Hamiltonianer schafft.

Details der Methode

Hamiltonsche Definition

Teilen Sie den Hamilton-Operator in Teilsysteme und Wechselwirkungen.

\def\bm#1{\boldsymbol{#1}} \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \def\brakett#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}} \def\braket#1#2#3{\bra{#1}#2\ket{#3}} \mathcal{H} = \sum_i \mathcal{H}\_i + \sum_{ij}V_{ij}

$ \ mathcal {H} \ i $ repräsentiert das Hamiltonsche Teilsystem und $ V {ij} $ repräsentiert die Interaktion zwischen den Teilsystemen $ i $ und $ j $. Hier nimmt $ V \ _ {ij} $ die folgende Form an.

V\_{ij} = \sum\_{k} v\_{k} W^{(i)}\_{k} W^{(j)}\_{k}

$ W ^ {(i)} \ _ {k} $ repräsentiert den Operator, der auf dem Teilsystem $ i $ arbeitet, und $ W ^ {(j)} \ _ {k} $ repräsentiert den Operator, der auf dem Teilsystem $ j $ arbeitet. ..

Erstellen einer lokalen Basis

Ermitteln Sie zunächst mit VQE den Basiszustand von $ \ mathcal {H} \ _i $. Die in VQE verwendete variable Quantenschaltung wird als $ U_i (\ theta ^ {(i)}) $ ausgedrückt, und der erhaltene Grundzustand wird als $ \ ket {\ psi ^ {(i)} _0} $ ausgedrückt. ($ i $ entspricht dem Index des Teilsystems $ i $.) $ \ theta ^ {(i), *} $ ist ein optimierter Parameter

\theta^{(i), *} \equiv \text{argmin}\_{\theta} \braket{0^n}{U_i(\theta^{(i)})^{\dagger} \mathcal{H}_i U_i(\theta^{(i)})}{0^n}

Dann ist $ \ ket {\ psi ^ {(i)} _0} $

\ket{\psi^{(i)}_0} = U_i(\theta^{(i),*})\ket{0^n}

Kann ausgedrückt werden als. Erstellen Sie eine lokale Basis aus $ W ^ {(i)} \ _ {k} $, die in der Interaktion mit diesem $ \ ket {\ psi ^ {(i)} _0} $ enthalten ist. ($ k $ entspricht dem Typ des Interaktionsoperators.)

\ket{\psi^{(i)}\_k} \equiv W^{(i)}\_{k}\ket{\psi^{(i)}\_0}

Unter Verwendung dieser lokalen Basis berechnen wir den effektiven Hamiltonian, indem wir den ursprünglichen Hamiltonian umschreiben. Nur $ W ^ {(i)} _1 $ ist als Gleichheitsoperator definiert, und wenn es $ K $ Interaktionsoperatoren gibt, werden insgesamt $ K + 1 $ lokale Regeln erstellt. Ich werde. (Im Folgenden wird die Anzahl der lokalen Stützpunkte durch $ K $ dargestellt.) Zu diesem Zeitpunkt ist es nicht unbedingt $ \ brakett {\ psi ^ {(i)} \ _ k} {\ psi ^ {(i)} \ _ l} = \ delta \ _ {kl} $. Dies wird normalerweise unter Verwendung der normalen Orthogonalisierungsmethode von Gramschmidt orthogonalisiert. Die normalerweise orthogonalisierte lokale Basis wird als $ \ ket {\ tilde {\ psi} ^ {(i)} \ _k} $ dargestellt.

\ket{\tilde{\psi}^{(i)}\_k} = \frac{1}{C_k}\biggl(\ket{\psi^{(i)}\_k} - \sum\_{l

$ C_k $ ist eine standardisierte Konstante, um $ \ brakett {\ tilde {\ psi} ^ {(i)} \ _k} {\ tilde {\ psi} ^ {(i)} \ _k} = 1 $ zu erfüllen Werden.

Wenn Sie dies konkret ausschreiben, bleibt $ k = 1 $ unverändert

\begin{align}
\ket{\tilde{\psi}^{(i)}_1} &= \frac{1}{C_1} \ket{\psi^{(i)}_1} \\
C_1 &= \sqrt{\brakett{\psi^{(i)}_1}{\psi^{(i)}_1}}
\end{align}

Es wird sein. Bei $ k = 2 $

\begin{align}
\ket{\tilde{\psi}^{(i)}_2} &= \frac{1}{C_2}\biggl(\ket{\psi^{(i)}_2} - \brakett{\tilde{\psi}^{(i)}_1}{\psi^{(i)}_2} \ket{\tilde{\psi}^{(i)}_1}\biggr) \\
&= \frac{1}{C_2}\biggl(\ket{\psi^{(i)}_2} - \frac{1}{C_1^2}\brakett{\psi^{(i)}_1}{\psi^{(i)}_2} \ket{\psi^{(i)}_1}\biggr)
\end{align}

Die gleiche Berechnung kann nach $ k> 2 $ durchgeführt werden. Um $ \ ket {\ tilde {\ psi} ^ {(i)} \ _k} $ daraus zu finden, das innere Produkt der lokalen Basis $ \ brakett {\ psi ^ {(i)} _1} {\ psi ^ {(i) Es stellt sich heraus, dass wir berechnen müssen)} _2} $. Das innere Produkt ist

\begin{align}
\brakett{\psi^{(i)}_k}{\psi^{(i)}_l} = \braket{\psi^{(i)}_0}{W^{(i)\dagger}_{k}W^{(i)}_{l}}{\psi^{(i)}_0}
\end{align}

Da es mit $ \ ket {\ psi ^ {(i)} \ _0} $ erweitert werden kann, $ W ^ {(i) \ dagger} \ _ {k} W ^ {(i)} \ _ {l} $ Sie können sehen, dass Sie den erwarteten Wert messen können. (Der Vorgang, den erwarteten Wert mit $ \ ket {\ psi ^ {(i)} \ _0} $ zu nehmen, wird in späteren Berechnungen angezeigt.) Beachten Sie, dass zum Beispiel $ W ^ {(i) \ Dolch} = X ^ {(i)} \ _0, W ^ {(i)} \ _ {l} = Y ^ {(i)} \ _0 $ Wenn $ W ^ {(i) \ Dolch} \ _ {k} W ^ {(i)} \ _ {l} = X ^ {(i)} \ _ 0Y ^ {(i)} \ _ 0 = iZ ^ Der Punkt ist, dass es notwendig ist, den erwarteten Wert von $ Z ^ {(i)} \ _0 $ zu messen, nachdem er unter Verwendung der Beziehung zwischen {(i)} \ _0 $ und dem Pauli-Operator in eine Beobachterblase konvertiert wurde. (Der Wert, der durch Multiplizieren dieser Messung mit $ i $ erhalten wird, ist der Wert des Matrixelements.)

$ \ Ket {\ tilde {\ psi} ^ {(i)} \ _k} $ zur Erleichterung späterer Berechnungen $ \ ket {\ psi ^ {(i)} \ _ {k ^ {\ Der mit prime}}} $ erweiterte Koeffizient wird als $ P \ _ {kk ^ {\ prime}} $ definiert und wie folgt ausgedrückt.

\begin{align}
\ket{\tilde{\psi}^{(i)}_k} &= \sum^K_{k^{\prime}=1}P^{(i)}_{kk^{\prime}} \ket{\psi^{(i)}_{k^{\prime}}} \\
\end{align}

Sie können eine Matrix $ P $ erstellen, indem Sie $ \ brakett {\ psi ^ {(i)} \ _ k} {\ psi ^ {(i)} \ _l} $ messen.

Diese normalerweise orthogonalisierte lokale Basis wird im Folgenden einfach als lokale Basis bezeichnet.

Erstellen eines gültigen Hamiltonianers

Verwenden Sie $ \ ket {\ tilde {\ psi} ^ {(i)} _k} $, um die Matrixelemente von $ \ mathcal {H} \ _i, V \ _ {ij} $ zu berechnen.

Effektiver Hamilton-Operator des Teilsystems

Zunächst ist das gültige Hamilton-Matrixelement $ (\ mathcal {H} ^ {\ text {eff}} \ _i) \ _ {kl} $ von $ \ mathcal {H} \ _i $

\begin{align}
    (\mathcal{H}^{\text{eff}}_i)_{kl} &= \braket{\tilde{\psi}^{(i)}_k }{\mathcal{H}_i}{\tilde{\psi}^{(i)}_l} \\
    &= \sum_{k^{\prime},l^{\prime}} \braket{\psi^{(i)}_{k^{\prime}} }{P^{(i)*}_{kk^{\prime}} \mathcal{H}_i P^{(i)}_{ll^{\prime}}}{ \psi^{(i)}_{l^{\prime}}} \\
    &= \sum_{k^{\prime},l^{\prime}} P^{(i)*}_{kk^{\prime}} \braket{\psi^{(i)}_0}{ W^{(i)}_{k^{\prime}}\;^{\dagger}\mathcal{H}_i W^{(i)}_{l^{\prime}}}{ \psi^{(i)}_0}  P^{(i)}_{ll^{\prime}} \\
&= \biggl(P^{(i)*} \bar{\mathcal{H}}^{\text{eff}}_i P^{(i)T} \biggr)_{kl}
\end{align}

Es wird sein. Wo $ \ bar {\ mathcal {H}} ^ {\ text {eff}} \ _i $ ist

\begin{align}
 (\bar{\mathcal{H}}^{\text{eff}}_i)_{kl} &= \braket{\psi^{(i)}_k }{\mathcal{H}_i}{ \psi^{(i)}_l} \\
    &= \braket{\psi^{(i)}_0}{ W^{(i)}_{k}\;^{\dagger}\mathcal{H}_i W^{(i)}_{l}}{ \psi^{(i)}_0}
\end{align}

Es ist ein Matrixelement, das durch definiert ist. Verwenden Sie $ \ ket {\ psi ^ {(i)} _0} $, um ein Matrixelement für $ \ mathcal {H} ^ {\ text {eff}} \ _i $ zu erstellen

\begin{align}
W^{(i)}_{k}\;^{\dagger}\mathcal{H}_i W^{(i)}_{l}
\end{align}

Sie müssen den erwarteten Wert von $ \ bar {\ mathcal {H}} ^ {\ text {eff}} \ _i $ messen, um das Matrixelement zu finden. Mit dieser und der Matrix $ P $, die beim Erstellen der lokalen Basis verwendet wird, können Sie $ \ mathcal {H} ^ {\ text {eff}} \ _i $ erstellen.

Effektiver Hamiltonianer der Interaktion

Interaktion an der lokalen Basis

\begin{align}
V_{ij} = \sum_{k} v_{k} W^{(i)}_{k} W^{(j)}_{k}
\end{align}

Wird von beiden Seiten eingeklemmt, um die Matrixelemente zu berechnen. Da $ W ^ {(i)} \ _ {k} und W ^ {(j)} \ _ {k} $ auf die Teilsysteme $ i $ bzw. $ j $ einwirken.

\begin{align}
(V^{\text{eff}}_{ij})_{kk^{\prime}ll^{\prime}} &= \bra{\tilde{\psi}^{(i)}_k} \bra{\tilde{\psi}^{(j)}_{k^{\prime}}} V_{ij} \ket{\tilde{\psi}^{(i)}_l} \ket{\tilde{\psi}^{(j)}_{l^{\prime}}} \\
&= \sum_{\nu} v_{\nu} \braket{\tilde{\psi}^{(i)}_k }{W^{(i)}_{\nu}}{ \tilde{\psi}^{(i)}_l} \braket{\tilde{\psi}^{(j)}_{k^{\prime}} }{W^{(j)}_{\nu}}{ \tilde{\psi}^{(j)}_{l^{\prime}}}
\end{align}

Dann $ \ braket {\ tilde {\ psi} ^ {(i)} \ _ k} {W ^ {(i)} \ _ {\ nu}} {\ tilde {\ psi} ^ {(i)} \ Sie müssen _l} $ finden. Wenn Sie dies auf die gleiche Weise wie zuvor entwickeln

\begin{align}
\braket{\tilde{\psi}^{(i)}_{k}}{W^{(i)}_{\nu}}{\tilde{\psi}^{(i)}_l} &= \sum_{k^{\prime},l^{\prime}} P^{(i)*}_{kk^{\prime}}  \braket{\psi^{(i)}_0}{ W^{(i)}_{k^{\prime}}\;^{\dagger}W^{(i)}_{\nu} W^{(i)}_{l^{\prime}}}{ \psi^{(i)}_0} P^{(i)}_{ll^{\prime}} \\
&= \biggl(P^{(i)*} \bar{W}^{(i), \text{eff}}_{\nu} P^{(i)T} \biggr)_{kl}
\end{align}

Und hier

\begin{align}
(\bar{W}^{(i), \text{eff}}_{\nu})_{kl} &\equiv \braket{\psi^{(i)}_k}{ W^{(i)}_{\nu}}{\psi^{(i)}_l} = \braket{\psi^{(i)}_0 }{ W^{(i)}_{k}\;^{\dagger}W^{(i)}_{\nu} W^{(i)}_{l}}{ \psi^{(i)}_0}
\end{align}

Ist definiert als. Um $ V ^ {\ text {eff}} \ _ {ij} $ zu berechnen, verwenden Sie oben $ \ ket {\ psi ^ {(i)} _0} $

\begin{align}
W^{(i)}_{k}\;^{\dagger}W^{(i)}_{\nu} W^{(i)}_{l}
\end{align}

Beobachten Sie den erwarteten Wert von $ (\ bar {W} ^ {(i), \ text {eff}} \ _ {\ nu}) und berechnen Sie das Matrixelement von $. Sie können $ V ^ {\ text {eff}} \ _ {ij} $ erstellen, indem Sie diese und die Matrix $ P $ verwenden, die zum Erstellen der lokalen Basis verwendet wird.

Dargestellt durch ein Tor

Bisher haben wir die effektiven Hamilton-Matrixelemente gefunden. Der Grundzustand kann aus den Eigenwerten und Eigenzuständen durch Diagonalisieren der $ K ^ 2 \ mal K ^ 2 $ -Dimensionsmatrix erhalten werden, die durch Integrieren der beiden durch die lokalen Basen dargestellten Subsysteme ohne Verwendung eines Quantencomputers erhalten wird. Ich denke, dass es notwendig ist, es mit dem dem Matrixelement entsprechenden Gate darzustellen, um mit einem Quantencomputer zu berechnen.

Für $ (\ mathcal {H} ^ {\ text {eff}} \ _i) _ {kl} $ ist der entsprechende Hamilton-Operator

\begin{align}
(\mathcal{H}^{\text{eff}}_i)_{kl}\ket{\tilde{\psi}^{(i)}_k} \bra{\tilde{\psi}^{(i)}_l}
\end{align}

Wird sein. Dieses $ \ ket {\ tilde {\ psi} ^ {(i)} \ _ k} \ bra {\ tilde {\ psi} ^ {(i)} \ _l} $ muss durch ein Tor dargestellt werden. Vorher müssen wir zuerst die lokale Basis $ \ ket {\ tile {\ psi} ^ {(i)} \ _k} $ mit dem Quantenbit verknüpfen. Wenn beispielsweise $ K = 7 $ ist, sollten Sie die folgende Entsprechung berücksichtigen.

\begin{align}
    \ket{\tilde{\psi}^{(i)}_1} &= \ket{000} \\ 
    \ket{\tilde{\psi}^{(i)}_2} &= \ket{001} \\ 
    \ket{\tilde{\psi}^{(i)}_3} &= \ket{010} \\ 
    \ket{\tilde{\psi}^{(i)}_4} &= \ket{011} \\ 
    \ket{\tilde{\psi}^{(i)}_5} &= \ket{100} \\ 
    \ket{\tilde{\psi}^{(i)}_6} &= \ket{101} \\ 
    \ket{\tilde{\psi}^{(i)}_7} &= \ket{110}
\end{align}

Zum Beispiel aus dieser Korrespondenz

\begin{align}
\ket{\tilde{\psi}^{(i)}_1}\bra{\tilde{\psi}^{(i)}_2} &= \ket{000}\bra{001}\\
&= \ket{0}\bra{0}_0 \otimes \ket{0}\bra{0}_1 \otimes \ket{0}\bra{1}_2
\end{align}

Daher kann danach der Projektionsoperator $ \ ket {0} \ bra {0} \ _0 $ jedes Quantenbits unter Verwendung eines Gatters dargestellt werden. Konzentration auf ein Quantenbit

\begin{align}
Z &= \ket{0}\bra{0} - \ket{1}\bra{1} \\
I &= \ket{0}\bra{0} + \ket{1}\bra{1}
\end{align}

Aus $ \ ket {0} \ bra {0} kann \ ket {1} \ bra {1} $ mit $ Z, I $ ausgedrückt werden. Auf die gleiche Weise

\begin{align}
\ket{0}\bra{0} &= \frac{1}{2}(I + Z) \\
\ket{1}\bra{1} &= \frac{1}{2}(I - Z) \\
\ket{0}\bra{1} &= \frac{1}{2}(I + iY) \\
\ket{1}\bra{0} &= \frac{1}{2}(I - iY)
\end{align}

Ich denke, es kann mit konvertiert werden. Da Hamiltonian Elmeat ist, kann es meiner Meinung nach mit diesen Gates und reellen Zahlenkoeffizienten erweitert werden.

Effektiver Hamiltonianer

Finden Sie den Basiszustand mit VQE unter Verwendung des gültigen Hamilton-Operators $ \ mathcal {H} \ _ {i}, \ mathcal {H} \ _ {j}, V \ _ {ij} $, der oben als neues Subsystem gefunden wurde. ..

\begin{align}
\mathcal{H}^{\text{eff}}_{ij} = \mathcal{H}^{\text{eff}}_i + \mathcal{H}^{\text{eff}}_j + V^{\text{eff}}_{ij}
\end{align}

Wenn nur zwei Subsysteme vorhanden sind, muss der obige Prozess nur einmal ausgeführt werden. Wenn jedoch drei oder mehr vorhanden sind, muss der Prozess entsprechend der Aufteilung wiederholt werden.

Anzahl der Quantenbits

Wenn die Nummer des ersten Subsystems $ N $ ist und die Anzahl der für ein Subsystem erforderlichen Quantenbits $ n $ beträgt, wenn Sie versuchen, es sofort zu lösen, ohne das gesamte System zu teilen, beträgt die Summe $ M = nN $ Quantum. Du wirst ein bisschen brauchen. Wenn andererseits die Division groß ist und die Anzahl der lokalen Basen $ K $ beträgt, beträgt die erforderliche Anzahl der Quantenbits $ m = N \ lceil \ log \ _2 {K} \ rceil $, was $ M \ bis m $ ist. Es wurde reduziert.

In der Arbeit wird die erforderliche Anzahl von Bits speziell unter Verwendung eines Modells diskutiert, bei dem ein Teilsystem von 4 Quantenbits zweidimensional wiederholt wird. Ich habe die Berechnungsmethode für die Anzahl der für das Bild unten erforderlichen Quantenbits zusammengefasst.

fig2_1.png

fig2_2.png

fig2_3.png

fig2_4.png

Berechnungsergebnis

Einführung in die im Papier berechneten Berechnungsergebnisse.

Modell a

Erstens ist es, wie in der folgenden Abbildung gezeigt, ein Modell, bei dem ein aus 4 Quantenbits bestehendes Teilsystem eindimensional verbunden ist. (Im Implementierungsteil habe ich ein Modell berechnet, in dem diese beiden miteinander verbunden sind.)

fig3_a.png

Das Teilsystem besteht aus dem folgenden antiferrometrischen Heisenberg-Modell.

\begin{align}
    \mathcal{H}_i &= \sum_{E=(\mu, \nu)}(X^{(i)}_{\mu}X^{(i)}_{\nu} + Y^{(i)}_{\mu}Y^{(i)}_{\nu} + Z^{(i)}_{\mu}Z^{(i)}_{\nu}) \\
    &= \sum_{E=(\mu, \nu)}\sum_{A=X,y,Z}A^{(i)}_{\mu} A^{(i)}_{\nu} 
\end{align}

Hier sind die Kanten $ E = \ {(0,1), (1,2), (2,3), (3,0), (0,2) } $. Die folgenden Interaktionen funktionieren zwischen den Subsystemen.

\begin{align}
    V_{ij} = \sum_{A=X,Y,Z}(A^{(i)}_{0} A^{(j)}_{2} + A^{(i)}_{2} A^{(j)}_{0})
\end{align}

Die Berechnungsergebnisse sind in der folgenden Tabelle zusammengefasst.

table1.png

Die Gesamtenergie des Teilsystems, in dem Local die Wechselwirkung ignoriert, Effektiv ist die Energie, die durch Diagonalisierung des Hamilton-Operators erhalten wird. ITE repräsentiert jede Energie, die durch die imaginäre Zeitentwicklungsmethode erhalten wird.

Da die Größe bei $ N = 8 $ groß wird, werden Effective und ITE nicht aufgelistet. $ N = 2 $ entspricht den Werten von Deep VQE, Effective und ITE. Wenn $ N> 2 $, werden die effektiven und tiefen VQE-Werte für ITE etwas größer und weichen ab, aber Sie können sehen, dass sie eine gute Annäherung ergeben. Es ist ersichtlich, dass mit Deep VQE auch für Systeme, die nicht direkt von ITE berechnet werden können, ein ungefährer Energiewert erhalten werden kann.

Modell b

Das folgende Modell ist unten dargestellt.

fig3_b.png

Der Hamilton-Operator hat die gleiche Form wie zuvor, hat sich jedoch auf 12 Quantenbits erhöht, und die Kanten haben sich wie in der Abbildung gezeigt geändert. Die Wechselwirkung wirkt auf das 0. und 6. Quantenbit. Die genaue Lösung für dieses Subsystem ist $ -21,78 $, und das von Deep VQE berechnete Ergebnis scheint $ -21,72 $ zu sein. Die bei verschiedenen Schaltkreistiefen gemessenen Energiewerte sind nachstehend aufgeführt.

fig3_c.png

Wenn Sie von nun an die Teilsysteme verbinden, scheint es, dass $ -43,8 $ bei $ N = 2 $ und $ -87,9 $ bei $ N = 4 $ erhalten werden.

Implementierung

Ich habe die Basalenergie im Fall von $ N = 2 $ in Modell a von Deep VQE unter Verwendung von Qulacs berechnet.

3a_N2.png

Der partielle Hamiltonianer verwendet das folgende Modell wie zuvor.

\begin{align}
    \mathcal{H}_i &= \sum_{E=(\mu, \nu)}(X^{(i)}_{\mu}X^{(i)}_{\nu} + Y^{(i)}_{\mu}Y^{(i)}_{\nu} + Z^{(i)}_{\mu}Z^{(i)}_{\nu}) \\
    &= \sum_{E=(\mu, \nu)}\sum_{A=X,y,Z}A^{(i)}_{\mu} A^{(i)}_{\nu} 
\end{align}

Die Kanten sind $ E = \ {(0,1), (1,2), (2,3), (3,0), (0,2) } $, und die Interaktion verwendet:

\begin{align}
    V_{01} = \sum_{A=X,Y,Z}(A^{(i)}_{0} A^{(j)}_{2} + A^{(i)}_{2} A^{(j)}_{0})
\end{align}

Bitte beachten Sie den folgenden Code, wenn Sie das obige Modell mit Deep VQE im Notebook-Format berechnen. Die Erklärung ist auch auf dem Notizbuch beschrieben.

https://github.com/Noriaki416/DeepVQE/blob/master/DeepVQE.ipynb

Ich überspringe diesmal, weil ich "BFGS" verwende, um die Kostenfunktion zu optimieren, und ich muss wirklich den Gradienten der Kostenfunktion eingeben. (Obwohl in der Zeitung gesagt wird, dass Sie einen Farbverlauf hinzufügen sollten, habe ich ihn übersprungen. Es tut mir leid.)

Darüber hinaus werden die mit strikter Diagonalisierung erzielten Ergebnisse nachfolgend hochgeladen.

https://github.com/Noriaki416/DeepVQE/blob/master/DeepVQE_Others.ipynb

Das Ergebnis der exakten Diagonalisierung ist "-14,46", was dem Wert in Tabelle 1 entspricht. Das Ergebnis von Deep VQE ist ebenfalls der gleiche Wert, und ich denke, dass die Berechnung selbst gut ausgeführt wurde.

Das ist es. Bitte weisen Sie auf Fehler hin. Wenn ich Zeit habe, werde ich den Code verbessern und versuchen, in anderen Systemen zu berechnen ($ N> 2 $ in Modell a und Modell b).

Recommended Posts

Ich habe versucht, Deep VQE zu implementieren
Ich habe versucht, PCANet zu implementieren
Ich habe versucht, StarGAN (1) zu implementieren.
Ich habe versucht, eine kontroverse Validierung zu implementieren
Ich habe versucht, Realness GAN zu implementieren
Ich habe versucht, Perceptron Teil 1 [Deep Learning von Grund auf neu] zu implementieren.
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, Permutation in Python zu implementieren
Ich habe versucht, PLSA in Python 2 zu implementieren
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
Ich habe versucht, CVAE mit PyTorch zu implementieren
Ich habe versucht, tief zu lernen
Ich habe versucht zu debuggen.
Ich habe versucht, das Lesen von Dataset mit PyTorch zu implementieren
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
Ich habe versucht, das Problem des Handlungsreisenden umzusetzen
Ich habe versucht, Deep Learning zu implementieren, das nicht nur mit NumPy tiefgreifend ist
[Deep Learning von Grund auf neu] Ich habe versucht, Sigmoid Layer und Relu Layer zu implementieren
Ich habe versucht, PredNet zu lernen
Ich habe versucht, SVM zu organisieren.
Ich habe versucht, Linux wieder einzuführen
Ich habe versucht, Pylint vorzustellen
Ich habe versucht, SparseMatrix zusammenzufassen
jupyter ich habe es berührt
Ich habe versucht, ein multivariates statistisches Prozessmanagement (MSPC) zu implementieren.
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ich habe versucht, Drakues Poker in Python zu implementieren
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich habe versucht, GA (genetischer Algorithmus) in Python zu implementieren
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
Ich habe versucht, Dropout zu erklären
Ich habe versucht, SSD jetzt mit PyTorch zu implementieren (Dataset)
Ich habe versucht, einen automatischen Nachweis der Sequenzberechnung zu implementieren
[Python] Deep Learning: Ich habe versucht, Deep Learning (DBN, SDA) ohne Verwendung einer Bibliothek zu implementieren.
Ich habe versucht, Cifar10 mit der SONY Deep Learning Library NNabla [Nippon Hurra] zu implementieren.
Ich habe versucht, mit Quantx eine Linie mit gleitendem Durchschnitt des Volumens zu implementieren
Ich habe versucht, das grundlegende Modell des wiederkehrenden neuronalen Netzwerks zu implementieren
Ich habe versucht, eine Quip-API zu erstellen
Ich habe versucht, die Erkennung von Anomalien durch spärliches Strukturlernen zu implementieren
Ich habe versucht, Python zu berühren (Installation)
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich habe versucht, mit Quantx einen Ausbruch (Typ der Täuschungsvermeidung) zu implementieren
[Django] Ich habe versucht, Zugriffsbeschränkungen durch Klassenvererbung zu implementieren.
Ich habe versucht, Pytorchs Datensatz zu erklären
Ich habe Watson Voice Authentication (Speech to Text) ausprobiert.
Ich habe Teslas API berührt
Ich habe versucht, ListNet of Rank Learning mit Chainer zu implementieren
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Ich habe versucht, Harry Potters Gruppierungshut mit CNN umzusetzen
Ich habe versucht, mich über MCMC zu organisieren.
Ich habe versucht, mit Theano tief zu lernen
Ich habe versucht, das Blackjack of Trump-Spiel mit Python zu implementieren