量子感知机

news/2024/11/25 22:58:06/

        神经网络类似于人类大脑,是模拟生物神经网络进行信息处理的一种数学模型。它能解决分类、回归等问题,是机器学习的重要组成部分。量子神经网络是将量子理论与神经网络相结合而产生的一种新型计算模式。1995年美国路易斯安那州立大学KAK教授首次提出了量子神经计算的概念,开创了该领域的先河。随后又相继 出现了多种量子神经计算模型,包括量子感知机、量子神经网络、量子受限玻尔兹曼机等。近年来,量子生成对抗网络、量子卷积神经网络等量子机器学习模型。

        量子感知机算法,这与经典感知机的方法类似,在量子感知机中,规定输入样本x_{i}和权重系数w的元素只能为+-1。经典感知机中通过激活函数的输出判断输入样本是否被正确分类。而在量子算法中通过阈值\Theta将式写为

                                               y_{i}=\left\{\begin{matrix} 0, & |\sum_{j=0}^{M-1}\omega _{j}x_{ji} |\geq \Theta\\ 1, & |\sum_{j=0}^{M-1}\omega _{j}x_{ji} |\leq \Theta\\ \end{matrix}\right.                                             (1)

 

1.|\sum_{j=0}^{M-1}\omega _{j}x_{ji} |的计算方法 

        |\sum_{j=0}^{M-1}\omega _{j}x_{ji} |=|x_{i}^{T}\omega |,即x_{i}\omega的内积的模。在量子计算中,样本信息x_{i}和权重系数\omega存储在量子态中,归一化之后,x_{i}\omega的量子态形式为

                                                          |x_{i}\rangle =\frac{1}{\sqrt{M}}\sum_{j=0}^{M-1}x_{ji} |j\rangle                                               (2)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                          |w\rangle =\frac{1}{\sqrt{M}}\sum_{j=0}^{M-1}w_{j} |j\rangle                                                (3)

这里系数取\frac{1}{\sqrt{M}}是因为量子算法中x_{i}\omega内积的模为\frac{1}{M}|\sum_{j=0}^{M-1}\omega _{j}x_{ji} |

        假设存在酉算子U_{x_{i}}U_{w}能够完成如下变换:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​          ​​​​​​​       U_{x_{i}}|0\rangle^{\bigotimes }=\frac{1}{\sqrt{M}}\sum_{j=0}^{M-1}x_{ji} |j\rangle=|\Psi _{1i}\rangle                                (4)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​           ​​​​​​​       U_{x_{i}}|1\rangle^{\bigotimes }=\frac{1}{\sqrt{M}}\sum_{j=0}^{M-1}w_{i} |j\rangle=|\Psi _{2}\rangle                                 (5)

式子中:m=logM

      则有 U^{-1}_{x_{i}}|\Psi _{2}\rangle=|1\rangle^{\bigotimes M },将|1\rangle^{\bigotimes M }写成十进制的形式有,U^{-1}_{x_{i}}|\Psi _{2}\rangle=|M-1\rangle

首先制备初态|0\rangle^{\bigotimes (m+1) },其中前m个量子比特用于存储输入样本向量x_{i}和权重\omega,最后一位是辅助量子比特,用于存储最终结果。

        第一步:使用酉算子U_{x_{i}}作用于前m个量子比特|0\rangle^{\bigotimes m },得到量子态

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         ​​​​​​​               |\Psi _{1i}\rangle=\frac{1}{\sqrt{M}}\sum_{j=0}^{M-1}x_{ji} |j\rangle                                               (6)

        第二步:使用U_{w}^{-1}作用于|\Psi _{1i}\rangle得到量子态

                                                       |\Psi _{3\rangle=}U^{-1}_{x_{i}}|\Psi _{1i}\rangle=\sum_{j=0}^{M-1}c_{j} |j\rangle                                       (7)

式子中:\sum_{j=0}^{M-1}c_{j}^{2}=1

则                              \langle \Psi _{1i}|\Psi _{2}\rangle=\langle \Psi _{1i}|U_{w}U_{w}^{-1}|\Psi _{2}\rangle=\langle \Psi _{3}|M-1\rangle=c_{M-1}                  (8)              

#量子感知机
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister, transpile
from qiskit_aer import Aer
import numpy as np
from qiskit.visualization import plot_histogramfrom math import pi
from qiskit.visualization import plot_histogramcircuit = QuantumCircuit(5,5)
#两控制位的受控z门
def ccz():circuit=QuantumCircuit(2)circuit.cz(0,1)circuit= circuit.to_gate()circuit.name = "ccz"c_U = circuit.control()return c_U
#两控制位的受控z门(与前一个的控制位不同)
def ccz1():circuit=QuantumCircuit(3)circuit.cz(0,2)circuit= circuit.to_gate()circuit.name = "ccz1"c_U = circuit.control()return c_U
#三控制位的受控z门
def cccz():circuit=QuantumCircuit(3)circuit.append(ccz(),[0]+[m+1 for m in range(2)])circuit= circuit.to_gate()circuit.name = "cccz"c_U = circuit.control()return c_U
#三控制位的受控x门
def cccx():circuit=QuantumCircuit(3)circuit.ccx(0,1,2)circuit= circuit.to_gate()circuit.name = "cccx"c_U = circuit.control()return c_U
#四控制位的受控x门
def ccccx():circuit=QuantumCircuit(4)circuit.append(cccx(),[0]+[m+1 for m in range(3)])circuit= circuit.to_gate()circuit.name = "ccccx"c_U = circuit.control()return c_U
#U_i
for i in range(4):circuit.h(i)
for i in range(3):circuit.z(i)
circuit.cz(1,2)
circuit.cz(0,2)
circuit.cz(0,1)
circuit.append(ccz(),[0]+[m+1 for m in range(2)])
#U_w
circuit.z(1)
circuit.z(2)
circuit.cz(1,3)
circuit.cz(0,2)
circuit.cz(0,1)
circuit.append(ccz(),[1]+[m+2 for m in range(2)])
circuit.append(ccz1(),[0]+[m+1 for m in range(3)])
circuit.append(cccz(),[0]+[m+1 for m in range(3)])
for i in range(4):circuit.h(i)
for i in range(4):circuit.x(i)
#将内积提取到辅助量子比特上
circuit.append(ccccx(),[0]+[m+1 for m in range(4)])
circuit.barrier()
circuit.measure(4,4)
circuit.draw(output='mpl', plot_barriers=False)

# Set up the backend
backend = Aer.get_backend('qasm_simulator')
# Transpile the circuit for the simulator
transpiled_circuit = transpile(circuit, backend)
# Run the transpiled circuit
job = backend.run(transpiled_circuit, shots=100000)
sim_result = job.result()
# Get and plot the results
measurement_result = sim_result.get_counts(circuit)
plot_histogram(measurement_result)

 

 1的概率为0.1376,开根号为0.370944,小于0.5,属于C_{2}


http://www.ppmy.cn/news/1549934.html

相关文章

Linux: 进程地址空间(理解虚拟地址和页表)

目录 1. 虚拟地址 2. 进程地址空间分布 3. 描述进程地址空间 4. 内存管理——页表 5. 父子进程的虚拟地址关系 6. 页表标记位 6.1 读写权限 6.2 命中权限 7.为什么存在进程地址空间 1. 虚拟地址 #include <stdio.h> #include <unistd.h> #include <sy…

网络安全服务人才发展路线图

到2023年&#xff0c;全球网络安全支出规模将达到1512亿美元&#xff08;约合10640.4亿元人民币&#xff09;&#xff0c;并将以9.4%的年复合增长率持续增长。与火爆的产业现状相比&#xff0c;中国的网络安全服务人才面临巨大缺口。相关数据显示&#xff0c;我国网络安全人才缺…

开放性实验——网络安全渗透测试

网络安全渗透测试实验报告 一、 实验环境 操作机&#xff1a;虚拟机kali linux 目标主机&#xff1a;虚拟机win 7:&#xff08;192.168.1.116&#xff09; Kali Linux和win7 均采用桥接模式 二、 实验工具 Kali Linux上的metasploit扫描器nessusNmap 三、 攻击目标 利用ms17…

03-02、SpringCloud第二章,Eureka服务的注册与发现

SpringCloud从看不懂到放弃&#xff0c;第二章 一、Eureka服务的注册与发现 Eureka Netflix在设计Eureka时遵守的就是AP原则CAP原则又称CAP定理&#xff0c;指的是在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、 Availability&#xff08;可用…

YOLO-FaceV2: A Scale and Occlusion Aware Face Detector

《YOLO-FaceV2:一种尺度与遮挡感知的人脸检测器》 1.引言2.相关工作3.YOLO-FaceV23.1网络结构3.2尺度感知RFE模型3.3遮挡感知排斥损失3.4遮挡感知注意力网络3.5样本加权函数3.6Anchor设计策略3.7 归一化高斯Wasserstein距离 4.实验4.1 数据集4.2 训练4.3 消融实验4.3.1 SEAM块4…

web网络安全系统

最近了解了基于web的网络安全系统的设计与实现项目&#xff0c;在这个平台记录一下这个基于web的网络安全系统的设计与实现项目&#xff0c;方便以后再次使用或学习的时候能够及时的翻阅。在完成基于web的网络安全系统的设计与实现项目的时候&#xff0c;考虑了很多框架。最终决…

后端开发如何高效使用 Apifox?

对于后端开发者来说&#xff0c;日常工作中少不了接口的设计、调试和文档编写。你是否也曾因接口文档更新不及时、测试工具分散而头疼不已&#xff1f;Apifox&#xff0c;这款全能型工具&#xff0c;或许能成为你的效率神器&#xff01; Apifox究竟有哪些功能能帮助后端开发者…

PyTorch基础2

目录 1.Tensor常见操作 1.1获取元素值 1.2元素值运算 1.2.1算术运算符 1.2.2数学运算 1.2.3三角函数 1.2.4统计学函数 1.3阿达玛积 1.4Tensor相乘 1.5索引操作 1.5.1简单索引 1.5.2列表索引 1.5.3布尔索引 1.5.4索引赋值 1.6张量拼接 1.6.1 torch.cat() 1.6.2…