# 飞桨常规赛:量子电路合成4月第5名方案
本方案基于[飞桨常规赛:量子电路合成3月第3名方案](https://aistudio.baidu.com/aistudio/projectdetail/1620929),我在其基础上从**超参数的角度**进行优化 将成绩从2.1748分(我在3月份的最终得分)/18.0889(红白黑大佬在3月份的最终得分)提高到19.4944分(我在4月份的最终得分)。
# 一、赛题分析与重点难点剖析
比赛包含六道题目,其中前四题为基础题 (满分分别为 1 分,2 分,3分,10 分),第五题为进阶题 (满分为 25 分),第六题为挑战题 (满分为 60 分)。六道题又简单到复杂,但**本质上都是构建指定量子的量子电路求解最优门的$\theta$值**
> 下面是红白黑大佬在量子电路合成3月第3名方案上讲解的思路。
## 赛题解答核心
利用量桨的优势,结合paddle的反向传播优化机制快速搭建量子电路优化。
## 模型构建思路
1. 设置量子数目,根据量子数目构建量子电路模块--量子数目决定量子电路的输入端个数
2. 【2-3可交换顺序】设置theta参数形状,从而确定电路过程中y门需要优化的参数$\theta$
3. 上一步之前可以先配置量子电路网络后再确定其中theta的参数形状
4. 构建优化网络部分,将theta的形状传入网络中,从而生成可优化参数--通过paddle的优势进行优化【这一步之前需要设计优化损失,自定义——但要根据反向优化的最小值求解为基础设计损失函数,避免优化错误】
5. 创建优化器
6. 迭代优化,记录theta参数与loss曲线
7. 根据问题公式评估得分
8. 保存训练后所需的theta值
## 损失函数构建思路
利用paddle的最小化优化方法,与优化参数矩阵与目标矩阵的最大相似结合:
> 创建目标函数: loss = 1 - 相似矩阵求解的值 or loss = - 相似矩阵求解的值
## 问题求解说明
1. 问题1:无直接的数据集比对,对给定量子电路,所以只需对应搭建y门电路即可
2. 问题2,3:对给定的电路进行theta优化,然后与直接的数据集中的数据进行比对,得到得分
3. 问题4、5:均参考paddle-quantum的内置若纠错网络结构进行构建电路,实现简单网络求解
说明:
- 在问题4中,对弱纠缠网络进行展开成y门进行逐一搭建
- 在问题5中,对弱纠缠网络的组件网络进行展开——其源码可参考quantum的real_block_layer
以上网络求解不超过30秒
4. 问题6:简单用单一的弱纠缠网络与强纠缠网络搭建求解电路暂未能解决问题,所以需要未来做一点其它的尝试进行求解(当前未完成)
# 二、优化思路介绍
我的主要优化思路是从超参数下手。
1.降低学习率,提高训练epoch数,从而使计算结果的精度提高
2.尝试使用不同的优化器以找到得分最高的$\theta$值
3.从数学的角度解析量子电路求解最优门的$\theta$值
# 三、具体方案分享
## 降低学习率,提高迭代次数
量子电路合成3月第3名方案的学习率及迭代次数为:
- lr = 0.32 # 学习率
- iters = 100 # 迭代次数
我将学习率降低的同时提高迭代次数:
- lr = 0.001 # 学习率
- iters = 1000 # 迭代次数
## 尝试使用不同的优化器
量子电路合成3月第3名方案使用的是Adam优化器:
- opts = optimizer.Adam(learning_rate=lr, parameters=model.parameters())
飞桨提供的优化器API多达10个,可尝试更换不同的优化器:
- adadelta = paddle.optimizer.Adadelta(learning_rate=0.0003, epsilon=1.0e-6, rho=0.95, parameters=model.parameters())
- adagrad = paddle.optimizer.Adagrad(learning_rate=0.1, parameters=model.parameters())
- lamb = paddle.optimizer.Lamb(learning_rate=0.002, parameters=model.parameters(), lamb_weight_decay=0.01)
- ... ...
## 从数学的角度解析量子电路求解最优门的θ值
以第一题单量子比特门近似为例。
### 问题描述
寻找合适的参数 $\theta$,使用 $R_y(\theta)$旋转门来近似单量子比特门 U
$$
U:=\frac{1}{\sqrt{2}}\begin{bmatrix} 1 & -1 \\ 1 & 1\end{bmatrix}
$$
![](https://img-blog.csdnimg.cn/2021030615550947.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3picF8xMjEzOA==,size_16,color_FFFFFF,t_70)
### 输入数据
无
### 输出数据
Question_1_Answer.txt 文件。该文件描述答案的量子电路结构,数据格式需满足 “提交内容说明” 要求,即文件内容格式必须为
> R 0 $\theta$
其中 $\theta$ 是选手给出的 float 类型实数。
### 评分机制
算分程序根据选手提交的量子电路结构数据解析出 $\theta$ 值,计算量子门保真度函数F
$$
F(U,Ry(θ))=∣Tr(U×RyT(θ))∣/2
$$
然后将 $F$ 作为最终分数(精确到小数点后四位)。
举例说明: 选手提交的 Question_1_Answer.txt 文件内容为
> R 0 3.1416
算分程序解析出 $θ=3.1416$,因为
$$
\begin{aligned}
F\left(U, R_{y}(3.1416)\right) &=\frac{1}{2}\left|\operatorname{Tr}\left(\frac{1}{\sqrt{2}}\left[\begin{array}{cc}
1 & -1 \\
1 & 1
\end{array}\right] \times\left[\begin{array}{cc}
\cos \left(\frac{3.1416}{2}\right) & -\sin \left(\frac{3.1416}{2}\right) \\
\sin \left(\frac{3.1416}{2}\right) & \cos \left(\frac{3.1416}{2}\right)
\end{array}\right]^{T}\right)\right| \\
&=\frac{1}{2}\left|\operatorname{Tr}\left(\frac{1}{\sqrt{2}}\left[\begin{array}{cc}
1 & -1 \\
1 & 1
\end{array}\right] \times\left[\begin{array}{cc}
\cos \left(\frac{3.1416}{2}\right) & \sin \left(\frac{3.1416}{2}\right) \\
-\sin \left(\frac{3.1416}{2}\right) & \cos \left(\frac{3.1416}{2}\right)
\end{array}\right]\right)\right| \\
& \approx 0.7071
\end{aligned}
$$
所以他的分数为 0.7071。
### 解题思路
这题只有1分,属于这个比赛的Hello World吧,其实就是数学计算。
我们看评分机制,要求计算量子门保真度函数F,F算得多少就是多少分,这题满分1分,所以其实就是求$F(U,Ry(θ))=1$时,$θ$的取值。
根据量子门保真度函数F,我们可以知道
$$
∣Tr(U×RyT(θ))∣/2 = 1
$$
把2乘到等式的右边:
$$
∣Tr(U×RyT(θ))∣ = 2
$$
接下来先计算Tr() 里的结果,简单提一下,Tr(A) 表示矩阵 A 的迹 (Trace),运算规则为取 n×n 矩阵 A 的主对角线所有元素之和。
题目已经给了:
$$
U=\frac{1}{\sqrt{2}}\begin{bmatrix} 1 & -1 \\ 1 & 1\end{bmatrix}
$$
$$
R_{y}(\theta)=\left[\begin{array}{ll}
\cos \frac{\theta}{2} & -\sin \frac{\theta}{2} \\
\sin \frac{\theta}{2} & \cos \frac{\theta}{2}
\end{array}\right]
$$
因此:
$$
R_{y}^{T}(\theta)=\left[\begin{array}{ll}
\cos \frac{\theta}{2} & -\sin \frac{\theta}{2} \\
\sin \frac{\theta}{2} & \cos \frac{\theta}{2}
\end{array}\right]^{T}
=\left[\begin{array}{ll}
\cos \frac{\theta}{2} & \sin \frac{\theta}{2} \\
-\sin \frac{\theta}{2} & \cos \frac{\theta}{2}
\end{array}\right]
$$
带入下面这个式子:
$$
U×RyT(θ)=\frac{1}{\sqrt{2}}\begin{bmatrix} 1 & -1 \\ 1 & 1\end{bmatrix} × \left[\begin{array}{ll}
\cos \frac{\theta}{2} & \sin \frac{\theta}{2} \\
-\sin \frac{\theta}{2} & \cos \frac{\theta}{2}
\end{array}\right]
$$
化简一下:
$$
U×RyT(θ)={\sqrt{2}} × (\cos \frac{\theta}{2} + \sin \frac{\theta}{2})
$$
该矩阵的迹是其本身,因此有:
$$
∣Tr(U×RyT(θ))∣ ={\sqrt{2}} × (\cos \frac{\theta}{2} + \sin \frac{\theta}{2}) = 2
$$
解下述方程即可:
$$
{\sqrt{2}} × (\cos \frac{\theta}{2} + \sin \frac{\theta}{2}) = 2
$$
$$
(\cos \frac{\theta}{2} + \sin \frac{\theta}{2}) = {\sqrt{2}}
$$
两边平方:
$$
1 + 2 \sin \frac{\theta}{2} \cos \frac{\theta}{2} = 2
$$
化简一下:
$$
\sin \frac{\theta}{2} \cos \frac{\theta}{2} = 0.5
$$
不难算出:
$$
\theta = \frac{Π}{2} = \frac{3.14}{2} = 1.57
$$
所以这一题的答案是1.57,即参数 $\theta$=1.57时,能使$R_y(\theta)$�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
资源推荐
资源详情
资源评论
收起资源包目录
飞桨常规赛:量子电路合成比赛参考思路.zip (28个子文件)
L-code
LICENSE 11KB
requirements.txt 58B
0531
utils.py 10KB
solve2.py 2KB
solve5.py 6KB
Reader.py 2KB
solve1.py 578B
solve4.py 4KB
paddle_model.py 13KB
Answer
Question_1_Answer.txt 22B
Question_5_Answer.txt 976B
Question_3_Answer.txt 127B
Question_6_Answer.txt 2KB
Question_2_Answer.txt 98B
Question_4_Answer.txt 289B
ArchitectureSearch.py 4KB
solve3.py 2KB
ops.py 2KB
Readme.md 44B
README.md 99B
0431
quest6.py 436B
read_data.py 1KB
quest2.py 3KB
quest4.py 4KB
quest1.py 4KB
quest3.py 3KB
quest5.py 5KB
Readme.md 11KB
共 28 条
- 1
资源评论
普通的一个普通猿
- 粉丝: 1469
- 资源: 1897
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 数学新题型研究-2025届高考数学.pdf
- Delphi 12 控件之LMD VCL Complete v2024.4.7z
- 基于Python、JavaScript、CSS、HTML的疫情分析可视化设计源码
- 基于Python的选课信息管理系统设计源码
- Qt联合海康威视工业相机采集,在线转Halcon变量并显示(独立封装、支持多相机、支持黑白相机和彩色相机)
- Delphi 12 控件之unidac-10.3.0-d28pro.exe
- 基于Numpy和Boost::Python实现的矩量法
- 基于Java Server Pages的医院信息管理系统设计源码
- 基于鸿蒙服务卡片的Java和CSS实现的分布式连连看游戏设计源码
- 基于ExoPlayer框架的华为WisePlay DRM集成演示源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功