Il existe un VQE (Variational Quantum Eigen Solver) comme méthode pour calculer l'état de base de l'hamiltonien électronique à l'aide d'un ordinateur quantique. J'ai lu l'article suivant sur Deep VQE, qui est une méthode pour calculer l'état de base de l'hamiltonien qui dépasse le nombre de bits pouvant être manipulés par un ordinateur quantique, j'ai donc résumé la méthode.
https://arxiv.org/abs/2007.10917 https://qunasys.com/news/2020/8/10/deep-vqe
J'ai également essayé d'implémenter le modèle de FIG3 (a) N = 2, qui est également calculé dans l'article, en utilisant des Qulacs. * Je pense qu'il y a des inexactitudes dans ma compréhension, il serait donc utile que vous puissiez le signaler. </ font>
Le flux global est illustré sur la figure 1 décrite dans l'article.
Je comprends qu'il est possible de réduire le nombre de bits quantiques utilisés dans l'étape de faire correspondre le nombre de bases locales à des bits quantiques. Si vous créez une base locale avec 3, mais que le nombre est $ K $, le nombre de bits quantiques requis pour l'exprimer est $ \ lceil \ log_2 {K} \ rceil $. A partir de là, le nombre de bits quantiques requis pour exprimer l'hamiltonien effectif créé en 5 est $ 2 \ lceil \ log_2 {K} \ rceil $ car les deux sous-systèmes sont combinés.
Prenons le cas où deux modèles Heisenberg à 4 bits quantiques calculés dans l'article sont connectés. Si vous essayez de calculer sans décomposition, vous aurez besoin de 8 bits quantiques. Lorsqu'il est décomposé et calculé, VQE est initialement effectué en utilisant 4 bits quantiques, et comme le nombre d'interactions est $ K = 7 $, 3 bits quantiques sont nécessaires pour chaque sous-système dans le calcul suivant. Étant donné que deux de ces sous-systèmes seront fusionnés, le nombre total de bits quantiques requis sera de six. Puisqu'il s'agit d'un modèle de jouet, c'est un petit montant, mais vous pouvez voir qu'il a été réduit à 8 $ \ à 6 $.
Ensuite, nous verrons comment créer une base locale et un hamiltonien efficace.
Divisez l'hamiltonien en systèmes partiels et interactions.
$ \ mathcal {H} \ i $ représente la partie hamiltonienne du système, et $ V {ij} $ représente l'interaction entre $ i $ et $ j $. Ici, $ V \ _ {ij} $ prend la forme suivante.
$ W ^ {(i)} \ _ {k} $ représente l'opérateur qui fonctionne sur le système partiel $ i $, et $ W ^ {(j)} \ _ {k} $ représente l'opérateur qui fonctionne sur le système partiel $ j $. ..
Tout d'abord, trouvez l'état de base de $ \ mathcal {H} \ _i $ en utilisant VQE.
Le circuit quantique variable utilisé dans VQE est exprimé comme $ U_i (\ theta ^ {(i)}) $, et l'état de base obtenu est exprimé comme $ \ ket {\ psi ^ {(i)} _0}
Alors, $ \ ket {\ psi ^ {(i)} _0} $ est
Peut être exprimé comme.
Créez une base locale à partir de $ W ^ {(i)} \ _ {k} $ inclus dans l'interaction avec ce $ \ ket {\ psi ^ {(i)} _0}
En utilisant cette base locale, nous calculerons l'hamiltonien effectif en réécrivant l'hamiltonien d'origine. Seul $ W ^ {(i)} _1 $ est défini comme un opérateur d'égalité, et s'il y a des opérateurs d'interaction $ K $, un total de $ K + 1 $ règles locales sera créé. Je vais. (Ci-après, le nombre de bases locales est représenté par $ K $.) A ce stade, ce n'est pas forcément $ \ brakett {\ psi ^ {(i)} \ _ k} {\ psi ^ {(i)} \ _ l} = \ delta \ _ {kl} $. Ceci est normalement orthogonalisé en utilisant la méthode d'orthogonalisation normale de Gramschmidt. La base locale normalement orthogonalisée est représentée par $ \ ket {\ tilde {\ psi} ^ {(i)} \ _k} $.
$ C_k $ est une constante standardisée pour satisfaire $ \ brakett {\ tilde {\ psi} ^ {(i)} \ _k} {\ tilde {\ psi} ^ {(i)} \ _k} = 1 $ Devenir.
Si vous écrivez ceci concrètement, $ k = 1 $ reste tel quel
\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}
Ce sera. À $ 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}
Le même calcul peut être effectué après $ k> 2 $. Pour trouver $ \ ket {\ tilde {\ psi} ^ {(i)} \ _k} $ à partir de ceci, le produit interne de la base locale $ \ brakett {\ psi ^ {(i)} _1} {\ psi ^ {(i) Il s'avère que nous devons calculer)} _2} $. Le produit intérieur est
\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}
Puisqu'il peut être développé avec $ \ ket {\ psi ^ {(i)} \ _0} $, $ W ^ {(i) \ dagger} \ _ {k} W ^ {(i)} \ _ {l} $ Vous pouvez voir que vous pouvez mesurer la valeur attendue. (Le processus de prise de la valeur attendue avec $ \ ket {\ psi ^ {(i)} \ _0} $ apparaîtra dans les calculs ultérieurs.) Notez que, par exemple, $ W ^ {(i) \ dagger} = X ^ {(i)} \ _0, W ^ {(i)} \ _ {l} = Y ^ {(i)} \ _0 $ Si $ W ^ {(i) \ dagger} \ _ {k} W ^ {(i)} \ _ {l} = X ^ {(i)} \ _ 0Y ^ {(i)} \ _ 0 = iZ ^ Le fait est qu'il est nécessaire de mesurer la valeur attendue de $ Z ^ {(i)} \ _0 $ après l'avoir convertie en bulle d'observateur en utilisant la relation entre {(i)} \ _0 $ et l'opérateur Pauli. (La valeur obtenue en multipliant cette mesure par $ i $ est la valeur de l'élément de la matrice.)
$ \ Ket {\ tilde {\ psi} ^ {(i)} \ _k} $ pour faciliter les calculs ultérieurs Le coefficient lorsqu'il est développé avec prime}}} $ est défini comme $ P \ _ {kk ^ {\ prime}} $ et exprimé comme suit.
\begin{align}
\ket{\tilde{\psi}^{(i)}_k} &= \sum^K_{k^{\prime}=1}P^{(i)}_{kk^{\prime}} \ket{\psi^{(i)}_{k^{\prime}}} \\
\end{align}
Vous pouvez créer une matrice $ P $ en mesurant respectivement $ \ brakett {\ psi ^ {(i)} \ _ k} {\ psi ^ {(i)} \ _l} $.
Cette base locale normalement orthogonalisée est simplement appelée ci-après la base locale.
Calculez les éléments de la matrice de $ \ mathcal {H} \ _i, V \ _ {ij} $ en utilisant $ \ ket {\ tilde {\ psi} ^ {(i)} _k} $.
Tout d'abord, l'élément de matrice hamiltonien valide $ (\ mathcal {H} ^ {\ text {eff}} \ _i) \ _ {kl} $ de $ \ mathcal {H} \ _i $ est
\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}
Ce sera. Où $ \ bar {\ mathcal {H}} ^ {\ text {eff}} \ _i $ est
\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}
C'est un élément de matrice défini par. Pour créer un élément de matrice pour $ \ mathcal {H} ^ {\ text {eff}} \ _i $, utilisez $ \ ket {\ psi ^ {(i)} _0} $
\begin{align}
W^{(i)}_{k}\;^{\dagger}\mathcal{H}_i W^{(i)}_{l}
\end{align}
Vous devez mesurer la valeur attendue de $ \ bar {\ mathcal {H}} ^ {\ text {eff}} \ _i $ pour trouver l'élément de la matrice. En utilisant ceci et la matrice $ P $ utilisée lors de la création de la base locale, vous pouvez créer $ \ mathcal {H} ^ {\ text {eff}} \ _i $.
Interaction à la base locale
\begin{align}
V_{ij} = \sum_{k} v_{k} W^{(i)}_{k} W^{(j)}_{k}
\end{align}
Est pris en sandwich des deux côtés pour calculer les éléments de la matrice. Puisque $ W ^ {(i)} \ _ {k} et W ^ {(j)} \ _ {k} $ agissent sur les systèmes partiels $ i $ et $ j $, respectivement.
\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}
Ensuite, $ \ braket {\ tilde {\ psi} ^ {(i)} \ _ k} {W ^ {(i)} \ _ {\ nu}} {\ tilde {\ psi} ^ {(i)} \ Vous devez trouver _l} $. Si vous développez cela de la même manière qu'avant
\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}
Et ici
\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}
Est défini comme. À partir de ce qui précède, pour calculer $ V ^ {\ text {eff}} \ _ {ij} $, utilisez $ \ ket {\ psi ^ {(i)} _0} $
\begin{align}
W^{(i)}_{k}\;^{\dagger}W^{(i)}_{\nu} W^{(i)}_{l}
\end{align}
Observez la valeur attendue de $ (\ bar {W} ^ {(i), \ text {eff}} \ _ {\ nu}) et calculez l'élément de matrice de $. Vous pouvez créer $ V ^ {\ text {eff}} \ _ {ij} $ en utilisant ceci et la matrice $ P $ utilisée pour créer la base locale.
Jusqu'à présent, nous avons trouvé les éléments efficaces de la matrice hamiltonienne. L'état de base peut être obtenu à partir des valeurs propres et des états propres en diagonalisant la matrice dimensionnelle $ K ^ 2 \ times K ^ 2 $ obtenue en intégrant les deux sous-systèmes représentés par les bases locales sans utiliser d'ordinateur quantique. Je pense qu'il est nécessaire de le représenter avec la porte correspondant à l'élément matriciel pour pouvoir calculer à l'aide d'un ordinateur quantique.
Pour $ (\ mathcal {H} ^ {\ text {eff}} \ _i) _ {kl} $, l'opérateur hamiltonien correspondant est
\begin{align}
(\mathcal{H}^{\text{eff}}_i)_{kl}\ket{\tilde{\psi}^{(i)}_k} \bra{\tilde{\psi}^{(i)}_l}
\end{align}
Sera. Ce $ \ ket {\ tilde {\ psi} ^ {(i)} \ _ k} \ bra {\ tilde {\ psi} ^ {(i)} \ _l} $ doit être représenté par une porte. Avant cela, nous devons d'abord associer la base locale $ \ ket {\ tilde {\ psi} ^ {(i)} \ _ k} $ avec le bit quantique. Par exemple, si $ K = 7 $, vous devriez considérer la correspondance suivante.
\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}
À partir de cette correspondance, par exemple
\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}
Par conséquent, après cela, l'opérateur de projection $ \ ket {0} \ bra {0} \ _0 $ de chaque bit quantique peut être représenté en utilisant une porte. Se concentrer sur un bit quantique
\begin{align}
Z &= \ket{0}\bra{0} - \ket{1}\bra{1} \\
I &= \ket{0}\bra{0} + \ket{1}\bra{1}
\end{align}
À partir de $ \ ket {0} \ bra {0}, \ ket {1} \ bra {1} $ peut être exprimé en utilisant $ Z, I $. De la même manière
\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}
Je pense qu'il peut être converti en utilisant. Puisque l'hamiltonien est Elmeat, je pense qu'il peut être étendu en utilisant ces portes et des coefficients réels.
Trouvez l'état de base avec VQE en utilisant le hamiltonien valide de $ \ mathcal {H} \ _ {i}, \ mathcal {H} \ _ {j}, V \ _ {ij} $ trouvé ci-dessus comme nouveau sous-système. ..
\begin{align}
\mathcal{H}^{\text{eff}}_{ij} = \mathcal{H}^{\text{eff}}_i + \mathcal{H}^{\text{eff}}_j + V^{\text{eff}}_{ij}
\end{align}
S'il n'y a que deux sous-systèmes, le processus ci-dessus ne doit être exécuté qu'une seule fois, mais s'il y en a trois ou plus, il est nécessaire de répéter le processus en fonction de la division.
Si le numéro du premier sous-système est $ N $ et le nombre de bits quantiques requis pour un sous-système est $ n $, si vous essayez de le résoudre en une fois sans diviser le système entier, le total est $ M = nN $ quantum. Vous en aurez besoin d'un peu. Par contre, lorsque la division est grande, si le nombre de bases locales est de $ K $, le nombre de bits quantiques requis est $ m = N \ lceil \ log \ _2 {K} \ rceil $, soit $ M \ à m $. Il a été réduit.
Dans l'article, le nombre requis de bits est spécifiquement discuté en utilisant un modèle dans lequel un système partiel de 4 bits quantiques est répété d'une manière bidimensionnelle. J'ai résumé la méthode de calcul du nombre de bits quantiques requis pour l'image ci-dessous.
Présentation des résultats des calculs calculés dans l'article.
Tout d'abord, comme le montre la figure ci-dessous, il s'agit d'un modèle dans lequel un système partiel composé de 4 bits quantiques est connecté de manière unidimensionnelle. (Dans la partie implémentation, j'ai calculé un modèle dans lequel ces deux sont connectés.)
Le système partiel est constitué du modèle anti-ferrométrique Heisenberg suivant.
\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}
Ici, les arêtes sont $ E = \ {(0,1), (1,2), (2,3), (3,0), (0,2) } $. Les interactions suivantes fonctionnent entre les sous-systèmes.
\begin{align}
V_{ij} = \sum_{A=X,Y,Z}(A^{(i)}_{0} A^{(j)}_{2} + A^{(i)}_{2} A^{(j)}_{0})
\end{align}
Les résultats des calculs sont résumés dans le tableau ci-dessous.
L'énergie totale du système partiel où Local ignore l'interaction, Efficace est l'énergie obtenue en diagonalisant l'hamiltonien, ITE représente chaque énergie obtenue par la méthode de développement du temps imaginaire.
Puisque la taille devient grande à $ N = 8 $, Effective et ITE ne sont pas répertoriés. $ N = 2 $ correspond aux valeurs de Deep VQE, Effective et ITE. Lorsque $ N> 2 $, les valeurs VQE effectives et profondes pour ITE deviennent légèrement plus grandes et s'écartent, mais vous pouvez voir qu'elles donnent une bonne approximation. On peut voir qu'une valeur énergétique approximative peut être obtenue en utilisant Deep VQE même pour des systèmes qui ne peuvent pas être calculés directement par ITE.
Le modèle suivant est illustré ci-dessous.
L'hamiltonien a la même forme qu'avant, mais a augmenté à 12 bits quantiques, et les bords ont changé comme indiqué sur la figure. L'interaction agit sur les 0e et 6e bits quantiques. La solution exacte pour ce sous-système est $ -21,78 $, et le résultat calculé par Deep VQE semble être $ -21,72 $. Les valeurs d'énergie mesurées à différentes profondeurs de circuit sont répertoriées ci-dessous.
Désormais, si vous connectez les systèmes partiels, il semble que $ -43.8 $ s'obtienne à $ N = 2 $ et $ -87.9 $ s'obtienne à $ N = 4 $.
J'ai calculé l'énergie de base dans le cas de $ N = 2 $ dans le modèle a par DeepVQE en utilisant Qulacs.
L'hamiltonien partiel utilise le modèle suivant comme précédemment.
\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}
Les arêtes sont $ E = \ {(0,1), (1,2), (2,3), (3,0), (0,2) } $, et l'interaction utilise:
\begin{align}
V_{01} = \sum_{A=X,Y,Z}(A^{(i)}_{0} A^{(j)}_{2} + A^{(i)}_{2} A^{(j)}_{0})
\end{align}
Veuillez vous référer au code ci-dessous lors du calcul du modèle ci-dessus avec Deep VQE au format notebook. L'explication est également décrite sur le cahier.
https://github.com/Noriaki416/DeepVQE/blob/master/DeepVQE.ipynb
Je saute cette fois car j'utilise BFGS
pour optimiser la fonction de coût et j'ai vraiment besoin d'entrer le gradient de la fonction de coût.
(Bien qu'il soit dit dans l'article que vous devriez ajouter un dégradé, je l'ai ignoré. Je suis désolé.)
De plus, les résultats obtenus en utilisant une diagonalisation stricte sont également téléchargés ci-dessous.
https://github.com/Noriaki416/DeepVQE/blob/master/DeepVQE_Others.ipynb
Le résultat de la diagonalisation exacte est "-14,46", ce qui correspond à la valeur du tableau 1. Le résultat de Deep VQE a également la même valeur, et je pense que le calcul lui-même a été bien exécuté.
C'est tout. Veuillez signaler toute erreur. Si j'ai le temps, je vais améliorer le code et essayer de calculer dans d'autres systèmes ($ N> 2 $ dans le modèle a et le modèle b).
Recommended Posts