量子变分算法---损失函数
引子
关于损失函数,我们知道在强化学习中,会有一个函数,用来表示模型每一次行为的分数,通过最大化得分,建立一个正反馈机制,若模型为最优则加分最多,若决策不佳则加很少分或者扣分。而在神经网络中,通过正向传播可以求得模型的权重和偏执,用于最后的预测或者分类,真实值和预测值之间的差值。而反向传播,通过求权重和偏置的梯度,来调整参数,使得梯度不断下降,让模型的性能更优。
所有物理系统,无论是经典系统还是量子系统,都可以存在于不同的状态中。例如,道路上的汽车可以具有表征其状态的特定质量、位置、速度或加速度。同样,量子系统也可以具有不同的配置或状态,但它们在处理测量和状态演变的方式上与经典系统不同。这导致了量子力学独有的叠加和纠缠等独特属性。就像我们可以用速度或加速度等物理属性来描述汽车的状态一样,我们也可以使用可观测量来描述量子系统的状态,可观测量是数学对象。
        在量子力学中,状态由归一化复列向量或 kets∣ψ〉表示,可观测量是作用于 kets 的厄米线性算子 ()。可观测量的特征向量 |λ〉 称为特征态。测量可观测量的其中一个特征态 (λ〉
 将为我们提供相应的特征值 λ作为读数。
         在qiskit中提供了两种方法,来测量量子系统,一个是采样器(Sampler)和估计器(Estimator),采样器用于计算给定状态∣ψ〉下获取每一个基础状态的概率值,而估计器获取一个可以观测的和∣ψ〉
sampler原语,为什么它仅仅适合稀疏概率分布呢?
稀疏概率分布是指,量子态∣ψ〉仅涉及到少数几个计算基态|k>的概率,而大多数基态的状态为零或者非常小。例如

而下列是密集的

而如果概率是密集的,那么测量基态的数量为2的幂次,而稀疏分布的只需要少数几次测量。
Sampler在处理稀疏分布时更加高效,因此它只是需要少数几次测量来捕捉少数几个基态的概率。
Estimator通过计算可观测量对于一个量子态∣ψ〉,它的观测概率可以被表达为
而它对每个状态的概率和,可以表示为:
                                                         
但是,计算可观测量的期望值并不总是可行的,因为我们通常不知道它的特征基。Qiskit Runtime 的 Estimator 使用复杂的代数过程来估计真实量子设备上的期望值,是将可观测量分解为我们知道其特征基的其他可观测量的组合。
简而言之,Estimator 将它不知道如何测量的任何可观测量分解为更简单、可测量的可观测量,称为 Pauli 算子。任何算子都可以表示为 个 Pauli 算子的组合。

 其中
        执行此分解后,估算器会为每个可观测量 Pk 即来自原始电路)导出一个新的电路  V k∣ψ〉,以有效地在计算基础中对泡利可观测量进行对角化并对其进行测量。我们可以轻松测量泡利可观测量,因为我们提前知道 Vk,而其他可观测量通常并非如此。
         对于每个 Pk  ,估算器会在量子设备上运行相应的电路多次,在计算基础中测量输出状态,并计算获得每个可能输出 j 的概率 Pkj 。然后,它寻找与每个输出 j  对应的 Pk 的特征值 λkj  ,乘以 wk  ,然后将所有结果相加在一起,以获得给定状态 ∣ψ 〉的可观测量的预期值。与sampler类似,估计器也仅仅作用于稀疏状态。所以可以表示如下:
                                             
如何计算期望值呢?
对于单量子比特状态

它的期望值 
我们又知道,我们注意到
,
,由于X和Z不交换,所以我们需要辅助线路。
数学介绍

由于我们不知道目标可观测量H的特征值或特征态,所以我们需要考虑它的对角化(对角化话很重要,为什么?)假设H是厄密矩阵,存在一个幺正变换V使得,且
,V是一个酉变换。
这样期望值就可以被重写成

        我们需要知道如何获得矩阵 V  和特征值 Λ。如果您已经有了特征值,那么就不需要使用量子计算机了,因为变分算法的目标是找到 H ^的这些特征值。
         幸运的是,有一种方法可以解决这个问题:任何 矩阵都可以写成 
个张量积的线性组合,这些张量积是n 个 Pauli 矩阵和恒等式的,它们都是厄米矩阵和幺正矩阵,并且已知 V 和 Λ 。这就是 Runtime 的 Estimator 在内部所做的,它将任何 Operator 对象分解为 SparsePauliOp 。
 以下是可以使用的运算符:

损失函数
让我们考虑一个寻找系统基态的简单例子。我们的目标是最小化表示能量的可观测量的期望值(哈密顿量 H ^ )

我们使用估计器(estimator)来评估期望值,并将期望值传递给优化器使得它最小化,如果优化成功它将返回一组最佳参数,并且能得到解决,并计算观测期望
。
测量速度和测量正确的关系图

总之,通过用哈密顿量的概率分布来表征,基本态的概率,通过最小化能量,即哈密顿量来活得最好的结果。
错误缓解
        错误缓解是指允许用户通过在执行时对设备噪声进行建模来减少电路错误的技术。通常,这会与模型训练相关的量子预处理开销和使用生成的模型缓解原始结果中错误的经典后处理开销相关。
         Qiskit Runtime 原语的 resilience_level 选项指定针对错误构建的弹性量。更高的级别会产生更准确的结果,但由于量子采样开销,处理时间会更长。在将错误缓解应用于原始查询时,可以使用弹性级别来配置成本和准确性之间的权衡。
         在实施任何错误缓解技术时,我们都希望结果中的偏差相对于之前未缓解的偏差有所减少。在某些情况下,偏差甚至可能会消失。然而,这是有代价的。随着我们减少估计量的偏差,统计变异性将增加(即方差),我们可以通过在采样过程中进一步增加每个电路的采样次数来解决这个问题。这将引入超出减少偏差所需的开销,因此默认情况下不执行此操作。我们可以通过在 options.executions.shots 中调整每个电路的镜头数量来轻松选择此行为,如下例所示。

零噪声外推
(ZNE) 的工作原理是
首先放大准备所需量子态的电路中的噪声,获得几个不同噪声水平的测量值,并使用这些测量值推断无噪声结果。
 总体工作流程:
1.放大几个噪声因子的电路噪声
2.运行每个噪声放大电路
3.外推回零噪声极限

附录
1.零噪声外推(zne)的方法?
零噪声外推实验步骤:
-  放大噪声因子: - 在量子电路中,引入额外的噪声。这通常通过修改量子电路的某些部分来实现,例如引入故意增加的量子门错误(例如 X、Y、Z 操作),或者使用额外的测量错误。
- 通过不同的放大因子,可以得到多个在不同噪声水平下的电路。
 
-  运行每个噪声放大电路: - 在每个噪声级别下运行量子电路多次,通常会进行多次重复实验(shots)。每次运行的测量结果会受到噪声的影响,因此需要从多个实验中收集数据。
- 通常,噪声因子较大的电路结果会与真实的量子态有所偏差。
 
-  外推回零噪声极限: - 对不同噪声水平下的测量结果进行分析。因为噪声与量子电路的行为有一定的关系(通常是线性或接近线性的关系),可以通过对不同噪声级别的结果进行拟合。
- 一般采用线性外推,即将噪声放大因子与测量结果之间的关系进行回归,推断出零噪声下的理论值。
 
 
相关文章:
 
量子变分算法---损失函数
引子 关于损失函数,我们知道在强化学习中,会有一个函数,用来表示模型每一次行为的分数,通过最大化得分,建立一个正反馈机制,若模型为最优则加分最多,若决策不佳则加很少分或者扣分。而在神经网络…...
计算机的性能评估
目录 计算机的性能评估 确定性能指标 考虑通讯因素 考虑机器过热因素 综合评估模型 动态评估与调整 计算机的性能评估 在分布式计算机系统中,综合考虑各种因素来评估性能是一个复杂但重要的问题。以下是一种可能的方法来综合考虑评估分布式计算机性能,动态地考虑实际情…...
 
大数据之国产数据库_OceanBase数据库002_在centos7.9上_安装部署OceanBase001_踩坑指南_亲测可用
部署前最好看一下,部署前的要求, 主要是系统 以及系统内核版本,还有比如清理一下缓存等,按照做一做. 这些都是前置条件. 清一下缓存. 也就是说官网给的前置的条件,都要根据说明去执行一遍,如果不执行可能后面安装会报错. 然后用户最好也去创建一个用户. 注意前置...
【ETCD】【源码阅读】深入解析 EtcdServer.run 函数
EtcdServer.run 是 etcd 的核心运行逻辑之一,负责管理 Raft 状态机的应用、事件调度以及集群的核心操作。本文将逐步从源码层面分析 run 函数的逻辑,帮助读者理解其内部机制和设计思想。 函数签名与关键职责 func (s *EtcdServer) run() {... }关键职责…...
springboot/ssm校内订餐系统Java代码web项目美食外卖点餐配送源码
springboot/ssm校内订餐系统Java代码web项目美食外卖点餐配送源码 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库ÿ…...
 
floodfill算法
目录 什么是floodfill算法 题目一——733. 图像渲染 - 力扣(LeetCode) 题目二——200. 岛屿数量 - 力扣(LeetCode) 题目三——695. 岛屿的最大面积 - 力扣(LeetCode) 题目四—— 130. 被围绕的区域 …...
【JAVA】六亮增加贴
James Gosling(詹姆斯.高斯林) Java 语言源于 1991 年 4 月,Sun 公司 James Gosling博士 领导的绿色计划(Green Project) 开始启动,此计划最初的目标是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序…...
git提交时出现merge branch main of xxx
git提交时出现merge branch main of xxx 原因: 1、同事commit了一个修改A,push到remote 2、我把这个修改直接pull了下来(pull是fetchmerge的操作,自动合并到本地workspace) 3、同事因为后续的commit有冲突,…...
lstm 输入数据的形状是怎么样的,他有两种输入方式,通过参数 batch_first来设置 默认是False
lstm 输入数据的形状是怎么样的,他有两种输入方式,通过参数 batch_first来设置 默认是False 当batch_firstFalse时,LSTM输入的数据形状通常是一个三维张量,其维度顺序为[sequence_length, batch_size, input_size]。下面是对这些维…...
Apache Doris 数据类型
Apache Doris 已支持的数据类型列表如下: 数值类型 类型名存储空间(字节)描述BOOLEAN1布尔值,0 代表 false,1 代表 true。TINYINT1有符号整数,范围 [-128, 127]。SMALLINT2有符号整数,范围 …...
 
编译问题 fatal error: rpc/rpc.h: No such file or directory
在编译一些第三方软件的时候,会经常遇到一些文件识别不到的问题,这里整理下做个归总。 目前可能的原因有(排序分先后): 文件不存在;文件存在但路径识别不了;…… 这次以常见的编译lmbench测试…...
 
linux 安装composer
下载composer curl -sS https://getcomposer.org/installer | php下载后设置环境变量,直接通过命令composer -v mv composer.phar /usr/local/bin/composer查看版本看是否安装成功 composer -v...
 
数据库公共字段自动填充的三种实现方案
背景介绍 在实际项目开发中,我们经常需要处理一些公共字段的自动填充,比如: createTime (创建时间)updateTime (更新时间)createUser (创建人)updateUser (更新人) 这些字段在每个表中都存在,如果每次都手动设置会很麻烦。下面介绍三种常用的解决方案。 方案一:M…...
《MySQL 入门:数据库世界的第一扇门》
一、MySQL 简介 MySQL 是一种开源的关系型数据库管理系统,在数据库领域占据着重要地位。它以其高效查询、高安全性、低成本和扩展性著称,广泛应用于网站、企业级应用、数据分析等领域。 MySQL 具有诸多优点。首先,它成本低,作为…...
 
Qt之第三方库QCustomPlot使用(二)
Qt开发 系列文章 - qcustomplot(二) 目录 前言 一、Qt开源库 二、QCustomPlot 1.qcustomplot介绍 2.qcustomplot下载 3.qcustomplot移植 4.修改项目文件.pro 5.提升QWidget类 三、技巧讲解 1.拖动缩放功能 2.等待更新 总结 前言 Qt第三方…...
JAVA-类与继承
啥是继承? 在JAVA中, 继承就是子类继承父类的特征和行为,使得子类拥有父类的特征和行为,同时还可以拥有父类所没有的特征和行为。 举个例子通俗来讲,兔子和羊是食草动物类,狮子和豹子是食肉动物类&#x…...
SSH连接报错,Corrupted MAC on input 解决方法
问题描述 客户在windows CMD中SSH连接失败,报错: Corrupted MAC on input ssh_dispatch_run_fatal: Connection to x.x.x.x port 22: message authentication code incorrect值得注意的是,客户通过别的机器做SSH连接可以成功,使用putty, mo…...
【C++】8___继承
目录 一、基本语法 二、继承方式 三、对象模型 四、继承中的构造与析构的顺序 五、继承中同名成员处理 六、多继承语法 七、菱形继承 一、基本语法 好处:减少重复的代码 语法: class 子类 : 继承方式 父类 子类 也称为 派生类 父类…...
C# 中的异常处理:构建健壮和可靠的程序
C#中的异常处理(Exception Handling)。异常处理是编程中非常重要的一部分,它允许开发者优雅地处理程序运行时可能出现的错误或意外情况。通过有效的异常处理,可以使应用程序更加健壮、可靠,并提供更好的用户体验。以下…...
 
基于智能合约的医院凭证共享中心路径探析
一、引言 随着医疗行业的不断发展和信息技术的进步,基于智能合约的医疗凭证共享中心解决方案成为了可能。在当今数字化时代,医疗领域面临着诸多挑战,如医疗数据的分散存储、信息共享的不便捷以及凭证管理的复杂性等问题。而智能合约的出现&am…...
 
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
 
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
 
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
 
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
 
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
 
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
