使用量子玻尔兹曼机推进机器学习:新范式
一、说明
量子玻尔兹曼机(QBM)是量子物理学和机器学习的前沿融合。通过利用叠加和纠缠等量子特性的力量,QBM 可以同时探索多个解决方案,使其异常擅长解决复杂问题。它使用量子位(量子计算的构建模块)以传统计算机无法做到的方式处理信息。尽管仍处于早期阶段,QBM 在模拟量子系统、优化复杂场景和破译复杂数据模式等应用方面展现出了前景。尽管面临挑战,QBM 有潜力彻底改变计算并重塑我们处理复杂任务的方式。
二、玻尔兹曼机
玻尔兹曼机是用于基于能量的机器学习的模型。这里显示的网络本质上是一个玻尔兹曼机,由隐藏节点和可见节点组成。隐藏节点充当潜在变量,在后台编码信息,而可见节点则确定模型的输出。在经典玻尔兹曼机中,这些节点可以是二进制的,表示 +1 或 -1 状态,类似于自旋变量。网络可以用能量函数来表示,其中节点之间的连接性反映在能量函数的加权项中。这适用于节点之间的连接和单个节点本身。为了将其与热力学联系起来,我们采用玻尔兹曼分布的概念。这些分布使我们能够根据可见节点相应的能量来计算其某些配置的概率。该概率是使用配分函数确定的,配分函数是所有可能的能量配置的总和,并确保我们具有有效的概率。
玻尔兹曼机设置的目标是训练能量函数中的参数,以便生成的概率代表概率分布。这种分布由训练数据和/或标签决定,具体取决于所使用的学习工具。所讨论的损失函数是交叉熵损失函数,它涉及从我们的模型中取概率的对数,将其与训练数据中的概率相乘,然后对所有可能的实例进行平均。
文本解释说,节点现在由信号表示,特别是作用于可见量子位的泡利算子(I、X、Y、Z)。模型输出由可见量子位的配置决定,并受到隐藏保利斯的影响。哈密顿量不是能量函数,而是基于网络连接性定义的。测量构型的概率是通过对量子吉布斯态的投影测量来确定的,由哈密顿量和配分函数编码。对于经典计算机来说,评估归一化因子可能具有挑战性。吉布斯状态对概率分布进行编码,并使用参数化量子电路进行近似。
文中解释说,为了训练哈密顿量的参数,采样概率需要准确地表示可能的权重分布。定义损失函数有两种选择:经典损失函数,其中测量量子态,采样概率确定损失;以及量子损失函数,其中经典概率映射到一级量子态,目标是将完整的吉布斯态与该量子态相匹配。后一个选项允许更自由地匹配概率分布,但这取决于具体目标。本研究的重点是第一个损失函数,它足以匹配经典分布并避免不必要的自由度训练。
这篇文章讨论了 VarQITE,这是量子虚时间演化的概念。它解释了如何使用基于加权泡利算子的 n 量子位哈密顿量,并探索了 Wick 旋转薛定谔方程。它提到算子缺少“I”并且需要归一化因子来维持量子态的 L2 归一化。这篇文章还描述了如何使用输入状态和参数化模拟将其合并到参数化量子电路中。使用变分原理来近似参数的演化。
为了执行参数演化,麦克拉克伦的变分原理用于最小化威克旋转薛定谔方程左侧和右侧之间的差异。这是在变分子空间内完成的,其中状态由 ansatz 表示。求解所得线性方程可提供 ansatz 参数的时间导数,该导数可以使用任意 ODE 求解器进行传播。麦克劳林的变分原理允许使用恒定架构量子电路来模拟状态演化。线性方程的右侧代表系统的能量梯度,而左侧代表 Fubini 研究度量,它描述了 ansatz 的信息几何。
A 的评估在 ansatz 中的参数数量上是二次方昂贵的,并且在哈密顿量中的参数数量上是线性的。为了评估 A,使用了一种电路结构,其中涉及额外的量子位、受控操作和测量。A_ij 和 C_i 的项可以使用此电路结构以类似的形式重写,从而可以评估定义演化 ODE 的线性方程组所需的所有组件。
为了生成吉布斯状态,文本建议通过在子系统 B 上添加一个普通哈密顿量来扩展目标哈密顿量。初始状态以 n 个贝尔对给出,其中一部分在子系统 A 中,一部分在子系统 B 中。 out 子系统 B 给出子系统 A 的初始状态作为最大状态。然后使用 VarQITE 和哈密顿量 H_AB 来传播状态。再次追踪子系统 B 给出吉布斯状态的近似值。使用具有一个和两个量子位的简单示例在实际的量子计算机上测试了该方法。
文本讨论了哈密顿量和吉布斯状态,并解释了 ansatz 用于近似这些吉布斯状态。目标是确定每个时间步长的这些近似值与实际吉布斯态的接近程度,这是使用保真度作为量子态接近程度的度量来测量的。
文本描述了两个哈密顿量 H1 和 H2 的训练,左侧使用较小的哈密顿量,右侧使用两个量子位门。显示了 IBMQ Johannesburg 20 量子位机器上精确模拟和测试的保真度演变。经过 10 个时间步长后,小量子位的保真度非常好,双量子位门的保真度约为 59%。对于这项小规模研究来说,这被认为是一个有趣且令人满意的结果。
本文研究了吉布斯状态的准备过程,随后重点介绍了量子玻尔兹曼机的教育。它提到了经典损失函数的使用以及使用吉布斯状态的概率计算。然而,计算损失函数的梯度并不容易。公式本身并不那么重要,重要的是绿色的正确项可以轻松有效地计算。如果某些交换关系不充分,则左侧红色项可能难以计算。以前的工作通常使用上限(例如 Golden-Thompson),而不是损失函数的实际梯度进行训练。
现在,将 VarQITE 用于我们的 QBM 的一个很酷的事情是,我们实际上可以利用我们的电路参数及其演化取决于我们的哈密顿参数这一事实。反过来,这使我们能够以最终的差异化来评估这些梯度。我们可以利用链式法则。
这篇文章讨论了操纵量子态时梯度的计算。它指出,计算与哈密顿参数相关的电路参数的梯度很简单,但找到与吉布斯状态相关的梯度则更加困难,因为它需要求解线性方程组。此项的时间导数可以通过吉布斯状态的准备来帮助扩展电路参数的梯度。这篇文章简要提到了颜色的使用,但没有提供额外的信息。
该算法首先初始化哈密顿量和初始参数。然后,它使用 VarQITE 准备吉布斯状态并获取自动微分项。插入项并计算相对于吉布斯状态的梯度。这允许评估损失函数梯度,用于更新哈密顿参数。重复这个过程直到满足终止标准以学习一个好的模型。
这篇文章描述了一个旨在获取贝尔状态采样概率知识的训练实例。它强调使用具有对角哈密顿量和有效 SE2 ansatz 的基本模型,该模型能够表示复杂的相。
我们来分析一下训练结果。我们将参数(alpha、beta、gamma)初始化在 -1 到 1 的范围内。使用 VarQITE,我们通过 10 个步骤准备吉布斯状态并计算损失函数的梯度。这通过优化例程指导我们的模型训练。右侧显示损失函数的级数以及训练分布和期望分布之间的 L1 距离。每个图都附有标准差条,由 10 次不同随机状态运行的平均结果生成。值得注意的是,随着标准偏差的减小,我们看到了持续的改进。左侧的条形图说明了一个实例:蓝色条形是目标(贝尔状态采样),紫色条形代表最不有效的训练,粉红色条形是最好的。值得注意的是,即使是经过最好训练的结果也已经非常准确。
总之,变分量子玻尔兹曼机使我们能够有效地探索哈密顿量构造的数据结构,从而形成更加专注的状态学习器。利用自动微分,量子玻尔兹曼机训练变得容易进行,这得益于 VarQITE 用于吉布斯状态准备的固有用法。值得注意的是,由于其一致的电路深度和架构,该技术与近期的量子计算机非常吻合。
三、结论
总之,量子玻尔兹曼机代表了量子物理和机器学习十字路口的一个令人着迷且有前途的前沿领域。它对量子特性的利用引入了计算范式的转变,提供了彻底改变问题解决和数据分析的潜力。通过利用叠加和纠缠,QBM 并行处理信息的能力可能会在优化、模式识别和量子系统模拟等领域带来突破。尽管面临着新兴技术的典型挑战,包括纠错和降噪,但 QBM 的发展有可能重新定义计算的边界,为科学、技术和人工智能的新可能性打开大门。随着研究人员和工程师不断提升其能力,量子玻尔兹曼机最终可能会重新定义我们对计算的理解,并推动我们进入量子增强智能的新时代。
相关文章:

使用量子玻尔兹曼机推进机器学习:新范式
一、说明 量子玻尔兹曼机(QBM)是量子物理学和机器学习的前沿融合。通过利用叠加和纠缠等量子特性的力量,QBM 可以同时探索多个解决方案,使其异常擅长解决复杂问题。它使用量子位(量子计算的构建模块)以传统…...

优化|优化求解器自动调参
原文信息:MindOpt Tuner: Boost the Performance of Numerical Software by Automatic Parameter Tuning 作者:王孟昌 (达摩院决策智能实验室MindOpt团队成员) 一个算法开发者,可能会幻想进入这样的境界:算…...

vite vue3配置eslint和prettier以及sass
准备 教程 安装eslint 官网 vue-eslint ts-eslint 安装eslint yarn add eslint -D生成配置文件 npx eslint --init安装其他插件 yarn add -D eslint-plugin-import eslint-plugin-vue eslint-plugin-node eslint-plugin-prettier eslint-config-prettier eslint-plugin…...

C语言第入门——第十六课
目录 一、分治策略与递归 二、递归 1.求解n的阶乘 2.输入整数、倒序输出 3.输入整数、正序输出 4.计算第n位Fibonacci数列 编辑5.无序整数数组打印 6.找到对应数组下标 一、分治策略与递归 在我们遇到大问题的时候,我们的正确做法是将它分解成小问题&a…...
IntelliJ IDEA 快捷键 Windows 版本
前言:常用快捷键 IntelliJ IDEA编辑器大受欢迎的原因之一是它的智能提示和丰富的快捷键,在日常开发中熟练的使用快捷键会大大提升开发的效率,本篇文章就笔者日常开发中的总结,把常用的、好用的快捷键做一个列表,方便…...
重生之我必去大厂java开发
JavaDreamer 重生之我必去大厂java开发。主线任务进入大厂java开发。 author :developer_zxh GitHub | Gitee 本项目记录了本人从中国科学院大学硕士研究生开始,如何进入大工 java 开发岗位的学习记录(目前在校未求职,加入后此状…...

2023年中职“网络安全“—Web 渗透测试②
2023年中职“网络安全“—Web 渗透测试② Web 渗透测试任务环境说明:1.访问http://靶机IP/web1/,获取flag值,Flag格式为flag{xxx};2.访问http://靶机IP/web2/,获取flag值,Flag格式为flag{xxx};3.访问http://靶机IP/web…...

【整顿C盘】pycharm、chrome等软件,缓存移动
C盘爆了,特来找一下巨大的软件缓存,特此记录,跟随的各大教程,和自己的体会 一、爆炸家族JetBrains 这个适用于pycharm、idea、webstorm等等,只要是JetBrains家的,2020版本以上,都是一样的方法 p…...
C# using语句使用介绍
在C#中,using语句有两种主要用途:一是引入命名空间,二是提供一种简便的方式来处理资源的清理(主要用于实现了 IDisposable 接口的对象)。 引入命名空间:using 语句用于引入命名空间,从而可以在代…...
leetcode (力扣) 201. 数字范围按位与 (位运算)
文章目录 题目描述思路分析完整代码 题目描述 给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。 示例 1: 输入:left 5, right 7 输出…...

Flutter笔记: 在Flutter应用中使用SQLite数据库
Flutter笔记 在Flutter应用中使用SQLite数据库(基于sqflite) 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/q…...

OpenAI GPT5计划泄露
OpenAI的首席执行官萨姆奥特曼在最近接受《金融时报》的专访时,分享了OpenAI未来发展的一些新动向。此外,他还透露了关于即将到来的GPT-5模型以及公司对AGI的长期目标的一些细节。 奥特曼指出: 1.OpenAI正在开发GPT-5,一种更先进的…...

【面试经典150 | 数学】Pow(x, n)
文章目录 写在前面Tag题目来源题目解读解题思路方法一:快速幂-递归方法二:快速幂-迭代 其他语言python3 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主…...
封装比较好的登录页面
封装比较好的登录页面 只在setup()函数中写流程,将逻辑代码抽离出来 <template><div class"wrapper"><img class"wrapper__img" srchttp://www.dell-lee.com/imgs/vue3/user.png /><div class"wrapper__input"&…...
如何使用Flask request对象处理请求
在 Flask 中,request 对象是处理 HTTP 请求的重要工具之一。它提供了许多属性和方法,可以帮助我们获取请求的相关信息和数据。本文将向你介绍 request 对象的常用方法以及如何在 Flask 应用程序中使用它。 1. 获取请求方法 首先,让我们看一…...

快速搜索多个word、excel等文件中内容
如何快速搜索多个word、excel等文件中内容 操作方法 以win11系统为介绍对象。 首先我们打开“我的电脑”-->“文件夹选项”-->“搜索”标签页,在“搜索内容”下方选择:"始终搜索文件名和内容(此过程可能需要几分钟)"。然后…...

Minio安装
环境 centos8,关闭防火墙 minio-20231101183725版本 参考官网:部署 MinIO:单节点单硬盘 — 适用于 Linux 的 MinIO 对象存储 单例 下载rpm,用中国镜像 wget https://dl.minio.org.cn/server/minio/release/linux-amd64/arch…...

Spring初识
未来的几周时间,大概率我会更新一下Spring家族的一些简单知识。而什么是Spring家族,好多同学还不是很清楚,我先来简单介绍一下吧: 所谓Spring家族,它其实就是一个框架,是基于Servlet再次进行封装的内容。为…...

2023全新付费进群系统源码 带定位完整版 附教程
这源码是我付费花钱买的分享给大家,功能完整。 搭建教程 Nginx1.2 PHP5.6-7.2均可 最好是7.2 第一步上传文件程序到网站根目录解压 第二步导入数据库(58soho.cn.sql) 第三步修改/config/database.php里面的数据库地址 第四步修改/conf…...
C# LINQ使用介绍
LINQ(Language-Integrated Query)是C#语言的一个强大特性,它允许开发者用声明性的方式查询和操作数据。LINQ提供了一致的查询体验,无论是操作内存中的对象(如数组或集合),还是操作外部数据源&am…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...