| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> VQLS:变分量子算法解线性方程组 -> 正文阅读 |
|
[人工智能]VQLS:变分量子算法解线性方程组 |
复现的算法为VQLS算法,用于处理线性方程组
A
x
=
b
Ax=b
Ax=b的问题。 10.17日晚重新看了一遍论文,才发现自己弄错了很多概念,例如:误以为分解 A A A是为了作为量子态输入到电路,实际上他是作为门矩阵作用于含参 x x x的 流程分析我大致将该算法分为一下4个流程。
1. 搭建含参电路输入量子电路的为试探态,一般选择全
∣
0
?
|0?
∣0?态,通过含参电路后,则可得: 将 A A A分解为U矩阵和的形式来作为门电路: A = ∑ c n A n A = \sum c_nA_n A=∑cn?An?上式中 c n c_n cn? 均为复数,这意味着可以将我们可以将 A n A_n An?分别作为量子电路的门电路。 然后让带参数的 x ( α ) x(\alpha) x(α)分别通过 A n A_n An?再累加,得到 A x ( α ) Ax(\alpha) Ax(α),接着就是构建一个损失函数,用于评估 A x ( α ) Ax(\alpha) Ax(α)与 b b b的接近程度,可以理解为判别两个向量是否在同一方向上。 这一部分对用于图1中的蓝框部分。 2.损失函数论文中提出两种损失函数,分别对应local和global。 local损失函数:
C
L
^
=
?
x
∣
H
L
∣
x
?
\begin{aligned}\hat{C_L} = ?x|H_L|x?\end{aligned}
CL?^?=?x∣HL?∣x?? 论文中提出局部损失函数相较于全局损失函数具有更好的梯度下降效果,如图2所示,局部损失函数能够在更少的迭代次数中达到梯度消失。 为了提高运算效率,这一步在量子计算机中进行,对应于图1中的红框部分。 复现过程中,我选择的是global损失函数。 3.优化器在优化其中,主要实现的功能为:
由步骤2分析可知,损失函数需要计算的有两个式子: Hadamard Test该电路主要作用是对任给的幺正算符
U
U
U和量子态
∣
Ψ
?
|\Psi?
∣Ψ?,可以给出该幺正算符在量子态上的投影期望
?
Ψ
∣
U
∣
Ψ
?
?\Psi|U|\Psi?
?Ψ∣U∣Ψ?,如图3所示。 由推导可知: 我们需要做的是,将 x ( α ) x(\alpha) x(α)作为图3中的 ∣ ψ ? |\psi? ∣ψ?输入到电路,选取 A n A_n An?作为 U U U,通过测量第一个qubit的0、1的概率再分别乘以系数累加则可得 ? ψ ∣ ψ ? ?\psi|\psi? ?ψ∣ψ? Hadamard Overlap TestHadamard Overlap Test电路是用于计算: 推导图4所示量子电路,可得: 梯度下降对于global损失函数,我们对其求梯度: 最后经过迭代,得到最终的参数。这一部分对应图1中的绿框部分。 4.求解得标准化后的x经过步骤3我们得到可以得到最终的量子电路参数,所有qubit位输入 ∣ 0 ? \lvert 0? ∣0?,我们得到的是标准化后的 ∣ x ? = x ∣ ∣ x ∣ ∣ 2 |x?=\frac{x}{||x||_2} ∣x?=∣∣x∣∣2?x? 实践部分量子电路搭建含参电路首先需要搭建的是含参电路,以3qubits电路,参数初始化全初始化为1为例,如图5所示。 代码如下,加入ry门以及cz门,ry门的参数作为可变参数,cz门使量子之间产生纠缠。
Hadamard Test电路再含参电路的基础上,搭建不同的U矩阵,计算
?
x
(
α
)
∣
A
m
+
A
n
∣
x
(
α
)
?
?x(\alpha)|A_m^+A_n|x(\alpha)?
?x(α)∣Am+?An?∣x(α)? 代码如下所示:
Hadamard Overlap Test电路Hadamard Overlap Test电路是对Hadamard Test的推广,用于计算 ∣ ? b ∣ ψ ? ∣ 2 = ∑ m ∑ n c m c n ? 0 ∣ U + A n V ( α ) ∣ 0 ? ? 0 ∣ U + A m V ( α ) ∣ 0 ? |?b|\psi?|^2=\sum_{m}\sum_{n}c_mc_n?0|U^+A_nV(\alpha)|0??0|U^+A_mV(\alpha)|0? ∣?b∣ψ?∣2=m∑?n∑?cm?cn??0∣U+An?V(α)∣0??0∣U+Am?V(α)∣0? qiskit提供的VQLS示例中,取
A
为
8
?
8
A为8*8
A为8?8矩阵,
b
=
[
0.125
,
0.125
,
0.125
,
0.125
,
0.125
,
0.125
,
0.125
,
0.125
]
T
b=[\sqrt{0.125},\sqrt{0.125},\sqrt{0.125}, \sqrt{0.125}, \sqrt{0.125}, \sqrt{0.125}, \sqrt{0.125}, \sqrt{0.125}]^T
b=[0.125?,0.125?,0.125?,0.125?,0.125?,0.125?,0.125?,0.125?]T 最终生成的Hadamard Overlap Test电路如图8(由于jupyter生成的图片显示不全,选择在pycharm生成,建议paddle优化一下可视化效果): 同样也是对第一个qubit进行测量,然后乘系数累加则可得到
∣
?
b
∣
ψ
?
∣
2
|\displaystyle \left\langle b|\psi \right\rangle|^2
∣?b∣ψ?∣2
优化器构建这一部分同时参考paddle中VQE示例以及qiskit中示例,由于对双方的api都不熟悉,这一部分代码编写花费了很长时间,还存在着参数不能优化的bug以及我也无法验证loss计算过程是否存在问题。 loss计算最开始使用
如同前面分析
参数优化器配置
运行结果如下: 得到标准化后的x除了相差 π \pi π的全局相位,我复现求解的 x x x与真实标准化的 x x x存在着排列顺序上以及的区别(我将示例中求解出来的电路参数带入也有相同的问题) 小结复现过程中,发现的问题如下:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 3:39:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |