量子计算金融建模-一-
量子计算金融建模(一)
原文:
zh.annas-archive.org/md5/https://annas-archive.org/md5/ef973b945f5447d43944f207d023e727
译者:飞龙
前言
欢迎来到通过量子计算视角探索金融建模的迷人世界。本书旨在提供对量子计算在金融领域应用这一未开辟领域的启示性探索。我们的旅程从全面理解数字技术的局限性开始,并探讨量子计算如何帮助突破这些边界。
在本书的篇章中,我们深入探讨了量子机器学习(QML)的细微差别,以及如何利用其独特特性来彻底改变金融建模的各个方面。我们将探索衍生品定价、投资组合管理和信用风险分析,揭示 QML 算法在这些领域的变革潜力。
然而,与任何技术实现一样,单单理解量子技术并不足以确保一帆风顺。因此,本书还提供了关于金融科技公司和银行等机构如何在项目实施中导航的指导,帮助他们最大限度地降低风险,确保顺利执行。
本书还阐明了经典方法和高性能硬件在实现短期量子优势中的作用,并进一步探讨了基于不同供应商策略的噪声中等规模硬件的潜在发展,强调其长期影响。
我们根据多年的量子技术和金融建模研究经验整理了这本材料。您在这里获得的洞见,来自于对行业专家进行的广泛访谈,以及对量子金融领域的深入研究。
根据最近的报告,量子计算有望彻底改变金融行业。随着越来越多的机构采用这项技术,且金融模型的复杂性不断增加,理解并成功实施量子计算策略将变得不再是选择,而是必然的需求。本书旨在引导您顺利度过这一过渡,为金融建模中的量子飞跃做好准备。
本书适合人群
本书面向金融从业人员、量化分析师或开发人员,旨在帮助他们将量子计算的力量带入组织中。这是一本为金融专业人士编写的必备资源,旨在帮助他们利用量子计算机解决现实世界中的金融问题。对 Python、微积分、线性代数和量子计算的基本理解是前提条件。
本书涵盖的内容
第一章,量子计算范式,帮助读者理解数字技术的挑战与局限,并阐明量子计算如何帮助克服这些难题。
第二章,量子机器学习和优化算法,考虑了量子机器学习如何利用量子比特和量子操作来改善专用量子系统的计算速度和数据存储。这是通过程序中的算法实现的。本章解释了量子机器学习算法在理论和实际生活中的工作原理。
第三章,量子金融格局,帮助读者理解量子金融的格局,以及量子计算原理可以应用于哪些类型的金融问题。
第四章,衍生品估值,强调了衍生品的估值通常非常复杂,只能通过数值方法进行——这需要相应的高计算努力。本章探讨了 QML 算法在衍生品估值中的作用。
第五章,投资组合优化,将投资组合管理视为管理一组金融证券,并做出持续的决策以实现投资目标。投资组合管理还包括多个步骤,如管理成本和风险、资产配置、市场研究和证券选择。本章探讨了 QML 算法在投资组合分配中的作用。
第六章,信用风险分析,概述了信用风险与客户未能履行合同义务(如抵押贷款、信用卡债务和其他类型的贷款)之间的关系。最小化违约风险是金融机构的主要关注点。机器学习模型帮助这些公司提高信用风险分析的准确性,提供一种科学方法,提前识别潜在的债务人。了解 QML 算法如何使用真实世界数据帮助解决这个问题。
第七章,量子云中的实现,讨论了如何在生产环境中实现量子机器学习和优化架构,或者作为当前系统的回测,这是获取知识并开始使用这一技术的关键部分。
第八章,模拟器和高性能计算机在 NISQ 时代的作用,强调了经典方法,特别是高性能硬件,在实现短期量子优势中的关键作用。在这一章中,我们将探讨一些最相关的方法,以全面描绘量子-经典的全景图。
第九章,NISQ 量子硬件路线图,展示了噪声中等规模量子(NISQ)硬件如何根据不同提供商的不同方式演进。不同的方法,从容错逻辑量子比特到电路编织,都可能是实现容错设备的早期步骤之一。在这一章中,我们概述了这些方法的关键方面及其长期潜力。
第十章,商业实现,强调了了解量子技术并不保证公司能够以最低的风险成功实现量子计算。在这一章中,我们将提供有帮助的信息,帮助金融科技公司和银行在实施此类项目时避免中途受阻。
最大限度地利用本书
本书中涵盖的软件/硬件 | 操作系统 要求 |
---|---|
Python | Windows、macOS 或 Linux |
Jupyter notebook | Windows、macOS 或 Linux |
Dwave Leap | Windows、macOS 或 Linux |
AWS Braket | Windows、macOS 或 Linux |
Azure | Windows、macOS 或 Linux |
如果您使用的是本书的数字版本,我们建议您自己输入代码,或者访问本书的 GitHub 仓库中的代码(下一节提供了链接)。这样做将帮助您避免与代码复制和粘贴相关的潜在错误。
下载示例代码文件
您可以从 GitHub 上下载本书的示例代码文件,链接为github.com/PacktPublishing/Financial-Modeling-using-Quantum-Computing
。如果代码有更新,它将会在 GitHub 仓库中进行更新。
我们还提供了其他代码包,来自我们丰富的书籍和视频目录,您可以在github.com/PacktPublishing/
查看。
下载彩色图片
我们还提供了一个 PDF 文件,其中包含本书中使用的截图和图表的彩色图片。您可以在这里下载:packt.link/1xxSu
。
使用的约定
本书中使用了一些文本约定。
文本中的代码
:表示文本中的代码词汇、数据库表名、文件夹名称、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 用户名。以下是一个例子:“将下载的WebStorm-10*.dmg
磁盘镜像文件挂载为系统中的另一个磁盘。”
代码块按照如下格式设置:
import numpy as np
from scipy.stats import norm
t = 1.0 # year
K = 105 # Strike price
r = 0.05 # Riskless short rate
sigma = 0.25 # Volatility (stdev)
S0 = 100 # Present price
当我们希望您注意到代码块中的某个特定部分时,相关的行或项目会以粗体显示:
[default]
exten => s,1,Dial(Zap/1|30)
exten => s,2,Voicemail(u100)
exten => s,102,Voicemail(b100)
exten => i,1,Voicemail(s0)
任何命令行输入或输出都按照如下方式书写:
$ mkdir css
$ cd css
粗体:表示新术语、重要词汇或您在屏幕上看到的词汇。例如,菜单或对话框中的词语通常会以粗体显示。以下是一个例子:“从管理面板中选择系统信息。”
提示或重要事项
如下所示。
与我们联系
我们始终欢迎读者的反馈。
一般反馈:如果您对本书的任何方面有疑问,请通过电子邮件联系我们:customercare@packtpub.com,并在邮件主题中注明书名。
勘误:尽管我们已尽最大努力确保内容的准确性,但错误仍有可能发生。如果您发现本书中的错误,我们将不胜感激,如果您能将其报告给我们。请访问 www.packtpub.com/support/errata 并填写表单。
盗版:如果您在互联网上遇到任何我们作品的非法复制版本,请提供相关位置地址或网站名称,我们将不胜感激。请通过电子邮件联系我们:copyright@packtpub.com,并附上相关材料的链接。
如果您有兴趣成为作者:如果您对某个主题有专业知识,并且有兴趣写作或参与写书,请访问 authors.packtpub.com。
分享您的想法
在您阅读完《使用量子计算的财务建模》后,我们非常希望听到您的反馈!扫描下面的二维码,直接进入亚马逊的书籍评论页面,分享您的看法。
您的评论对我们和技术社区都非常重要,它将帮助我们确保提供卓越的优质内容。
下载本书的免费 PDF 副本
感谢您购买本书!
您喜欢随时随地阅读,但无法随身携带纸质书籍吗?您的电子书购买无法与您选择的设备兼容吗?
不用担心,现在每本 Packt 书籍都会免费赠送一份没有 DRM 保护的 PDF 版本。
在任何地方、任何设备上阅读。可以直接搜索、复制并粘贴您最喜欢的技术书籍中的代码到您的应用程序中。
福利不仅仅于此,您还可以获得独家的折扣、时事通讯,并每天通过电子邮件收到大量精彩的免费内容。
按照这些简单的步骤即可获得福利:
- 扫描二维码或访问以下链接
https://packt.link/free-ebook/9781804618424
-
提交您的购买凭证
-
就这样!我们会直接通过电子邮件将您的免费 PDF 和其他福利发送给您。
第一部分:量子计算在金融中的基本应用
本部分讨论了数字技术的复杂性、面临的挑战以及量子计算在克服这些局限性中的作用。特别强调了量子机器学习,这是一种利用量子比特和量子操作来提高计算速度和数据存储能力的技术。读者将获得量子机器学习算法的理论和实践理解。章节还介绍了量子金融,揭示了其潜力,并阐明了可以使用量子计算原理解决的金融问题类型。
本部分包含以下章节:
-
第一章,量子计算范式
-
第二章,量子机器学习算法
-
第三章,量子金融格局
第一章:量子计算范式
量子计算机在不久的将来展示了对大规模行业带来革命性变革的潜力。量子解决方案(硬件和软件)在其巅峰时期,有可能通过优化计算将人类送上冥王星。根据 Gartner 报告,到 2023 年,20%的组织将为量子计算项目进行预算(CIO 的量子计算指南, tinyurl.com/yrk4rp2u
)。该技术承诺通过模拟实现更高的准确性,并提供真实世界的体验。本书深入探讨了量子解决方案在解决现实世界金融问题中的潜在应用。
在本章中,我们将讨论目前处于研究阶段的各种计算范式。还将呈现量子计算的历史。接下来,我们将介绍经典计算机面临的限制,以及这些挑战如何通过量子计算机得以克服。之后,量子计算在塑造下一代商业中的作用将得到定义。
本章后续将介绍量子计算的基础知识。驱动量子计算机的硬件类型将在接下来的章节中描述。我们还将探讨这项技术的潜在商业应用,以及组织如何根据其商业战略来充分利用这些潜力。
本章将涵盖以下主题:
-
量子技术及其相关范式的发展
-
基本量子力学原理及其应用
-
量子计算的商业应用
量子技术及其相关范式的发展
计算范式可以定义为多年来取得的重要里程碑。说计算机使人类的生活变得更容易,简直是轻描淡写。日常生活中,我们需要能够分析、模拟和优化复杂问题解决方案的机器。尽管计算机的形态和大小随着时间的推移发生了变化,但它们仍然基于艾伦·图灵和约翰·冯·诺依曼提出的学说进行运作。
在本节中,我们将研究量子技术多年来的发展。我们还将研究该技术在面对某些商业挑战时的局限性。
计算范式的演变
图灵向我们展示了计算机能够解决的问题类型,冯·诺依曼构建了可编程计算机,迈克尔·摩尔在半导体领域的开创性工作使计算机变得更加强大。图 1.1展示了计算范式多年来的发展,以及它们对人类历史增长的影响:
1821 | 机械计算器 | 使人类能够从机械设备过渡到电子设备,在计算精度上有了更好的提升。 |
---|---|---|
1890 | 穿孔卡片系统 | 通过协助美国人口普查,展示了大规模计算的首次应用案例。 |
1936 | 图灵机 | 为解决大型计算问题奠定了理论框架。 |
1941 | 数字电子计算机 | 首次实现计算机能够在主内存中存储信息。 |
1945 | 电子数值积分与计算机 (ENIAC) | 第一台通过重编程执行大规模数值问题的数字计算机。 |
1958 | 集成电路 (IC) | 帮助企业级计算向个人计算转型。 |
1976 | Cray-1 超级计算机 | 提供了 240 百万次计算,支持大规模科学应用和仿真。 |
1997 | 并行计算 | 使用多核 CPU 在有限时间内解决复杂问题,帮助谷歌形成更好的搜索引擎。 |
2006 | 云计算 | 使用户能够从远程位置访问大型计算资源。 |
2016 | 可重编程量子计算机 | 提供了一个更好的平台,用于解决与经典计算机相比更复杂的仿真或优化问题。 |
2017 | 分子信息学 | 利用分子特性进行快速、可扩展的信息存储和处理。 |
图 1.1 – 计算范式的演变
计算技术的发展使人类从农业社会演变为工业社会。计算能力的进步将社会从以物易物推进到建立电子商务平台。图 1.1 给出了计算技术如何通过从单纯执行计算的设备到如今的多功能设备,推动社会发展的总结。在下一部分,我们将评估大型企业面临的挑战以及当前数字技术在应对这些挑战时的局限性。
企业挑战与技术解决方案
当前的数字技术在实时提供解决方案和洞察方面既有优势也有局限性。众多变量的出现及其日益复杂化可能会影响现实世界中的决策。拥有一种既可靠又精准、同时又快速的技术是至关重要的。对于一种可靠技术堆栈的需求促使全球科学家研究超出人类能力范围的技术。大型企业目前面临的挑战如下:
-
更快的任务完成:在当前时代,制造公司致力于实现超大规模生产能力和效率,因此需要建立更快、更可靠的系统。例如,根据人工智能大脑的一项令人兴奋的研究(如何通过量子退火和遗传算法为电动汽车充电站选址,Quantum Zeitgeist,
tinyurl.com/bdep5eze
),在旧金山湾区设置充电站的 50 英里半径内,大约有 8,543,811,434,435,330 种组合是可能的。那么,当可能的组合数如此庞大时,如何优化这种分布呢?量子计算机在不到 3 秒的时间内理论上解决了这个问题。 -
内容发现:随着社交媒体网站的兴起,能够分析的内容种类繁多。这些内容以文本和图像的形式存在,大小各异。一个组织需要一台具有超强计算能力的计算机来探索这些内容。这种特殊的计算能力通过并行计算和本地优化机器实现。然而,在这一领域还有许多工作要做,以便从潜在的数据中挖掘出实时的商业洞察。量子自然语言处理(QNLP)是一种有前景的技术,可以实时解决问题。
-
降低管理成本:优化成本始终是一个不错的策略。大规模工厂的自动化为业主提供了一个正确方向的解决方案。大规模自动化伴随着一系列自身的问题,但精确度和实时决策帮助提高了准确性和可靠性。最近,宝马提出了一个挑战,竞争者必须专注于解决基于生产前车辆配置、生产中的材料变形、车辆传感器放置和用于自动化质量评估的机器学习等问题。基于获得的结果,宝马集团研究与新技术数字化汽车副总裁 Peter Lehnert 博士评论道:“我们宝马集团深信,未来的技术,如量子计算,具有使我们的产品更具吸引力和可持续性的潜力”(在宝马集团量子计算挑战赛中宣布获胜者,AWS 量子计算 博客,
aws.amazon.com/blogs/quantum-computing/winners-announced-in-the-bmw-group-quantum-computing-challenge/
)。 -
远程办公:2020 年在人类历史中发挥了至关重要的作用。由于新冠疫情的爆发,人们发现自己可以在世界任何地方工作。这促进了管理层和员工对远程办公的需求。由于有些情况需要更高的计算能力,远程办公可能并非在所有情况下都可行。然而,随着大多数技术转向在线并通过虚拟现实和增强现实技术以及更好的连接性提供类似办公室环境的实时工作体验,企业可以克服这一挑战。同时,这也降低了管理层的行政成本。它还有助于进一步降低存储成本,从而帮助公司降低单位成本。
为了更高效和更优化地执行业务任务,商业界开始寻求技术解决方案。当前状态下的数字计算帮助企业通过自动化和增强智能提高了效率。然而,现有的硬件技术尚未能够解决一些复杂任务,这些任务与大量数据和计算内存的限制有关。以下部分将突出数字计算能够解决的各种问题,以及需要超越当前计算范式的其他问题。
当前的商业挑战与数字技术的局限性
数字计算机由集成电路(ICs)提供动力,这项技术在 20 世纪达到了顶峰。根据摩尔定律,推动微芯片的晶体管数量每年将翻倍。2021 年,IBM 宣布其 2 纳米芯片技术能够容纳 500 亿个晶体管,这基本上使得一颗芯片能够装进指甲大小的空间。大量晶体管的存在使得经典计算机能够执行大量计算和复杂的程序,从而帮助更快地解决日常问题。
然而,由于内部泄漏和微型化效应,经典门电路(或门和与门)展示了量子效应。此外,数字计算机传统上无法解决 NP-难问题(图 1.2)。用外行话来说,NP-难问题是根据问题的复杂度和变量数量来衡量解决一个问题所需的时间。例如,前文所述的如何从 8,543,811,434,435,330 种充电站位置组合中选择最优路线的问题。尽管经典计算机解决上述问题可能需要数年时间,但理想情况下,量子计算机可以在 3 秒内解决该问题。
图 1.2 – 基于复杂度水平的 NP-难问题分类
为了更好地理解传统计算机的局限性,假设你必须在有限的预算下挑选 100 只便士股的投资组合,并且假设股票价格是离散的(例如,股市中的最小价格变动)。假设你必须在多项式时间内构建一个投资组合(p = 计算机可以在合理时间内解决的问题),并且假设需要 100 步(n = 输入数量)来获得一个优化的投资组合,换句话说,所需的时间是 n³。从理论上讲,数字计算机将在三小时内解决这个问题。这个问题很容易解决,专家也能轻松验证解决方案,因为我们处理的是同一类股票。因此,我们可以自信地说,p 类问题很容易验证和解决。现在,假设同样的问题发生变化(在有限的时间内优化属于不同风险类别的 100 只股票的投资组合),这将需要约 300 万亿年才能解决,因为尽管解决方案可以在多项式时间(n)内验证,但它是以指数时间(NP)获得的。这个问题被归类为 NP 问题。打个比方,想象一个数独或井字游戏问题:这是一个 NP 问题,尽管它的解决方案很难获得(需要指数时间),但可以在多项式时间内轻松验证。
继续前面的讨论,以下是被认为数字计算机难以解决的四种 NP 问题类型:
-
模拟:计算模拟是将自然世界或物理系统建模为虚拟场景,以便提前了解其结果和影响。例如,在 2008 年次贷危机之后,金融机构必须对其基础资产和交叉持股进行压力测试,以预测下一次金融崩溃可能发生的场景。据估计,对于一个简单的 20-30 家机构组成的网络,这些机构涉及股票、衍生品、固定收益证券,并彼此有风险暴露,评估金融崩溃的概率将需要 137 亿年时间,由数字计算机计算得出。这是估算的时间,用于运行一个本质上是确定性的模拟问题,暗示着在 p 时间内通过 n 步解决问题的复杂性,这种问题不能使用当前的数字技术解决,因此需要一个更先进的系统来提供更快的处理速度。
-
优化:优化是指改进现有算法的效率,以降低时间复杂度。假设你需要构建一个包含 1,000 只股票的投资组合,涉及 10 个行业。你的客户,一家国际对冲基金,必须根据市场条件生成多个情景,从而寻找一个有效前沿。这些情景需要实时更新,并根据为投资组合定义的风险容忍限额进行调整。传统计算机可以使用并行计算来解决这个难题,但这可能不是最具成本效益和时间效率的策略。这个问题凸显了实时解决该难题的高效计算机的需求。
-
模式识别:模式识别方法利用基础数据,通过机器学习算法发现隐藏的模式和趋势。然而,近年来 GPU 及相关技术的进步使程序员在理解和揭示给定数据中的隐藏模式方面取得了相当大的成功。然而,在金融欺诈领域,由于人类行为的复杂性,机器学习算法很难理解其中的模式。理论上,一台能够实时理解数据的计算机可以更成功地解码金融欺诈的模式。
-
密码学:在这个互联的世界中,为客户提供安全的在线交易通道是 21 世纪银行的首要任务。在全球范围内,银行使用基于线性因式分解的里维斯特、沙米尔和阿德尔曼(RSA)技术。最近计算能力的发展表明,这种加密技术可以通过量子计算机轻松破解。
总结来说,可以简单地说,在当前技术的局限性下,探索新的计算范式已经到了时机,这些新范式能够帮助解决商业界面临的问题,并推动行业创新与创造力。
基本量子力学原理及其应用
量子计算机使用原理和理论(如量子场论和群论)来描述量子力学现象。量子力学原理,如叠加、去相干和纠缠,已被应用于构建处理和传递信息的处理器,其速度呈指数级增长。以下部分展示了量子计算机的演变过程,并简要描述了量子力学原理。
量子计算技术在下一代企业中的新兴角色
长期以来,由于数字计算机在规模经济上的进步,抑制了其他计算范式的发展。摩尔定律(图 1**.3)预测了微处理器的指数增长和进步。然而,几十年来积累的大量数据使计算能力、存储和通信受到了限制。为了克服当前架构的局限性,我们必须克服有限内存、自编程计算机、大数分解和更快微处理器等挑战。
图 1.3 – 根据摩尔定律的晶体管数量增长
由于数字计算机的基本原理和假设存在当前的局限性,需要出现新的计算范式。为了应对与气候、过程自动化、工业机械化和自主系统等多个领域相关的问题,需要克服当前的挑战。量子计算、分子计算、自然启发的算法以及人机协同互动(《计算机特刊 2016 年 9 月研究“下一代计算范式”》,IEEE 计算机学会,tinyurl.com/4b5wjepk
)是当前为克服上述挑战而进行的创新和研究方向。图 1**.4描绘了量子计算范式从理论到实际应用的历程和影响:
年份 | 现象 | 影响 |
---|---|---|
1905 | 阿尔伯特·爱因斯坦发现了光电效应,并且光子被发现。 | 为发现原子粒子中的量子行为奠定了基础。 |
1924 至 1927 年 | 马克斯·玻恩创造了“量子力学”这一术语,海森堡、玻恩和乔丹发现了矩阵力学。 | 发现了量子力学原理,这些原理被用来生产量子处理器。 |
1935 | 埃尔温·薛定谔构思并写下了他的思想实验——薛定谔的猫。 | 发现了量子纠缠原理。 |
1976 | 罗曼·斯坦尼斯瓦夫·英加登提出了量子信息理论。 | 量子信息科学作为一门学科被制定,奠定了量子算法的基础。 |
1981 | 理查德·费曼提出量子计算机有潜力模拟物理现象。 | 量子力学的实际应用被用来开发工作量子计算机。 |
1994 | 发现了肖尔算法用于整数分解。 | 为量子密钥分发后的密码学奠定了基础。 |
1996 | 发现了格罗弗算法。 | 为以数据库形式存储信息铺平了道路。 |
2011 | D-Wave 提供了首个使用量子退火技术的量子计算解决方案。 | 开启了量子计算在商业用途上的可能性。 |
2019 | Google 宣称量子霸权。 | 展示了量子霸权的一个应用案例,有助于更好的加密。 |
2021 | IBM 揭晓了首个 127 量子比特的量子计算机,名为 Eagle。 | 加速了复杂的 NP 困难问题的处理。 |
图 1.4 – 从量子力学到量子计算的历程
如图所示(图 1.4),从发展历程的角度来看,量子技术正快速进展,解决诸如精准仿真、高效优化和正确模式识别等问题。一旦研究人员能够克服当前用户面临的相关问题,并实现量子技术来解决日常问题,便能看到量子技术在整个行业中的广泛应用将如何解决大规模问题。
下一节将介绍一些在构建和操作量子计算机中常用的量子力学术语和原理。
从量子力学到量子计算
解读涉及量子计算的量子力学原理对外行人来说是一项艰巨的任务。本节将用通俗易懂的语言描述每一个量子力学公设,并解释它是如何参与量子计算机制的。
公设 | 定义 | 用法 | 深入阅读 |
---|---|---|---|
量子比特(Qubits) | 量子比特是量子信息的基本单位,存储在一个二态设备中,以 0 和 1 的形式编码信息。 | 有助于加速复杂过程(如仿真和优化)中的信息处理。 | 什么是量子比特?(quantuminspire.com) |
量子态 | 量子态是原子粒子的位置和属性(变化与自旋)的值,这些值可以通过自然获得或通过创造物理环境(例如激光和热量)来诱导。 | 用于在受控环境中通过量子比特处理和转换信息。 | 叠加与纠缠(quantuminspire.com) |
量子叠加 | 量子叠加指的是量子叠加现象,告诉我们量子叠加可以被视为量子态的线性组合。 | 这一特性使得系统很难解密量子通信,从而提供了一种更安全的信息传输方式。 | 叠加与纠缠(quantuminspire.com) |
量子纠缠 | 量子纠缠指的是两个粒子处于相同量子态并且它们之间存在关联的现象。 | 通过越来越多的量子比特(qubits),使得系统能够以指数速度进行计算。 | 叠加与纠缠(quantuminspire.com) |
量子测量 | 一组数学算子,用于理解和测量可以从量子比特中恢复和处理的信息量。 | 有助于理解量子力学的复杂性。 | 量子测量将信息分为三部分 - Physics World. |
量子干涉 | 它指的是原子粒子能够像波粒一样表现的能力,从而导致信息或量子比特状态的坍缩,进而引发量子相干或去相干。 | 它衡量量子计算机准确计算和承载存储在其中的信息的能力。 | 什么是量子力学?量子计算研究所(uwaterloo.ca) |
无克隆定理 | “无克隆定理”是量子力学的一个结果,禁止创建任意未知量子状态的相同副本。 | 无克隆定理是量子密码学中的一个重要组成部分,因为它禁止窃听者创建传输的量子密码学密钥的副本。 | 无克隆定理 - Quantiki |
图 1.5 – 量子计算术语表
图 1.5中提到的假设使计算机科学家能够从经典计算机过渡到量子计算机。正如我们在后续章节中将看到的那样,量子干涉和无克隆定理等假设使量子技术走到前沿,并为实现更快、更高效、更准确的计算能力奠定了基础。接下来的部分将探讨推动量子计算范式创新的技术。
量子创新方法
在当前形式下,量子计算依赖于多种技术来扩展其影响力。量子计算机要完全实现其商业潜力还需要数年时间。然而,当它们与经典计算机以混合模式工作时,预计它们会比单独运行时产生更好的结果。让我们来看看推动它们运行的技术:
-
超导:这项技术利用了量子物理中的叠加特性。信息通过两股方向相反的带电电子电流在超导体中循环流动,然后在纠缠的过程中交换存储在量子比特中的信息。这项技术需要量子计算机在极低的温度下运行。
-
困陷离子:离子是带电的原子(如 Ca+或 Br+)。假设一段信息编码在这个带电的原子上。通过发射能量脉冲,原子从状态 0 被转移到状态 1。这个带电的原子将携带信息,并在激光的帮助下解码。这些离子被困在电场中。编码的信息通过光子单元进行解释,然后通过光纤传递。
-
光子学:这项技术利用光子在量子态中承载信息。通过当前的硅芯片,可以控制光子的行为,并将信息通过电路传输。由于与现有基础设施和芯片制造能力的兼容性,它有望取得巨大的成功。
-
量子点:量子点是由硅、镉等元素构成的小型半导体纳米晶体,其大小范围为 2 到 10 纳米。量子比特的物理实现涉及通过电荷量子比特在电容状态下交换信息。由于其有利的条件,光子学更少出现错误。
-
冷原子:冷原子使用与困束离子类似的方法,原子被冷却至低于 1 mK,然后用作信息通道,将信息反射回来。激光被编程以控制冷原子的量子行为,并利用它们来传输数据。
为了理解每项技术所取得的里程碑,我们将借助迪文琴佐标准。2000 年,David DiVincenzo 提出了一份量子计算机实验特性的愿望清单。自那时以来,迪文琴佐标准已成为物理学家和工程师构建量子计算机的主要指南(Alvaro Ballon,超导量子比特的量子计算,PennyLane,tinyurl.com/4pvpzj6a
)。这些标准如下:
-
良好表征且可扩展的量子比特:自然界中看到的许多量子系统并非量子比特;因此,我们必须开发一种方法使它们表现得像量子比特。此外,我们还需要整合多个这样的系统。
-
量子比特初始化:我们必须能够在可接受的误差范围内复制相同的状态。
-
延长的相干时间:量子比特在与周围环境长时间交互后会失去其量子特性。我们希望它们足够耐用,以便支持量子过程的进行。
-
通用门集:必须对量子比特执行任意操作。为此,我们需要单量子比特门和双量子比特门。
-
单个量子比特的量化:为了确定量子计算的结果,必须精确测量预定量子比特集的最终状态。
图 1.6 有助于根据迪文琴佐标准评估每种量子技术的前景和缺点:
超导 | 困束离子 | 光子学 | 量子 点 | 冷原子 | |
---|---|---|---|---|---|
良好表征且可扩展的量子比特 | 已实现 | 已实现 | 已实现 | 已实现 | 已实现 |
量子比特初始化 | 已实现 | 已实现 | 已实现 | 已实现 | 已实现 |
延长的相干时间 | 99.6% | 99.9% | 99.9% | 99% | 99% |
通用门集 | 10-50 ns | 1-50 us | 1 ns | 1-10 ns | 100 ns |
单个量子比特的量化 | 已实现 | 已实现 | 已实现 | 已实现 | 已实现 |
图 1.6 – 迪文琴佐标准
在各项参数上,超导和捕获离子等技术在克服量子技术挑战方面显示出最大的潜力。虽然像 IBM 和谷歌这样的超级巨头正押注于这类技术来开发它们的量子计算机,但包括 IQM 和 Rigetti 在内的新时代初创公司则在探索与当前基础设施更兼容的其他技术。
在接下来的章节中,我们将详细介绍与量子计算生态系统相关的应用和技术。
量子计算价值链
量子计算技术仍处于起步阶段。如果从技术角度类比,1975 年,大多数投资者都在投资硬件公司,如 IBM、惠普,后来是苹果,以确保人们能够从大型主机迁移到个人计算机。一旦从硬件中获得了价值,他们开始关注软件,公司如微软因此崭露头角。根据 BCG 发布的报告,80%的资金正流向硬件公司,如 IonQ、ColdQuanta 和 Pascal。需要克服的关键工程挑战包括可扩展性、稳定性和运营。
多家公司和初创公司正在投资量子计算。美国(20 亿美元)、中国(10 亿美元)、加拿大(10 亿美元)、英国(10 亿英镑)、德国(20 亿欧元)、法国(18 亿欧元)、俄罗斯(7.9 亿美元)和日本(2.7 亿美元)已承诺巨额资金以实现量子霸权。有人推测,包括量子传感器、量子通信和量子互联网在内的量子解决方案需要大量投资,以帮助各国实现量子霸权。麦肯锡估计量子计算初创公司数量为 200 家。此外,根据 PitchBook(市场数据分析公司)的数据,全球在量子技术领域的投资已从 2015 年的 9350 万美元增加到 2021 年的 10.2 亿美元。最近吸引了大量投资的一些知名初创公司包括 Arqit、Quantum eMotion、Quantinuum、Rigetti、D-Wave 和 IonQ。
图 1.7 显示了量子技术在不同领域的潜在应用,依据量子计算机解决的各种问题类型:
图 1.7 – 量子计算应用
以下技术正在帮助公司在量子领域为最终用户创造价值链:
-
量子计算:量子计算指的是利用量子力学原理开发软件和硬件技术。
-
量子密钥分发(QKD):QKD,或称量子加密,提供了一种安全的方式,供银行和其他机构交换加密密钥。它利用量子力学原理来保护通信通道。
-
量子软件和量子云:量子软件,或如 Qiskit 这样的编程语言,为终端用户提供了与系统硬件接口并执行复杂计算操作的媒介,包括仿真、优化和模式识别。
图 1.8 – 量子技术
-
后量子加密:国家投资数十亿美元的关键研究领域之一是当前加密软件可能会受到量子算法的威胁。它们需要能够进一步保障这些渠道安全的算法。
-
量子传感器和原子钟:这些术语指的是激光和困陷离子技术的发展,用于控制分子原子行为。这促使研究人员开发出使用量子传感器等下一代技术,在早期检测自然灾害(包括海啸和地震)的应用场景。
-
量子材料:量子材料指的是一类世界级的技术,用于捕捉和操控元素的量子特性,以便在工业中应用。
-
量子存储器和其他量子组件:这些设备通过光子以量子位(qubit)形式携带信息。它是复杂的技术,仍在开发中,预计能够克服当前限制所定义的存储障碍。
如图 1.8所示,量子计算生态系统广阔。它涵盖了多个方面,如量子材料、存储器和传感器,帮助用户更有效地收集和分析数据。
在接下来的章节中,我们将探讨推动量子技术革命的公司。
量子计算的商业应用
尽管量子技术仍处于起步阶段,尚未实现商业应用,但它具有巨大的潜力。在不久的将来,量子计算机将能够与经典计算机结合,加速解决复杂问题的进程。在本节中,您将了解这种令人惊叹的技术的商业应用。
量子计算领域在整个价值链中的全球参与者
根据麦肯锡报告(量子计算的资金持续强劲,但人才缺口引发担忧,tinyurl.com/5d826t55
),量子技术已吸引了来自各国政府和资助机构的 7 亿美元投资。这项技术所展现的潜力促使业内资助各大高校和实验室的持续研究。D-Wave 是首家在 1999 年通过量子退火技术开创量子计算解决方案的公司。此后,IBM 等公司建立了强大的研究人员和终端用户社区,推动量子计算机的使用。以下是一些在量子技术领域做出开创性工作的公司:
-
IonQ(纳斯达克:IONQ):IonQ 由 Christopher Monroe 和 Jungsang Kim 于 2015 年创立,至今已获得 4.32 亿美元的融资。IonQ 基于离子陷阱技术构建量子计算机,并将其作为平台即服务(PaaS)提供给服务提供商。
-
Rigetti(纳斯达克:RGTI):Rigetti Computing 由 Chad Rigetti 于 2013 年创立。目前已获得 5 亿美元的融资。Rigetti 开发了一台基于超导技术的量子计算机。
-
Quantum Computing Inc.:Quantum Computing Inc.专注于为最终用户提供软件和硬件解决方案。它还专注于为公司开发商业应用案例,从而展示量子计算在不久的未来的潜力。
-
Archer(ASX:AXE):Archer 是一家澳大利亚公司,正在开展室温量子计算机的研发。由 Mohammad Choucair 博士创立,旨在生产能够广泛应用的量子计算机。
-
D-Wave(即将通过 SPAC 合并推出):D-Wave 因推出全球首台商用量子计算机而闻名。它采用量子退火技术为最终用户开发量子解决方案。D-Wave 提供一项有限但强大的技术,其量子计算机拥有 5000 个量子比特,具有广泛的潜在商业应用。
-
Quantinuum:Quantinuum 的成立源于剑桥量子与霍尼韦尔量子解决方案的合并。剑桥量子的主要焦点是开发量子计算机的操作系统和软件,而霍尼韦尔则主要专注于利用离子陷阱技术开发量子计算机。
量子计算领域的全球玩家包括 IBM、微软和谷歌等巨头,以及 Rigetti、IQM 和 Quantinuum 等资金充足的初创公司。这些公司已经在不同类型的技术(硬件和软件)上进行了投资,以推动这一技术领域的研究。
在接下来的部分中,我们将评估不同科技巨头为实现全面量子霸权所提供的路线图。
构建量子计算战略实施路线图
构建量子优势以解决实时业务问题是许多量子领域公司最终的目标。这项技术被认为有助于公司解决大规模问题。最近,宝马公司委托了一项价值百万美元的挑战,旨在通过AWS Amazon Braket平台找到解决其库存调度问题的方法。在图 1.9中,你可以绘制出可能导致量子霸权时代的路径,并看到我们如何利用量子计算解决更多问题:
图 1.9 – 量子计算时代
广义上,量子时代可以分为三个部分:
-
噪声中等规模量子(NISQ):这一时代的特点是拥有较少数量的优质量子比特(<50 到 100)来解决现实问题。噪声一词指的是量子比特由于干扰而失去其量子态的倾向。预计目前的技术设置将在 2030 年之前摆脱 NISQ 时代。
-
广泛的量子优势:IonQ 将广泛的量子优势定义为量子计算机进入开发者和终端用户的时代,能够解决现实生活中的问题。根据行业从业者达成的共识,72 量子比特的系统将开始帮助行业解决商业级问题。因此,未来将有可能通过展示高级应用编程和人机界面(HMI)功能来访问该平台。
-
全规模容错:这一时代指的是已经实现 99.5%两量子比特门保真度的大规模量子计算机。到 2040 年,预计现有的努力将有助于解决退相干(由于大量量子比特而导致的信息泄漏)问题,并使组织能够充分利用这一令人惊叹的技术。
量子技术在近期将以混合计算的形式提供给终端用户。为了充分利用现有量子计算机的潜力,像 D-Wave 和 Rigetti 这样的公司已经开始通过微处理器提供经典计算与量子计算之间的接口。经典组件负责与终端用户的通信,而量子微处理器则用于解决 NP-hard 问题。量子技术通过量子退火器和通用量子计算机,利用超导和离子阱等技术,将能够在不久的将来充分发挥其潜力。
在下一部分,我们将看看建设量子技术及其生态系统需要什么样的人才。
为量子跃迁建设人才队伍
量子技术需要多种类型的人才来发挥其真正的潜力。整个技术栈可以分为硬件、软件和相关技术。目前,该技术需要科学研究和技术实施专家。根据福布斯编制的一份调查报告,毕业生必须拥有 STEM(科学、技术、工程和数学)学科的本科学位,才能理解量子计算机的基本工作原理。具备研究导向的思维方式对于进一步研究量子计算机的发展至关重要。为了实现与计算机硬件发展相关的科学突破,研究人员必须深入理解退火、超导和离子阱等底层技术。这些技术处于能够通过知识丰富的劳动力实现科学突破的前沿。
除了构建量子计算机,操作量子计算机同样具有挑战性。当前软件开发的重点是编写能够与量子计算机内存核心接口的低级程序。IBM 和谷歌等公司已经开发了基于 Python 的软件开发工具包(SDKs),如 Qiskit 和 Cirq。IBM 暑期学校等项目是开发人员熟悉与量子内存处理器接口的方法论的良好起点。由于当前量子领域技术的限制,许多重点放在开发混合计算机上。软件开发人员需要了解云计算才能操作量子计算机。大多数量子计算机位于大房间内,温度低于冰点,并且可以通过云计算远程访问。为量子计算机编写的算法也被用来提升现有机器学习算法的性能。
量子解决方案还包括辅助技术,这使得量子技术成为一个令人兴奋的领域。量子传感器、退火机和互联网是量子力学的潜在应用。此外,量子算法在解决与金融、供应链、医疗健康和密码学相关的问题方面也显示出了潜力。图 1.8总结了与进入量子技术领域相关的能力和资格的讨论:
研究领域 | 应用 | 潜力 资格 | |
---|---|---|---|
硬件 | 量子力学、理论物理、应用物理 | 超导离子阱、量子点 | 量子物理博士、硕士 |
软件 | 量子信息科学 | 量子算法、量子机器学习 | 软件开发、计算机科学硕士 |
量子商业技术 | 优化、仿真与密码学 | 金融、供应链、医疗健康 | 商业倡导者、领域专家 |
图 1.10 – 资格列表
从图 1.10中可以观察到,潜在的量子技术候选人需要具备一定的 STEM 背景。研究能力以及学习、忘记、再学习和应用新概念的能力,是在这个动态领域中生存的必备条件。由于这是一个以研究为导向的领域,企业更倾向于招收相关领域的博士候选人。然而,能够为混合计算机编写代码以更快、更准确地解决问题的软件工程师需求也非常大。
总结
计算范式,如计算器、模拟计算机和数字计算机,随着时间的推移不断发展,帮助人类在技术发展上取得迅速进展,达到新的知识前沿。Jon von Neumann、Alan Turing 和 Graham Moore 的贡献在实现更强大计算能力方面发挥了巨大作用。
当前的商业环境催生了基于数据做出更快速、更精准决策的需求。因此,需要更快速、优化的计算机来处理海量数据。
数字计算机无法解决 NP 难问题,包括模拟、优化和模式匹配问题,从而强调了需要新型计算技术来进行更快速、更精准的计算。
新兴的计算范式,如量子计算和分子计算,承诺能够更有效、更高效地解决大规模问题,如投资组合优化、蛋白质折叠和供应链路线优化。
量子计算基于量子力学的基本原理,如量子比特(qubits)、量子态、叠加、干涉、纠缠和量子测量。
目前的量子硬件和微处理器基于超导、捕获离子、退火、冷原子和模拟器等技术。
量子计算的价值链基于通过量子传感器、量子通信和量子互联网等量子解决方案和技术所实现的创新。
在量子计算领域的全球参与者包括 IBM、微软、谷歌等巨头,以及资金充足的初创公司,如 Rigetti、IQM 和 Quantinuum。
将商业战略与量子计算对接,涉及基于量子计算的不同阶段(如 NISQ、广泛的量子优势和全规模容错)的战略路线图开发。
未来的量子工作力量需要在硬件、软件及相关量子技术的发展方面做好三方面的工作。
第二章:量子机器学习算法及其生态系统
在最近几十年,许多量子计算科学家倾向于研究和生成量子算法及其实际实现(Cerezo 等,2021;Montanaro,2016)。正如前一章所讨论的,量子计算机与经典计算机的主要区别在于它们采用的计算形式。量子计算机能够解决经典系统无法处理的问题(Arute 等,2019)。在量子计算机中,量子比特代替经典比特,成为信息的基本单元。量子算法的实现主要依赖于这些量子比特与经典比特相比的物理特性。然而,量子计算机的物理实现尚未达到经典计算机所取得的成熟水平,后者可以在有限的空间内放置数百万个晶体管,而不影响其精度或功能。
噪声和错误控制对于量子信息处理至关重要,应对噪声的有效策略是当前活跃的研究领域(正如Fedorov 等,2022所回顾的)。在这方面,量子纠错(QEC)协议已经被提出,用以抑制噪声的影响(Campagne-Ibarcq 等,2020)。不幸的是,即使在量子纠错取得进展的情况下,我们仍未开发出容错的机器;从物理量子比特到逻辑量子比特(没有错误)所需的量子比特数目过于庞大。目前基于量子门的设备大约具有 100 个物理量子比特,通常被称为噪声中间规模量子(NISQ)设备,因为它们的操作并不完美(Bharti 等,2021)。在这种情况下,实现容错量子计算的一种可能性是增加量子比特的数量,同时通过高效的实现和测量操作确保它们保持可用。关于如何在这种充满错误的环境中工作,我们将在第九章中详细讨论。
经典计算机在任何情况下仍未被取代。经典计算机已被用于许多任务,实现量子计算并与量子设备进行接口尤为重要,尤其是在涉及数据时。我们日常使用的大多数数据都是以字节为单位的,因此必须使用经典资源进行存储、预处理和后处理,并描述将在我们专用硬件——量子计算机上运行的算法实现。
这些量子和经典算法可以应用于许多领域,以解决与我们日常活动相关的问题。特别是,一个备受关注的领域是量子机器学习(QML),其中变分量子算法(VQA)代表了一类使用经典计算来寻找参数化量子电路(PQC)或假设(在文献中称为 ansatz)参数的算法。将在本章中解释的 VQA 家族的具体实现包括变分量子本征求解器(VQE)、变分量子求解器(VQS)、变分量子分类器(VQC)和量子近似优化算法(QAOA)。这些是最著名的算法,但我们也将研究一些变体、修改版本以及与特定软件开发工具包(SDK)、代码语言、平台和硬件相关的不同实现(Cerezo 等人,2021)。
我们在处理这些算法时必须解决的首要任务之一是将经典数据编码到量子领域。量子算法通过量子态进行工作;我们需要将数据编码到这些量子态中,才能利用量子算法的优势。最早使用经典与量子领域之间映射的实现之一是核方法,它展示了在处理监督式机器学习挑战时量子编码的优势(Mengoni 等人,2019)。这些算法采用传统的机器学习模型,例如支持向量机(SVM),但通过将经典数据编码到量子态中,受益于更好的数据可分性。它们的优势来源于量子计算机能够识别数据集中固有的标签模式,而这些模式对于经典计算机而言看起来像是随机噪声。这种识别特性对于需要更多于两三个维度才能正确表示以便分类(非线性嵌入)的数据尤其重要,且通常难以解释。
本章概述了 NISQ 时代的算法,重点介绍了如何从现有设备中发挥最大计算潜力,并开发技术以实现该领域的长期目标,包括容错量子计算。在从当前量子计算状态中获取优势的过程中,混合量子-经典算法和量子启发式算法代表了应对诸如 QML、优化和模拟等挑战的最佳当前方法之一(Gilyén 等人,2022)。
文献中有数十种量子计算(QC)算法,并且更多的算法正在研究中。本章将举例说明当代 NISQ 阶段的应用案例、文章、平台和实现方法。量子计算公司和学术团体已做出努力,力求在当今充分发挥量子计算的优势。为此,他们已经实现了本章和以下页面中分享的大多数算法。这些算法将从不同角度进行详细介绍,以帮助更好地理解库、编程语言、云服务和量子比特实现方法,突显出这一生态系统中最重要的参与者。
总结来说,本章将涵盖以下内容:
-
基础量子算法(Grover、Shor、Deutsch-Jozsa 等)
-
主要的 NISQ QML 和优化算法(变分算法、量子核算法和 QUBO 基础算法)
-
使用上述算法(编程语言、库或 SDK、硬件、云服务和工具)的技术生态系统
-
技术挑战(使用现实世界的数据,分析商业应用以及当前的优势)
技术要求
要跟随本章的内容,您需要具备以下技术技能:
-
基础 Python 知识
-
熟悉 Visual Studio Code 或任何支持 Jupyter Notebooks 的集成开发环境(IDE)
基础量子算法
复习基础量子算法是理解量子计算最前沿进展及其解决经典计算无法处理问题潜力的必要步骤。从基本概念出发,算法是一系列可由计算机执行的步骤,用于进行计算或解决问题(Montanaro, 2016)。因此,当一个算法能够在量子计算机上成功运行时,它被认为是量子算法。一般而言,所有经典算法理论上都可以在这样的系统上运行。然而,从严格意义上讲,量子算法是指那些至少有一步涉及量子力学特性的算法,例如叠加或纠缠。量子计算机的主要特性之一是量子并行性,它使得许多现有的量子算法成为可能(Álvarez et al., 2008)。
量子电路通常用来描述量子算法。量子电路是一种结构,其中问题解决阶段在≥1 个量子比特上进行,这些量子比特会修改它们的量子状态;这个过程被称为量子门操作(Chow et al., 2012; Mitarai et al., 2018)。量子门根据其操作的量子比特数量分为单比特门、双比特门或三比特门。所有量子电路的终点都是对一个或多个量子比特进行测量。
图 2.1 展示了如何构造一个贝尔态(一个纠缠的二量子比特态),以示范这一过程。电路从左到右读取,首先是所有设备的基本状态,由 |0⟩ 状态的量子比特组成(此处为两个量子比特)。我们看到的第一个门是哈达玛门,它将量子比特置于叠加态(|0⟩+ |1⟩),从经典位的角度来看,这代表了所有可能的选项。最常用的门之一是以下蓝色门,它使两个量子比特纠缠,即 CNOT 门。如果第一个量子比特处于活动状态(|1⟩),则该门作用于第二个量子比特。因此,在这个阶段,量子态如下所示:
|Φ +⟩ = 1 _ √ _ 2 (|0⟩ A ⊗ |0⟩ B + |1⟩ A ⊗ |1⟩ B)
这是贝尔态的标准表示。之后,我们只需要将我们的量子态测量为一系列经典可读的位。
注
贝尔态是量子纠缠的最简单形式。这意味着该状态无法分解为每个量子比特的状态。纠缠是 CNOT 门(图 2.1 中的蓝色门)的结果。
图 2.1 – 施加哈达玛门和 CNOT 门的二量子比特量子电路。结果是一个贝尔态纠缠
在许多情况下,量子算法在经典计算机和量子计算机同时用于相同任务时,可能更为有效。比较经典与量子计算手段解决任务的方式,其复杂度顺序如图 2.2所示。一个问题可能所属的复杂度类别通常通过是否能够在多项式时间(P)内解决来讨论。如果不能解决,我们就进入了非确定性多项式时间(NP)类别,意味着对于经典计算来说,这个任务相当具有挑战性。例如,投资组合优化将在第五章中讨论,被认为是 NP 完全问题(Kellerer, 2000)。量子算法通常属于有限误差量子多项式时间(BQP)复杂度类(Yung, 2019)。后者是一类量子计算机能够在多项式时间内解决并且最大错误几率为⅓的判定问题。
图 2.2 – BQP 问题与经典 P、NP 和 PH 问题之间关系的图形表示
注
复杂度理论(CT)主要涉及量子计算的评估。在 CT 中,一个算法或一类问题通常与特定的类别相关联。图 2.2 展示了多个类别之间的联系。多项式层次结构(PH)作为比 NP 更广泛的类别,表示更高的复杂度级别。
如前所述,应对影响该领域历史的量子算法进行广泛概述,以便更好地理解量子计算的当前趋势和当代算法的基础。
我们现在将讨论三个基础算法。
德意志-乔萨算法
这是一个量子算法,它解决了一个特定问题,并且在时间复杂度上是线性的,而经典算法则需要指数级的时间。因此,它被认为是第一个展示量子加速的量子算法之一(Z. Li 等,2020)。该算法以 David Deutsch 和 Richard Jozsa 的名字命名,他们于 1992 年提出了这个算法(Deutsch 等,1992)。它可以用来确定一个布尔函数是平衡的还是常数的。如果该函数是常数函数,德意志算法将输出 0,而在平衡情况下,输出将是 1。这意味着经典方法中的最坏情况将需要估算一半的值加一(0.5n+1*,其中 n 是输入数量)来测试该函数,以判断它是常数函数还是平衡函数。
图 2**.3显示了它在量子寄存器中描述时的实际形式,包含以下步骤:
-
应用哈达玛门,使所有可以被经典读取的值组合(0 和 1)都被考虑在内。
-
对最后一个初始化为|1⟩(而非通常的|0⟩状态)量子比特应用单一门,以编码给定函数的输出。
-
将哈达玛门应用回所有量子比特,并测量作为函数输入的前 N 个量子比特。
图 2.3 – 德意志-乔萨的示意电路
它使用所谓的“神谕”(黑箱单一门),执行一个二进制函数 f(x) : {0,1} n → {0,1},其中 x 表示前述图中的哈达玛门所作用的输入。通过对初始化为|1⟩的量子比特的作用以及神谕对输入量子比特的作用,德意志-乔萨算法能够确定一个二进制函数是平衡的还是常数的。神谕(黑箱)是一种属性事先未知的函数,但你可以通过查询来调用它,以确定其性质。你有输入和输出,可以用来评估神谕的操作。
该算法加速了搜索过程,以确定一个函数是否具有特定的属性(即是否平衡)。该算法节省了时间,因为它只需要调用一次函数(或者更准确地说,是函数的导数),而经典算法则需要调用* n_2+1*次(其中 n 为输入大小)。当函数非常“昂贵”时,例如在处理资源方面,计算它一次可能更具优势。
格罗弗算法
1996 年,Lov Grover 开发了一种量子技术,使得在未排序数据库中定位一个项目比传统搜索方法快四倍。这种用于无结构数据的搜索方法被称为 Grover 算法(Grover, 1996),也可以被描述为一个 oracle。正如在 Deutsch-Jozsa 部分定义的那样,oracle 将被反复评估以确定其特性。
这样一个任务的示例是从一副洗牌的N张卡牌中搜索特定的一张。传统上,这只能通过逐一检查每一张卡牌来完成,在最坏情况下使用经典方法需要 N 步(N 张卡牌需要 N 次评估)。而 Grover 算法只需进行√_N 次 oracle 评估,就能完成此任务,从而在最坏情况下达到 O(√_N)的时间复杂度。然而,需要注意的是,由于算法的相位影响,得到正确答案的概率并不能保证是 100%。
图 2.4展示了实现 Grover 算法的量子电路。它的形状与之前的示例类似。
图 2.4 – Grover 算法示意电路
对于两比特的情况,第一组 Hadamard 门将我们的初始|00⟩态转换为所有潜在组合的叠加态:
|ψ⟩ = 1 _ 2(|00⟩ + |01⟩ + |10⟩ + |11⟩)
然后我们应用问题中的单元算符U,使得解的相位发生变化,方法是在其前面加上负号。
|ψ⟩ = 1 _ 2(|00⟩ − |01⟩ + |10⟩ + |11⟩)
由于这种标记,Grover 算符可以识别我们的候选解状态,以便我们在第一次迭代结束时测量到|01⟩。一个示意图可以见于图 2.5:
图 2.5 – Grover 算法第一次应用时标记元素的相位变化
当 oracle 函数有 N 个潜在输入值(在我们两比特系统中为 4)时,这种方法只需要 O(√_N)次评估。相比之下,最佳的经典算法需要 O(N)次执行。这就是为什么通过只应用一次 Grover 算符,我们能够在刚才的示例中找到问题的解。
这可以用来在一个大的搜索空间中高效地进行搜索(如大海捞针)。我们将在第五章中看到如何使用它来从所有潜在组合中找到最佳投资组合。
总结来说,Grover 算法的核心是振幅放大。这是 Grover 算法加速搜索的过程,核心在于操控所涉及量子态的概率振幅。这个过程的工作原理如下:
-
初始状态:在 Grover 算法的开始,你将量子系统置于所有可能状态的均等叠加态中。这意味着,如果你有 n 个量子比特,你就有 2^n 个可能的状态,并且这些状态的每一个都有 1 / 2^n 的相同概率。
-
Oracle 应用:然后将一个 oracle 应用到系统中,它会反转与解对应的状态符号。这意味着解的状态现在具有负的幅度,而所有其他状态保持正的幅度。
-
幅度放大:幅度放大过程会放大正确状态的幅度(或概率),并减少错误状态的幅度。它是通过应用 Grover 扩散算子(也称为 Grover 迭代)来实现的,这个操作会使状态围绕均值幅度反转。
步骤 2 和 3 会大约重复 √ N 次,以最大化正确状态的幅度。
Grover 算法的美妙之处在于,每次迭代后,“正确”状态(我们感兴趣的解)的幅度会被放大。相比之下,“错误”状态的幅度则会被缩小。这导致在最终测量时,正确状态被测量到的概率较高。
Shor 算法
数学家彼得·肖尔(Peter Shor)在 1994 年研究离散对数问题时,通过量子傅里叶变换,他发现了一个通过两个数字之间的周期性来找到解决方案的方法。随后,他将这一发现扩展到了因式分解问题。因式分解可以用来找出一个整数的素数因子。
加密数据的主要方法是 RSA 协议,它通过基于两个大素数的乘积生成公钥和私钥,从而实现非对称加密。Shor 算法可以通过因式分解密钥来找到这两个素数。从经典计算角度来看,这个问题是无法处理的,因为破解一个 2048 位的 RSA 密钥需要几千年的时间,使用 高性能计算(HPC)也难以实现。Shor 算法能够在多项式时间内破解该密钥。然而,由于所需的量子比特数量庞大,这个算法尚不能用来破解 2048 位的 RSA 密钥。
肯定,Shor 的方法是概率性的,就像许多其他算法一样。具体来说,它以较高的概率提供正确的答案,且通过重复这一过程,失败的可能性可以降低。
图 2.6 – Shor 算法示意电路
图 2.6 显示了该算法除了已由哈达玛门控制的叠加操作外,还执行了两项主要操作。底部的量子比特(1)用作入口点,其余的量子比特(0)用于编码我们的解。第一阶段将给定函数的不同指数应用于下面的量子比特,这会切换应用操作的量子比特的相位。通过反向量子傅里叶变换(QFT −1)的作用,我们可以读取编码数字值的比特字符串集合,该值用于推导出分解目标值 N 的两个数字。
接下来,我们将探索由量子计算(QC)和机器学习(ML)合并而成的新领域,称为量子机器学习(QML)(Martín-Guerrero 等,2022)。
QML 算法
这一学科结合了经典机器学习与量子能力,以产生更好的解决方案。通过量子资源增强机器学习算法和/或经典训练,拓宽了纯机器学习的应用范围,正如某些经典设备(如 GPU 或 TPU)所带来的效果一样。
大量文献已报告使用量子方法在学习算法中可能带来的多个优势(Schuld 等,2018 综述)。然而,大多数早期的研究在这一框架下追求的是计算复杂性的降低与加速的结合。当前的研究还在探讨量子技术提供非常规学习表示的方法,这些方法未来甚至可能超越标准机器学习。
近年来,量子计算的理论和技术发展迅速,现实应用的潜在利益日益显现(Deb 等,2021;Egger 等,2021)。量子计算如何影响机器学习是一个关键的研究话题。最近的实验表明,量子计算机可能成功解决某些具有复杂输入相关性的难题,这些问题对传统系统来说异常具有挑战性。
目前已有共识认为量子计算机在多个应用中可能提供优势。然而,它们尚未能完全替代经典机器学习。由量子计算生成的量子模型在特定应用中可能显著更有效,从而实现更快的处理时间和更少输入下的泛化能力。因此,至关重要的是要确认是否能够实现量子优势。
以下部分将提供对最相关的 QML 算法的详细回顾。
变分量子分类器
变分量子分类器(VQC)属于混合算法范畴,因为它们需要经典的交互作用来设置量子假设电路的自由参数。变分部分决定了量子电路如何根据一些经典标准进行迭代训练,从而确保选择的参数使电路收敛于目标函数。当这个目标是一个给定数据集标签之间的分类任务时,这使得我们的算法成为一个 VQC(W. Li 等,2021)。图 2.7 展示了 VQC 的经典步骤。数据必须在第一步进行预处理,并以量子态的形式引入,以表示经典数据。之前,我们展示了 Hadamard 操作如何在初始编码态上设置所有潜在的组合。我们使用特征映射(量子电路的一种特定类型)将经典数据编码为量子态。然后描述一组参数化门来表示不同的配置(稍后我们会详细讨论),最后是一个测量步骤,获取结果。在 VQC 中,关键步骤是测量;输出变成经典数据,用于更新参数化电路的参数。这个过程类似于神经网络,其中输出用于计算损失。
图 2.7 – VQC 示意电路
基于梯度和非梯度的方法都可以用来训练 QML 模型。已知基于梯度的方法在经典执行过程中容易陷入函数的局部最小值。
量子方案可能会通过量子隧道效应克服这一事实,即使某些经典方法已知的问题在量子方案中被放大(例如梯度消失或荒 plateau 等问题)。这也是为什么人们投入大量努力设计参数化电路(PQC)或假设电路和方法来处理这些问题,希望能够超越经典手段。
在定义这些 PQC 时,我们也可以借鉴经典机器学习,并模仿已知的该领域瑞士军刀——神经网络。
量子神经网络
量子神经网络(QNNs)是变分量子算法(VQA)的一种子类型,由带有参数化门操作的电路组成(Abbas 等,2021),如前所述。最初,信息被编码进准备好的量子态,可能涉及特征映射。通常,选择特定的特征映射是为了提高量子模型的性能,该模型需要优化和训练。该特征映射,如图 2.8所示的黄色框,指的是数据被编码到电路中的步骤。在数据被编码到量子态后,带有参数化门的变分量子电路(PQC 或蓝色变分模型)被应用并优化以完成特定任务。变分模型输出的量子态随后被测量,以估算损失函数。然后,经典部分估算误差,并将其传播到 PQC 中参数的估计值。这一从量子比特初始化到最终测量阶段的过程描述了一个量子神经网络(QNN),如图 2.8所示。
图 2.8 – QNN 示意电路
量子神经网络(QNN)使用前面提到的方式进行训练,其中基于梯度的优化器通常能展现出良好的结果。Adam(Carena 等,2022)优化器是最广泛使用的优化器之一,它源于经典神经网络优化。我们将在第四章中看到一个工作示例,展示如何在处理导数估值时使用基于梯度的方法来训练量子神经网络(QNN)。
量子支持向量分类(QSVC)
监督分类系统通过有标签的数据进行训练,之后用于预测未见数据点的标签。这种训练方式称为监督学习,并且已被应用到量子机器学习(QML)中(Schuld 等,2018)。著名的经典方法如支持向量机(SVMs)(Meyer,2015)已经经过此类训练,并被用于各种大规模分类任务。通过使用先前讨论过的特征映射,我们可以在经典数据上获得更好的可分性。这一事实通过将数据编码并解码到更大的领域中,利用量子支持向量机(SVM)得以实现。
在监督分类中,一组标记的数据点表示它们是否属于某一特定类别。学习过程会在这些类别之间建立一个分界线或超平面。基于核的分类器,如 SVC,极度依赖核概念(Park et al., 2020)。通常情况下,超平面无法在原始空间中分隔数据;因此,一个常见的策略是应用非线性变换函数(φ),也称为特征映射,以寻找这样的超平面。特征映射将编码后的数据投影到一个新的表示(更复杂的空间),以转化数据并帮助分隔。在这个函数中,φ : x → F,其中 F 是特征空间。该映射对每个数据点的输出,φ(x)对于每个 x ∈ X,被称为特征向量。
另一个有用的工具是核技巧。数据将仅通过成对相似性来表示。通过使用核技巧和高维非线性特征映射,量子核方法可以扩展到依赖于非线性数据的决策函数。在这种情况下,数据会从低维空间转移到高维非线性希尔伯特空间(H)(Skorohod, 2012),有时也被称为特征空间。在选择了合适的特征映射后,将 SVM 分类器应用到映射后的希尔伯特空间数据中是可行的。在这个新的特征空间中对数据点进行分类,涉及评估它们的接近度。就其本身而言,核是每对数据点之间内积的集合。
这些计算在量子计算机上执行比在常规系统上更为容易。核可以通过量子处理器轻松估算。一旦形成了核矩阵,就必须从量子电路中提取量子核信息,并将其输入到 SVM 或 SVC 算法中。
变分量子特征解算器
从前面的 VQC 定义中,我们知道变分量子特征解算器(VQE)由经典部分和量子部分组成,这些部分被集成在一起以实现特定目标。当用于寻找某一哈密顿量的最小能量状态,也称为基态时,学习算法呈现为 VQE(Wang et al., 2019)。它属于 VQA 的广泛范畴。它遵循相同的步骤,其中经典优化过程调整给定假设(PQC)的参数,以产生哈密顿量在测量时的最小期望边界。能量期望值是驱动此训练的度量,就像任何经典机器学习方法的成本函数一样。
简单来说,VQE 是指在量子计算机上评估哈密顿量的能量,另一方面使用经典计算机来增强参数,从而在后续的量子迭代中减少能量。VQE 背后的概念是通过量子计算机实现一个单一目的:计算一组给定参数的能量值。其他所有操作则在传统计算机上进行。VQE 主要用于预测分子和材料的特性,通常用于组合优化问题,如投资组合优化。
QAOA
量子近似优化算法(QAOA)是展示量子优势的最有前景的技术之一(Choi 等人, 2019)。QAOA 是一种近似方法,它并不会提供“最佳”结果,而是追求一个“足够好”的结果,特点是近似比的下限。
它的灵感来自于数字化的绝热方法。绝热定理表明,如果我们从一个已知最优解的简单情况开始,通过小的扰动将其转变为我们要解决的问题。如果我们在电路执行结束时获得的目标状态仍然是问题的基态,那么其读取结果将显示我们正在寻找的经典位集。
这是量子退火器用来解决复杂问题的方法之一。这种退火过程的数字实现之一涉及交替操作块的使用,其中初始候选者通过所有可能选项的叠加进行编码(见图 2.9中的 H 门),并添加离散的步骤,通过交替来增强我们的目标问题,最终生成的量子状态即为我们的目标状态。
确定所需扰动的最佳量并非易事,可以使用经典优化器来确定最佳参数,从而解决我们的问题。
这个过程的完整图示见图 2.9,其中 β 和 γ 分别对应影响问题哈密顿量(C,黄色)和混合器哈密顿量(B,绿色)的参数,适用于 p 层或层级。
图 2.9 – QAOA 示意电路
对于给定的 NP-Hard 问题(Bittel 等人, 2021),近似算法是一种多项式时间解法,可以解决问题的所有实例,并提供质量保证。优势值是多项式时间解法的质量与实际解法的质量之间的比值。
量子编程
在过去的十年里,QC 的发展加速了。一个重要的例子是开发了使用高级编码语言提供解决方案的工具(Chong 等,2017;Ganguly 等,2021)。量子编程语言是将概念转换为量子计算机指令的基础。Nature Reviews(Heim 等,2020)指出,量子编程语言用于以下目的:
-
检查 QC 基础(量子位、叠加、纠缠),然后测试和验证量子算法及其实现
-
管理现有的物理量子硬件
-
预测量子程序在可能的硬件上的执行成本
当前的量子编程语言主要旨在优化基于量子门的低级电路。量子电路是由量子门构成的,用于通用量子计算机。以下是主要量子门的列表:
图 2.10 – 量子计算的核心门
量子编程始于 1996 年,当时 E. Knill 提出了量子随机访问机(QRAM)模型,并提出了可以被认为是第一个量子伪代码规范的概念(Knill, 1996)。此后,开发了许多方法,例如 Ömer 提出的量子编程语言(QCL)(Ömer, 2002)、C++ 量子扩展(McCaskey 等,2021)以及代表这些语言不同发展阶段的许多其他缩写。
本节的重点是特别探讨量子软件开发工具包(SDKs),它们是用于开发量子算法的工具,可以在量子计算机、模拟器和仿真器中使用(Ablayev 等,2020)。微软、IBM、谷歌、Xanadu 和 Rigetti 等公司已发布了开源开发工具包。SDK 提供了软件开发人员解决问题的工具,并让他们能够访问模拟器或量子计算机,用于基于云的量子算法实现。
图 2.11 – QC 编程水平比较
这些工具包通常允许使用传统编程语言,如 Python,作为主要解释器,框架的特定功能则在其之上构建。其他公司则倾向于构建自己版本的量子软件语言,例如微软的 Q#。
尽管我们尚未达到图 2.11所示的顶部(medium.com/@quantum_wa/quantum-computing-languages-landscape-1bc6dedb2a35
),不同的框架专注于特定任务或领域,其中某些特定的硬件实现比其他实现更优秀。
最主要的工具生态系统包括以下几种:
-
来自 IBM 的 Qiskit 提供面向金融等领域的高抽象模块
-
来自 Xanadu 的 PennyLane 专注于 QML 和可微分计算
-
来自 Google 的 Cirq,它可以使用 Sycamore 和 QSVM 模拟器
-
微软为 Q# 用户提供的 量子开发工具包 (QDK)
市场上也可以找到其他 SDK,通常更为专业或特定于某些公司为改善自己的解决方案、硬件和基础设施而进行的努力。这些 SDK 包括以下内容:
-
来自 D-Wave 的 Ocean
-
来自 Zapata 的 Orquestra
-
来自 Amazon Web Services (AWS) 的 Braket SDK
-
来自 Riverlane 的 Anian
-
来自 Rigetti 的 Forest
在接下来的章节中,将讨论最相关的 SDK,它们拥有最大社区、文档和在线支持。通过利用这些支持基础,任何具有平均数学和/或物理知识的人都可以从零开始学习,并能迅速与真实或模拟的量子设备进行互动。
Qiskit
Qiskit(最初称为 QISKit)是 IBM Research 于 2017 年发布的一个 Python SDK(qiskit.org/
)。这个软件包/库的目的是提供量子算法和物理设备之间的桥梁,以便更多人可以理解和与量子计算机互动。Qiskit 的创建也旨在帮助拓宽量子教育的访问,并扩展量子信息挑战和结构。
目前,Qiskit 使用户能够快速构建实验和应用,并在真正的量子计算机和经典量子模拟器上运行它们。另一个目标是量子软件的进步,既包括使用 OpenQASM 进行机器代码层面的工作,也包括面向没有量子计算经验的终端用户的抽象层面。
由于 Qiskit 是一个开源 SDK,任何人都可以与它合作和互动。它以拥有全球最大的量子计算社区而闻名,社区成员来自不同背景和地区,大家共同合作。到 2020 年,Qiskit 已经有 15,000 名科学家和开发者在该领域使用 Qiskit 工具工作,超过 300,000 人使用这些资源学习量子计算。2021 年,涉及 Qiskit 实现的研究文章达到了 157 篇。今天,社区仍在不断壮大,全球范围内有认证用户和倡导者(quantumcomputingreport.com/
)。
早期,Qiskit 的包名称采用了经典元素(Terra、Ignis、Aer、Metal 和 Aqua)作为命名依据。这个惯例已经被放弃,取而代之的是更具描述性的 Qiskit 包名称。Terra 和 Aer 保留了原名,而其他的则已被弃用并替换。例如,Aqua 已被更高级的应用模块替代,Ignis 则被 Qiskit Experiments 取代。Qiskit Metal 更侧重于电路设计,因此对那些寻求基于超导电路设计量子计算芯片的人具有非常特定的吸引力。
Qiskit Terra 包含了最相关的功能。在 Qiskit 生态系统中,Terra 是最大的包,拥有最全面的量子计算工具集;许多其他包与其交互。将 Terra 视为 Qiskit 的核心,对于商业领域最有趣的部分可能是它所提供的高级应用,这些应用包含了四个不同的产品,这些产品曾经组成了一个单一的包(Qiskit Aqua)。每个应用包都专注于量子计算在现实世界中具有显著影响的一个领域,具体如下:
-
Qiskit Nature,专注于量子模拟
-
Qiskit Machine Learning,提供了与量子机器学习相关的各种应用工具
-
Qiskit Finance,旨在帮助研究人员发现并扩展量子金融解决方案
-
Qiskit Optimization,提供探索优化问题的工具,例如旅行商问题或背包问题
第四章、第五章 和 第六章 深入探讨了这些解决方案,主要聚焦于 Qiskit 在金融领域的应用,鉴于其有趣的模块可以开发接下来章节中涵盖的一些话题。此外,第九章 重点介绍了 Qiskit Terra 和 Qiskit Experiments 在误差缓解中的一些基本用法。Qiskit Machine Learning 也将被提及并引用。
PennyLane
PennyLane 提供了一种强大且新颖的方法来编程量子计算机 (Bergholm et al., 2018)。它将传统的机器学习库与量子硬件和模拟器相结合;因此,用户可以像训练神经网络一样训练量子计算机。这个用于 Python 的软件开发工具包(SDK)由 Xanadu 于 2018 年发布,并通过设备无关的开源策略将最广泛使用的量子计算系统与顶级机器学习工具结合起来。使用 TensorFlow、PyTorch 或 NumPy 的数据科学家(包括机器学习研究人员)会很快适应 PennyLane 的工作环境。
如前所述,PennyLane 提供了一个基于 Python 的简洁用户界面,兼容任何基于门的量子计算平台(如 Qiskit),包括量子比特和连续变量设计。
用户创建一个量子函数电路并将其与设备耦合,构成一个 QNode,如图 2.12所示。PennyLane 及其方法的主要优势之一是,设备中执行的所有计算都会被记录,这意味着几乎无需计算就可以直接请求梯度。这就是为什么它与 TensorFlow 或 PyTorch 一起被列为工具,因为这些自动微分功能使它们在机器学习社区中取得了成功。
图 2.12 – PennyLane 基本核心结构
在处理 QML 的特定需求时,如第四章和第六章所示,我们将看到 PennyLane 如何轻松解决那些从技术角度看起来可能复杂的技术。此外,得益于 PennyLane,实验层面的实现变得更加容易。
Cirq
另一个 Python 框架是 Cirq,由 Google 于 2018 年发布(github.com/quantumlib/Cirq
)。它可以编排、执行并评估量子计算机程序的结果。它是为拥有几百个量子比特(NISQ)和几千个量子门的量子计算机构建的。目前,Cirq 的 1.0 版本已发布,自推出以来已有超过 3000 个提交。
一个围绕 Cirq 发展的库社区,促进了量子计算领域的许多研究。这些库包括以下内容:
-
TensorFlow Quantum:一个用于研究 QML 的工具。
-
OpenFermion:一个开源工具,用于化学模拟中的量子计算。
-
Pytket:一个基于 Python 的量子电路优化与操作工具。
-
Mitiq:一个开源库,用于误差预防策略。由非营利组织 Unitary Fund 开发。
-
Qsim:一个高性能的状态矢量仿真器,使用 AVX/FMA 向量化指令创建。包括 GPU 加速作为选项。Qsimcirq 是 Cirq 接口,用于访问 qsim。
此外,Cirq 是 Google 量子生态系统的一个组成部分(图 2.13),可以与之前的 SDK(如 PennyLane)及其他云服务(如 Microsoft Azure Quantum)进行集成。
图 2.13 – Cirq 量子生态系统
当没有量子处理器可用时,可以使用 Google 量子虚拟机进行 Cirq 测试,这是一种 Colab 笔记本,用于模拟 Google 量子处理器(目前为 Weber 或 Rainbow)。如果需要更强的仿真能力,只需简单地更新 Google 量子虚拟机,使其在 Google Cloud 中运行。
量子开发工具包(QDK)
QDK 由微软于 2017 年推出,包含了量子软件开发入门的基础元素(微软,2017)。这些元素包括以下内容:
-
使用.NET 或 Python 进行 QC 仿真的 API
-
由微软开发的量子编程语言,称为 Q#
-
使用命令行工具进行量子应用程序的开发和仿真工具
市场上的这一 SDK 和其他 SDK 最近已经趋于一致,因此 QDK 目前允许使用 Cirq 和 Qiskit 构建和运行 QC 应用程序。
这个工具包旨在帮助程序员学习如何编程量子计算机。不需要事先了解量子物理知识。QDK 是一个开源框架,包含一套文档、教程、库、示例算法以及一个社区(图 2.14)。如前所述,QDK 支持多种开发平台,包括 Windows、Linux 和 macOS,以及 Python 等编程语言。
图 2.14 – QDK 和 Microsoft Azure Quantum 工作流
日益壮大的微软量子生态系统使各领域的解决问题者,无论技能水平如何,都能够探索量子开发领域,以解决具有变革性的现实问题。
量子云
除了编程语言,量子程序的广泛研究和商业应用还需要一个基本元素——云访问(Gong 等,2021)。这些云解决方案直接与量子电路和芯片连接,用于最终的量子算法测试和实验。
云访问使机构和个人能够推进他们的量子计算探索。无论技术如何发展并变得流行,企业和大学现在都可以在云上实验量子计算。这个过程始于 2016 年,当时 IBM 将量子计算机连接到云,并启用了基本的基于云的量子应用程序的开发和执行(Castelvecchi, 2017)。到 2022 年,至少有 13 家知名公司提供了量子计算机的在线访问:
-
Amazon Braket (AWS)
-
Leap (D-Wave)
-
IBM Q Experience (IBM)
-
Google Quantum AI (Google)
-
Xanadu Quantum Cloud (Xanadu)
-
Azure Quantum (Microsoft)
-
Forest (Rigetti)
-
Quantum Inspire (Qutech)
-
Forge (QC Ware)
-
AQT
-
Quantinuum
-
阿里云
-
Oxford Quantum Circuits
量子云服务还使用户、量子仿真器和模拟器之间能够直接连接。此外,一些供应商还提供支持不同编程语言、工具和文档的服务,帮助用户更高效地构建 QC 应用程序。
接下来的章节将深入回顾该领域中最重要的服务,以及它们如何运作和发展。
IBM Quantum
如前所述,IBM 于 2016 年推出了其 QC 云平台。IBM Quantum Experience拥有一个 5 量子比特的量子处理器和一个模拟器。任何人都可以免费访问 7 量子比特和 5 量子比特的量子机器以及云模拟器。此外,IBM 平台中的许多功能,如 IBM Quantum Composer、Qiskit 示例和学习材料、以及 IBM Quantum Lab,允许用户通过 Jupyter Notebooks 创建、探索和运行量子应用程序。
图 2.15 – IBM Quantum 路线图
IBM 的量子技术发展路线图看起来相当激进,但同时也很具体,因为该公司迄今为止已经完成了每一个预定步骤。到 2025 年,IBM 预计将在一个名为 Kookaburra 的新型 4,158 比特机器上实现多个量子处理单元(QPU)的互联。如果需要更高数量的量子比特(超出免费层级的机器),也有两个可能的方案:
-
按需付费:通过信用卡按运行时间秒数支付,访问 27 比特的 Falcon R5 处理器
-
高级计划:访问 127 比特的 Eagle 处理器,并通过定制协议作为 IBM 量子网络成员进行支付
IBM 面临的另一个重要挑战是增加其机器的量子体积。量子体积是指处理器能够正确执行的最大随机两比特门电路的平方。当处理器能够在 2-置信区间内,三分之二以上的时间内计算出重输出(电路中最可能的输出)时,认为成功达成。如果一个处理器可以利用 8 个量子比特操作一个包含八个时间步长门的电路,那么它的量子体积就是 256——我们将 2 的量子比特数次方计算出来。
亚马逊 Braket
亚马逊网络服务(AWS)于 2019 年推出了 Amazon Braket(Patterson, 2019)。Amazon Braket 是一个量子云平台即服务(PaaS),与五家基于硬件的量子计算公司合作提供:D-Wave、IonQ、Rigetti、OQC 和 Xanadu。Amazon Braket 不仅通过 D-Wave 提供量子退火服务,还通过不同类型的硬件技术提供对通用量子计算机的访问;这些技术包括陷阱离子(IonQ)、超导(Rigetti 和 OQC)和光子(Xanadu)技术。根据五个标准,每种技术都有其优缺点:良好表征和可扩展的量子比特、量子比特初始化、延长的相干时间、通用的门集以及对单个量子比特的量化。
图 2.16 – AWS 量子路线图
总体来说,亚马逊 Braket 提供了一套基于 Python 环境的完整服务,支持构建、测试、运行和分析量子算法。使用 Braket,用户可以访问通用量子计算机、模拟器、混合作业和管理的笔记本。基于门的量子计算机可以通过量子处理单元(QPU)或 D-Wave 提供的量子退火器来使用。此外,用户还可以使用可用的 SDK 来构建和实现他们的量子算法。状态矢量 1(SV1)、密度矩阵 1(DM1)和张量网络 1(TN1)模拟器可以同时用于运行和测试量子算法,并减轻噪声对算法性能的影响(图 2.16)。
为了测试混合算法,AWS 将其基于经典 EC2 的计算资源(作业实例)与 Braket 量子处理单元 (QPUs) 或量子电路模拟器结合使用。用户还可以访问笔记本来测试量子算法、共享代码并可视化结果 (aws.amazon.com/braket/pricing/
)。
亚马逊 Braket 提供了多种量子计算微处理器的访问,价格合理。量子算法的效率可以在不同系统上进行测试,然后在更高效的系统上开发相应的应用案例。
微软量子
自 2019 年以来,微软已为研究人员、企业和开发者提供了云端量子计算机的访问权限(Kanamori 等,2020)。该公司为这一生态系统的繁荣与持续创造了一个动态环境,为企业、研究员和开发者提供空间,以便他们能够生产、测试和部署量子算法。特别是,Azure 云平台促进了对由 1QBit、Quantinuum、QCL 和 Pasqal 等公司(但不限于这些公司)提供的多个平台的访问(图 2.17)。
图 2.17 – 微软量子生态系统
微软的量子服务分为三个层级:商业、研究员和开发者。通过其企业加速计划,该公司通过优化求解器和量子硬件为行业提供便捷访问。包括 NASA 和福特在内的知名组织已经通过云计算探索量子计算,旨在开发调度问题和车辆追踪的解决方案。同时,借助 Cirq、Qiskit 和 Q# 等模块,研究员和开发者现在可以参与新算法的开发。
摘要
-
基础的量子计算算法已经展示了这种新计算范式的潜在优势,前提是有一套特定的硬件可以利用物理方法的优势。
-
在解决与机器学习、优化和仿真相关的问题时,有各种各样有趣的量子和混合量子-经典算法选项可供选择。大多数都有文档和开源代码,旨在降低新用户的学习曲线。
-
量子计算机已经成为现实,因为任何需要的人都可以访问它们,并开始进行研究和探索潜在的解决方案。如果有商业需求,多种云服务提供对多种量子技术的访问,用户可以并行探索这些技术,同时具备运行量子模拟器的高计算能力。
参考文献
-
Abbas, A., Sutter, D., Zoufal, C., Lucchi, A., Figalli, A., & Woerner, S. (2021). 量子神经网络的力量。《自然计算科学》2021 年第 1 卷第 6 期,1(6),403–409. doi: 10.1038/s43588-021-00084-1
-
Ablayev, F., Ablayev, M., Huang, J. Z., Khadiev, K., Salikhova, N., & Wu, D. (2020). 量子方法在机器学习问题中的应用,第 I 部分:量子工具。大数据挖掘与分析, 3(1), 41–55. doi: 10.26599/BDMA.2019.9020016
-
Albash, T., & Lidar, D. A. (2018). 惰性量子计算。现代物理学评论, 90(1), 015002. doi: 10.1103/REVMODPHYS.90.015002/FIGURES/11/MEDIUM
-
Álvarez, G. A., Danieli, E. P., Levstein, P. R., & Pastawski, H. M. (2008). 量子并行性作为集体自旋动力学计算的工具。物理评论快报, 101(12), 120503. doi: 10.1103/PHYSREVLETT.101.120503/FIGURES/3/MEDIUM
-
Arute, F., Arya, K., Babbush, R., Bacon, D., Bardin, J. C., Barends, R., Biswas, R., Boixo, S., Brandao, F. G. S. L., Buell, D. A., Burkett, B., Chen, Y., Chen, Z., Chiaro, B., Collins, R., Courtney, W., Dunsworth, A., Farhi, E., Foxen, B., … Martinis, J. M. (2019). 使用可编程超导处理器实现量子霸权。自然, 574(7779), 505–510. doi: 10.1038/s41586-019-1666-5
-
Bayerstadler, A., Becquin, G., Binder, J., Botter, T., Ehm, H., Ehmer, T., Erdmann, M., Gaus, N., Harbach, P., Hess, M., Klepsch, J., Leib, M., Luber, S., Luckow, A., Mansky, M., Mauerer, W., Neukart, F., Niedermeier, C., Palackal, L., … Winter, F. (2021). 行业量子计算应用。欧洲物理学杂志量子技术, 8(1), 25. doi: 10.1140/EPJQT/S40507-021-00114-X
-
Bergholm, V., Izaac, J., Schuld, M., Gogolin, C., Ahmed, S., Ajith, V., Alam, M. S., Alonso-Linaje, G., AkashNarayanan, B., Asadi, A., Arrazola, J. M., Azad, U., Banning, S., Blank, C., Bromley, T. R., Cordier, B. A., Ceroni, J., Delgado, A., Di Matteo, O., … Killoran, N. (2018). PennyLane: 自动微分的混合量子-经典计算。 doi: 10.48550/arxiv.1811.04968
-
*Bharti, K., Cervera-Lierta, A., Kyaw, T. H., Haug, T., Alperin-Lea, S., Anand, A., Degroote, M., Heimonen, H., Kottmann, J. S., Menke, T., Mok, W.-K., Sim, S., Kwek, L.-C., & Aspuru-Guzik, A. (2021). 噪声中等规模量子(NISQ)算法。现代物理学评论, 94(1).* doi: 10.1103/RevModPhys.94.015004
-
Bittel, L., & Kliesch, M. (2021). 训练变分量子算法是 NP 难的。物理评论快报, 127(12), 120502. doi: 10.1103/PHYSREVLETT.127.120502/FIGURES/1/MEDIUM
-
Campagne-Ibarcq, P., Eickbusch, A., Touzard, S., Zalys-Geller, E., Frattini, N. E., Sivak, V. V., Reinhold, P., Puri, S., Shankar, S., Schoelkopf, R. J., Frunzio, L., Mirrahimi, M., & Devoret, M. H. (2020). 量子误差校正:在振荡器的格点状态中编码的量子比特。自然, 584(7821), 368–372. doi: 10.1038/s41586-020-2603-3
-
Carena, M., Lamm, H., Li, Y.-Y., & Liu, W. (2022). 量子模拟规范理论的改进哈密顿量。物理评论快报, 129(5), 051601. doi: 10.1103/PhysRevLett.129.051601
-
Castelvecchi, D. (2017). IBM 的量子云计算机正式商用。 自然, 543(7644)。
-
Cerezo, M., Arrasmith, A., Babbush, R., Benjamin, S. C., Endo, S., Fujii, K., McClean, J. R., Mitarai, K., Yuan, X., Cincio, L., & Coles, P. J. (2021). 变分量子算法。自然物理学评论 2021 3:9, 3(9), 625–644. doi: 10.1038/s42254-021-00348-9
-
Choi, J., & Kim, J. (2019). 量子近似优化算法(QAOA)教程:基础与应用。ICTC 2019 - 第十届国际信息通信技术融合会议:ICT 融合引领自主未来, 138–142. doi: 10.1109/ICTC46691.2019.8939749
-
Chong, F. T., Franklin, D., & Martonosi, M. (2017). 面向现实量子硬件的编程语言与编译器设计。自然 2017 549:7671, 549(7671), 180–187. doi: 10.1038/nature23459
-
Chow, J. M., Gambetta, J. M., Córcoles, A. D., Merkel, S. T., Smolin, J. A., Rigetti, C., Poletto, S., Keefe, G. A., Rothwell, M. B., Rozen, J. R., Ketchen, M. B., & Steffen, M. (2012). 接近容错门限的通用量子门集,使用超导量子比特。物理评论快报, 109(6), 060501. doi: 10.1103/PHYSREVLETT.109.060501/FIGURES/4/MEDIUM
-
Deb, A., Dueck, G. W., & Wille, R. (2021). 探索替代量子计算架构的潜在好处。IEEE 集成电路与系统计算机辅助设计学报, 40(9), 1825–1835. doi: 10.1109/TCAD.2020.3032072
-
Deutsch, D., & Jozsa, R. (1992). 通过量子计算快速解决问题。伦敦皇家学会学报。数学与物理科学系列, 439(1907), 553–558. doi: 10.1098/RSPA.1992.0167
-
Egger, D. J., Gambella, C., Marecek, J., McFaddin, S., Mevissen, M., Raymond, R., Simonetto, A., Woerner, S., & Yndurain, E. (2021). 金融领域的量子计算:现状与未来展望。IEEE 量子工程学报, 1, 1–24. doi: 10.1109/TQE.2020.3030314
-
*Endo, S., Cai, Z., Benjamin, S. C., & Yuan, X. (2021). 混合量子-经典算法与量子误差缓解。Https://Doi.Org/10.7566/JPSJ.90.032001, 90(3).* doi: 10.7566/JPSJ.90.032001
-
*Fedorov, A. K., Gisin, N., Beloussov, S. M., & Lvovsky, A. I. (2022). 量子优势门槛下的量子计算:一次实用的回顾。* doi: 10.48550/arxiv.2203.17181
-
Ganguly, S., & Cambier, T. (2021). 使用 Silq 编程进行量子计算:使用新型高级量子计算编程语言快速入门。PACKT PUBLISHING LIMITED.
-
Gilyén, A., Song, Z., & Tang, E. (2022). 一种改进的量子启发式算法用于线性回归。量子, 6, 754. doi: 10.22331/q-2022-06-30-754
-
Gong, C., Dong, Z., Gani, A., & Qi, H. (2021). 基于受信服务器的量子云计算中的量子 k-means 算法。量子信息处理, 20(4), 1–22. doi: 10.1007/S11128-021-03071-7/FIGURES/16
-
Grover, L. K. (1996). 一种快速的量子数据库搜索算法. 《年度 ACM 计算理论研讨会论文集》F129452, 212–219. doi: 10.1145/237814.237866
-
Heim, B., Soeken, M., Marshall, S., Granade, C., Roetteler, M., Geller, A., Troyer, M., & Svore, K. (2020). 量子编程语言. 《自然物理评论》2020 2:12, 2(12), 709–722. doi: 10.1038/S42254-020-00245-7
-
Kanamori, Y., & Yoo, S.-M. (2020). 量子计算:原理与应用. 《国际技术与信息管理期刊》29(2). 取自
scholarworks.lib.csusb.edu/jitim/vol29/iss2/3
-
Kaoudi, Z., Quiané-Ruiz, J.-A., Thirumuruganathan, S., Chawla, S., & Agrawal, D. (2017). 基于成本的梯度下降优化器. 第 2017 年 ACM 国际数据管理会议论文集. doi: 10.1145/3035918
-
Kellerer, Hans 等. “带固定成本和最小交易批量的投资组合选择.” 《运筹学年刊》99 (**2000): 287-304.
-
Knill, E. (1996). 量子伪代码的约定. 取自
www.osti.gov/biblio/366453
-
Li, W., & Deng, D. L. (2021). 量子分类器的最新进展. 《科学中国物理学、力学与天文学》2021 65:2, 65(2), 1–23. doi: 10.1007/S11433-021-1793-6
-
Li, Z., Dai, J., Pan, S., Zhang, W., & Hu, J. (2020). Deutsch-Jozsa 电路的合成与 IBM Q 的验证. 《国际理论物理期刊》59(6), 1668–1678. doi: 10.1007/S10773-020-04434-Z/FIGURES/11
-
Martín-Guerrero, J. D., & Lamata, L. (2022). 量子机器学习:教程. 《神经计算》470, 457–461. doi: 10.1016/J.NEUCOM.2021.02.102
-
Mccaskey, A., Nguyen, T., Santana, A., Claudino, D., Kharazi, T., & Finkel, H. (2021). 扩展 C++以支持异构量子-经典计算. 《ACM 量子计算学报》2(2), 1–36. doi: 10.1145/3462670
-
Mengoni, R., & Di Pierro, A. (2019). 量子机器学习中的核方法. 《量子机器智能》2019 1:3, 1(3), 65–71. doi: 10.1007/S42484-019-00007-4
-
Meyer, D. (2015). 支持向量机 * libsvm 接口在 e1071 包中的应用. 取自
www.csie.ntu.edu.tw/~cjlin/papers/ijcnn.ps.gz
-
微软公司. (2017). 开始量子开发之旅. 开始量子开发之旅. 取自
www.microsoft.com/en-us/quantum/development-kit
-
Milanov, E. (2009). RSA 算法. 取自
sites.math.washington.edu/~morrow/336_09/papers/Yevgeny.pdf
-
Mitarai, K., Negoro, M., Kitagawa, M., & Fujii, K. (2018). 量子电路学习. 《物理评论 A》98(3), 032309. doi: 10.1103/PHYSREVA.98.032309/FIGURES/6/MEDIUM
-
Montanaro, A. (2016). 量子算法:概述. 《npj 量子信息》2016 2:1, 2(1), 1–8. doi: 10.1038/npjqi.2015.23
-
Ömer, B. (2002). 程序化量子编程。AIP 会议论文集,627(1),276. doi: 10.1063/1.1503695
-
Park, D. K., Blank, C., & Petruccione, F. (2020). 基于量子核的二元分类器理论。物理快报 A,384(21),126422. doi: 10.1016/J.PHYSLETA.2020.126422
-
Patterson, S. (2019). 学习 AWS 无服务器计算:AWS Lambda、Amazon API Gateway 及 Amazon Web Services 服务的初学者指南。 Packt 出版。
-
Schuld, M., & Petruccione, F. (2018). 使用量子计算机的监督学习。Springer 国际出版。 doi: 10.1007/978-3-319-96424-9
-
Shor, P. W. (1994). 量子计算算法:离散对数与因式分解。会议录 - IEEE 计算机科学基础年会,FOCS,124–134. doi: 10.1109/SFCS.1994.365700
-
Skorohod, A. V. (2012). 希尔伯特空间中的积分(Springer 科学出版社)。Springer 柏林海德堡。
-
Wang, D., Higgott, O., & Brierley, S. (2019). 加速变分量子本征求解器。物理评论快报,122(14),140504. doi: 10.1103/PHYSREVLETT.122.140504/FIGURES/3/MEDIUM
-
Yung, M. H. (2019). 量子霸权:一些基本概念。国家科学评论,6(1),22–23. doi: 10.1093/NSR/NWY072
第三章:量子金融领域
量子计算在解决各个领域的众多挑战方面具有巨大的潜力,金融行业也不例外。凭借其强大的计算能力,量子计算能够显著提升股票交易所、银行和技术分析师的效率和能力,通过实现更复杂的仿真和优化模型。许多大型银行已经开始探索量子技术,旨在解决如欺诈检测、信用卡发放可解释性、期权定价和资产压力测试等问题。
本章深入探讨了金融服务在社会中的作用,并考察了它们面临的关键挑战,这些挑战可能通过量子计算得到解决。本章介绍了不同类型的金融机构,并突出了金融服务领域中的关键问题。此外,本章还概述了为创建一个能够促进量子计算在金融中应用的工作环境所需的准备工作,确保技术要求和账户得到妥善设立。通过理解量子计算在金融领域的潜在影响,相关方可以更好地为未来做好准备,迎接这项技术在解决复杂问题和推动创新中的关键作用。
在本章中,我们将探讨理解金融服务领域的各个重要话题:
-
金融机构类型介绍
-
金融服务中的关键问题
此外,本章还将提供有关为后续章节中将呈现的实际练习准备工作环境的指导。这包括确保技术要求得到满足,账户正确设置,从而实现无缝的学习体验。通过涵盖这些基本话题,我们旨在为理解金融服务领域及量子计算等新兴技术在解决其最紧迫挑战方面的潜在影响提供全面的基础。
金融机构类型介绍
金融行业对一个国家经济的健康和增长至关重要。这个行业负责为企业和零售消费者提供基本的金融服务。如图 3.1所示,金融领域是一个多元化的生态系统,涵盖了银行、投资公司、保险公司、房地产经纪人、消费融资公司、抵押贷款机构和房地产投资信托(REITs)。这些组织共同为经济的稳定和扩展作出贡献。
除了提供贷款和抵押贷款外,金融行业还在向个人和企业提供保险服务方面发挥着至关重要的作用。这确保了个人和商业资产能够抵御不可预见的风险,促进了经济中的安全感和稳定性。金融行业提供的就业机会广泛,数百万人在行业的各个职位上工作。从初级岗位到高层管理职务,这个行业为拥有不同技能和兴趣的个人提供了多样化的职业发展路径。此外,金融行业在帮助个人建立和维持退休基金方面起着关键作用,提供长期的财务保障和安心感。许多世界上最知名的银行,如摩根大通(JPMorgan Chase)、美国银行(Bank of America)和高盛(Goldman Sachs),是金融行业的关键参与者,它们的表现对标准普尔 500 指数具有重要影响。这些机构以及该行业的其他机构的成功,体现了一个强大而繁荣的经济。
图 3.1 – 金融机构类型
零售银行
零售银行充当存款人和借款人之间的中介。它们促进资金流动,确保为有信用需求的人提供资金,同时为存款提供安全存储和利息。这些银行在经济中发挥着关键作用,促进资金流通,支持企业和个人的成长。此外,零售银行还提供各种金融服务,如汇款、信用卡和投资产品。零售银行的金融稳定性对于保持健康的经济至关重要。通过谨慎管理风险并遵守监管要求,它们可以保护存款人的资金,并为借款人维持可靠的信用来源。零售银行是一个竞争激烈的行业,银行们不断争夺存款和客户。因此,它们必须不断创新,开发新产品,以保持对客户群体的吸引力和相关性。
投资银行
投资银行在帮助公司进入金融市场并筹集资本方面起着至关重要的作用。一个显著的方法是通过促成首次公开募股(IPO),使公司能够上市并向投资者提供股票。除了筹资服务外,投资银行还向主要机构提供主经纪业务和证券融资。这些服务使大规模客户能够以更高的效率和灵活性进入金融市场。投资银行的收入主要来自咨询和承销费用。这些费用作为对其专业知识和帮助客户应对复杂金融交易的补偿。此外,投资银行还通过金融市场交易赚取收入。通过参与各种交易活动,他们能够利用市场波动并从金融市场的动态性中获利。
投资管理人
投资管理人服务于个人和机构客户,涵盖了共同基金、ETF 和对冲基金的管理者。共同基金和 ETF 管理人向零售和机构客户提供预设服务,通过基于总资产的管理费来创造收入。对冲基金主要面向机构和富裕个人,“对冲基金”这一术语包括了替代资产管理策略,如私募股权、风险投资和商品交易 顾问(CTAs)。
政府机构
投资管理人向个人和机构客户提供投资服务,如共同基金、ETF 和对冲基金管理。共同基金和 ETF 管理人提供针对不同类型投资者需求的预设投资解决方案。为了创造收入,共同基金和 ETF 管理人收取基于管理资产总额计算的资产管理费。这笔费用是为了补偿他们为客户提供的专业知识和服务。另一方面,对冲基金服务于机构和高净值个人,提供包括私募股权、风险投资和商品交易咨询等替代资产管理服务。对冲基金通过基于业绩的费用来创造收入,这些费用按所产生利润的百分比计算。投资管理人根据客户的特定需求提供定制化的投资解决方案。他们通过基于资产或业绩的费用赚取收入,具体取决于基金的类型及其客户。
交易所/清算所
股票市场交易所作为公司交易股票的平台。为了能够交易,股票必须在交易所上市。购买和销售订单会被整理在订单簿中,交易发生在订单匹配时。电子交易所每天可以执行数百万笔交易,而清算所则结算账户并管理风险,包括现金结算的衍生品交易。总而言之,股票市场交易所和清算所共同合作,为公司和投资者提供一个安全高效的交易环境。
支付处理器
支付处理器对于促进各方之间的安全金融交易至关重要。它们充当中介,管理买卖双方之间的资金交换。支付处理器采用先进的安全措施来保护金融数据并防止欺诈。它们为企业提供定制的支付解决方案,包括移动支付和国际支付选项。支付处理器使全球交易成为可能,帮助企业扩展并优化支付流程。
保险提供商
保险公司向个人提供寿险、健康险、车辆险和房屋保险,并向企业提供海上保险、数据泄露保险和工人赔偿保险。保险的目的是将财务损失的风险从投保人转移到保险公司,换取保费。保险单为个人和机构提供安全感和心理安慰。寿险支持投保人在其去世时的受益人,而健康险则涵盖医疗费用。车辆险和房屋险则保护投保人财产损失或损坏。对于企业而言,保险对于减轻因各种事件导致的财务损失风险至关重要。保险行业不断发展,以确保个人和机构能够获得必要的保障,保护其财务利益。
以下部分将讨论金融机构在为客户服务时面临的挑战。
金融服务中的关键问题
金融服务可以分为银行、金融服务和保险。银行必须管理客户期望,保持贷款质量,并防止客户流失,而金融市场参与者必须定期进行压力测试,以避免未来的麻烦。金融服务必须与时俱进,跟上技术进步,以满足客户不断变化的需求。保险公司必须正确迅速地向真实客户支付赔偿金,遵守监管合规要求,并投资于强有力的欺诈检测和预防措施。克服这些挑战需要持续的技术投资、员工培训,并承诺为客户提供高质量的服务。
银行业务通过商业银行和投资银行为客户提供存款和贷款服务。它们必须管理客户的期望,并在利率波动的动态环境中防止客户流失。另一方面,向有良好信用记录的合格客户提供贷款,对于保持贷款质量和避免未来危机至关重要。同样,金融市场参与者必须定期对其资产进行压力测试,以预测并避免因市场条件不确定而导致的未来问题。对于保险行业而言,及时且准确地向真正的客户支付理赔金额被定义为成功的关键指标。
银行 | 金融市场 | 保险 |
---|---|---|
货币当局 | 大宗商品 | 健康保险 |
零售银行 | 股票交易所 | 财产与意外保险 |
商业银行 | 债券市场 | 寿险与年金 |
投资银行 | 货币市场 | 再保险 |
非银行金融机构 | 衍生品 |
图 3.2 – 金融服务行业的细分
接下来的章节将列出金融机构面临的问题,稍后的书中我们将讨论一些由技术推动的解决方案,如量子计算,可能在初期阶段提供优势的案例。
资产管理
资产管理在这一过程中扮演着至关重要的角色,因为它涉及到规划和知识,旨在减少与一组资产相关的风险和成本。风险是金融互动中的一个重要驱动因素,像 2008 年金融危机这样的事件凸显了对银行和保险公司进行压力测试的重要性,以防止系统性市场危机的发生。投资者旨在在预期回报和风险之间找到平衡,分散投资组合是实现这一平衡的一种方式。然而,无法预见的事件仍然可能发生,监管机构和金融实体必须保持警惕,以控制金融领域的风险。尽管监管机构已加强与金融实体的互动,以防止此类事件在未来发生,但人类行为和金融市场的复杂性仍然是一个挑战。总体而言,管理资产和风险在金融领域是一个至关重要的考虑因素,因为它影响着投资回报的潜力以及整个系统的稳定性。虽然压力测试和监管控制有助于减轻风险,但持续的警惕和准备仍然是防止系统性市场危机发生的必要条件。
风险分析
评估与资产相关的风险至关重要,特别是在处理货币市场基金(MMFs)时。短期利率和行业特定的评估等因素可能会影响这些基金的波动性。此外,消费者行为和短期利率的波动也会对投资组合管理产生显著影响。
为了对货币市场基金(MMF)的健康状况进行彻底评估,监管机构提供了指导方针,概述了需考虑的极端情境和风险。这为理解这些基金的全球状况提供了坚实基础。例如,《货币市场基金条例》(MMFR)第 28 条第 7 款要求由欧洲证券和市场管理局(ESMA)提供压力测试指南,确保所有 MMF 在考虑的情境中具有同质性。检查最新的 ESMA 报告揭示了在压力测试中突出的风险,涵盖了流动性水平、信用和利率风险、赎回水平以及宏观经济冲击等方面的影响。
图 3.3 – 来源于 ESMA 压力测试指南的资产流动性风险影响公式
评估这些因素的主要驱动因素是净资产值(NAV),定义为投资基金资产的净值,减去其负债后,再除以剩余股份的数量。通过将 NAV 投射到各种潜在的未来情境中,监管机构可以评估,例如,流动性风险对投资基金资产的影响。这个过程需要一系列全面的指标,这不可避免地给所需技术带来了压力,以涵盖所有必要情境并向监管机构提交详细报告。
虽然监管机构提供了模拟压力净资产值(NAV)的校准条件,但实际产生准确模拟的方法在很大程度上由从业人员自行决定。他们必须确定如何根据其资产的特定参数化评估潜在的价值波动。一种方法是通过统计评估历史数据,识别未来趋势和波动模式,考虑过去的危机和突发事件作为潜在的(尽管不太可能的)选项。探索所有这些未来情境需要采用诸如蒙特卡罗模拟等方法,这是一种在此领域广泛采用的技术。
在接下来的第四章中,我们将深入探讨这些情境的模拟以及监管报告所需的参数化和校准过程。此外,我们还将研究量子计算机如何潜在地增强对未来净资产值(NAV)分配的评估,并在不同情境中建立效率前沿。通过利用量子计算机叠加不同选项的能力并同时评估多个情境,量子计算机可以显著加速这些高强度压力测试所需的并行计算,从而在金融风险管理中发挥无可替代的作用。
投资与投资组合
金融服务的任务是管理投资组合,以在不妥协风险的前提下最大化实体和客户的收入。这一微妙的平衡需要在投资组合优化方面的专业知识,而这通常会消耗这些机构大量的 IT 资源。除了压力测试之外,生成一组平衡预期收益和容忍风险的选项还涉及评估可能的无限选择,这是一个复杂且要求极高的工作。资产定价对于压力测试和监管报告至关重要,同时也是预测潜在市场情景和做出明智投资决策的关键。尽管蒙特卡罗模拟已被广泛应用,但历史数据的可用性以及预测和多元时间序列的进展,促使了机器学习(ML)在生成和评估特定市场中相关值未来情景的应用大幅增长。
金融行业包括各种类型的银行和银行活动,其中投资银行被视为商业银行的一个专业子集。投资银行主要服务于实体而非个人,管理着一系列复杂程度不同的资产。它们的收入主要来自于所管理活动的利润,这使得它们与商业银行和零售银行的核心服务有所区别,后者专注于为大众和大型机构提供存款、贷款以及信贷生成。传统上,投资银行家依靠经验和市场接触来确定交易价格。然而,数据和技术的可用性使得投资活动得以在更大规模上进行,且结果更具统计学依据,减少了人为偏差。因此,近年来投资银行一直是技术进步的早期采纳者,拥抱新的信息范式、云计算转型、大数据存储和处理,以及如人工智能(AI)和机器学习(ML)等前沿技术,用于优化商业流程和产生更好的洞察。
投资者的一项关键任务是识别最有效的资产配置方案,在给定预算内最大化预期回报。未来趋势的不确定性以及某些情景下可能出现的负回报(损失)要求在风险的概念下管理这些可能性。在第五章中,我们将系统地探讨这一问题,但重要的是要理解,资产选择的驱动因素有两个主要概念:回报和风险。投资专业人士的专业知识在权衡这两个因素的取舍中发挥着重要作用。评估风险,也就是资产波动性,对于优化资产组合至关重要。虽然有许多复杂的技术可以用来确定风险,但遍历一个实体可能面临的潜在情景既费时又计算量大。人工智能和机器学习可以提供启发式方法,在这个复杂的潜在组合环境中逼近解决方案。无监督学习等技术可以基于不同的盈利模式对生成的组合进行分割,为组合分析提供一种快速的方法。
使用监督学习技术(如 DeepMind 所采用的技术)因其能够从数据中推导出成功的策略,甚至是自生成的数据,并为特定任务提供可操作的建议而日益受到关注。这种自动化使得高频交易成为可能,能够捕捉市场中的微小变化,可能会超越人工驱动的活动。然而,这项技术也伴随其自身的风险,因为高度自动化的系统如果不加以控制,可能在毫秒之间引发全球性危机。这突显了在利用技术力量的同时,理解其潜在后果的关键平衡。
个人画像和数据驱动的服务
大规模数据集的出现以及用户与机构之间不断发展的互动渠道彻底改变了银行业,为改善这些互动的个人画像和个性化服务铺平了道路。人类行为和商业流程都已通过数字化互动发生了变化,从而提供了更好的策划和定制服务。例如,投资银行在协助公司满足资本需求方面发挥着关键作用,充当公司与投资者之间的中介角色。它们帮助客户确定债券发行的数量和时机,以及评估市场需求。
机器学习为投资银行提供了有前景的进展,使其能够通过提供数据驱动的选项和有价值的市场洞察来增强客户体验。机器学习帮助客户最大化交易价值,同时最小化潜在的财务损失。机器与人类的结合证明比单独依赖任何一方更为强大,计算机辅助方法在传统方法中的优势和潜在风险已日益显现。根据德勤的报告,人工智能可以贯穿并购(M&A)生命周期,提供深入的尽职调查,辅助谈判并促进并购后的整合。
银行内部的信用卡评估过程也经常使用人工智能(AI)和机器学习(ML)模型。在零售和企业银行中,定制化用户体验对于减少流失率并为客户提供有价值的产品和服务推荐至关重要。AI/ML 模型通过数据实现详细的用户画像,使信息能够有针对性地传递给客户。
随着金融机构越来越多地采用技术,在制定战略决策时,考虑机会和局限性至关重要。关键问题包括投资银行是否应更多依赖数据而非经验或监管理解,以及科技公司和银行是否应共享数据,以便在信息化经济中从机器学习(ML)中受益。同时,必须解决有偏见的机器学习模型可能导致信用卡尽职调查不足和歧视性贷款行为的问题。
使用数据驱动决策的公司必须确保对自动化结果负责,并且确保采取适当的控制措施,以确保在整个过程中做出无偏且符合伦理的决策。不充分或有偏的决策不仅可能损害这些智能技术所应用的业务流程,还可能损害未能对其客户互动进行充分监管的机构的声誉。
技术正在不断进步,提供公平性和偏见评估的工具,从可解释的人工智能(AI)向伦理人工智能(AI)发展。这是一个复杂的问题,因为伦理标准在不同国家、文化区域,甚至在具有不同宗教背景的个体之间可能存在差异。量子机器学习(Quantum ML)是科学界正在探索的一个领域,旨在提供改进的人群划分和信息复杂度降低方法,而不引入偏见。诸如概率量子聚类和量子特征选择等技术正在出现,以增强机器学习工具箱,更高效且公平地处理大规模高维数据集。
客户识别与客户留存
传统银行面临来自创新型初创企业和金融科技公司持续的竞争,这些公司利用人工智能和机器学习提供高效、快速的解决方案。这些新兴企业因其创新和透明的产品与服务而著称,正在改变金融格局。传统银行则在严格的监管、挑剔的客户和缺乏产品差异化的困境中挣扎,这些因素限制了它们的盈利能力。为了在这个不断发展的市场中取得成功,银行必须优先考虑建立和维护客户信任。客户服务对于保持客户至关重要,但传统银行往往在通过实体基础设施和客户服务人员提供卓越服务方面遇到困难。人工智能为银行业提供了显著提升客户服务的潜力,它能够提供可扩展性、个性化、质量、一体化体验和广泛的信息访问。人工智能可以以更低的运营成本实现这些优势,既能取悦客户,又能增加支出与产品收入之间的利润差距。
信任是金融行业的核心要素,许多金融机构至今仍在应对由 2008 年金融危机引发的信任危机。这种信任缺失妨碍了金融公司获取新客户的能力,并可能导致客户获取成本上升。客户与金融服务提供商之间的强大关系对于长期成功至关重要。客户生命周期价值(CLV)的概念在这一关系中占据核心地位。客户在金融机构的停留时间越长,他们的 CLV 就越高。当客户经历负面体验时,他们更可能离开,从而降低 CLV 并导致获取成本的损失。然而,优质的客户服务可以提高客户保持率,阻止客户寻求替代方案,并最终提高 CLV。满意的客户更有可能推荐他人使用其金融服务提供商的服务,从而降低客户获取成本并增加利润。
在数字化时代,平衡客户保持与准确识别有价值客户的能力对于金融机构至关重要。必须实施客户画像和精准营销策略,以吸引大多数客户群体。然而,系统性地执行这些策略可能会带来挑战,银行必须做好应对准备。总之,金融行业的数字化为传统银行带来了机遇和挑战,它们在努力适应不断变化的环境时,必须找到合适的应对方式。通过利用人工智能(AI)和机器学习(ML),银行能够提升客户服务,建立信任,并增强客户体验。然而,银行也必须应对客户画像和精准营销的潜在风险,确保制定公平、无偏、有效的客户保持和客户获取策略。
信息差距
一个机构作为一个复杂的系统运作,客户与核心银行流程之间有多个层次的互动。客户在联系一个组织的联络中心时,通常会遇到延迟,因为客服代表需要时间收集有关客户及其产品或服务的相关信息。客户互动的复杂性、他们的满意度、投诉历史以及基于客户生命周期价值(CLV)、信用评分或一般银行政策的整体策略,对于呼叫代理来说,在流畅的对话中综合这些信息是具有挑战性的。事实上,缺乏同理心和互动能力的呼叫代理可能会导致客户对其银行机构的不满。
持续的数字化革命使客户能够通过数字渠道直接访问和管理他们的服务,如网站、应用程序和家庭助手。银行流程的数字化和客户互动的数字化改变了银行业务的进行方式,并促进了更智能的决策制定。自然语言互动和对个体需求与询问的理解已成为可能,同时还可以通过行为分析来衡量客户的满意度。随着人工智能(AI)和机器学习(ML)技术的广泛应用,银行现在可以提供个性化且高效的客户体验。这些技术不仅增强了客户互动,还为银行高层提供了有价值的见解。全面的 360 度客户视图使决策者能够评估特定客户或群体,从而确保做出以客户需求和满意度为优先的明智决策。
此外,银行业的数字化转型扩展了交叉销售和增销的潜力。通过分析客户数据和偏好,银行现在可以提供量身定制的产品和服务推荐,从而加强客户关系并增加整体收入。尽管数字化带来了好处,但金融机构在与客户互动时仍必须保持人性化的接触。随着技术的进步,银行必须在利用数字渠道和保持同理心、个人化的客户关系之间找到平衡。确保客户感到被重视和理解应始终是首要任务,即使在机构采用创新解决方案的同时。
银行业务流程和客户互动的数字化已经彻底改变了行业,提供了更智能决策、个性化体验和提升客户满意度的机会。随着金融机构继续采用这些数字技术,它们也必须优先考虑保持与客户的强大同理心联系,以确保长期成功和银行关系中的信任。
定制化
在今天竞争激烈的市场中,服务个性化对于取悦客户至关重要。认识到每个个体都是独特的,标准化的方法和程序无法提供量身定制的解决方案。能够处理各种流程和操作的人工智能工具,提供了一种在不牺牲效率的情况下交付定制化体验的方式。因此,人工智能在可扩展性、个性化和成本效益之间找到了平衡,使其成为大型组织维持竞争优势的理想解决方案。
客户获取需要高销售量和多个接触点,通常需要增加基础设施和人力资源。扩展实体网点和雇佣更多的客户服务代表可能会增加成本,同时也可能导致不同地点之间公司政策执行的不一致。然而,本地化的专业知识和个性化的互动仍然是客户满意度的关键组成部分。过于笼统的人工智能系统可能会破坏成本效益自动化与客户满意度之间的微妙平衡,突显了量身定制解决方案的必要性。
在银行业开发和实施人工智能或机器学习解决方案需要相当大的努力,以确保与现有流程的无缝集成。必须分析大量的交易、客户互动、产品生命周期和快速变化的市场活动,以识别模式并充分利用这些先进技术。此外,在从这些系统中策划和提炼知识时,融入公平和无偏模型交付的方法至关重要。
人工智能应用的一个例子是使用面部识别技术简化客户注册和身份验证过程。这项技术在智能银行趋势中获得了广泛应用,但在处理肤色较深的个体时出现了几起偏见案例。这种歧视性做法可能会显著损害金融机构的声誉,因此解决人工智能系统中的潜在偏见变得至关重要。
个性化是满足客户期望并保持银行业竞争优势的关键。人工智能为提供量身定制的体验提供了强大的解决方案,同时保持效率和成本效益。然而,金融机构必须仔细考虑人工智能实施的潜在陷阱,如偏见和公司政策的不一致执行,以确保与现有银行流程的成功整合。随着金融行业不断接受人工智能和机器学习技术,优先考虑这些先进工具带来的好处和潜在风险至关重要。通过在个性化、可扩展性和公平性之间找到平衡,银行可以利用人工智能提供卓越的客户体验、建立信任,并确保在不断发展的市场中实现长期成功。
欺诈检测
除了客户生命周期价值(CLV)定制化的效果外,许多企业面临的一个关键问题是识别并采取反欺诈措施的能力。这是一个关键问题,因为它会破坏企业的活动,带来风险,而客户本应是企业活动的资产。
鉴于能够对客户群进行细分和画像,显然可以使用 AI 或 ML 技术来实现这一目的。它可以识别欺诈者,预测尚未表现出该行为的现有客户的模式,并限制这些潜在未来行为可能对企业业务活动造成的损害。
这也是一个敏感性问题,因为我们的模型可能会将某个客户标记为欺诈行为者,而这仅仅是与该行为发生概率相关的预测。这就要求在训练和评估欺诈检测模型时采用最佳实践,因为模型的敏感性和特异性需要针对正确的使用进行调整。幸运的是,在一般情况下,违约者是少数,这也意味着在评估客户群体中的这一情况时,企业可能可用的数据中发现的证据较少。
在讨论了一些最佳实践和执行此类评估的关键点之后,我们将在第六章中看到,QML 模型如何帮助扩大可用于执行此任务的模型范围,并且在某些情况下,由于量子神经网络在文献中表现出的表达能力,我们可能在经典方法上拥有优势,尽管这种优势可能是微小的,但它对业务可能产生实质性的影响。
总结
金融机构涵盖了从零售银行和投资银行到保险公司等广泛领域,在促进交易和风险管理方面扮演着不可或缺的角色。资产管理作为一项关键职能,通常采用压力测试和监管控制来评估和减轻与资金市场基金等资产相关的风险,这一过程在未来可能通过量子计算得到加速和增强。资产组合优化作为金融服务的另一个基础方面,将预期收益与相关风险进行平衡,并日益利用人工智能(AI)和机器学习(ML)等先进技术。随着这些技术在投资领域的日益重要,彻底理解这些自动化技术的影响变得至关重要。金融机构采用 AI 和 ML 不仅旨在提升客户体验和优化业务运营,还力图保持伦理标准和问责制。这一技术进步还带来了来自金融科技初创企业的挑战,这些企业利用这些技术,从而强调传统银行需要不断建立客户信任并改善服务交付。客户互动渠道的持续数字化转型促进了智能决策的形成,并使得银行流程能够实现自然语言交互,从而提高客户满意度。同时,AI 和 ML 模型的应用必须在追求个性化和效率的同时,注重公平性和无偏性,以保障机构声誉。最后,AI 和 ML 可以作为有效工具,帮助检测客户群体中的潜在欺诈行为,并制定适当的对策,这要求遵循最佳实践并进行谨慎评估。
在下一章中,将使用经典和量子算法来确定衍生品定价。
进一步阅读
本章中简要介绍的部分主题背后有着丰富的文献资料。金融服务已经存在一段时间,许多资源可以供那些初涉此领域并希望了解我们在金融量子计算专门材料中所涉及的主题的读者深入学习。
有关衍生品定价、资产组合优化和欺诈检测的问题和技术将在各自的章节中参考具体文献。此外,下一章还将深入探讨计算金融中使用的技术。
对于那些希望更好理解银行业复杂生态系统及其运作方式的读者,关于金融市场的一些有趣参考文献包括 Pagano(1993 年)和 Bond 等人(2012 年)的出版物。
对于关注金融市场中的伦理和公平问题的人来说,Shefrin & Statman (1993) 的论文可能会有所帮助。如果您的兴趣与人工智能和机器学习领域中的伦理挑战相关,并且全球企业都有应用,您可能会对 Jobin 等人(2019)的研究感兴趣。
关于风险评估指南、压力测试指南及一般概况,我们强烈建议浏览 ESMA 网站(www.esma.europa.eu/
)以及美国政府问责局网站(www.gao.gov/
)。这些指南和建议较为通用,鉴于它们监管的市场规模,可能具有一般性用途,但我们建议您也查询当地主管机关的信息。
关于之前提到的本书未涉及但可能对您感兴趣的主题,我们想特别强调高频交易系统和推荐系统的相关性,这些系统如今可以在许多金融机构中进一步实现自动化。两者都是非常活跃的研究领域,但我们希望指出两项推荐,供那些对这些话题感兴趣的人参考。
Zibriczky (2016) 提供了一篇温和的入门文章,回顾了本章中呈现的、用于金融案例的不同类型推荐系统的相关实例。关于高频交易的参考文献有很多,因其普及性,Cartea 等人(2015)则提供了一本很好的合集,介绍并理解这些技术的基本原理。
尽管这些技术可能与该领域相关且有趣,但它们在量子领域中并未能提供与经典技术相对应的良好替代方案。尽管如此,量子计算每天都带来新的理念和应用,硬件提供商也在不断改进他们的产品,增加更多应用的容量,因此保持对该领域进展的关注非常重要。
参考文献
Bond, P., Edmans, A., & Goldstein, I. (2012). The real effects of financial markets. Annu. Rev. Financ. Econ., 4(1), 339-360.
Cartea, Á., Jaimungal, S., & Penalva, J. (2015). Algorithmic and High-Frequency Trading. Cambridge University Press.
Jobin, A., Ienca, M., & Vayena, E. (2019). The global landscape of AI ethics guidelines. Nature Machine Intelligence, 1(9), 389-399.
Pagano, M. (1993). Financial markets and growth: An overview. European economic review, 37(2-3), 613-622.
Shefrin, H. & Statman, M. (1993). Ethics, fairness, and efficiency in financial markets. Financial Analysts Journal, 49(6), 21-29.
Zibriczky, D. (2016). Recommender systems meet finance: a literature review. In Proc. 2nd Int. Workshop Personalization Recommender Syst (**pp. 1-10).
第二部分:量子计算在金融领域的高级应用
本节探讨了量子机器学习(QML)在多种金融领域中的作用。首先,分析了 QML 如何简化衍生品估值这一复杂任务。接着,研究了 QML 在重新定义投资组合管理中的潜力,这一过程涉及审慎的金融决策。随后,分析转向信用风险领域,QML 有助于更精确地识别潜在的违约者。最后,强调了这些量子技术在实际环境中应用的意义。
本部分包含以下章节:
-
第四章**,衍生品估值
-
第五章**,投资组合估值
-
第六章**,信用风险分析
-
第七章**,量子云中的实现
第四章:衍生品估值
衍生品定价是量化金融中最重要的方面之一。衍生品合约的总市场价值为 12.4 万亿美元(2021 年 12 月底场外衍生品统计数据 —— bis.org),使其成为最有利可图且最具挑战性的模拟与优化问题之一。尽管衍生品定价的许多方面可以通过经典计算来进行,但当需要进行多次计算时,基于门的量子计算机可以作为一种高效资源,因为它们能够并行处理并处理多个资产。本章探讨了衍生品定价的理论方面,并通过经典计算和基于门的量子计算机考察了其实时应用。
本章讨论了从普通人角度解释期权定价的必要性。期权定价的各个方面将以易于理解的方式进行描述。不同的案例研究和轶事将被融入,以使解释更加全面和详细。第一部分涵盖了衍生品定价的理论方面,同时也介绍了过渡到更复杂的量子机器学习(QML)模型的实际方面。
在后续部分,我们将看到一个使用经典计算和量子计算实现期权定价的演示示例。我们将通过经典的蒙特卡洛模拟方法推导出一个普通期权的估值。随后,一个包含代码片段的全面案例研究将帮助你理解如何在量子计算上实现衍生品定价的数学建模。
本章将涵盖以下主题:
-
衍生品定价——理论方面
-
衍生品估值的经典蒙特卡洛模拟实现
-
衍生品估值的量子计算算法
衍生品定价——理论方面
学习衍生品定价所涉及的因素至关重要。深入了解金融产品定价对于做出明智的投资决策至关重要,无论你是在市场的买方还是卖方。毕竟,了解一个产品的属性如何相互作用以产生价值,对于决定提供或竞标一个金融产品是必要的。理解金融资产的价格至关重要。资本资产定价模型及其基于贴现现金流的变体帮助确定金融资产的价值。然而,与传统资产如股票和债券不同,衍生品有其挑战,但也具有一些出乎意料的简单特性。在接下来的部分,我们将讨论货币的时间价值这一重要概念,这为证券定价奠定了基础。
货币的时间价值
金钱的价值随着时间波动。这具体意味着什么呢?假设你可以选择现在拿到 100 美元,或者一年后拿到 100 美元,你会选择哪一个?大多数人可能会选择尽快拿到 100 美元(也就是今天)。现金流越远离现在,它的价值就越低。类似的方法可以用来比较不同时间点现金流的价值。假设我们希望一年后得到 100 美元,而不是两年后。数学上,风险无关的利率是金钱价值随时间变化的原因。资金获得得越快,所能获得的利息就越快。通过计算现金流的现值并进行比较,我们可以比较在不同日期得到的不同金额的价值。
案例研究一
时间价值是金融学中的一个关键概念,它指的是今天的金钱比未来相同金额的金钱更有价值,因为它具有赚取回报的潜力。这个概念在许多金融决策中都非常重要,包括投资、贷款和其他交易。在本文中,我们将探讨一个时间价值的例子,背景是一个折现价格的未来案例,假设三年后有一笔 450 美元的现金流,折现率为 10%。
假设折现率为 10%,可以使用以下公式计算三年后 450 美元现金流的现值:
PV = FV * (1 + r) ^ n
其中 r 代表折现率,n 代表期数,PV 和 FV 分别表示现值和未来值。
使用这个公式,我们可以计算出三年后 450 美元现金流的现值,计算方法如下:
PV = 450 美元 * (1 + 0.1) ^ 3
PV = 300.30 美元
这意味着,在 10%的折现率下,三年后 450 美元的现值为 300.30 美元。换句话说,如果我们将在三年后收到 450 美元,并且想知道今天这笔现金流的价值,我们将把它折算回今天的现值 300.30 美元。
时间价值理论也可以应用于投资。例如,假设我们今天投资 1000 美元于一个承诺三年年回报率为 10%的基金。使用公式计算该笔一次性投资的未来价值,我们可以计算出这项投资的未来价值如下:
FV = PV × (1 + r) ^ n
FV = 1000 美元 × (1 + 0.1) ^ 3
FV = 1331 美元
如果我们今天以 10%的年回报率投资 1000 美元,三年后的投资价值将为 1331 美元。
因此,货币的时间价值是金融中的一个基本概念,在许多金融决策中起着至关重要的作用。无论是计算未来现金流的现值,还是计算投资的未来价值,理解货币的时间价值对于做出明智的金融决策和有效管理风险至关重要。通过运用本文讨论的公式和概念,投资者可以做出更好的金融决策,达成财务目标。以下部分将讨论证券定价的一个基本概念。
证券定价
证券定价是指确定股票、债券、期权及其他投资产品等金融工具的价值。证券的价格反映了市场上对该证券的供求关系,受多种因素的影响,包括公司业绩、经济状况和投资者情绪。
一般而言,证券的价格是通过市场中买卖双方的互动来决定的。当买方多于卖方时,证券价格会上涨;而当卖方多于买方时,价格则会下跌。
有几种方法用于确定证券的价格,包括以下几种:
-
市场定价:这是最常见的证券定价方法,通过证券的当前市场价值来确定其价格。市场定价通常适用于公开交易的证券,这些证券的价格通过在交易所的竞标和交易来确定。
-
基本面分析:该方法通过分析公司财务报表和其他相关信息来确定其内在价值。基本面分析考虑收入、利润、资产、负债和增长潜力等因素,来判断证券是被低估还是高估。
-
技术分析:该方法通过分析价格和交易量数据,识别可以用来预测未来价格走势的模式和趋势。技术分析通常与基本面分析结合使用,以做出投资决策。
-
期权定价模型:这些模型使用数学公式来确定期权合约的公允价值,考虑的因素包括标的资产的价格、到期时间以及标的资产的波动性。
除了这些方法外,市场参与者在确定证券价格时,还会考虑其他因素,如利率、通货膨胀、地缘政治事件和市场情绪。
案例研究二
证券定价是对股票、债券和其他证券等金融资产的定价过程。市场需求、经济状况和公司业绩都会影响证券定价。我们来看一个关于证券定价的例子,假设一家公司 ABC 发行了一只面值为$1,000,票面利率为 5%的债券,每年支付利息,期限为十年。
第一步 – 确定市场利率
市场利率是投资者期望从类似证券中获得的回报率。假设与 ABC 公司债券特征相似的债券的市场利率为 6%。
第二步 – 计算债券的现值
使用 6%的市场利率,我们可以通过以下公式计算债券的现值:
PV = C _ (1 + r) n + FV _ (1 + r) n
对于 ABC 公司的债券,年利息支付为1,000 面值的 5%),债券的期限为 10 年。使用这些数值和 6%的市场利率,我们可以计算债券的现值如下:
PV = 50 _ (1 + 0.06) 2 + … + 1,000 _ (1 + 0.06) 10
PV = 50 _ 1.236 + … + 385.54
PV = $850.31
第三步 – 确定债券的市场价格
债券的市场价格是债券预期现金流的现值。在本例中,ABC 公司债券的市场价格为$850.31,这是年利息支付和面值按 6%的市场利率折现后的现值。
第四步 – 将市场价格与面值进行比较
如果市场价格低于面值,则债券以折扣价格出售;如果市场价格高于面值,则债券以溢价出售。在本例中,ABC 公司债券的市场价格低于面值$1,000,这意味着该债券以折扣价出售。
因此,证券定价是一个复杂的过程,涉及分析影响金融资产价值的各种因素。通过理解证券定价的原理并使用适当的估值方法,投资者可以做出明智的买卖决策,最大化回报并管理风险。接下来的部分将讨论衍生品定价的过程和方法。
衍生品定价
衍生品定价是金融投资组合管理中的一个重要方面。在广泛的金融工具领域中,衍生品顾名思义,从其所代表的资产中衍生出价值。这些资产或证券可能由股票、债券、商品或货币表示。衍生品定价涉及确定这些工具的公允价值,可用于交易、对冲或投机目的。
影响衍生品定价的因素
有几个因素可能会影响特定衍生品的价格。相关因素包括标的资产的价格、到期时间、标的资产的波动性和利率。例如,如果标的资产的价格上升,那么该资产的看涨期权的价格也会增加,而看跌期权的价格则会下降。同样,如果到期时间增加,期权的价格也会增加。标的资产的波动性也是定价衍生品的重要因素,因为更高的波动性意味着资产有更大的可能性朝着预期的方向波动。最后,利率也会影响衍生品的价格,因为它会影响借贷成本和持有标的资产的机会成本。
衍生品定价的方法
定价衍生品的方法有几种,包括布莱克-斯科尔斯模型、二项式期权定价模型和蒙特卡罗模拟。布莱克-斯科尔斯模型是一个用于定价欧式期权的数学模型,它假设标的资产的价格遵循对数正态分布。二项式期权定价模型是一个离散时间模型,它使用树状结构表示标的资产价格的可能结果。蒙特卡罗模拟是一个随机模型,它通过随机抽样模拟标的资产的价格路径,并计算衍生品的期望值。
衍生品定价所涉及的风险
衍生品定价涉及多种风险,包括市场风险、信用风险和操作风险。市场风险源于标的资产价格的变化,这可能影响衍生品的价值。信用风险则是当一方未能履行其对另一方的义务时,可能导致违约。操作风险源于衍生品交易、结算或会计过程中的错误,这可能导致财务损失。
衍生品定价是金融投资组合管理中的一个关键方面,因为它允许投资者对冲风险、预测市场波动并制定定制化的投资策略。定价衍生品的方法有多种,包括布莱克-斯科尔斯模型、二项式期权定价模型和蒙特卡罗模拟。然而,衍生品定价也涉及多种风险,包括市场风险、信用风险和操作风险。因此,彻底理解这些风险并采取适当的风险管理策略,以将其对金融投资组合的影响降到最低,至关重要。
案例研究三
证券定价的一个例子是股票期权的定价。股票期权是一种衍生工具,持有者在没有义务的情况下,拥有在特定时间内以合同约定的价格(即执行价格)买入或卖出特定数量股票的权利。正如前面所提到的,股票价格可能会受到多个因素的影响。
例如,假设我们考虑 XYZ 公司 100 股认购期权,执行价格为 50 美元,三个月后到期。如果 XYZ 公司当前的市场价格为 55 美元,则该期权的内在价值为每股 5 美元(市场价格与执行价格的差额)。然而,期权的价格还会受到诸如到期时间、股票波动性和利率等因素的影响。
假设股票的波动性较高,表明股价有更大的波动可能,而利率较低,借款成本较低。在这种情况下,期权的价格会较高,因为股票价格朝着期望方向波动的可能性增大,期权的价值也随之增加。相反,如果股票的波动性较低而利率较高,期权的价格会较低,因为股票价格朝着期望方向波动的可能性较低,借款成本较高。总体而言,证券定价(如期权)涉及评估多个因素,并使用各种定价模型来确定公允价值。定价过程帮助投资者做出明智的投资决策,并有效管理风险。
证券定价过程包括多个步骤,以下是其中的一些:
-
识别证券:定价证券的第一步是识别所定价的具体证券。这可能是股票、债券、期权或其他金融工具。
-
收集信息:收集关于证券的所有相关信息,包括当前市场价格、历史价格趋势、可能影响其价值的新闻或事件,以及任何相关的风险。
-
确定定价因素:证券的价格受多种因素的影响,包括供需关系、利率、经济状况和市场情绪。识别可能影响证券价格的最相关因素。
-
选择定价模型:有多种定价模型用于确定证券的公允价值,包括折现现金流(DCF)模型、股息折现模型(DDM)以及用于期权的布莱克-舒尔斯模型。根据所定价证券的类型和可用信息,选择最合适的模型。
-
计算价格:一旦选择了定价模型,就使用相关的定价因素和模型所需的假设来计算证券的公允价值。这可能涉及复杂的数学计算,特别是对于期权和其他衍生品。
-
评估结果:评估定价模型的结果,确保计算出的价格合理,并与市场条件和其他可用信息一致。
-
定期更新定价:证券定价是一个持续的过程,价格可能会根据新信息和市场条件迅速变化。定期更新定价模型,并在需要时重新计算证券的价格,以确保投资组合保持最新,并准确反映证券的价值。
这表明,证券定价是一个复杂的过程,涉及多个步骤,包括识别证券、收集信息、确定定价因素、选择定价模型、计算价格、评估结果和定期更新定价。通过遵循这些步骤,投资者可以做出明智的投资决策,并有效管理风险。
衍生品定价 – 理论
Black-Scholes 模型广泛用于定价衍生品,如期权。Fischer Black 和 Myron Scholes 在 1973 年提出了这一公式,并且它已经成为现代金融的基石。该模型考虑了影响期权价值的多个因素,包括基础资产价格、期权的行使价格、到期时间、波动率和无风险利率。让我们考虑一个例子,使用 Black-Scholes 模型为股票的看涨期权定价。
假设 XYZ 股票的看涨期权行使价格为 50 美元,将在六个月后到期。当前股票价格为 52 美元,股票的波动率为 20%,而无风险利率为 3%。
第一步 – 计算 d1 和 d2 的值
d 1 = [ln S _ K + (r + σ 2 _ 2 )t ] ____________ (σ √ _ t )
d 2 = d 1 − σ √ _ t
其中,S 为当前股票价格,K 为期权的行使价格,r 为无风险利率,σ为股票的波动率,t 为到期时间(单位:年)。
使用给定的值,我们可以按如下方式计算 d1 和 d2:
d 1 = [ln 52 _ 50 + (0.03 + 0.2 2 _ 2 )0.5 ] ___________ (0.2 √ _ 0.5 ) = 0.
d 2 = 0.5601 − 0.2 √ _ 0.5 = 0.4187
第二步 – 计算期权价格
使用以下公式,我们可以计算出看涨期权的理论价格:
C = S × N(d 1) − K e −rt N( d 2)
其中 C 是看涨期权的理论价格,S 为当前股票价格,K 为期权的行使价格,r 为无风险利率,t 为到期时间(单位:年),N()为标准正态分布的累积分布函数。
使用给定的值,我们可以按如下方式计算出看涨期权的理论价格:
C = 52 × N(0.5601) − 50 e^−0.03*0.5 N(0.4187) = $4.42
第三步 – 分析结果
计算出的看涨期权理论价格为4.42 的价格购买期权,并在六个月内有权以54.42(执行价格加期权价格),投资者可以行使期权并获利。另一方面,如果股票价格低于执行价格,投资者可以让期权到期,仅损失购买期权时支付的权利金。
因此,布莱克-斯科尔斯模型是定价衍生品(如期权)的重要工具。通过考虑影响期权价值的各种因素,投资者可以做出明智的买卖决策,以管理风险并最大化回报。然而,需要注意的是,该模型存在一些限制和假设,例如假设波动率恒定且不存在交易成本,而这些假设在现实情况下可能并不总是成立。
布莱克-斯科尔斯-默顿(BSM)模型
BSM 模型被广泛认为是现代金融学中最重要的突破之一,其广泛应用使期权交易变得更加高效,并且让投资者更易参与。
BSM 模型使用六个变量来确定期权的公允价值。这些变量包括波动率、类型、股价、执行价格、时间和无风险利率。波动率指的是标的资产价格的波动幅度,而类型则指期权是看涨期权还是看跌期权。看涨期权是指买入权,而看跌期权则指卖出权。股价和执行价格分别指当前市场价格和可用于买卖标的资产的预定价格。时间指期权到期前的剩余时间。无风险利率是指无风险投资(如政府债券)的理论回报率。
BSM 模型常用于根据这六个变量来确定期权的公允价值。为了说明 BSM 模型,我们以一个例子为例:假设一位投资者持有一个执行价格为110,无风险利率为 3%,且标的资产的波动率为 20%。
使用 BSM 模型,我们可以计算出看涨期权的公允价值。使用 BSM 模型计算看涨期权公允价值的公式如下:
C = S × N(d1) − K e^−rt N(d2)
其中 C 是看涨期权的公允价值,S 是标的资产的当前市场价格,K 是期权的执行价格,r 是无风险利率,t 是到期时间,N(d1)和 N(d2)是累积分布的标准正态函数。
将公式应用到给定的例子中,我们得到:
d1 = [ln 110 _ 100 + (0.03 + 0.2 2 _ 2 )0.5 ] _________________ (0.2 √ _ 0.5 ) = 0.9568
d2 = 0.9568 − 0.2 √ _ 0.5 = 0.8154
N(d1) = 0.831
N(d2) = 0.7926
C = 110 × 0.831 − 100 × e −0.03×0.5 × 0.7926 = 13.29 美元
因此,看涨期权的公平价值为 13.29 美元。这意味着,如果投资者以该价格出售期权,根据 BSM 模型,这将是一个公平的价格。
BSM 模型是一个广泛使用的公式,允许投资者根据六个变量来确定期权的公平价值——波动率、类型、股价、行使价格、时间和无风险利率。该模型通过提高定价效率和透明度,彻底改变了期权市场。这里展示的例子说明了 BSM 模型的应用,并突显了它在现代金融中的重要性。
假设
BSM 模型是一个广泛使用的期权定价模型,假设了几个因素。这些假设对确定标的资产的公平价值至关重要,无论是看跌期权还是看涨期权。以下是 BSM 模型的一些重要假设:
-
有效市场:该模型假设市场是有效的,意味着所有可用信息会立即反映在资产的价格中。
-
没有股息:该模型假设标的资产在期权生命周期内不支付股息。
-
没有交易成本:该模型假设购买或出售标的资产或期权时没有交易成本。
-
没有套利机会:该模型假设不存在套利机会,即无法通过同时买入和卖出标的资产与期权来实现无风险盈利。
-
对数正态分布:该模型假设标的资产的价格遵循对数正态分布,即价格变化与当前价格及随机变量成比例。
-
恒定波动率:该模型假设标的资产的波动率在期权的生命周期内是恒定的。
这些假设可能是错误的,但它们提供了一个有用的框架,帮助理解影响期权价格的因素。
限制
BSM 模型是最广泛使用的期权定价模型之一。然而,尽管它很受欢迎,该模型有几个局限性,使其在某些期权和市场条件下不太适用。BSM 模型的一些局限性包括:
-
假设连续交易:BSM 模型假设标的资产的交易是连续的,这意味着股价可以通过无数小幅变化来调整。实际上,交易并非连续,股价可能因新闻事件、市场冲击和其他因素而突然发生大幅变化。
-
不考虑市场摩擦:BSM 模型假设没有交易成本、税费或其他市场摩擦影响基础资产的价格。实际上,这些摩擦可能会显著影响期权的价值。
-
假设波动率恒定:BSM 模型假设波动率在期权的生命周期内是恒定的。实际上,波动率可能会有很大的变化,并在短期内发生显著变化。
-
对特定期权的适用性有限:BSM 模型最适合用于定价欧式期权,这种期权只能在到期时行使。该模型对定价美式期权(可以在到期前行使)及其他复杂期权的适用性较差。
-
对特定市场条件的适用性有限:BSM 模型假设资产和市场上的行为分布是特定的。这限制了它在正常情况下的应用,不能涵盖所有类型的分布,从现实中观察到的偏态分布到正态分布。
-
采用风险中性方法:BSM 模型使用风险中性方法来定价期权,假设投资者对风险无偏好,期权的预期收益等于无风险利率。这个假设可能并不适用,特别是在高风险或流动性差的期权中。
尽管存在这些局限性,BSM 模型仍然是期权定价的重要工具,自 1973 年推出以来,已经被交易员、投资者和学者广泛使用。然而,必须认识到该模型的局限性,并在特定的市场条件和期权类型下恰当地使用它。这些局限性可以通过计算模型来克服。
计算模型
BSM 模型是一种流行的数学公式,用于计算欧式期权的价格。然而,传统的 BSM 模型存在一些局限性,例如假设波动率恒定和风险中性定价,这可能导致定价预测不准确。近年来,机器学习算法已被应用于改进 BSM 模型,并提高其预测能力。在这一小节中,我们将探讨使用机器学习算法实现 BSM 模型的过程、其优势以及局限性。
BSM 模型假设以下条件:
-
基础资产的价格表现为一种随机行为,由一个称为几何布朗运动的随机过程来描述
-
基础资产的回报率波动率在期权生命周期内是恒定的
-
无风险利率是已知且恒定的
-
期权只能在到期日行使
要使用机器学习算法实现 BSM 模型,您可以使用历史数据来训练模型并学习过去的市场行为。然后,模型可以使用这些学习到的信息来预测未来的价格。机器学习算法,如神经网络和决策树,可以帮助克服传统 BSM 模型的局限性,方法如下:
-
考虑资产收益的非恒定波动性
-
实时融入新市场数据以更新定价预测
-
考虑资产收益的非正态分布,并将偏度和峰度纳入定价计算
使用机器学习算法增强 BSM 模型有几个好处,如下所示:
-
提高期权定价预测的准确性
-
在建模复杂金融工具时的灵活性增加
-
更快的定价计算,使得交易决策更加及时
然而,使用机器学习算法与 BSM 模型结合也存在一些局限性,如下所示:
-
增加了复杂性,并且需要专业的技术专长
-
使用历史数据可能导致模型过拟合,从而导致定价预测不准确
-
需要大量高质量的数据来有效训练模型
尽管存在这些局限性,使用机器学习算法实现 BSM 模型仍然是一个有前景的金融工具定价方法。实时融入新市场数据并考虑非恒定波动性可以提高准确性,帮助交易者做出更明智的决策。通过使用机器学习算法实现 BSM 模型,显著推动了金融建模的发展。通过融入新数据并考虑非恒定波动性,这一方法可以提高定价预测的准确性,并允许做出更为知情的交易决策。然而,必须认识到这种方法的局限性,并与其他金融模型和分析技术一起使用。
机器学习
在衍生品定价中,机器学习使用复杂的算法从大量的历史交易数据中预测未来衍生品价格。通过建模市场动态并识别模式,它提供比传统模型更准确的价格预测。这不仅减少了金融风险,还优化了交易策略。此外,它还为市场行为提供了见解,帮助开发更具韧性的金融系统。
几何布朗运动
我们必须在估算衍生品价格之前对基础股票进行建模,基于其价值。几何布朗运动(GBM),也叫做维纳过程,是常用来建模布朗运动随机过程的方法,用于驱动资产未来的价值。它有助于生成资产价格在未来可能采取的轨迹。
如果一个随机过程(在这里定义为时间依赖函数 S(t))可以表示为以下 SDE,则称其为遵循 GBM:
d St = μ St dt + σ St d Wt
其中:
-
St – 时间 t 时的股票价格
-
dSt – 从时间 t 开始的股价变化
-
μ – 漂移项
-
σ – 波动率项
-
dt – 时间变化
-
dWt – 布朗运动
Wt 表示属于维纳过程或布朗运动,μ 是百分比漂移,σ 是百分比波动率。根据伊藤引理(参考文献),可以推导出以下解析解:
S(t) = S 0 exp((r − 1 / 2 σ²)t + σ √t z)
其中 S 0 是初始股指水平,t 是到期时间,股票将在该时间受到影响,r 是表示无风险短期利率的常数,σ 是常数波动率(通常计算为股票的标准差),z 是正态分布的随机变量。因此,可以很容易地估算某一股票在时间 t 的 S(t)。
GBM 的一个关键特性是资产的投影分布遵循对数正态分布。鉴于我们之前所见,我们期望值较低时会有一定的偏态,这一点非常方便。
通过为 z i i ∈ 1, … , I 设置 I 个随机数,并计算每个样本的相关 S i(t),我们可以生成上述未来价格分布。让我们创建一个假设案例来证明这一点:
import numpy as np
from scipy.stats import norm
t = 1.0 # year
K = 105 # Strike price
r = 0.05 # Riskless short rate
sigma = 0.25 # Volatility (stdev)
S0 = 100 # Present price
设置这些参数后,我们可以简单地为未来股票价格在预测时间 t 编写代码:
I = 1000 # Samples
z = np.random.standard_normal(I) # z_i values
ST = S0 * np.exp((r - 0.5 * sigma ** 2) * t + sigma * np.sqrt(t) * z)
将这些数字的轨迹绘制出来是很有趣的,这样我们就知道它们来自哪里。我们将在一年后的未来放置轨迹:
months = 12 # months in a year
dt = t/months
S = np.zeros((months+1, I))
S[0] = S0
for ti in range(1, months+1):
Z = np.random.normal(size=I)
S[ti] = S[ti-1]*np.exp((r-0.5*sigma**2)*dt+sigma*np.sqrt(dt)*Z)
这个迭代过程将基于每个前一时间步(t-1)的值,创建足够的未来情景样本,投影到目标时间 T。最终代码是之前描述的随机过程公式的编码表示:
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.style.use('seaborn-v0_8')
plt.figure(figsize=(10, 6))
for si in S.T:
plt.plot(range(len(si)), si)
plt.xlabel("Months", fontsize=14)
plt.ylabel("Option price", fontsize=14)
plt.grid()
plt.title(f"{I} trajectories", fontsize=16)
plt.show()
这应该会生成类似于以下的图表:
图 4.1 – 为给定资产价格和 12 个月投影生成的 GBM 轨迹(由之前的代码生成的图像)
它可能看起来很混乱,但实际上是我们之前描述的基础随机过程的表现。我们可以看到所有轨迹都从同一点(今天的价格)开始,并根据先前描述的方程式沿不同方向发展,随着时间的推移,范围逐渐扩大。如果我们在时间 T(在我们的案例中是 1 年)绘制分布图,我们可以看到潜在的演变符合之前解释的标准,通过展示价格分布,我们能够对某些特定轨迹的可能性做出假设,其中一些轨迹比其他的更有可能。
plt.figure(figsize=(10, 6))
plt.hist(S[-1], 100, density=True, facecolor='b', alpha=0.75)
plt.xlabel("Option price at time t", fontsize=14)
plt.ylabel("Probabilities", fontsize=14)
plt.grid()
plt.title(f"Price distribution at time t", fontsize=16)
plt.show()
图 4.2 – 价格分布
这个分布将驱动与股票期权的看涨和看跌价格相关的所有计算。同时,它偏向于较低价值的投注,而不是较高的估值,后者虽然合理但不太可能发生。
量子计算
正如我们在前一节中看到的,为了估算股权的未来价格,需要对潜在的未来价格进行多次迭代计算。然而,如果我们能找到一种方法,将这些潜在的分布加载到量子态中,并使用量子设备进行评估,会怎样呢?以下小节将深入探讨如何使用现有的直接加载解决方案(如 Qiskit 功能和使用 PennyLane 的对抗训练)将这些未来价格分布加载到量子态中。由于 PennyLane 采用可微编程方法(类似于经典机器学习领域中的 TensorFlow 或 PyTorch),它可能更适合机器学习任务。
Qiskit 中的实现
如第二章中所讨论的,Qiskit 是最成熟的量子计算框架之一,拥有更高级的模块,可以轻松将特定应用转化为量子领域。这也适用于 Qiskit Finance,我们将在将之前的练习转化为量子方法时深入探讨。
正如我们已经知道的,经典数据必须转换为量子态,才能在量子设备上进行操作。在价格估值的情况下,这意味着将我们的目标分布表示为量子态。因此,我们应该构建一个如下所示的量子态:
| ψ⟩ n = ∑ 0 2 n−1 √ _ p i |i⟩ n,
其中,p**ᵢ是与截断分布相关的概率,而 i 是我们离散箱之间的映射,代表目标分布的每个值范围。
量子硬件可能面临一些挑战,这是最早影响到我们的一个方面。我们需要将分布截断成离散的箱子,因为根据我们想要达到的数值精度,可能的价格会落入无限多个箱子。因此,|i⟩将与足够精确的值范围相关联,以便编码与该范围相关的概率。对于 i 个量子比特的截断,安排如下:
{0, … , 2 n − 1} ∈ i ⟶ high − low _ 2 n − 1 × i + low
通过设定我们算法的量子比特数量,我们也限制了响应分辨率:
n qubits = 5
然后,我们需要将目标分布嵌入之前解释的量子态中:
# Price scaling
scale = 100
S = 0.067077 * scale # initial spot price (scaled)
import numpy as np
# parameters for considered random distribution
vol = 0.6 # volatility of 60%
r = 0.02 # annual interest rate of 2%
T = 40 / 365 # 40 days to maturity
# resulting parameters for log-normal distribution
mu = (r - 0.5 * vol**2) * T + np.log(S)
sigma = vol * np.sqrt(T)
mean = np.exp(mu + sigma**2 / 2)
variance = (np.exp(sigma**2) - 1) * np.exp(2 * mu + sigma**2)
stddev = np.sqrt(variance)
# lowest and highest value considered for the spot price; in between, an equidistant discretization is considered.
low = np.maximum(0, mean - 3 * stddev)
high = scale
现在截断的目标分布已经准备好,我们必须生成一个编码量子态的电路。这是一个可以管理的任务,虽然需要一些时间来学习如何正确完成它。幸运的是,Qiskit Finance 可以为我们提供帮助,它已经提供了这个功能:
from qiskit_finance.circuit.library import LogNormalDistribution
dist_circ = LogNormalDistribution(num_qubits, mu=mu, sigma=stddev**2, bounds=(low, high))
我们刚刚创建的这个电路编码了我们资产的分布。如果我们愿意,可以打印出来,但在我们工作层面上,它看起来将像一个大盒子:
dist_circ.draw('mpl', fold=120)
图 4.3 – 上述代码生成的逻辑电路,将目标分布封装到量子状态中
然而,如果我们查看它所编码的分布,我们可以检查它是否符合我们的预期:
import matplotlib.pyplot as plt
# plot probability distribution
x = dist_circ.values / scale
y = dist_circ.probabilities
plt.bar(x, y, width=0.2)
plt.xticks(x, rotation=90)
plt.xlabel("Option price at time $t$", size=15)
plt.ylabel("Probability ($\%$)", size=15)
plt.show()
图 4.4 – 由图 4.3 中的前一个电路生成的离散化分布
这个目标分布展示了我们在将问题编码到量子状态时可能遇到的一个额外限制。由于它们编码了我们概率分布的区间表示,因此我们可能决定的截断方式可能会切断每个区间两端的某些值。因此,必须进行重要的初步评估,以正确描述我们希望拟合到量子状态中的分布。
现在,目标分布已加载,接下来只需在量子领域中评估看涨和看跌期权。为此,我们可能需要编码一个线性分段函数,根据概率(作为我们|i>的状态幅度编码)来进行价格计算。它能够为每个区间估算这些价格,同时利用量子态提供的并行性:
F|x⟩|0⟩ = √(1 − f(x)) |x⟩|0⟩ + √(f(x)) |x⟩|1⟩
对于函数 f:{0,...,2^n-1} →[0,1],它映射期权函数,x 为 n 量子比特状态,映射期权价格区间。这个编码的函数将标记分布中的价格区间,正的概率幅度与其可能性相关联:
from qiskit.circuit.library import LinearAmplitudeFunction
# set the strike price (low << strike << high)
strike = S*1.05
# and function parameters
slopes = [0, 1]
offsets = [0, 0]
这将是我们的调用目标函数:
call_option = LinearAmplitudeFunction(
nqubits,
slopes,
offsets,
domain=(low, high),
image=(0, high - strike),
breakpoints=[low, strike],
rescaling_factor=0.05)
我们可以通过将这个幅度估计模块添加到我们之前的电路中,来构建一个欧式看涨期权电路。这主要由 Qiskit 提供,得益于其高级模块:
from qiskit import QuantumCircuit
total_qubits = call_option .num_qubits
european_call = QuantumCircuit(total_qubits)
european_call.append(dist_circ, range(num_qubits))
european_call.append(call_option , range(total_qubits))
# draw the circuit
european_call.draw('mpl')
图 4.5 – 概率分布生成模块(P),后接线性幅度函数模块(f)
首先,模块(P)将把我们加载到量子状态中的价格分布作为第二个模块(F),如前面的图示所示,评估它们的潜在结果。由于在前面的图中 F 模块后已经对幅度进行了编码,最后一步是从量子状态中提取出经典值,即我们股票价格落入未来定价不同区间的概率。量子幅度估计(QAE)存在不同的方法;这种技术可以让你提取给定量子状态下的幅度。严格来说,我们可以将其表述为估计状态ψ的幅度a的能力,定义如下:
a = |⟨ψ | ψ⟩|²
它通常被用作经典蒙特卡罗模拟的量子对应方法。在这里,我们将使用一种经过验证的迭代 QAE 变体,与其他方法相比,该变体具有更好的错误率:
from qiskit import Aer
from qiskit.utils import QuantumInstance
from qiskit.algorithms import IterativeAmplitudeEstimation, EstimationProblem
# set target precision and confidence level
epsilon = 0.01
alpha = 0.05
qi = QuantumInstance(Aer.get_backend("aer_simulator"), shots=100)
problem = EstimationProblem(
state_preparation=european_call,
objective_qubits=[num_qubits],
post_processing=call_option .post_processing,
)
# construct amplitude estimation
ae = IterativeAmplitudeEstimation(epsilon, alpha=alpha, quantum_instance=qi)
result = ae.estimate(problem)
conf_int = np.array(result.confidence_interval_processed)
print("Estimated value: \t%.4f" % (result.estimation_processed / scale))
print("Confidence interval:\t[%.4f, %.4f]" % tuple(conf_int/scale))
We would obtain the following prompt then:
Estimated value: 0.0714
Confidence interval: [-0.0267, 0.1695]
鉴于整个过程相当系统化,Qiskit 已经将所有这些步骤整合到一段代码中,因此我们无需担心每个具体步骤:
from qiskit_finance.applications.estimation import EuropeanCallPricing
european_call_pricing = EuropeanCallPricing(
num_state_qubits=num_qubits,
strike_price=strike ,
rescaling_factor=0.05,
bounds=(low, high),
uncertainty_model=dist_circ)
使用 qGAN 进行价格分布加载
到目前为止,我们已经基于先前讨论的统计模型对给定股票的不确定性模型进行了编码,但我们能否利用数据中的经验知识,而不是使用统计知识呢?我们已从 Binance 获取信息,以了解市场行为。我们希望我们的模型能够利用每个选项并非在孤立的环境中运行这一事实,而是依赖于其余股票的演变。
当数据可用时,机器学习技术可以大展拳脚,特别是生成模型。经过训练的模型可以从分布中创建样本。
在我们的特定情况下,我们希望获得一个生成器模型 G,使得:
G θ| ψ⟩ n = ∑ 0 2 n−1 √ _ p i |i⟩ n,
其中,p i 的平方根表示 |i⟩ 量子箱的测量概率幅度。在这种情况下,我们将根据通过学习过程从市场数据中提取的数据样本,创建相同的量子状态,这个量子状态编码了未来价格的离散化可能值,G 会根据该过程进行迭代,从而映射出前述方程。
生成对抗网络 (GANs) 在真实图像和视频生成方面取得了成功,正如你可能通过媒体中深伪技术的成功而了解到的。然而,GANs 还可以在许多其他领域中得到应用,从表格数据到时间序列数据,这在金融领域是相当常见的。它们的量子版本由 Zoufal 等人在 2019 年提出。该方法基于对立的两个模型,一个是量子生成器,一个是经典判别器(经典神经网络),这两个模型通过相对立的目标进行训练,以最终达到纳什均衡。
图 4.6 – qGAN 中使用的两个模型的图示,量子生成器 G 和经典判别器 D,如 Zoufal 等人所示。
从从 Binance 加载的数据集中,我们可以选择要使用的股票,并从中选择一个子集:
import pandas as pd
dataset = pd.read_csv("../../data/binance_data.csv")
# Lets pivot so that the date is the index and each assets presents its closing price
pivoted = dataset.pivot(index="Closing time", columns="Asset", values="Close")
assets = ["BNBBTC","ETHBTC","LTCBTC"]
正如我们已经知道的,必须将数据的离散化和截断版本传递给量子设备,以将我们的数据适配到量子领域:
import numpy as np
# We convert the Dataframe into a numpy array
training_data = pivoted[assets].to_numpy()
# Define minimal and maximal values for the training data
bounds_min = np.percentile(training_data, 5, axis=0)
bounds_max = np.percentile(training_data, 95, axis=0)
bounds = []
for i, _ in enumerate(bounds_min):
bounds.append([bounds_min[i], bounds_max[i]])
我们需要将样本映射到离散值。这意味着根据我们选择的量子比特分辨率,每个样本将需要像之前一样放入一个离散的区间。选择一个 3 量子比特表示意味着我们的数据应该适应 2³ = 8 个区间。这一点需要考虑,因为它会影响模型的分辨率:
from qiskit_machine_learning.datasets.dataset_helper import discretize_and_truncate
data_dim = [3, 3, 3]
# Pre-processing, i.e., discretization of the data (gridding)
(training_data, grid_data, grid_elements, prob_data) = discretize_and_truncate(
training_data,
np.asarray(bounds),
data_dim,
return_data_grid_elements=True,
return_prob=True,
prob_non_zero=True,
)
我们可以绘制三个资产的离散分布,以了解哪些分布我们能够有效地编码到我们的量子资源中:
import matplotlib.pyplot as plt
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(18, 6))
ax1.hist(training_data[:, 0], bins=20)
ax1.set_title(f"BNBBTC")
ax1.set_xlabel("Values")
ax1.set_ylabel("Counts")
ax2.hist(training_data[:, 1], bins=20)
ax2.set_title("ETHBTC")
ax2.set_xlabel("Values")
ax2.set_ylabel("Counts")
ax3.hist(training_data[:, 2], bins=20)
ax3.set_title("LTCBTC")
ax3.set_xlabel("Values")
ax3.set_ylabel("Counts")
图 4.7 – 三只目标股票的离散化分布
Zoufal 等人提出的原始论文中,使用了一个特定的参数化量子电路作为生成器电路,该电路使用每个量子比特参数化的Y旋转序列和一个环状纠缠所有量子比特的 CZ 门周期(称为纠缠块)。我们将尝试在 PennyLane 中模仿类似的方法:
import pennylane as qml
def generator(weights, wires, repetitions):
# Initial superposition for all possible states
for i in range(wires):
qml.Hadamard(wires=i)
k = 0 # carrying index
for i in range(wires):
qml.RY(weights[k], wires=i)
k += 1
# Repetition blocks
for _ in range(repetitions):
# Entangling block
for i in range(wires-1):
qml.CZ(wires=[i, i+1])
# Last CZ turning to zero
qml.CZ(wires=[wires-1, 0])
# RY rotations
for i in range(wires):
qml.RY(weights[k], wires=i)
k += 1
return qml.probs(wires=range(qubits))
这样我们可以轻松地使用这个设置来进行不同的重复实验和数据维度的探索:
import torch
qubits = np.sum(data_dim)
dev = qml.device("default.qubit", wires=qubits)
# Also some parameters
layers = 1
params = [np.random.uniform(np.pi) for i in range(qubits + layers*qubits)]
gen_circuit = qml.QNode(generator, dev, interface='torch', diff_method='best')
drawer = qml.draw_mpl(gen_circuit)
print(drawer(params, qubits, layers))
输出电路应该像图 4.8中那样。尽管在 Ansatz 中没有显示详细视图,但该电路是由提供给生成器函数的权重或参数进行参数化的。为了知道哪些参数会输出我们期望的分布,我们需要通过遵循 第二章中描述的 Ansatz 训练技术来找到它们。GAN 提供了一种不同的方法来调整这些参数,与判别器作为生成器训练的成本函数相对立。
图 4.8 – 由 Hadamard 门、参数化的 Y 旋转和最近邻耦合的 CZ 门周期组成的生成器 Ansatz
GAN 需要一个与判别器相对立的部分,判别器尝试评估样本是否来自真实数据集,还是来自生成器伪造的数据,如图 4.8所示。对于这个判别器,将定义一个简单的神经网络,其二进制输出应该确定样本的来源:
import torch.nn as nn
class Discriminator(nn.Module):
def __init__(self, input_size):
super(Discriminator, self).__init__()
self.linear_input = nn.Linear(input_size, 20)
self.leaky_relu = nn.LeakyReLU(0.2)
self.linear20 = nn.Linear(20, 1)
self.sigmoid = nn.Sigmoid()
def forward(self, input: torch.Tensor) -> torch.Tensor:
x = self.linear_input(input)
x = self.leaky_relu(x)
x = self.linear20(x)
x = self.sigmoid(x)
return x
经典判别器的选择及其层架构可以根据需要变得非常复杂,社区已经付出了巨大努力,旨在为特定任务识别表现最佳的量子和经典模型设计。
关键在于对抗与训练两个模型(量子模型和经典模型)相关的损失函数。损失是对抗的,因此你可以看到与生成器(G)相关的参数变化如何也被考虑在判别器的损失函数中。
L G(ϕ, θ) = − 1/m ∑ i=1 m log D ψ( g i)
L D(ϕ, θ) = − 1/m ∑ i=1 m log D ψ(x i) + log(1 − D ψ( g i))
在这两种情况下,Adam 优化方法(Kingma 等,2014)将用于训练模型。这是因为两个框架,量子模型的 PennyLane 和经典模型的 PyTorch,都提供了这种方法:
# Generator loss function
gen_loss_fun = nn.BCELoss()
# Discriminator loss function
disc_loss_fun = nn.BCELoss()
# Initialize generator and discriminator
discriminator = Discriminator(len(data_dim))
lr = 0.01 # learning rate
b1 = 0.9 # first momentum parameter
b2 = 0.999 # second momentum parameter
num_epochs = 50 # number of training epochs
from torch.optim import Adam
# optimizer for the generator
optimizer_gen = qml.AdamOptimizer(stepsize=lr, beta1=b1, beta2=b2)
# optimizer for the discriminator
optimizer_disc = Adam(discriminator.parameters(), lr=lr, betas=(b1, b2))
from torch.utils.data import DataLoader
# Define the training batch size
batch_size = 300
dataloader = DataLoader(training_data, batch_size=batch_size, shuffle=True, drop_last=True)
# Generator loss list
generator_loss_values = []
# Discriminator loss list
discriminator_loss_values = []
一旦所有部分都设置完毕,接下来就只是迭代的问题,寻找 G 和 D 模型之间的纳什均衡:
for epoch in range(num_epochs):
generator_loss_epoch = []
discriminator_loss_epoch = []
theta = torch.tensor(params, dtype=torch.float32)
for i, data in enumerate(dataloader):
# Adversarial ground truths
valid = torch.ones(data.size(0), 1)
fake = torch.zeros(data.size(0), 1)
# Generate a batch of data points
fake_samples = []
for _ in range(len(data)):
probabilities = gen_circuit(theta, qubits, layers)
gen_data = grid_elements[torch.argmax(probabilities)]
fake_samples.append(gen_data)
# Train Discriminator
optimizer_disc.zero_grad()
# Loss measures discriminator's ability to distinguish real from generated samples
inputs = data.to(torch.float32)
real_out = discriminator(inputs)
real_loss = disc_loss_fun(real_out, valid)
fake_input = torch.tensor(fake_samples, dtype=torch.float32)
fake_out = discriminator(fake_input)
fake_loss = disc_loss_fun(fake_out, fake)
discriminator_loss = (real_loss + fake_loss) / 2
discriminator_loss.backward(retain_graph=True)
optimizer_disc.step()
# Loss measures generator's ability to prepare good data samples
fake_input = torch.tensor(fake_samples, dtype=torch.float32)
fake_out = discriminator(fake_input)
generator_loss = gen_loss_fun(fake_out, valid)
returns, prev_cost = optimizer_gen.step_and_cost(gen_circuit, params, qubits, layers)
params = returns[0]
generator_loss_epoch.append(generator_loss.item())
discriminator_loss_epoch.append(discriminator_loss.item())
generator_loss_values.append(np.mean(generator_loss_epoch))
discriminator_loss_values.append(np.mean(discriminator_loss_epoch))
通过绘制两个损失函数的演变(分别附加到generator_loss_values
和discriminator_loss_values
数组中),我们可以看到两个模型如何相互适应,以便生成器最终成为我们能实现的最佳合成数据生成器版本。
图 4.9 – 在训练两个模型的过程中,损失演变,最终在迭代结束时达到均衡点
通过此方法,我们获得了一个 P 块,如在使用 Qiskit 手动加载分布时所示,但它已经经过训练以模拟价格分布,正如我们用于训练生成器的历史数据集所展示的那样。因此,通过将这个训练过的生成器作为概率并附加线性幅度函数和 QAE 块,我们可以创建一个完全数据驱动的量子股票定价方法。执行这一任务将需要大量的代码块和不同的框架,因此实现的技术复杂性可能非常高,但我们强烈推荐逐步了解这三个块,以理解如何实现不同框架之间的接口(PennyLane 用于可训练的参数化量子电路,Qiskit Finance 用于避免重新实现已提供的功能)。
总结
在本章中,我们探讨了一个复杂的用例,用于预测未来,预测市场将如何发展,股票价格将如何变化,等等,这无疑是一个非平凡的任务。我们展示了如何将传统统计学中广泛使用的技术应用于量子领域。这带来了一些好处,但也由于其当前的状态和设备本身的局限性,提出了我们需要绕过的其他障碍。
在基于门的量子设备上编码概率分布会导致一些分辨率损失。概率分布可能需要被截断,且数值范围将被渲染为与未来期权价格可能落入的相同离散区间。这一限制在未来当更大的设备问世时可能会发生变化,从而允许更大的分布被编码。然而,这确实是我们在采用这些技术时需要牢记的一个限制。
当然,也有其好处,因为量子设备能够原生并行化许多计算,而这些计算通常是顺序执行的,或者需要大型经典设备来快速完成。得益于 QML 设置,尤其是 qGANs,我们甚至可以构建一台机器来执行这种基于资产过去演变的分布编码,虽然它可能不完全准确,但至少是基于证据的。到目前为止,在本节中我们使用了模拟器,以简化使用真实设备的复杂性,正如我们将在后续章节中解释的那样。处理设备特性也可能相当具有挑战性,并且会为我们在这里展示的复杂过程增添更多复杂性。尽管我们将讨论一些更适合当前量子设备状态的用例,但鉴于其作为一个快速发展的领域,以及在金融行业的相关性,我们必须关注文献中向更好的价格预测的进展。确实有一些非常重要的研究计划,可能会在不久的将来为我们带来突破。
进一步阅读
本章中我们讨论的一个重要部分与量子计算中的一些基础算法有关。Grover 算法(Jozsa 1999)和 QAE(Rao 等,2020)不仅是金融用例的关键算法,也是与量子算法相关的众多应用的重要竞争者。
QML 的相关性日益增加,因为它允许利用现有数据来创建量子算法通常所需的嵌入或动态。第六章将更详细地探讨这些技术。然而,对于那些已经了解经典生成模型(如 GANs、变分自编码器和神经网络等)的人来说,有大量文献可以帮助其适应量子领域(Lloyd 和 Weedbrook, 2018)。有关 QNNs 如何在金融应用中发挥作用的新方法(Tapia 等,2022),或如何处理价格预测的不同视角,文献中不断有新的研究成果出现(Singh 2021)。
从更实际的角度来看,尽管理解这些算法的基本设计和实现至关重要,但越来越高层次的抽象工具,如 Qiskit Finance 或机器学习,将提升你尝试和测试一些前沿发现的能力,从而加速从研究到企业创新的过渡(Moguel 等,2020)。
参考文献
-
Glasserman, P. (2004). 金融工程中的蒙特卡洛方法(第 53 卷,第 xiv+-596 页)。纽约:Springer。
-
Jozsa, R. (1999). 在 Grover 算法中的搜索。arXiv 预印本 quant-ph/9901021。
-
Kingma, D. P., & Ba, J. (2014). Adam: 一种随机优化方法。arXiv 预印本 arXiv:1412.6980。
-
Lloyd, S., & Weedbrook, C. (2018). 量子生成对抗学习。物理评论快报, 121(4), 040502。
-
MacBeth, J. D., & Merville, L. J. (1979). 对 Black-Scholes 看涨期权定价模型的实证检验。金融学杂志, 34(5), 1173-1186.
-
Moguel, E., Berrocal, J., García-Alonso, J., & Murillo, J. M. (2020 年 10 月). 量子软件工程的路线图:应用经典经验教训。在 Q-SET@ QCE (**第 5-13 页).
-
Singh, P. (2021). FQTSFM:一种模糊量子时间序列预测模型。信息科学, 566, 57-79.
-
Stojkoski, V., Sandev, T., Basnarkov, L., Kocarev, L., & Metzler, R. (2020). 广义几何布朗运动:理论及其在期权定价中的应用。熵, 22(12), 1432.
-
Tapia, E. P., Scarpa, G., & Pozas-Kerstjens, A. (2022). 使用单量子比特量子神经网络进行欺诈检测。arXiv 预印本 arXiv:2211.13191.
-
Rao, P., Yu, K., Lim, H., Jin, D., & Choi, D. (2020 年 8 月). IBM 量子设备上的量子幅度估计算法。在量子通信与量子成像第十八卷 (第 11507 卷,第 49-60 页). SPIE.
-
Ross, S. M., Kelly, J. J., Sullivan, R. J., Perry, W. J., Mercer, D., Davis, R. M., ... & Bristow, V. L. (1996). 随机过程 (第 2 卷)。纽约:Wiley.
-
Zoufal, C., Lucchi, A., & Woerner, S. (2019). 用于学习和加载随机分布的量子生成对抗网络。npj 量子信息, 5(1), 103.
第五章:投资组合管理
根据全球行业分类标准(GICS),全球资产管理行业在 2020 年底的管理资产总额(AUM)约为 91.7 万亿美元,由 84,000 家公司管理。这些资产包括投资公司、养老金基金、保险公司以及其他国际金融机构管理的 AUM。资产管理者通常使用投资组合管理技术来管理这些资产。Investopedia 对投资组合管理的定义如下:
投资组合管理是选择和监督投资组合的艺术与科学,目的是为投资者的利益实现特定的投资目标。
本章将探讨利用机器学习技术和量子算法进行投资组合管理的艺术。内容分为五个部分:
-
财务投资组合管理
-
财务投资组合多样化
-
财务投资组合模拟
-
使用传统机器学习算法的投资组合管理
-
量子算法投资组合管理实施
让我们从定义财务投资组合开始,理解投资组合管理的必要性。
财务投资组合管理
财务投资组合是指个人或实体为了获得投资回报而投资于的一系列资产,包括股票、债券和其他证券。创建一个多样化的财务投资组合对于投资者来说至关重要,旨在最大程度地减少风险并实现回报最大化。财务投资组合需要进行细致分析、市场研究和风险评估。
创建财务投资组合的一个关键方面是多样化。多样化是指投资于不同类型的证券,以分散风险。这一策略旨在减少任何负面事件对投资组合整体表现的影响。例如,如果一个投资组合完全投资于某一只股票或行业,那么如果该公司或行业面临挑战,可能会遭受显著损失。然而,包含股票、债券和其他证券的多样化投资组合可以帮助缓解此类风险。另一个在构建财务投资组合时需要考虑的重要因素是风险承受能力。风险承受能力是指个人应对市场波动和风险的能力。在投资证券之前,评估你的风险承受能力至关重要。高风险投资可能提供更高的回报,但只适合那些能够承受潜在损失的投资者。
投资者在创建财务投资组合时还应考虑他们的投资目标。投资目标是指投资者希望通过投资实现的目标,例如长期增长、收入生成或资本保值。投资者的投资目标将影响他们选择哪些证券纳入投资组合。资产配置是构建财务投资组合的另一个关键方面。资产配置指的是将投资组合中的资金分配到不同的资产类别中,如股票、债券和现金。这个过程旨在平衡不同投资的风险和回报。例如,股票可能提供较高的回报,但伴随较高的风险,而债券可能提供较低的回报,但风险较低。
此外,投资者需要定期审查并重新平衡他们的投资组合。投资利润目标和可容忍的风险迫使我们定期检查投资配置,以确保其一致性。一个没有定期审查的投资组合可能随着时间推移变得失衡,导致更高的风险或较低的回报。构建财务投资组合对于希望通过投资获得回报的投资者至关重要。多样化、风险承受能力、投资目标、资产配置和投资组合审查是投资者在构建财务投资组合时需要考虑的关键因素。通过关注这些因素,投资者可以创建一个与其投资目标和风险承受能力相匹配的多样化投资组合。
财务投资组合多样化
财务投资组合多样化对于希望最小化风险并最大化回报的投资者至关重要。多样化投资涉及将资金投入各种资产,包括股票、债券和其他证券,以分散不同市场、行业和资产类别的风险。财务投资组合多样化的主要好处之一是风险降低。通过投资于各种资产,投资者可以避免将所有资金集中在一个篮子里的风险。如果某个资产类别或行业表现不佳,其他资产类别可能表现良好,从而帮助抵消损失。例如,如果一个投资组合中大量投资于股票,并且股市发生崩盘,投资组合的价值可能会显著下降。然而,如果该投资组合还包括债券、商品和房地产,股票价值的下跌可能会被其他资产类别的收益所抵消。
财务投资组合多样化的另一个好处是潜在回报。投资于一系列资产可以从不同市场和行业中获得潜在回报。例如,股票可能提供更高的回报,但伴随更高的风险。另一方面,债券可能提供较低的回报,但风险也较低。通过多样化投资组合,投资者可以捕捉到不同资产类别的潜在回报,同时降低风险。
在进行财务投资组合多元化时,投资者应考虑多个因素,包括他们的投资目标、风险容忍度和时间范围。投资目标指的是投资者希望通过投资实现的目标,例如长期增长、收入生成或资本保值。风险容忍度指的是投资者能够承受的风险水平。时间范围指的是投资者计划持有其投资的时间。投资者通过考虑这些因素,可以创建一个与其目标、风险容忍度和时间范围相匹配的多元化投资组合。
通过将投资分配到不同的资产类别,投资者可以降低投资组合的整体风险,同时仍能捕捉到潜在的回报。财务投资组合多元化是那些希望最小化风险并最大化回报的投资者的关键策略。投资组合多元化涉及投资于各种资产,包括股票、债券和其他证券,以将风险分散到不同的市场、行业和资产类别。投资者通过考虑他们的投资目标、风险容忍度、时间范围和资产配置,可以创建一个与其目标相符并减少整体风险的多元化投资组合。下一小节将讨论资产配置及其必要性和重要性。
财务资产配置
财务资产配置是投资组合管理的关键组成部分,它涉及将投资分配到不同的资产类别,以实现所需的风险和回报水平。资产配置是那些希望构建多元化投资组合并最小化风险的投资者的重要策略。财务资产配置的一个关键好处是风险减少。通过将投资分散到不同的资产类别,投资者可以降低与任何特定资产类别或投资相关的风险。例如,如果一个投资者将所有资金都投入一只股票,那么他们将面临该股票的风险。然而,投资于股票、债券和其他资产的组合,可以将风险分散到不同的资产类别,从而减少重大亏损的可能性。
财务资产配置的另一个好处是潜在的更高回报。不同的资产类别具有不同的风险水平和回报潜力。例如,股票相比债券提供更高的回报潜力,但也伴随更高的风险。通过将投资分配到不同的资产类别,投资者可以在最小化风险的同时,受益于多种资产类别的潜在回报。
在进行投资组合资产配置时,投资者必须考虑其投资目标、时间期限和风险承受能力。投资目标因投资者而异,可能包括产生收入、增长资本或保值财富等目标。时间期限是指投资者计划持有投资的时间。通常,较长的时间期限允许更高的风险承受能力,并可能带来更高的回报。风险承受能力是指投资者在追求更高回报时,愿意承担的风险程度。
投资者可以将投资配置到多种不同的资产类别中,包括股票、债券、现金和另类投资。股票代表公司所有权,具有资本增值和分红的潜力。债券则代表债务,提供固定收益支付。现金是一种低风险、低回报的资产,可以为投资组合提供流动性和稳定性。另类投资包括房地产、商品和私募股权。
投资组合的最佳资产配置将取决于投资者的目标、时间期限和风险承受能力。年轻的投资者通常拥有较长的时间期限,可能更愿意承受更高的风险,并将更多的资金配置到股票上。而年长的投资者由于时间期限较短,并且对收入和资本保值的需求较大,可能会将更多的资金配置到债券和现金上。因此,金融资产配置是投资组合管理的一个关键组成部分,它使投资者能够在不同的资产类别之间分散投资、降低风险,同时潜在地提高回报。在确定最佳资产配置时,投资者必须考虑他们的投资目标、时间期限和风险承受能力。通过将投资分配到股票、债券、现金和另类投资的组合中,投资者可以建立一个与其目标一致的、良好分散的投资组合,帮助他们实现财务成功。接下来的小节将讨论金融风险承受能力在金融投资组合优化中的重要性。
金融风险承受能力
财务风险承受能力是指投资者为追求潜在回报而愿意承担的风险。对于任何希望投资自己资金的人来说,这是一个重要的概念。多种因素会影响个人的财务风险承受能力。年龄、收入、净资产和投资目标是其中的重要因素。一般来说,年轻的投资者可能更愿意承担风险,因为他们有更长的时间来弥补亏损。高收入和高净资产的个人可能也有较高的风险承受能力,因为他们拥有更多的资源来吸收潜在的损失。投资目标也是决定风险承受能力的关键因素。拥有长期目标(如退休)的投资者可能更愿意承担风险,追求更高的回报。相比之下,拥有短期目标(如为购房首付储蓄)的投资者则可能更重视资本保值,而非潜在回报。
了解自己的财务风险承受能力很重要,因为它有助于投资者做出明智的投资决策。承担过多风险的投资者可能会经历重大损失,这可能影响他们的财务健康。另一方面,过于规避风险的投资者可能会错失那些能够帮助他们实现财务目标的潜在回报。投资者可以使用多种策略来管理风险,并使其投资与风险承受能力相匹配。分散投资是最重要的策略之一。通过将投资分散到不同的资产类别,投资者可以降低某一特定投资的风险。这些类型的投资提供了股票或债券的多元化投资组合,有助于降低风险。另一种策略是通过资产配置来管理风险。资产配置涉及在不同的资产类别之间分配投资,以实现期望的风险和回报水平。通过将投资分配到股票、债券和其他资产的组合中,投资者可以从多个资产类别的潜在回报中获益,同时最小化风险。
最后,投资者定期审查资产配置以确保其满足需求非常重要。随着投资者的情况变化,他们的风险承受能力也可能发生变化。定期的投资组合审查有助于确保投资者的投资组合与其风险承受能力和投资目标保持一致。财务风险承受能力是投资者必须理解的重要概念。年龄、收入、净资产和投资目标等因素都可能影响个人的风险承受能力。投资者需要了解自己的风险承受能力,以做出明智的投资决策。分散投资、低成本指数基金、资产配置和定期投资组合审查等策略有助于投资者管理风险,并使其投资与风险承受能力和目标保持一致。因此,以下小节将讨论如何优化财务投资组合,以使风险承受能力和投资目标相匹配。
财务投资组合优化
财务投资组合优化通过选择最优的投资组合,最大化投资者的回报,同时最小化风险。这个过程包括确定投资者的投资目标、风险承受能力和约束条件,然后制定一个优化的投资策略来实现这些目标。本小节将讨论财务投资组合优化的关键原则、它对投资者的好处以及优化财务投资组合所使用的工具。
财务投资组合优化的关键原则之一是多元化。通过将投资分散到不同的资产类别,投资者可以降低与任何特定投资相关的风险。这是因为不同的资产类别具有不同的风险收益特征。例如,股票通常被认为比债券风险更大,但它们也提供更高回报的潜力。通过将投资分散到具有不同风险收益特征的资产类别中,投资者可以实现更高效的投资,从而最小化风险并最大化潜在回报。财务投资组合优化的另一个原则是资产配置。资产配置涉及将投资分配到不同的资产类别,以实现所需的风险和回报水平。通过将投资分配到股票、债券和其他资产的组合中,投资者可以在最小化风险的同时,享受多个资产类别的潜在回报。资产配置的目标是实现一个最大化回报并最小化风险的最优投资组合。
财务投资组合优化有多个好处。首先,它帮助投资者在最小化风险的同时实现投资目标。这一点非常重要,因为投资风险可能会对投资者的财务状况产生重大影响。通过优化投资组合,投资者可以在最小化重大损失风险的同时实现他们的投资目标。其次,财务投资组合优化可以帮助投资者实现比通过传统投资方式更高的回报。这是因为优化允许投资者在最小化风险的同时,利用多个资产类别的潜在回报。
有多个工具用于优化财务投资组合。其中最常用的工具之一是现代投资组合理论(MPT)。MPT 是一个数学框架,利用统计分析来优化投资组合。该框架假设投资者是风险厌恶型的,旨在最大化给定风险水平下的回报。MPT 考虑了不同资产类别之间的相关性,以及每个资产类别的预期回报和波动性。另一个用于优化财务投资组合的工具是蒙特卡洛模拟。蒙特卡洛模拟涉及统计建模,模拟不同投资策略的潜在结果。这使得投资者能够测试不同的投资情景,找出最适合其投资目标、风险承受能力和约束条件的最佳投资组合。
财务投资组合优化对于希望在最小化风险的同时实现投资目标的投资者至关重要。它涉及识别投资者的投资目标、风险承受能力和约束条件,然后制定一个优化的投资策略,以实现这些目标。财务投资组合优化的关键原则包括多样化和资产配置。财务投资组合优化的好处包括在最小化风险的同时实现投资目标,并有可能获得更高的回报。最后,优化财务投资组合时使用了多种工具,包括现代投资组合理论和蒙特卡洛模拟。以下小节讨论了用于优化财务投资组合的 MPT。
MPT
MPT 是一个框架,帮助投资者建立高效的投资组合,以最大化给定风险水平下的预期回报。该理论由哈里·马科维茨(Harry Markowitz)在 1950 年代提出,MPT 通过引入多样化和有效前沿的概念,彻底改变了金融领域。MPT 的核心思想是,分散投资对于建立一个良好构建的投资组合至关重要。根据 MPT 的理论,投资者不应将所有资金投入一个篮子,因为单一资产或证券的表现容易受到波动的影响,这可能导致重大损失。通过在多个资产之间进行平衡投资,你可以确保没有任何潜在因素会让投资归零。
MPT 中的一个关键概念是有效前沿。风险和利润水平会揭示出多个投资选择配置的可能性。有效前沿在风险与回报的权衡中划出一条线,表示每个潜在投资组合的选项,如在图 5.1中所示的二维图形。通过不同方式平衡和加权资产,热衷的投资者能够发现这一前沿,从而使得构成这一权衡的组合清晰可见,并可以基于这些组合做出决策。
因此,理解有效前沿是理解给定资产集最大能力的关键概念,因为它们的配置将基于现代投资组合理论所建立的框架找到利润极限。
有效前沿
如前所述,有效前沿是一个表征,它让我们理解一组资产在给定预期回报和与这些资产相关的分散化风险容忍度下的最大能力。
如果你在二维图表上绘制所有潜在的配置,其中每个投资组合的预期收益率在y轴上,标准差(风险的度量)在x轴上,你会观察到出现了一个特定的形状,而不是潜在的随机分布图。效率极限出现时,你会发现极端的资产选择,在这个极限下,能够在最大化回报的同时实现风险最小化。
位于有效前沿上的投资组合被称为“有效的”,因为它们提供了最高的收益。位于有效前沿右侧的投资组合被认为是“低效的”,因为有更好的选择,这些选择在预期利润相同的情况下显示出更低的风险。因此,这些是可以改进的选择,而不是有效的选择。
以下是有效前沿在图表上绘制后的一个示例:
图 5.1 – 有效前沿
如图 5.1所示,有效前沿是一条从左到右上升的曲线,投资组合以红色点标示在上面。根据之前的定义,效率前沿上的有效投资组合将在曲线的边缘上,蓝线所画的地方,表示没有更好的选择。
示例
以下是如何使用现代投资组合理论(MPT)构建投资组合的示例。
假设一位投资者有 100,000 美元用于投资,并考虑两种资产——股票和债券。股票的预期年回报率为 10%,债券的预期年回报率为 5%。投资者还获得了关于这些资产标准差的以下信息:
-
股票:20%
-
债券:8%
投资者希望构建一个在可接受的风险水平下提供最大利润的投资组合。根据现代投资组合理论,投资者应通过投资股票和债券来分散投资组合。通过构建有效前沿,可以确定风险和回报的最佳平衡。
为了做到这一点,投资者可以在图表上绘制每种资产的预期收益率和标准差。然后,投资者可以通过组合这两种资产的不同比例并计算每种组合的预期收益率和标准差,从而绘制有效前沿。有效前沿将展示出投资者可以以高概率满足初步设定的要求的资产选择。
例如,如果投资者将 50%的资金投资于股票,50%投资于债券,则该投资组合的预期收益率为 7.5%(即两个资产预期收益的中间值),而标准差为 14%(两个资产标准差的加权平均)。该投资组合将位于高效前沿上。
投资者可以通过选择高效前沿上与其期望的风险水平相对应的点来决定最优的投资组合。例如,如果投资者愿意承受更多的风险,他们可能会选择一个具有更高预期收益和更高标准差的投资组合。另一方面,如果投资者风险厌恶,他们可能会选择一个具有较低预期收益和较低标准差的投资组合。以下部分通过案例研究展示了 MPT 的实施。
案例研究
假设一位名为 Sarah 的投资者正在考虑两种潜在投资——股票和债券。股票的预期收益较高,但风险也较大;而债券的预期收益较低,但风险也较小。Sarah 尝试决定如何在这两种投资之间分配她的资金,以在最大化收益的同时最小化风险。
Sarah 决定使用现代投资组合理论(MPT)来帮助她优化她的投资组合。她首先构建了一个网格,展示了每种可能的两种投资组合的预期收益和标准差(风险的度量)。该网格如下所示:
图 5.2 – 高效前沿
基于图 5.2中所示的网格,Sarah 可以看到,预期收益最高的投资组合是 100%投资于股票,但它也具有最高的风险水平。另一方面,风险水平最低的投资组合是 100%投资于债券,但它也具有最低的预期收益。
Sarah 决定使用高效前沿来帮助她识别风险和收益之间的最佳平衡。她将每个投资组合的预期收益和标准差绘制在图表上,并且高效前沿显示给 Sarah,基于高效前沿,最优的投资组合是大约 60%投资于股票,40%投资于债券。
Sarah 决定以这种方式分配她的资金,并定期重新平衡她的投资组合,以确保它符合她的投资标准。通过使用 MPT 和高效前沿,Sarah 能够优化她的投资组合,实现风险和收益之间的最佳平衡。后续小节将讨论财务投资组合模拟在实施投资组合优化中的作用。
财务投资组合模拟
财务投资组合模拟是投资者用来评估其投资组合表现、预测未来走势并做出明智投资决策的工具。它涉及创建投资者投资组合的模型,并测试不同的情景,以确定最佳的投资策略。近年来,投资组合模拟变得越来越流行,因为它为投资者提供了一种具有成本效益的方式来评估其风险承受能力并最大化回报。本小节将探讨财务投资组合模拟的概念、其优势以及如何利用它优化投资决策。
财务投资组合模拟的一个重大优势是它能够帮助投资者清晰地理解自己的风险承受能力。通过模拟不同的情景,投资者可以确定其投资组合对市场波动的敏感性,并相应地调整投资策略。领先投资公司投资主管 David McEwen 曾这样评论风险承受能力:
不了解自己风险承受能力的投资者可能会承担比自己能承受的更多或更少的风险,这可能会对其投资组合产生负面影响。
因此,财务投资组合模拟是一个有价值的工具,能够帮助投资者根据风险承受能力做出明智的投资决策。财务投资组合模拟的另一个好处是它能够预测投资者的投资组合在不同市场条件下的表现。在市场波动时期,这尤其有用,因为投资者可能会急于做出投资决策。通过模拟不同的情景,投资者可以看到其投资组合在不同市场条件下的表现,从而增强他们的投资决策信心。
投资者必须理解自己的投资目标和风险承受能力,才能利用财务投资组合模拟优化投资决策。这包括确定投资目标、实现这些目标的时间范围以及愿意承担的风险水平。一旦这些因素确定,投资者可以使用投资组合模拟来测试不同的投资情景,并确定最佳的投资策略。例如,拥有长期投资期限的投资者可能愿意在其投资组合中承担比短期投资期限的投资者更多的风险。通过模拟不同的情景,投资者可以确定投资组合的最佳资产配置,以实现其投资目标,同时最小化风险。
因此,财务投资组合模拟是投资者优化投资决策的有价值工具。它能让投资者清楚了解自己的风险承受能力,预测投资组合在不同市场条件下的表现,并基于投资目标做出明智的决策。通过模拟不同的投资情境,投资者可以确定投资组合的最佳资产配置,确保在实现投资目标的同时最小化风险。随着金融市场的不断变化,财务投资组合模拟将继续为那些寻求最大化回报并管理风险的投资者提供重要支持。接下来的段落将介绍财务投资组合模拟技术所使用的方法。
财务投资组合模拟技术
财务投资组合模拟是投资者评估和管理其投资组合风险的重要工具。通过使用不同的技术,投资者可以模拟各种情境,确定市场波动的潜在影响,并做出明智的投资决策。本文将讨论财务投资组合模拟中常用的三种技术——蒙特卡洛模拟、压力测试和敏感性分析。
蒙特卡洛模拟是一种统计技术,用于建模和分析复杂系统的行为,比如财务投资组合。它通过多次模拟不同的输入,生成各种潜在的结果。这些输入可能包括利率、通货膨胀率和市场回报等变量。蒙特卡洛模拟输出的是潜在投资回报的概率分布,这可以帮助投资者做出有关风险和回报的明智决策。正如投资专家雷·达里奥曾说过:
如果你能模拟一千次某种情境,你大概能非常清楚地预测事情的发展。
压力测试是另一种用于财务投资组合模拟的技术。它通过模拟极端情境,如经济衰退或市场崩盘,来确定这些情境对投资组合的潜在影响。通过进行压力测试,投资者可以识别出投资组合的潜在弱点,并调整策略以降低风险。投资组合经理约翰·雷肯塔勒对压力测试曾这样说:
压力测试至关重要,因为它能显示出你的投资组合在哪些方面存在脆弱性。就像进行火灾演习,帮助你在紧急情况下做好准备。
敏感性分析是一种用于确定特定变量变化如何影响投资组合表现的技术。它涉及识别关键变量,如利率或通货膨胀率,并分析这些变量变化如何影响投资组合的表现。通过进行敏感性分析,投资者可以识别哪些变量对投资组合的表现影响最大,并相应调整投资策略。理财顾问丽莎·基尔欣鲍尔指出:
敏感性分析有助于投资者理解不同变量如何相互作用,以及一个变量的变化如何影响整个投资组合。
财务投资组合模拟对于投资者管理风险和做出明智投资决策至关重要。通过使用如蒙特卡洛模拟、压力测试和敏感性分析等技术,投资者可以模拟各种情景并识别投资组合中的潜在弱点。因此,投资者可以做出明智的决策,优化投资组合的表现并最大限度地减少风险。以下小节讨论了实施压力测试的概念和方法。
压力测试
压力测试是一种评估金融机构、系统或投资组合对潜在不利事件或冲击的韧性过程。它通过模拟极端情境并衡量对投资组合、系统或机构财务健康的影响来进行。压力测试是风险管理中的一个重要工具,帮助金融机构识别潜在的弱点并为可能的风险做好准备。压力测试的目的是评估突发事件对投资组合、机构或系统的影响。例如,压力测试可能会模拟重大经济衰退、大规模市场抛售或地缘政治危机的影响。这些情景的设计足够严峻,可以测试投资组合、机构或系统的韧性,同时又足够现实,以提供有意义的洞察。
压力测试涉及一系列技术,包括以下内容:
情景分析:这种技术涉及识别潜在情景并模拟其对投资组合、机构或系统的影响。这些情景的设计通常极端,可能包括一系列不利事件,如利率急剧上升或资产价格大幅下跌。
敏感性分析:这种技术涉及改变一个或多个输入参数,以评估对输出的影响。例如,敏感性分析可能涉及将利率提高一个特定的百分比,并评估对投资组合回报的影响。
反向压力测试:这种技术涉及识别能够导致重大损失或对机构、系统或投资组合造成严重影响的压力水平。反向压力测试有助于识别关键脆弱性,并为制定适当的风险缓解策略提供依据。
国际货币基金组织的一份报告中提到了关于压力测试的以下内容:
压力测试已经成为监管机构和监督者评估金融系统及个别机构韧性的重要工具。它在识别潜在脆弱性、量化风险和测试缓解策略的有效性方面发挥了不可或缺的作用。
因此,压力测试是风险管理中的重要工具,能够帮助金融机构识别潜在脆弱性并为潜在风险做准备。使用情景分析、敏感性分析和反向压力测试能够提供对突发事件对投资组合、机构或系统金融健康影响的洞察。随着金融环境的不断变化,压力测试将继续是确保金融系统稳定性的关键工具。下节将讨论在金融投资组合模拟中使用的其他技术。
蒙特卡洛模拟
蒙特卡洛模拟是一种在金融投资组合模拟中常用的技术,用于模拟金融资产的行为并估计投资组合的潜在风险和回报。这种技术通过生成多个市场行为的随机场景,模拟在给定时间范围内投资组合的表现。在本小节中,我们将探讨蒙特卡洛模拟作为金融投资组合模拟工具的各个方面。
蒙特卡洛模拟的一个关键优势是,它能够让投资者为他们的投资组合生成一系列可能的结果,而不仅仅依赖于单一的预测。通过进行多次模拟,投资者可以更好地了解与其投资组合相关的风险,并相应地调整投资策略。这在处理涉及广泛资产的复杂投资组合时尤为重要。
蒙特卡洛模拟技术包括以下步骤:
-
定义投资组合:蒙特卡洛模拟的第一步是定义待分析的投资组合。这包括指定各个资产、它们的预期回报以及它们之间的相关性。
-
定义概率分布:下一步是为投资组合中的每个资产定义概率分布。这涉及到为每个资产指定回报的均值和标准差,以及其他相关的统计参数。
-
生成随机情景:一旦投资组合和概率分布已被定义,蒙特卡洛模拟便会生成许多随机的市场行为情景。这些情景基于先前步骤中指定的概率分布进行生成。
-
模拟投资组合表现:对于每一个随机情景,蒙特卡洛模拟根据第一步中指定的资产权重和相关性计算投资组合的回报。这会生成一系列可能的投资组合回报分布。
-
分析结果:最后,蒙特卡洛模拟提供一系列统计数据,可用于分析模拟结果,例如投资组合的期望值、收益的标准差以及实现特定收益水平的概率。
蒙特卡洛模拟是金融投资组合模拟的强大工具,能为投资者提供一系列可能的结果,并帮助他们更好地理解与投资相关的风险。这一技术使投资者能够做出更明智的决策,并调整其投资策略,以最大化回报,同时最小化风险暴露。
假设一个投资者想要评估一个包含股票、债券和现金混合的特定投资组合的风险与回报。该投资组合包括 60%的股票、30%的债券和 10%的现金。为了评估这个投资组合的表现,投资者可以使用蒙特卡洛模拟,过程包括以下步骤:
确定投资组合中每种资产类别的历史回报和波动性。例如,假设历史数据表明,股票的年回报率为 10%,波动率为 20%。相比之下,债券的年回报率为 5%,波动率为 10%,现金的回报率为 2%,且没有波动性。
生成随机数字以模拟每种资产类别在未来的表现。蒙特卡洛模拟基于历史数据随机生成一组可能的未来结果。
根据每种资产类别的模拟结果计算整体投资组合的回报。例如,如果模拟结果显示股票的回报为 12%,债券为 4%,现金为 2%,则整体投资组合的回报为 8.4%。
重复进行多次模拟,以生成一系列可能的结果。蒙特卡洛模拟允许投资者对一系列可能的结果进行建模,并评估每种结果的概率。
基于可能结果的范围评估投资组合的风险和回报。这一步骤包括根据模拟结果计算投资组合的期望回报和标准差。投资者可以利用这些信息做出有关投资策略的明智决策。
戴维·布斯(David Booth),一家知名投资公司的创始人兼执行主席,指出以下内容:
蒙特卡罗模拟可以帮助投资者更好地理解其投资策略的潜在结果,并做出更有根据的决策。它使投资者能够评估各种因素对投资组合表现的影响,并为应对意外的市场条件做好更充分的准备。
蒙特卡罗模拟是金融投资组合模拟中一个有价值的工具,可以帮助投资者优化其投资策略并降低风险。
投资组合优化的金融建模
计算机算法和模型在金融投资组合模拟中变得越来越重要,而蒙特卡罗模拟是这些算法和模型常用的一种技术。以下是蒙特卡罗模拟如何通过计算机算法和模型应用于金融投资组合模拟的一个示例:
算法或模型根据历史数据和对未来市场条件的假设,生成可能影响投资组合的多种情景。
对于每个情景,算法或模型会根据投资组合中包含的资产及其历史相关性,计算该投资组合的预期回报和风险。
算法或模型利用这些预期回报和风险来计算投资组合的预期值、波动性,以及各种结果(如盈利或亏损)的概率。
通过重复这一过程成千上万次,甚至数百万次,算法或模型会创建一个潜在投资组合结果的分布,这个分布可以用来估计投资组合在不同市场条件下的风险和回报特性。
然后,可以分析这个分布,以识别投资组合中的潜在弱点或机会,并优化投资组合的资产配置或风险管理策略。
根据大卫·鲁珀特教授的说法,他是该领域的著名专家,蒙特卡罗模拟是一个强大的工具,用于建模复杂的系统,包括金融投资组合:
蒙特卡罗模拟使我们能够处理非常高维、非常复杂的模型,而这些模型在其他情况下无法通过解析方法求解。它还允许我们进行敏感性分析,观察当我们改变输入时,模型输出如何变化,从而识别出最重要的变量和风险源。
利用蒙特卡罗模拟和其他先进技术,计算机算法和模型可以帮助投资者在复杂且快速变化的金融环境中做出更加明智的决策,并更有效地管理他们的投资组合。
优化算法
优化算法被用于金融投资组合优化,以选择最适合给定投资者偏好和约束条件的投资组合。以下是一些常用的优化算法:
-
线性规划:一种数学技术,用于优化线性目标函数,且满足线性约束。线性规划在投资组合优化中被用来确定最优的投资组合配置。
-
二次规划:一种优化二次目标函数并满足线性约束的数学技术。二次规划在投资组合优化中用于确定最优投资组合,考虑收益分布的高阶矩,如波动率和偏度。
-
遗传算法:一种受自然选择启发的启发式优化技术。遗传算法使用一组候选解,应用基因操作(如变异和交叉)生成新的候选解,并根据适应度函数选择最合适的候选解。
根据现代投资组合理论的奠基人、诺贝尔奖得主哈里·马克维茨博士的说法,
用于优化投资组合的适当数学技术取决于投资者的目标、约束和偏好,以及所考虑证券的特性。
因此,优化算法的选择应根据投资者的具体需求来进行,投资组合应当被优化。
使用传统机器学习算法进行投资组合管理
经典实现
投资组合优化是一个与金融服务和银行业相关的问题,源自于马克维茨于 1952 年发表的开创性论文(onlinelibrary.wiley.com/doi/full/10.1111/j.1540-6261.1952.tb01525.x
)。该模型描述了一组资产 x i ∈ X,从中需要选择一个子集以最大化收益,同时最小化未来 𝑡 步时间的风险。在给定的期间内,每个资产都有一个预期回报,并且资产之间的协方差决定了基于分散化的风险量(为了简单起见)。这种分散化的背后思想是,如果我们只投资于那些最高收益的资产,它们如果失败时被同一因素所驱动的风险,比我们进行投资组合多样化时要大。我们将重点关注单次时间步的过程,假设局部最优解是我们投资组合全球最优解的长时间步轨迹的一部分。
那么,为了简单起见,我们先考虑单次时间步的优化。投资是有代价的。一个预算(𝐵)与投资于投资组合配置相关。它由投资每个资产的总成本表示,记为 b i,其中 i 是特定资产的索引。理想情况下,我们的推荐应不超过此条件(∑ b i < B)。因此,这个经典的优化问题通常被提出为:
∑ i=1 n x i e i− θ∑ i,j=1 n x i x j c ij
s . t. ∑ i=1 n x i b i ≤ B
其中,x i ∈ {0,1} 是与我们的资产集选择相关的掩码,而 𝜃 是一个拉格朗日算子,用于调节我们希望承担的风险量。我们将此选择二值化,因为它简化了计算。不过,考虑到投资组合的强制性要求,我们仍然可以考虑在模型的三个方面(收益、风险和预算)上做出进一步的投资选择。
我们最小化同样的模型,因为它将更符合我们将要采用的技术方法。因此,最终模型将如下所示:
− ∑ i=1 n x i e i+ θ∑ i,j=1 n x i x j c ij
s . t. ∑ i=1 n x i b i ≤ B
首先,我们将加载数据以构建优化问题:
import json
data = None
with open("binance-data.json", "r") as jsonfile:
data = json.load(jsonfile)
从加载的数据中,我们可以将计算的收益、协方差和资产成本存储在相应的变量中。我们还将预算设置为 50%:
import numpy as np
returns = data['mu']
covar = data['sigma']
assets = []
costs = []
for row in data['assets']:
assets.append(row["Asset"])
costs.append(float(row["Open"]))
# Half the money
budget = np.sum(costs)/0.5
接下来,让我们绘制收益的条形图:
import seaborn as sns
import matplotlib.pyplot as plt
sns.barplot(y=returns, x = assets)
plt.show()
图 5.3 – 按资产分类的收益
在这里,我们可以观察到,只有 BNBBTC 和 ETHBTC 的收益为正,而 LTCBTC、NEOBTC 和 QTUETH 的收益为负。
我们已经在数据文件中计算了协方差。接下来,让我们绘制协方差图:
f, ax = plt.subplots(figsize=(10, 8))
sns.heatmap(covar, mask=np.zeros_like(covar, dtype=bool), annot=True,
square=True, ax=ax, xticklabels=assets, yticklabels=assets)
plt.title("Covariance between Equities")
plt.show()
图 5.4 – 相关矩阵
前述协方差矩阵显示了不同股票之间的联合变动情况。通过这种方式,我们可以识别出可能由相同因素驱动的股票的方差,并意识到将它们同时纳入同一投资组合的风险。这些值将作为 c ij 系数引入我们的方程。
解决此类优化问题(如前述问题)的一个常见选择是使用优化库,如 CVX 及其 Python 实现(cvxpy
),并采用混合整数优化方法,因为我们的问题受到布尔值约束,𝑥 变量可以取的值。此时我们假设问题是凸的,且在选择求解器之前需要验证这一假设,但考虑到涉及的股票数量,这种方法展示了如何使用经典求解器而无需大量编写代码:
import cvxpy as cp
# Our solution variable
x_val = cp.Variable(len(returns), boolean=True)
theta = cp.Parameter(nonneg=True)
ret = np.array(returns)@x_val
risk = cp.quad_form(x_val, covar)
e_costs = np.array(costs)@x_val
# Constraints
cons = [cp.sum(x_val) >= 0, cp.sum(e_costs) <= budget, x_val >= 0]
# Objective function
obj = cp.Minimize(- ret + theta*risk)
# Problem
prob = cp.Problem(obj, cons)
我们使用了 0.03 作为拉格朗日乘数的风险惩罚。CVXPY 可以与多种求解器接口;这些求解器使用的算法有与停止标准和改进解质量相关的参数。没有一个参数设置对所有问题都是完美的。如果你没有从某个求解器中获得满意的结果,可以尝试更改其参数。具体做法取决于特定的求解器。
我们在代码中使用了‘ECOS_BB
’求解器:
theta.value = 0.03 # This is related to the risk penalty lagrangian
prob.solve(solver='ECOS_BB')
for i, val in enumerate(np.round(x_val.value,1)):
if val == 1:
print(f"Asset {assets[i]} was selected")
else:
print(f"Asset {assets[i]} was not selected")
我们得到的该问题的最优值为‘-0.0018521365020072623’。以下是已选择和未选择的资产的一个代码片段。
图 5.5 – 资产选择
我们可以看到 ETHBTC 和 BNBBTC 被选择了,根据历史回报,这两项资产提供了正回报,而其他资产没有被选中。
现在让我们开始量子实现。我们将查看一个基于退火的实现,使用 D-Wave SDK 和一个基于门的实现,使用 Qiskit。
量子算法投资组合管理实现
量子退火机
量子退火机是专门的机器,能够遵循绝热原理找到给定问题的最小能量解。我们在第二章中提到过一些这样的机器,但现在我们将详细介绍它们如何用来解决像投资组合优化这样的问题。
量子退火机需要一个目标问题,以矩阵形式设置,将变量作为掩码。在我们的投资组合示例中,解决方案将以二进制决策编码,表示是否将资产n包括在我们的最终投资组合中。因此,我们的问题矩阵应反映是否将某个资产包括在解决方案中的影响。
为此,文献中通常发现问题需要以 QUBO(或 Ising)形式呈现。QUBO代表二次无约束二进制优化,意味着考虑二进制变量(0 或 1),只表示两种方式的乘法(X i × X j),所有信息都包含在目标函数中。
因此,我们的 QUBO 问题的规范形式应该如下所示:
x T Qx
其中 Q 是包含所有信息的矩阵。
为了以这种方式构建我们的投资组合,我们需要构建目标函数,以便将资产选择回报、分散风险和预算约束包含在一个单一的方程式中,如下所示:
− ∑ i=1 n x i e i+ θ 1 ∑ i,j=1 n x i x j c ij + θ 2 (∑ i=1 n x i b i − B) 2
这里,ei 表示如果在投资组合中选择第 i 个资产时的预期回报。cij 表示同时选择两个资产的风险,因为它们可能受相同的基础过程驱动,从而增加我们的风险。bi 与获取第 i 个资产的成本相关,所有资产的总和不应超过可用预算(B)。两个θ值表示该项的相关性,意味着如果允许,可以超出初始预算,或者如果我们减少θ1 的值,可以考虑高风险的投资组合。我们可以调节结果,因为它需要是无约束的(QUBO 中的 U),但每次可以根据我们的优先级进行调节。
一旦问题被设定为这种规范形式,你可以轻松地将其提交给量子退火机以获得结果。
D-Wave 实现
D-Wave 不仅是这些机器之一,也是首批市场上可用的量子计算机之一,几乎在 10 年前就已问世。其设备可以作为云服务访问并免费使用(至少每月有几分钟的使用时间)。其在线服务名为 Leap(cloud.dwavesys.com/leap/login
),注册后,欢迎页面会显示剩余的计算时间,如下图所示。
图 5.6 – Leap 仪表盘
这是可以获取访问令牌的地方,访问令牌将在本地环境准备好后用于连接到服务。
让我们继续并开始构建我们的投资组合问题,并通过 D-Wave 平台解决它。首先,我们必须加载之前的数据,这些数据基于从 Binance 获取的信息:
import json
import numpy as np
data = None
with open("binance-data.json", "r") as jsonfile:
data = json.load(jsonfile)
returns = data['mu']
covar = data['sigma']
回报率和协方差将用于构成我们的目标问题。此外,还需要定义预算,以限制我们希望选择的资产数量。在本例中,这将被设定为资产总额的 50%:
assets = []
costs = []
for row in data['assets']:
assets.append(row["Asset"])
costs.append(float(row["Open"]))
# Half the money
budget = np.sum(costs)/0.5
感谢 PyQUBO 库,我们之前的公式可以轻松地转化为 D-Wave 芯片的编码问题:
from pyqubo import Array, Placeholder, Constraint
num_assets = len(assets)
x = Array.create('x', shape=num_assets, vartype='BINARY')
# Profit generated by each asset individually
H_linear_profit = 0.0
for i in range(num_assets):
H_linear_profit += Constraint(
returns[i] * x[i], label='profit({})'.format(i)
)
# Risk obtained from the covariance matrix
H_quadratic = 0.0
for i in range(num_assets):
for j in range(i + 1, num_assets):
H_quadratic += Constraint(
covar[i][j] * x[i] * x[j], label='risk({}, {})'.format(i, j)
)
# Constraint (budget)
H_linear_budget = 0.0
for i in range(num_assets):
H_linear_budget += Constraint(costs[i]*x[i], label='slot({})'.format(i))
# Final shape of the problem
theta1 = Placeholder('theta1')
theta2 = Placeholder('theta2')
H = - H_linear_profit + theta1 * H_quadratic + theta2 * (H_linear_budget - budget)**2
model = H.compile()
该模型服务于不同的目标,因为我们可以调整 theta 参数,使预算或多样化的约束条件变得更加严格或宽松:
# Set the Lagrange multipliers
theta1=0.5
theta2=0.3
feed_dict = {'theta1': theta1, 'theta2' : theta2}
# Transform to QUBO.
qubo, offset = model.to_qubo(feed_dict=feed_dict)
qubo
{('x[4]', 'x[0]'): -8.656820265502894e-06,
('x[0]', 'x[0]'): -0.003196217986409817,
('x[3]', 'x[1]'): 0.00019183405443636594,
…
('x[1]', 'x[1]'): 9.405658442868104e-05,
('x[2]', 'x[1]'): 0.00014597087707179864,
('x[1]', 'x[0]'): 0.00023358187881969354,
('x[2]', 'x[0]'): 0.0006994880363473856}
这是实际的 Q 矩阵,如前面的方程 1 所示。到目前为止,这只是将我们的目标问题公式化,以便 D-Wave 的退火机器能够处理它。接下来的步骤将把该模型送入退火器,因此我们必须实例化它:
from dwave.system.samplers import DWaveSampler
from dwave.system.composites import FixedEmbeddingComposite
import minorminer
import dimod
# Instanciate Sampler
dwave_sampler = DWaveSampler()
除了 D-Wave 的库之外,还需要额外的库将问题嵌入到我们的目标芯片架构中。这将在第九章中详细讨论,但芯片架构要求我们为问题找到合适的嵌入方式。感谢minorminer
库,这只需要几行代码:
# Construct a problem
bqm = dimod.BinaryQuadraticModel(qubo, dimod.BINARY)
# Get the edge list
target_edgelist = dwave_sampler.edgelist
# And source edge list on the BQM quadratic model
source_edgelist = list(bqm.quadratic)
# Find the embeding
embedding = minorminer.find_embedding(source_edgelist, target_edgelist)
sampler = FixedEmbeddingComposite(dwave_sampler, embedding)
一旦问题有了合适的嵌入,我们就可以将其发送到量子机器。我们可以调用采样器,在问题在 D-Wave 芯片上花费一定的时间(即退火时间)后,获得最终结果:
ta = 10 # microseconds
num_reads = 10
response = sampler.sample_qubo(qubo, num_reads=num_reads, annealing_time=ta)
response.first
Sample(sample={'x[0]': 1, 'x[1]': 0, 'x[2]': 1, 'x[3]': 0, 'x[4]': 0}, energy=-0.005097396148791738, num_occurrences=10, chain_break_fraction=0.0)
这是在 10 次运行后找到的最小能量解,退火时间为 10 微秒。此编码显示,根据我们编码信息的顺序(在我们的 BNBBTC 示例中为 ETHBTC),我们的最佳投资组合将包括第一个和第三个资产。
同时,值得注意的是,所有运行结果都显示这是退火时间后(num_ocurrences=10
)的最佳解决方案。有时会出现这种情况,因为该解决方案的成功概率较低。当使用基于门的量子设备解决这些问题时,这一点尤为重要。
Qiskit 实现
Qiskit 是我们将使用的框架来尝试解决相同的问题,但我们将使用基于门的量子设备。基于门的设备允许更通用的设置来解决退火问题,但也允许任何其他组件。你可以使用 QML 技术或基于门的算法来解决问题,例如 Shor 算法、Grover 算法等,正如在第二章中讨论的那样。
在这种情况下,Qiskit 已经提供了高层次的金融抽象库,以便我们可以最小化编码要求,而不是从头开始。例如,基于 Binance 数据构建我们的二次问题将需要以下几行:
from qiskit_finance.applications.optimization import PortfolioOptimization
q = 0.5 # set risk factor
budget = len(assets) // 2 # set budget
portfolio = PortfolioOptimization(
expected_returns=returns, covariances=covar, risk_factor=q, budget=budget
)
qp = portfolio.to_quadratic_program()
最新的方程表示这个二次程序,Qiskit 已经提供了解决它的方法,使用经典的基于 NumPy 的求解器:
from qiskit_optimization.converters import QuadraticProgramToQubo
from qiskit_optimization.algorithms import MinimumEigenOptimizer
from qiskit.algorithms import NumPyMinimumEigensolver
def index_to_selection(i, num_assets):
…
def print_result(result):
…
exact_mes = NumPyMinimumEigensolver()
exact_eigensolver = MinimumEigenOptimizer(exact_mes)
result = exact_eigensolver.solve(qp)
print_result(result)
Optimal: selection [1\. 0\. 1\. 0\. 0.], value -0.0011
----------------- Full result ---------------------
selection value probability
---------------------------------------------------
[1 0 1 0 0] -0.0011 1.0000
[1 1 1 1 1] 9.0971 0.0000
[0 1 1 1 1] 4.0459 0.0000
[1 0 0 0 0] 1.0102 0.0000
[0 1 0 0 0] 1.0108 0.0000
[1 1 0 0 0] 0.0010 0.0000
[0 0 1 0 0] 1.0087 0.0000
[0 1 1 0 0] -0.0005 0.0000
[1 1 1 0 0] 1.0102 0.0000
[0 0 0 1 0] 1.0122 0.0000
[1 0 0 1 0] 0.0024 0.0000
[0 1 0 1 0] 0.0031 0.0000
[1 1 0 1 0] 1.0138 0.0000
尽管这显示了我们问题的预期解,但在扩展到更大的投资组合配置时,过程可能会很昂贵,因为它探索了潜在解的整个空间。
理想情况下,变分方法应该在探索这些大型解空间时更为高效,考虑到量子计算的特性。当同时处理所有这些选项并将它们演化时,突出最小化我们目标的选项是这些技术的亮点。将我们的二次问题转移到量子设置中需要两个主要步骤:
-
一个参数化量子电路(PQC)或 ansatz
-
一个优化过程,将调整并找到适合我们 PQC 的参数。
对于第一个例子,量子近似优化算法(QAOA)将是我们解决问题的候选算法。这是一种直接继承自退火器处理此类问题的方法,通过设置交替的哈密顿量来处理目标问题和混合器哈密顿量。
PQC 对于给定问题有固定的结构,只需要对其进行重复以进行选择。通过改变重复次数,我们应该能够提高目标状态——我们问题的解的成功概率。然后,我们希望通过变分方法找到一组合适的参数,以最大化这个成功概率。在这种情况下,COBYLA 将是我们选择的优化器,因为它的性能很快。其他选项也应尝试:
from qiskit.algorithms import QAOA
from qiskit.algorithms.optimizers import COBYLA
layers = 2
cobyla = COBYLA()
cobyla.set_options(maxiter=500)
qaoa_mes = QAOA(optimizer=cobyla, reps=layers, quantum_instance=quantum_instance)
qaoa = MinimumEigenOptimizer(qaoa_mes)
result = qaoa.solve(qp)
Optimal: selection [1\. 0\. 1\. 0\. 0.], value -0.0011
----------------- Full result ---------------------
selection value probability
---------------------------------------------------
[0 0 0 1 1] 0.0048 0.0783
[0 1 0 1 0] 0.0031 0.0777
[0 1 0 0 1] 0.0031 0.0777
[1 0 0 1 0] 0.0024 0.0775
[1 0 0 0 1] 0.0021 0.0773
[0 0 1 1 0] 0.0009 0.0770
[1 1 0 0 0] 0.0010 0.0770
[0 0 1 0 1] 0.0009 0.0770
[0 1 1 0 0] -0.0005 0.0765
[1 0 1 0 0] -0.0011 0.0763
…
好吧,在我们的第一次尝试中,尽管我们找到了最佳解,但它与其他解在相同的量子状态下竞争。我们必须记住,我们在量子设备上执行的所有操作的结果将生成一个量子状态,理想情况下这个状态应该包含我们的候选解。如果它还有更大的概率振幅,那么当它在测量时坍缩到这些经典状态之一时,它更有可能成功。因此,我们希望找到一个概率比这里显示的更大的结果。
我们可以尝试不同数量的层或重复次数,在问题与混合哈密顿量之间进行实验:
from qiskit.algorithms import QAOA
layers = 5
qaoa_mes = QAOA(optimizer=cobyla, reps=layers, quantum_instance=quantum_instance)
qaoa = MinimumEigenOptimizer(qaoa_mes)
result = qaoa.solve(qp)
Optimal: selection [1\. 0\. 1\. 0\. 0.], value -0.0011
----------------- Full result ---------------------
selection value probability
---------------------------------------------------
[0 0 0 1 1] 0.0048 0.0666
[0 1 0 1 0] 0.0031 0.0663
[0 1 0 0 1] 0.0031 0.0661
[1 0 0 1 0] 0.0024 0.0659
[1 0 0 0 1] 0.0021 0.0659
[0 0 1 1 0] 0.0009 0.0656
[0 0 1 0 1] 0.0009 0.0654
[1 1 0 0 0] 0.0010 0.0654
[0 1 1 0 0] -0.0005 0.0651
[1 0 1 0 0] -0.0011 0.0647
…
如果这种方法看起来不合适,我们可以尝试在一般情况下改变优化方法,寻找不同的初始假设组合。
变分量子本征求解器 (VQE) 允许更通用的方法来描述初始假设。例如,下面的示例中使用了 TwoLocal PQC 实现。TwoLocal 电路可以包含多个相同方案的重复,包含不同的、任意选择的操作:
from qiskit.circuit.library import TwoLocal
ansatz = TwoLocal(num_assets, "ry", "cz", reps=3, entanglement="full")
ansatz.decompose().draw('mpl', fold=150)
图 5.7 – 由前面代码产生的包含三次 RY 旋转和 CZ 两量子比特门的电路
我们需要找到 theta 参数来解决我们的问题。这时,变分方法就派上用场了——在本例中,重新使用 COBYLA 求解器来找到这些理想的参数:
from qiskit import Aer
from qiskit.algorithms import VQE
from qiskit.algorithms.optimizers import COBYLA
from qiskit.utils import QuantumInstance
from qiskit.utils import algorithm_globals
algorithm_globals.random_seed = 1234
backend = Aer.get_backend("statevector_simulator")
cobyla = COBYLA()
cobyla.set_options(maxiter=500)
quantum_instance = QuantumInstance(backend=backend, seed_simulator=1234, seed_transpiler=1234)
vqe_mes = VQE(ansatz, optimizer=cobyla, quantum_instance=quantum_instance)
vqe = MinimumEigenOptimizer(vqe_mes)
result = vqe.solve(qp)
如前面的代码所示,VQE 需要一个初始假设或 PQC、一个优化器和一个量子实例,即量子电路评估将要执行的设备。在本例中,将使用本地仿真,但我们将在第八章中看到如何利用云计算资源进行这种评估,类似 D-Wave 的情况。在经过一些迭代(最多 500 次)后,我们可以打印出我们的投资组合问题的结果:
print_result(result)
Optimal: selection [1\. 0\. 1\. 0\. 0.], value -0.0011
----------------- Full result ---------------------
selection value probability
---------------------------------------------------
[1 1 0 0 0] 0.0010 0.3613
[1 0 0 1 0] 0.0024 0.3463
[0 0 1 1 0] 0.0009 0.1285
…
[1 0 1 0 0] -0.0011 0.0000
找到的解决方案与我们之前示例中的最优解匹配,但找到它的成功概率不是 1.0,而是接近 0。这意味着,如果仅允许使用这些参数运行一次电路,并在过程结束时测量经典比特串,那么几乎不可能选中这个状态。从经典确定性的角度来看,这可能很难理解。然而,处理量子状态时,可能会出现这类情况,其中最优解是由多个混合级别上的最优和次优选项组成的。
量子科学家的工作将涉及找到一种好的方法,通过改变 PQC、优化方法或全局过程来最大化这些几率。
例如,通过增加 TwoLocal 初始假设的重复次数,我们可以看到这些几率是如何变化的:
ansatz = TwoLocal(num_assets, "ry", "cz", reps=6, entanglement="full")
vqe_mes = VQE(ansatz, optimizer=cobyla, quantum_instance=quantum_instance)
vqe = MinimumEigenOptimizer(vqe_mes)
result = vqe.solve(qp)
Optimal: selection [1\. 0\. 1\. 0\. 0.], value -0.0011
----------------- Full result ---------------------
selection value probability
---------------------------------------------------
[0 1 0 0 1] 0.0031 0.6130
[1 0 1 0 0] -0.0011 0.2030
[0 1 0 1 0] 0.0031 0.0528
[0 1 1 0 0] -0.0005 0.0435
[1 0 0 1 0] 0.0024 0.0314
…
这好多了。现在,如果我们运行经过训练的初始假设五次,高概率下,至少会找到一次最优解。我们可以通过简单地组合电路、绑定参数,并对一组运行进行测量来尝试这一点:
from qiskit import QuantumCircuit
from qiskit import Aer, execute
from qiskit.visualization import plot_histogram
qc = QuantumCircuit(num_assets,num_assets)
# VQE Two Local ansatz
qc.compose(ansatz, inplace=True)
# Measures
for i in range(0, num_assets):
qc.measure(i, i)
pqc = qc.bind_parameters(best_parameters)
# Number of shots to the circuit
nshots = 10
# execute the quantum circuit
backend = Aer.get_backend('qasm_simulator') # the device to run on
result = execute(pqc, backend, shots=nshots).result()
We could then collect the results and check the outcome.
counts = result.get_counts(pqc)
plot_histogram(counts)
图 5.8 – 量子态输出的概率
结论
当扩展到更大的投资组合时,计算最优结果的成本可能会比量子方法更昂贵。然而,正如我们所看到的,即使是量子计算这些大规模组合问题,它们也伴随着对结果完全确定的需求。
需要理解的是,这些技术要求像传统机器学习方法一样,充分理解我们 ansatz(假设方法)最佳架构如何有利于我们。而在许多情况下,这将来自于与不同类型的投资组合和股票组合进行拟合的经验。并非所有资产表现出相似的行为。这将需要探索潜在 ansatz 的广泛扩展、在这些 ansatz 中重复使用方案,以及优化技术,后者需要更少的迭代次数来找到最佳参数。
尽管基于门的量子设备可能提供一种通用的量子计算方法,但不可否认的是,如今,量子退火机提供了能够处理更大投资组合的设备,而无需费力寻找和训练变分方法。
下一章将介绍信用风险分析领域。我们将提供有关该理论的介绍,以及如何通过经典方法和量子方法来解决这一问题。
第六章:信用风险分析
信用评分、欺诈检测、客户流失预测、信用额度定义和金融行为预测(等)是银行和金融机构面临的持续挑战,这些机构不断研究如何提供更准确的结果以及降低与业务相关的风险。在提供服务时,大部分这些问题可以通过使用机器学习来解决,例如对可能不会按时支付账单或可能实施欺诈的用户进行分类。在本章中,将探讨这些场景中的量子机器学习方面,针对大多数案例使用与经典算法的恒定基准进行比较。
在当前的经济形势下,市场稳定性不可预测,人们的工作方式也在不断变化(得益于“零工经济”的崛起),因此在不增加企业风险的情况下,很难扩大信用产品组合并覆盖更多客户群体。并行探索 QML 和 ML 方法可以提升不同银行、新银行、金融科技公司及其他金融机构现有的决策架构,这些机构在结构中考虑了向公司或个人提供贷款的可能性。
如前所述,机器学习作为一种替代方案非常适用于我们拥有证据(数据)但无法手动完全掌握潜在模型或逻辑的情况。解决这类项目的最著名机器学习技术之一与监督学习相关。信用评分系统是金融决策方法中常见的一部分。它们使用提升决策树(LGBM 和 XGBoost)、随机森林、支持向量机、聚类方法和一些回归模型来得出可用于做出决策和自动评分的结果。同样,QML 算法也可以在相同的场景下进行测试和比较,最终提供业务优势。量子领域中的典型分类算法包括量子神经网络(QNNs)、量子支持向量分类器(QSVCs)和变分量子分类器(VQCs)。本章中表达的代码和理论可以帮助数据科学部门或金融领域的机器学习相关专业人员,帮助他们通常试图改进模型,寻找确定正确方法以从现有计算能力中提取更多利益的途径。
在本章中,我们将使用合成数据集(这些数据集是实际公司或数据点的统计复制品)表示的经典数据,比较机器学习和量子机器学习算法。目标是根据金融行为评估其信用评分。此外,我们还将分析数据集的特征,并探讨使用合成数据的影响。最后,我们将深入探讨模型评估技术。
本章的主要内容包括以下几个主题:
-
信用风险分析的相关性
-
执行机器学习和量子机器学习模型的数据探索和准备
-
经典与量子机器学习算法的实现
-
量子支持向量机
信用风险分析的相关性
为了提供更广泛的背景并理解解决金融领域分类问题的相关性,本书的这一部分需要定义一些核心概念,尽管从高层次的角度来看也很重要。在本章的背景下,“信用风险”一词是指如果借款人在某个日期之前未能偿还贷款,贷方可能会损失资金的风险。随着信用卡业务的迅速增长,如图 6**.1所示,以及金融参与者多年来的扩展,扩大目标人群的范围的挑战需要更为复杂的承销系统。如果评估这些风险的手段不够准确,那么这将使大量金融机构面临风险。
鉴于前述情况,通常需要关注那些信用历史较少或没有信用记录的客户的信用风险,以扩大现有的客户群体并在尚未开发的市场中找到盈利机会。信用决策系统的另一个挑战是,大多数与信用卡或贷款客户相关的历史数据集存在不平衡问题,因为通常情况下,按时未付款的客户比例相较于整体样本来说较小。然而,这一情况可能会发生变化,取决于所在国家及金融机构如何设置目标社会和经济结构。因此,在开始任何预测性质的项目之前进行合理的数据分析至关重要,因为这将直接影响到业务收入。识别不平衡、偏差或不完整的信息是任何数据驱动项目中的基础部分,无论它是经典的还是与量子相关的。
市面上大多数机器学习系统都经过了广泛的测试,并且众所周知,在某些情况下,它们可以准确估算可能违约的借款人或信用卡支付者的数量。自 2000 年代初以来,机器学习领域经历了巨大的发展,现在用于信用评分策略的模型能够更好地帮助大中型银行,通过深入的客户和潜在客户信用检查,主要是利用技术来优化决策结构,从而确保假设的风险在可接受的范围内,这个范围可能会根据所属机构的类型而有所不同(见图 6**.1和wolfstreet.com/2019/05/22/subprime-profit-machine-hiccups-credit-card-charge-offs-rise-in-the-banking-system/
)。
图 6.1 – 新玩家尝试扩大其投资组合的年度风险
私营企业中的数据科学与分析部门正在寻找更准确、高效的方式来衡量信用风险(Crouhy 等,2000;Crook 等,2007)。目前,许多金融机构正在研究量子机器学习方法,帮助它们做出更好的决策并为大量客户定制产品。像西班牙的 CaixaBank、巴西的 Itaú Unibanco、巴西的 alt.bank 和葡萄牙的 Rauva 等银行,专门寻找 QML 方法在风险或客户保持(行业文献中也称为 客户流失)相关的分类挑战中的优势,使用混合量子经典算法。此外,西班牙的 BBVA、法国的 Crédit Agricole、美国的 Citi、英国的 Barclays、美国的 JP Morgan、加拿大的 Royal Bank of Canada、美国的 Wells Fargo 和英国的 HSBC 等银行,也在研究并使用这项新技术的不同策略。
执行机器学习(ML)和量子机器学习(QML)模型的数据探索与准备
如前所述,在本章中,我们将引导您实现混合量子经典算法,并展示它们在金融实际场景中的表现,但在您开始在专业环境中使用它们之前,您应该思考——或者至少回顾——以下一些概念。
数据丰富化是指通过额外的信息来充实或补充现有的数据集。在信用评分系统的背景下,数据丰富化是利用额外的数据源来补充可能来自信用机构或非传统来源(例如,移动数据挖掘)的附加变量和特征,以提高信用风险评估的准确性。
通过引入如公共记录(数字足迹)、社交媒体行为、财务历史、开放金融及其他替代数据源,数据丰富化可以帮助弥合信息空白,从而对客户进行全面分析。例如,贷款机构可能会利用第三方服务,通过获取金融机构、税务机关和信用卡机构的数据来验证借款人的工作、收入和资产。
通过引入来自信用报告机构的新数据,债权人可以在评估信用 worthiness 时做出更加明智的选择,从而降低违约或拖欠的风险。此外,数据丰富化可以帮助贷款机构识别新的客户类别,并根据借款人资料定制更个性化的解决方案。
总结来说,信用评分系统的典型数据源可以归纳为三大类:
-
内部数据:大多数金融机构会向当前使用支票账户或活期账户的客户提供信用。分析这种行为应作为进一步决策的基础。
-
金融行为数据:获取所有评估组织或个人金融行为所需的财务数据,考虑其支付历史、风险评分、当前债务、人口统计信息以及当前使用的金融产品。
-
开箱即用的数据:这包括来自不同来源的数据,而不是传统信用局(例如,Equifax)的来源。众所周知,一些金融机构使用心理因素、智能手机元数据和用户的数字足迹,在决策模型中加入大量的变量和特征。
特征分析
特征分析是确定影响机器学习模型表现的最重要因素或特征的过程。在信用评分系统的背景下,特征分析是发现最具预测性的特征的过程,这些特征可以用来做出正确的信用决策,并正确区分潜在的良好或不良付款人。
采用机器学习的信用评分模型通常会融入多种特征或描述性变量,包括支付历史、信用使用、信用年限和使用的信用类型。然而,并非所有这些特征在预测信用风险时的影响力都是相同的,有些特征可能比其他特征具有更大的影响。
特征分析有助于识别影响信用风险的最重要变量,并在模型中对它们进行优先排序。可以使用多种方法,包括相关性分析、决策树和梯度提升算法,来确定具有最高预测潜力的特征。
通过集中关注最重要的变量,信用评分的机器学习模型可以提高精度,并降低违约或拖欠的风险。特征分析还可以帮助贷方通过增强对信用风险决定因素的理解,制定更量身定制的风险管理策略。
需要记住的是,特征分析技术是一个持续的过程,最相关的因素可能会随着经济条件、客户行为和其他变量的变化而变化。因此,信用评分的机器学习模型必须不断更新和调整,以应对信用风险不断变化的本质。
执行特征分析时,最著名的策略和方法如下:
-
特征选择:这是一个非平凡的过程,视具体情况而定,可能对最终结果产生巨大影响。关于机器学习项目有一个误区,即更多的数据和变量总是好的,这固然是对的,但并非所有信息都对机器学习模型有用。在某些情况下,减少特征反而能实现更好的预测(Ji 等人)。执行这些过程时,有一些技术考虑使用遗传算法,或者简单地分析特征的重要性、相关性和方差,以决定哪些特征对预测过程更有价值。通常,这一阶段包含在数据科学过程中,称为探索性数据分析(EDA),它涉及调查数据集,从中提取最佳数据作为后续操作的输入。
-
特征工程:一旦数据和特征可用,原始变量可能不足以在特定目标或关键人口统计下取得良好的结果。如果是这样,你可能需要构建新的特征,这些特征可以通过对原始变量的计算得到(例如,如果我们有客户的交易数据,可以生成额外的特征,考虑交易的平均值,以及中位数、最大金额和最小金额)。这些新列可能对机器学习模型的关键绩效指标(KPIs)产生重大影响。
数据预处理
修改和准备数据以供机器学习模型使用的过程称为数据预处理。在信用评分系统中,数据准备包括清理、转换和准备信用数据,以便可以高效地用于训练机器学习模型。
信用数据有时可能不完整且杂乱无章,缺失数字、格式不一致以及其他可能阻碍机器学习模型有效性的困难。数据准备技术可以帮助解决这些问题,并为建模做好数据准备。
通过利用数据预处理方法,信用评分的机器学习模型可以更高效地训练,并产生更准确的结果。以下是两种最相关的方法:
-
过采样:金融数据集通常存在目标变量不平衡的情况,模型预测的目标变量在不同类别间的分布可能严重偏差。例如,95%的非违约者和 5%的违约者可能会给机器学习架构带来很大的困难。为了缓解这一问题,有不同的技术可以增加其中一个类别的样本,或是提供更多原始数据集的统计副本。一种典型的策略是使用合成少数类过采样技术(SMOTE)或一般的合成过采样,并应用若干子策略。通过使用这些技术,可以平衡金融数据集,代表良好和不良支付者的相等比例,因此,机器学习训练过程中的数据点和模式分析将受到积极影响。
-
编码:通常,数据有不同的形式和数据类型。为了能够在机器学习(ML)或量子机器学习(QML)算法中处理这些数据,我们需要确保所有特征都是数值型的,而其中一部分变量通常是分类变量。为了继续处理,我们有几种方法可以将分类数据编码为数值数据,例如独热编码、标签编码、二进制编码和特征哈希。此外,QML 模型面临的挑战是将经典数据样本转化为量子态,这本身就是一个完整的研究领域。在我们即将探索的技术领域中,我们将探讨一些常见的嵌入和特征映射,但请记住,关于如何解决编码问题,存在许多不同的技术,从基本的特征映射到量子生成对抗网络(qGANs),例如在第四章中我们看到的股票价格分布案例中的嵌入技术。
在接下来的子章节中,如前所述,主要的重点将放在模型的实现上,并应假设数据集已经根据所有前述概念进行准备。
真实商业数据
在量子机器学习(QML)应用于行业案例时,面临的一个障碍是缺乏使用代表性数据的开源示例,无法重现真实的商业场景。大多数教程和开源代码库使用演示数据集来展示模型架构,通常得到的有趣结果很难重复。在本章的练习中,我们将使用真实中小型企业财务行为的合成副本,以便结果和数据处理能够真实地模拟一个银行或金融科技场景,按客户的财务风险进行分类。
合成数据
根据像 Gartner 这样的专家的说法,合成数据旨在彻底改变人工智能(www.gartner.com/en/newsroom/press-releases/2022-06-22-is-synthetic-data-the-future-of-ai
)。经过现实世界数据样本训练的数据生成器能够创建与原始数据点在统计学上相似的合成数据点样本。模型首先发现样本数据的模式、关联和统计特性,然后它可以生成与这些样本相似的虚假样本。它基本上是与深度伪造技术背后使用的技术相同,只不过在这里用于企业的表格数据。使用合成数据的一个好处是能够通过修复偏差、数据样本平衡和缺失数据来优化原始数据集,因为生成器能够通过学习特征之间的关系来克服这些问题,从而生成一个现实的数据样本(Figueira 等人)。当客户数据涉及到过程中时,这一点尤为重要,因为这可能会带来隐私相关的问题,给已经复杂的分析项目增添负担。幸运的是,考虑到合成数据不指向特定个体,如果正确合成,它将不受任何监管限制。
合成数据看起来与用于训练算法的实际数据样本相同,并且具有相同的意义。由于合成数据集包含与原始数据相同的洞察和关联,它是原始数据的一个很好的替代品。考虑到这一点,提取的信息可以安全地用作训练数据,以构建机器学习模型和测试数据,例如在测试信用评分或欺诈检测系统时(Assefa 等人)。
这种方法生成新数据的主要好处如下:
-
它避免了通用数据保护条例(GDPR)和其他法律约束,当数据在机构之间共享或仅用于在不同环境下训练机器学习模型时,不会出现个人身份信息(PII)泄露的风险。
-
它能够更高效地检测异常值,例如欺诈行为。欺诈行为是银行所追踪的所有活动中的一小部分。由于数据量庞大,机器学习模型很难从这类数据集中学习,以识别新的欺诈实例,可能会导致不准确的发现。欠采样和过采样是处理不平衡数据集的两种方法。欠采样是指删除(在本例中)非欺诈性观察数据,以获得平衡的数据集。相反,过采样通过生成新的欺诈行为示例来模拟真实的欺诈行为。然后,机器学习模型可以在平衡的数据集上进行训练,从而提供更精确的结果。为了获得平衡的数据集,可以采用合成数据生成方法来生成虚构的欺诈案件。
-
它改善了现有的机器学习模型,因为与监督学习和深度学习相关的大多数算法通常对数据量有较高的需求。即使金融机构拥有足够的数据来训练机器学习模型,数据量对模型准确度有着显著影响。合成数据可以极大地扩展数据集的规模。
案例研究。
本章将应用的练习基于来自中小型企业(SMBs)的合成公共数据,这些数据由公司 NayaOne 在 Kaggle 数据科学平台上发布(www.kaggle.com/datasets/nayaone/sme-uk-businesses-financial-statistics
)。数据框架的结构由 10 个不同的 CSV 文件组成,每个文件包含关于公司不同方面的信息,具体如下:
-
应收账款:指客户为已开票商品或服务所欠的款项。
-
企业:公司及其详细信息的列表。
-
COVID:公司在疫情波动期间的财务数据。
-
信用账户历史:指信用账户的历史记录。
-
信用卡历史:包含公司信用卡活动及相关债务的记录。
-
信用评级:对借款人总体或相对于财务义务的信用状况的定量评估。
-
董事:来自英国的个人,在数据集中的企业中担任董事职务。
-
保理:与公司将其应收账款以折扣价出售给第三方的过程相关的数据,这是一种债务融资方式。
-
贷款:公司已偿还和未偿还贷款的详细信息。
当所有 CSV 文件合并时,它们总共有 269 个变量。决定公司是否为“良好”或“不良”付款人的目标变量是基于公司在拥有债务时的实际行为,将它们划分为四个不同的类别,具体如下:
-
潜在违约者(贷款方面):在贷款的语境中,如果贷款分期付款中至少有一次延迟支付,则债务被视为逾期。
-
潜在违约者(信用卡方面):如果信用卡账户中至少有一次支付延迟,则该账户被视为逾期。
-
违约者:当贷款状态变量记录为“违约”时,公司被视为已违约。
-
拖欠付款者:对于过去五年内有超过四次逾期付款的公司,分配了拖欠标记。
所有这些先前的规则在 71.46%的案例中定义了中小型企业的良好行为,在其余 29.54%的案例中定义了不良行为。当然,按照惯例,所有用于计算目标类变量的变量都已从数据集中删除,以避免高度相关的特征。
数据提供者。
NayaOne 是一家来自英国的颠覆性初创公司,成立于 2019 年。其革命性的目标是提供一个单一的访问点,获取数百甚至数千个合成数据点,使得金融行业的机器学习模型能够在不必等待数月才能获得专有数据的情况下构建。通过使用 NayaOne 的平台,每个保险科技、金融科技或银行都可以在几周内而不是几个月或几年内原型化机器学习模型或架构。
除了能够更快原型化并匹配理想的市场时间外,实验成本至少能减少 80%。
特征
用于模型的特征领域如下,基于 EDA(探索性数据分析)和特征选择分析:
-
primary_sector
-
factoring_provider
-
revenue
-
cant_invoices
-
payment_index
-
new_recruitments
最后,经过所有技术应用后,选择了 164 个特征作为训练模型时非常重要的特征。
在信用评分场景中实现经典与量子机器学习算法
将机器学习和量子机器学习应用于信用评分挑战需要开发一个预测模型,该模型能够正确判断个人或公司是否具备信用。通常,这个过程如前述步骤所示,包含数据收集、数据丰富、数据准备、特征工程、特征选择、模型选择、模型训练、模型评估,以及随后的部署。在本节中,我们将覆盖大部分之前的概念和步骤,假设数据已经被编码为数值变量,且特征已被选择。
数据准备
首先,需要加载数据。这些数据将以行业内较为知名的格式之一——CSV 格式出现。正如前面详细说明的那样,加载到笔记本中的信息是经典格式,因此我们可以使用 pandas 和 scikit-learn 来处理我们架构的第一步,而不会遇到问题。
预处理的第一步是加载 CSV,定义实验的 X 和 y 值,随后再拆分训练集和测试集:
import pandas as pd
# Data loading from a CSV file
fulldata = pd.read_csv('../../data/nayaone_synthetic_data.csv')
# Transforming data to float
data = fulldata.astype(float)
data.head(10)
目前,为了加载数据,重要的是将数据集拆分为两组——一组用于训练模型,另一组用于评估模型的拟合度。通过使用从未用于训练模型的数据集,我们旨在设定切实的衡量标准,以便当我们的模型在真实世界中运行时能够应对真实数据的到来。这个数据集已经包含了从合并的 CSV 文件中拆分这两组的标识符:
data_train = data.groupby([data.index,'train']).filter(lambda x: x['train'] == 1.).reset_index()
data_test = data.groupby([data.index,'train']).filter(lambda x: x['train'] == 0.).reset_index()
在此之后,将这两个集合拆分为特征和目标属性就变得简单了。需要移除那些不包含相关信息或者可能会在进一步的测试集上虚假预测我们模型能力的列,因为标签信息已经被编码,这些列就不再是我们模型在实际中能够获取的属性:
# Separate X and y considering dropping not useful columns
X_train = data_train.drop(['target', 'Unnamed: 0', 'train'] ,axis="columns")
y_train = data_train['target']
X_test = data_test.drop(['target', 'Unnamed: 0', 'train'] ,axis="columns")
y_test = data_test['target']
始终检查目标变量的分布非常重要,因为如果目标变量高度不平衡,可能会导致模型走向一个简化的决策,即所有样本都被视为大多数样本的类别。在这种情况下,可能需要其他过采样技术来提高模型性能,并使其与数据集中的不同样本组之间保持平衡。在此处展示的示例中,数据集已经足够平衡(我们的两个主要类别之间为 70-30),以便为接下来的部分做准备,这些部分与模型的架构相关:
# Review the balance of the target variable in train
y_train.value_counts(normalize=True)*100
0.0 69.953052
1.0 30.046948
# Review the balance of the target variable in test
y_test.value_counts(normalize=True)*100
0.0 71.636364
1.0 28.363636
预处理
预处理阶段是任何机器学习项目和模型架构中最重要的步骤之一。在混合量子-经典算法中,输入也需要从经典特征转变为量子状态,通常称为量子编码或量子嵌入。在本节中,这些概念将被详细解释,但首先我们将重点介绍将在量子编码部分扩展的经典预处理方法。
在获得训练和测试数据集后,预处理步骤,特别是降维,将会进行。如前所述,并非所有属性都具有相同的信息量,因此集中大部分信息至关重要,以避免在模型中增加不必要的负担,特别是在确定特征的相关性时。例如,基于树的模型会考虑每个属性所提供的信息增益(Tangirala 2020),而神经网络则会将那些不有助于改善决策的属性权重变为零。然而,某些技术,如我们将要探讨的那些技术,缺乏这种能力,因此我们需要进行合理的处理,减轻后续模型训练步骤的工作量。
在这方面可以使用一些技术,在量子机器学习(QML)的背景下,它们减少了需要编码到量子设备中的变量数量,从而减少了运行分类任务所需的量子比特。请记住,这一点也很重要,因为一些量子设备的能力有限,通常只有 10 或 100 个量子比特,而数据集可能包含每个数据点成千上万个特征。
最常用的两种技术如下:
-
主成分分析 (PCA) (Bro & Smilde 2014):通过分析协方差矩阵并将其表示为不同特征之间的线性组合,从而生成正交轴或主成分,PCA 提供了一种排序方式,其中底部的主成分可以被去除,因为它们编码的信息量最小。通过这种技术,我们可以定义一个参数来提取所需的成分或特征,唯一的限制是特征数量不能超过原始变量的数量。
-
线性判别分析(LDA)(Izenman 2013):LDA 是一种监督算法,通过考虑类别标签来减少特征空间。LDA 聚焦于目标可分性,尝试定义更好地映射该可分空间的特征。如果使用 LDA,则特征数的减少有一个限制,因为 LDA 最多只能提供 N − 1,其中 N 是可用的类别数。
图 6.2 中的示意图突出了两种技术之间的主要区别。在这种情况下,将使用 LDA,因为它有着超越 PCA 的证明记录,并且使用较少的量子比特和二分类(Mancilla 和 Pere 2022)。主要的限制是,之前,数据库已经被划分,目的是从每个集合中提取多个组件,并且至少为接下来的 2 量子比特方法提供两个组件。
图 6.2 – PCA 与 LDA 的比较
图片来源:sebastianraschka.com/Articles/2014_python_lda.html
为了简化,X_train
和 X_test
将被平分,50%的特征分配给features_a
集合,其余分配给features_b
。由于我们有 167 个特征,83 个特征将分配到一半,84 个特征分配到另一半。强烈建议用聚类、变量类型分组、数据源或相关性定义来替代此过程:
# Hard split by half on the dataframe for the LDA dimensionality reduction
# Train split
features_a = X_train.iloc[:,:83]
features_b = X_train.iloc[:,83:]
# Test split
features_a_test = X_test.iloc[:,:83]
features_b_test = X_test.iloc[:,83:]
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
# LDA fit with the separated groups
lda1 = LDA(n_components=1, solver='svd').fit(features_a, y_train)
lda2 = LDA(n_components=1, solver='svd').fit(features_b, y_train)
# LDA train transformation
features_lda_1 = lda1.transform(features_a)
features_lda_2 = lda2.transform(features_b)
# LDA test transformation (using train fit)
features_lda_1_test = lda1.transform(features_a_test)
features_lda_2_test = lda2.transform(features_b_test)
# Arrays to dataframe for join in a single dataframe
features_lda_1 = pd.DataFrame(features_lda_1)
features_lda_2 = pd.DataFrame(features_lda_2)
features_lda_1_test = pd.DataFrame(features_lda_1_test)
features_lda_2_test = pd.DataFrame(features_lda_2_test)
# Join of dataframes
x_train_lda = pd.concat([features_lda_1, features_lda_2], axis=1)
x_test_lda = pd.concat([features_lda_1_test, features_lda_2_test], axis=1)
另一个常见的因素是尺度差异。重要的是,我们的模型应该对尺度保持无关,并能够专注于我们特征中编码的信息。在处理神经网络时,这一点尤其重要,因为归一化总是有助于它们的收敛。
在这种情况下,我们将把信息复制到不同的数据框中,并调整为我们将在接下来的部分中使用的目标技术:
from sklearn.preprocessing import StandardScaler, MinMaxScaler, normalize
## QSVC
minmax_scaler = MinMaxScaler().fit(x_train_lda)
X_train_qsvc = minmax_scaler.transform(x_train_lda)
X_test_qsvc = minmax_scaler.transform(x_test_lda)
## SVC
strd_scaler = StandardScaler().fit(x_train_lda)
X_train_svc = strd_scaler.transform(x_train_lda)
X_test_svc = strd_scaler.transform(x_test_lda)
## VQC
strd_scaler = StandardScaler().fit(x_train_lda)
X_train_vqc = strd_scaler.transform(x_train_lda)
X_test_vqc = strd_scaler.transform(x_test_lda)
y_train_vqc = pd.DataFrame(y_train)
y_test_vqc = pd.DataFrame(y_test)
## Quantum Neural Network
minmax_scaler = MinMaxScaler().fit(x_train_lda)
X_train_nn = minmax_scaler.transform(x_train_lda)
X_test_nn = minmax_scaler.transform(x_test_lda)
y_train_nn = y_train.to_numpy()
y_test_nn = y_test.to_numpy()
需要强调的是,这一转换应该仅影响数据的尺度,因为它们的分布以及与数据集每个样本相关的不同属性之间的关系应保持不变。它主要影响每个算法的训练方式,试图通过缩放信息来简化这一任务(Singh 和 Singh 2020)。
量子支持向量机
支持向量分类器(SVC)和量子支持向量分类器(QSVC)是我们将用于分析合成数据集的第一个模型,我们将看到量子算法与经典算法如何协作,以识别潜在的违约客户。最常用的技术之一被称为支持向量机(SVM)(Hearst 等, 1998),它利用超平面来找到我们数据范围内的可分空间。这些超平面负责将我们的 N 维信息划分到不同的空间中,力求最大化超平面本身划分区域之间的样本间隔。通过放宽这一间隔约束并允许某些样本被错误分类,我们使得模型能够从数据集本身进行泛化。这个放宽版本就是我们所称的 SVC。
多亏了像 scikit-learn 这样的 Python 库提供的抽象级别,其使用就像调用一个拟合函数来传递数据集和目标数据一样简单:
from sklearn.svm import SVC
# Instantiate the SVC
svc = SVC()
# Training
svc.fit(X_train_svc,y_train)
# Testing
svc_score = svc.score(X_test_svc, y_test)
print(f"SVC classification test score: {svc_score}")
SVC classification test score: 0.7927272727272727
如前所述,除了关注单一指标之外,还需要注意相关的度量标准,以帮助我们更好地理解模型的实际适应度:
from sklearn import metrics
# Classification report of SVC
expected_y_svc = y_test
predicted_y_svc = svc.predict(X_test_svc)
# Print classification report and confusion matrix
print("Classification report: \n", metrics.classification_report(expected_y_svc, predicted_y_svc))
Classification report:
precision recall f1-score support
0.0 0.85 0.85 0.85 194
1.0 0.65 0.65 0.65 81
accuracy 0.79 275
macro avg 0.75 0.75 0.75 275
weighted avg 0.79 0.79 0.79 275
这时,数据集不平衡性的问题便显现出来,我们可以看到模型的准确度主要取决于我们识别非违约客户的能力。
鉴于支持向量机(SVM)的性质及其对空间可分性的要求,量子机器学习领域最初的一个提案本质上利用了量子态所提供的固有高维编码。量子支持向量机(QSVMs)(Rebentrost 等,214)将经典数据编码到量子态中,以便在获得测量结果后,编码的样本表现出更好的可分性——在这种情况下,是通过经典方式来实现的。
QSVM 方法的主要优点之一是数据点如何在量子特征空间中表示,这得益于量子核函数的使用(在图 6.3中可视化)。通常,企业会遇到非线性可分的数据,而经典核方法不足以在二分类模型中正确划分两个类别。通过使用量子核函数,数据点可以被分布在一个希尔伯特空间中,从而使得它们能够通过算法(SVC)更高效地进行划分。在图 6.3中,您可以看到展示两种方法(经典和量子)及数据如何在不同特征空间中表示以实现线性可分性的工作流的可视化示例(quantum-journal.org/papers/q-2021-08-30-531/
)。
图 6.3 – 经典和量子核函数如何嵌入数据点的比较
因此,当我们尝试 QSVM 分类器时,首先需要面对的步骤之一是将经典数据编码成特征图,以便为我们执行实际的量子编码。我们可以选择多个选项,所获得的收益将来自于对每个特征图执行的重复次数的任意决定。这是数据科学项目中常见的问题,一些决策将基于给定数据集或场景的经验。
简单来说,量子特征图通过使用量子电路将常规数据编码到量子态空间中。在编码过程中,电路重复的次数被称为“深度”,它是一个可以改变的参数。对经典数据进行 QML 处理要求将数据编码成量子态,之后应用到量子算法中。
Qiskit 提供了一组候选特征图,我们可以用于运行分类模型的任务。它们中的大多数基于保利算符,按我们的数据特征进行旋转。这也是为什么数据需要预处理的原因,以便将其数值表示作为旋转角度引入到我们的特征图中。使用沿每个量子比特 Z 轴的组合 Z 旋转是一个常见的情况,如下所示:
from qiskit.providers.aer import AerSimulator
from qiskit.utils import QuantumInstance
from qiskit.circuit.library import ZZFeatureMap
# Defining backend and feature map to be used
backend = QuantumInstance(
AerSimulator(method='statevector'),
seed_simulator=algorithm_globals.random_seed,
seed_transpiler=algorithm_globals.random_seed,
)
# ZZ feature map
feature_map = ZZFeatureMap(feature_dimension=num_qubits, reps=3)
# Feature map circuit print
feature_map.decompose().draw(output = "mpl")
reps 指的是特征图重复的次数,它是我们可能需要调整的超参数之一,以便找到最佳选项。图 6.4展示了我们选择的特征图的表示形式,它由一组比率(粉色的 P 门)和纠缠的 CNOT 门组成。
图 6.4 – 带有三种重复方案的 ZZ 特征图
图 6.4中的X变量代表我们的数据集特征,它们作为旋转权重,驱动电路的初始状态(对于 2 量子比特的情况是|00>)朝向输入到我们 SVC 分类器中的状态。
Qiskit 还为这些 QML 任务提供了更高层次的抽象,因此不需要为已知的技术编写完整代码,这在 QSVM 中是常见的情况:
from qiskit_machine_learning.kernels import QuantumKernel
from qiskit_machine_learning.algorithms import QSVC
# Defining quantum kernel and qsvc
kernel = QuantumKernel(feature_map=feature_map, quantum_instance=backend)
qsvc = QSVC(quantum_kernel=kernel, C=C)
# Training
qsvc.fit(X_train_qsvc,y_train)
# Testing
qsvc_score = qsvc.score(X_test_qsvc, y_test)
print(f"QSVC classification test score: {qsvc_score}")
QSVC classification test score: 0.7927272727272727
即使看起来结果相同,我们也可以像之前一样检查分类报告:
# Classification report of QSVC
expected_y_qsvc = y_test
predicted_y_qsvc = qsvc.predict(X_test_qsvc)
# Print classification report and confusion matrix
print("Classification report: \n", metrics.classification_report(expected_y_qsvc, predicted_y_qsvc))
Classification report:
precision recall f1-score support
0.0 0.88 0.82 0.85 194
1.0 0.63 0.73 0.67 81
accuracy 0.79 275
macro avg 0.75 0.77 0.76 275
weighted avg 0.80 0.79 0.80 275
我们可以看到一些决策已经在不同类别之间移动,在某些情况下损失了精度,但通过简单的编码,我们可以将违约检测率提高两个百分点。
这可能看起来是一个小幅度的提升,但考虑到本章开头看到的图示,2%的检测率提升在收入方面是一个巨大的改进。鉴于从经典领域的适配非常简单,这绝对是值得尝试的技术。
QNNs
按照与前面比较相同的结构,我们将通过量子和经典神经网络处理我们的良好客户和违约者数据集。各种形态的神经网络几乎在所有企业尝试的机器学习项目中都有应用(Bishop 1994)。这些模型适用于各种任务,并且其通用框架允许为特定任务定制各种架构——卷积神经网络用于人工视觉(Khan 等,2018),递归神经网络用于自然语言理解(Yao 等,2013),或生成对抗网络用于合成数据生成(Park 等,2018)。
风险评估在类似的练习中也有所涉及(Khashman 2010),因此,鉴于这些是流行的选择,我们至少需要尝试一下。流行的 Python 框架,如 TensorFlow,以及它的高级抽象(得益于 Keras),简化了训练生物启发式时尚模型所需的大部分代码。以下代码遵循一种架构,其中输入数据通过一系列层(神经元数目逐渐减少:60、40、20 和 1)传递,直到最后一层的输出决定输入样本所属的类别。这就是为什么在最后一步定义了 Sigmoid 函数。
在这个示例中,我们选择了密集连接的层,修正线性单元(ReLU)作为神经元的选择(Agarap 2018),但如前所述,这些决策并不是由任何特定过程驱动的,而是通过经验和在类似情境中经过试验成功的架构来决定的:
# Keras
from keras.models import Sequential
from keras.layers import Dense
# Fit the model with specific layers and activations
model = Sequential()
model.add(Dense(60,input_dim=X_train_nn.shape[1],activation='relu',kernel_initializer='normal'))
model.add(Dense(40,activation='relu'))
model.add(Dense(20,activation='relu'))
model.add(Dense(1,activation='sigmoid'))
# Model compiled
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit(X_train_nn, y_train, batch_size=batch,
epochs=50, validation_data = (X_test_nn, y_test),verbose=1)
训练将产生一个高准确度(超过 90%)的评分,但测试数据集才是提供模型预测能力现实预期的关键:
# Testing
nn_score = model.evaluate(X_test_nn, y_test)
print("NN test accuracy score: %.2f%%" % (nn_score[1]*100))
NN test accuracy score: 80.36%
# Classification report of NN
expected_y_nn = y_test
predicted_y_nn = (model.predict(X_test_nn) > 0.5).astype("int32")
# Print classification report and confusion matrix
print("Classification report: \n", metrics.classification_report(expected_y_nn, predicted_y_nn))
Classification report:
precision recall f1-score support
0.0 0.86 0.87 0.86 194
1.0 0.67 0.65 0.66 81
accuracy 0.80 275
macro avg 0.76 0.76 0.76 275
weighted avg 0.80 0.80 0.80 275
尽管准确性看起来有所提高,但我们牺牲了识别非违约者和违约者的能力,尽管这样能提供更均衡的数据集,但对于我们的业务需求来说,并不如我们期望的那样高效。
鉴于我们已经通过之前使用 ZZFeatureMap 的练习解决了编码问题,最好有一种方案,可以将整个模型嵌入到量子设备中,这样一旦数据以此特征映射表示,量子设备解开复杂关系的能力就能得到充分利用。这可以通过 QNNs(Ezhov 和 Ventura,2000 年,以及 Farhi 和 Neven,2018 年)来实现,这是一种数据嵌入,随后是参数化量子电路(PQC)或 ansatz,其测量结果决定了每个样本所属的类别:
from qiskit import QuantumCircuit
from qiskit.circuit.library import ZZFeatureMap, RealAmplitudes
# Declare the feature map
feature_map = ZZFeatureMap(num_inputs)
# Declare the ansatz
ansatz = RealAmplitudes(num_inputs, reps=2)
# Construct the quantum circuit
qc = QuantumCircuit(num_inputs)
qc.append(feature_map, range(num_inputs))
qc.append(ansatz, range(num_inputs))
qc.decompose().draw('mpl')
图 6.5 – 通过前述代码获得的 QNN
如在获得的电路中所见,特征映射只有两个输入,分别来自我们数据集中的特征,但 PQC 有五个参数,我们需要确定这些参数才能继续进行。执行这一任务的方法是通过变分调整 QNN 模型的输出,使其最小化成本函数,即我们标注数据与我们案例中的测量经典比特之间的不匹配。
Qiskit Machine Learning 提供了完整的工具链,帮助我们完成繁重的工作,因此一旦通过这两步(特征嵌入和 PQC)声明了 QNN 结构,我们只需调用一组程序就能为我们获取最终模型:
from qiskit.providers.aer import Aer
from qiskit_machine_learning.algorithms.classifiers import NeuralNetworkClassifier
from qiskit_machine_learning.neural_networks import CircuitQNN
from qiskit.algorithms.optimizers import L_BFGS_B
# Maps bitstrings to 0 or 1
def parity(x):
return "{:b}".format(x).count("1") % 2
# Defining quantum instance
quantum_instance = QuantumInstance(Aer.get_backend("aer_simulator"), shots=shots)
# Declare the QNN circuit
circuit_qnn = CircuitQNN(
circuit=qc,
input_params=feature_map.parameters,
weight_params=ansatz.parameters,
interpret=parity,
output_shape=2,
quantum_instance=quantum_instance,
)
# Declare the classifier
circuit_classifier = NeuralNetworkClassifier(
neural_network=circuit_qnn, optimizer= L_BFGS_B(maxiter=maxiter), loss='absolute_error'
)
circuit_classifier.fit(X_train_nn,y_train_nn)
y_pred = circuit_classifier.predict(X_test_nn)
# print classification report and confusion matrix for the classifier
print("Classification report: \n", metrics.classification_report(y_test_nn, y_pred))
Classification report:
precision recall f1-score support
0.0 0.90 0.67 0.77 194
1.0 0.51 0.83 0.63 81
accuracy 0.72 275
macro avg 0.71 0.75 0.70 275
weighted avg 0.79 0.72 0.73 275
VQC
最后,我们将分析使用 VQC 的好处,VQC 只存在于量子机器学习领域,因此无法在相同的原则下进行比较。VQC(Havlíček et al. 2019)无非是对先前看到的 QSVC 和 QNN 案例的概括。它允许更广泛地描述前述的关于数据嵌入和电路参数化的概念,但设置要求较低,允许任何架构的部署。唯一的限制是获取我们假设参数的变分性质,并且输出仅限于分类任务。
尽管先前使用过基于 Qiskit 的方法,但对于这种更通用的设置,PennyLane 是我们的首选框架。这主要是因为它的微分编程功能,使得类似于 TensorFlow 和 PyTorch 中推广的数值梯度计算机制成为可能,同时也因为它能访问像 Adam(Kingma 和 Ba, 2014)这样的基于梯度的训练器。
我们的电路设置将遵循与前一个示例类似的描述,但在嵌入和假设选择上有所不同:
# PennyLane
import pennylane as qml
from pennylane import numpy as np
from pennylane.templates.embeddings import AngleEmbedding
from pennylane.optimize import AdamOptimizer
# Device
dev = qml.device('default.qubit', wires = num_qubits)
# Our generic candidate circuit
def circuit(parameters, X_train_vqc):
for i in range(num_qubits):
qml.Hadamard(wires = i)
# Angle embedding for classical embedding
AngleEmbedding(features = X_train_vqc, wires = range(num_qubits), rotation = 'Y')
# This will be our PQC of choice
qml.StronglyEntanglingLayers(weights = parameters, wires = range(num_qubits))
# And measuring on 0 qubit we will get if it corresponds to one or other label
return qml.expval(qml.PauliZ(0))
Angle
嵌入将数据集特征编码为Y旋转的角度,StronglyEntanglingLayers
遵循单次旋转和多个 CNOT 纠缠门操作的方案,在所有量子比特之间执行循环连接(Schuld et al. 2020)。
再次强调,电路将连接到 PennyLane 称之为QNode
的设备:
# QNode: Device + Circuit
vqc = qml.QNode(circuit, dev, diff_method="backprop")
PennyLane 允许对训练模型过程中使用的不同功能进行精细控制,这样我们就可以轻松决定经典方法和量子方法之间的混合程度。例如,在下面的这个示例中,经典偏置神经元被添加到 VQC 方案中:
# VQC functions
def variational_classifier(weights, bias, x):
return vqc(weights, x) + bias
偏置效应在添加后允许更广泛的近似范围,因此它应该对我们有利:
def square_loss(labels, predictions):
loss = 0
for l, p in zip(labels, predictions):
loss = loss + (l - p) ** 2
loss = loss / len(labels)
return loss
def cost(weights, bias, X, Y):
predictions = [variational_classifier(weights, bias, x) for x in X]
return square_loss(Y, predictions)
一旦我们的得分损失函数被定义,我们需要定义一个准确度指标,该指标也将作为主循环中参数选择的标准:
def accuracy(labels, predictions):
loss = 0
for l, p in zip(labels, predictions):
if abs(l - p) < 1e-5:
loss = loss + 1
loss = loss / len(labels)
return loss
# Optimizer declaration and batch parameter
opt = AdamOptimizer(stepsize=0.1, beta1=0.9, beta2=0.99, eps=1e-08)
batch_size = batch
weights = weights_init
bias = bias_init
wbest = 0
bbest = 0
abest = 0
for it in range(50):
# Weights update by each optimizer step
batch_index = np.random.randint(0, len(X_train_nn), (batch_size,))
X_batch = X_train_nn[batch_index]
Y_batch = y_train_nn[batch_index]
weights, bias, _, _ = opt.step(cost, weights, bias, X_batch, Y_batch)
# Accuracy computation
predictions = [np.sign(variational_classifier(weights, bias, x)) for x in X_batch]
acc = accuracy(Y_batch, predictions)
if acc > abest:
wbest = weights
bbest = bias
abest = acc
print('New best')
print(
"Iter: {:5d} | Cost: {:0.7f} | Accuracy: {:0.7f} ".format(
it + 1, cost(weights, bias, X_batch, Y_batch), acc
)
)
# X_test and y_test transformation to be analyzed
Yte = np.array(y_test_vqc.values[:,0] * 2 - np.ones(len(y_test_vqc.values[:,0])), requires_grad = False)
Xte = np.array(normalize(X_test_vqc), requires_grad=False)
# Testing
predictions = [np.sign(variational_classifier(wbest, bbest, x)) for x in Xte]
accuracy_vqc = accuracy(Yte, predictions)
print(f'VQC test accuracy score: {np.round(accuracy_vqc, 2) * 100}%')
VQC test accuracy score: 79.0%
# Classification report of VQC
expected_y_vqc = Yte
predicted_y_vqc = predictions
# Print classification report and confusion matrix
print("Classification report: \n", metrics.classification_report(expected_y_vqc, predicted_y_vqc))
Classification report:
precision recall f1-score support
-1.0 0.89 0.79 0.84 194
1.0 0.61 0.77 0.68 81
accuracy 0.79 275
macro avg 0.75 0.78 0.76 275
weighted avg 0.81 0.79 0.79 275
我们的最终得分显示出提高了识别违约者的能力,但即便低风险个体的数量减少,它仍然达到了初始 SVM 和 QSVM 方法的水平。
分类关键绩效指标
在迄今为止测试的每一个算法中,你可以看到有一个分类报告,它让我们有机会理解模型在预测每个类别时的准确性。决定评估模型性能的关键绩效指标(KPI)并非一个简单的决策。大多数人认为准确率是衡量模型是否正常工作的最重要指标,尤其是当目标是预测某一特定类别时。假设你的信用评分数据集是不平衡的,其中违约者占 5%,按时还款的优质客户占 95%。如果模型预测测试集中的所有样本都是优质客户,并没有预测出违约者,那么你将得到 95%的准确率,这实际上是很糟糕的。
如前所述,在金融行业中常常会遇到不平衡的数据集,因此我们通常需要查看分类报告,看看哪个度量指标最适合衡量。分类报告展示了每个类别的精度、召回率、F1 分数和支持度。深入分析时,首先需要注意的是,有四种方法来评估预测是否足够好。具体如下:
-
真正负例(TN):该案例原本是负类,且模型预测为负类
-
真正例(TP):该案例原本是正类,且模型预测为正类
-
假负例(FN):该案例原本是正类,但模型预测为负类
-
假正例(FP):该案例原本是负类,但模型预测为正类
这四个度量指标是模型的结果,通常你可以在一种名为混淆矩阵的数据可视化格式中看到它们的体现,如图6.6所示。
图 6.6 – 混淆矩阵
使用这些指标,我们可以计算分类报告的结果,具体如下:
-
精度(TP / (TP + FP)):这是分类器避免错误地将真实负类样本标记为正类样本的能力。它考虑的是正确预测的正类样本集(TP)与定义为正类的样本总数(TP + FP)之间的比率。
-
召回率(TP / (TP + FN)):这是分类器定位所有正类样本的能力。它考虑数据集或总体中所有正类样本,评估正确识别出的正类样本(TP)与正类样本总数(TP + FN)之间的比率。
-
F1 得分 (2 * (召回率 * 精确度) / (召回率 + 精确度)):这是准确率和召回率的加权调和平均数,最高得分为 1.0,最低得分为 0.0。由于 F1 得分的计算包括精确度和召回率,因此通常低于准确率。作为一般规则,应该使用 F1 的加权平均值来比较分类器模型,而不是使用全局准确率。
-
支持度:这是给定数据集中某类别的真实实例数量。
所有这些数字都会由像 Scikit-Learn 这样的库自动提供,但在决定模型是否表现良好之前,理解这些指标非常重要。
平衡准确率或 ROC-AUC 得分
在本次练习中,我们将添加另一个与混淆矩阵数字基准相关的指标,如 图 6.7 所示。要衡量不平衡数据集在测试集上的表现,我们不能仅依赖准确率,因为它可能会提供不准确的估计,偏向于占主导地位的类别,导致难以准确检测到较少出现的类别。
接收者操作特性(ROC)曲线是一个表示分类器在所有阈值下性能的图形或图表(阈值是用来确定一个实例是否属于某一特定类别的概率切割点)。基本上,这条曲线基于前面提到的两个参数:真正例率(TPR),相当于召回率,以及假正例率(FPR):
真正例率 | 假正例率 |
---|---|
TPR = TP / (TP + FN) | FPR = FP / (FP + TN) |
将 TPR 与 FPR 的值在对立的坐标轴上绘制,我们得到一条图形,也称为曲线(因此得名)。
图 6.7 – ROC 曲线表示
AUC 是 曲线下面积(Area Under Curve)的缩写,指的是 ROC 曲线。因此,AUC 衡量的是完整 ROC 曲线下的二维面积(考虑积分计算),其得分范围从 0 到 1。关于具体的 AUC 得分数值是否足够好的共识并不存在,但以下是一些考虑因素(假设越高越好):
-
AUC 得分 0.50:无效
-
AUC 得分 0.51–0.70:缺乏足够的区分度,无法成为高效的模型
-
AUC 得分 0.71–0.80:可以接受,足够具有区分度
-
AUC 得分 0.81–0.90:优秀的区分度
-
AUC 得分 >0.90:卓越的区分度或模型过拟合的指标
对于二分类模型,AUC 得分等于平衡准确率得分。它代表了每个类别中正确分类样本的算术平均值。
结论
如前所述,尽管准确度是大多数人会关注的分类报告中的常见度量标准,但处理这种不平衡数据场景的方式是使用平衡准确度得分或 AUC 得分进行模型比较,在这种情况下它们是相同的,因为这是一个二分类挑战。
图 6.8 – 经典方法与混合量子-经典方法分类结果的比较
初看之下,结果似乎无法得出关于使用混合量子-经典方法在金融行业面临的分类问题中的优势。然而,本章的目的在于让人们思考自己的业务挑战并进行更多的研究,因为我们可以看到量子机器学习至少可以与经典机器学习方法(例如,QSVC 与 SVC)相等,甚至稍微更好。当模型在正确识别每个类别方面的能力有所提高时,即使这种增益看似微小,它在商业中的影响实际上可能意味着在竞争激烈的市场中节省或赚取大量资金。
在为这个分类示例开发的架构基础上,还有多个调整可以探索,以提高混合算法的性能。以下是其中的一些:
-
测试不同的预处理方法,如标准化或降维
-
探索更好的程序以应用数据集划分到 LDA 步骤
-
分析不同的方法以执行特征选择,考虑架构的量子增强
-
评估更多的特征图,以在量子态中编码数据
-
手动定制特征图,以测量针对个别问题的最佳方法
-
增加用于检测在使用更多量子比特时是否存在优势或劣势的量子比特数
-
训练一个量子核进行优化
-
为了找到最佳参数,调整迭代次数和拍摄次数,考虑模型分类结果
-
在不同类型的模拟器和量子硬件上执行算法,以评估后端对最终结果的影响
在决定深入研究这些类型的实现时,重要的是记住量子算法应用过程中的预处理和编码步骤可能是成功结果的关键。我们将在第七章中看到如何以及使用哪个云提供商来运行这种类型的项目。我们将学习如何使用不同的硬件以及如何通过云访问它们。
进一步阅读
-
Agarap, A. F. (2018). 使用修正线性单元(relu)的深度学习。arXiv 预印本 arXiv:1803.08375.
-
Assefa, S. A., Dervovic, D., Mahfouz, M., Tillman, R. E., Reddy, P., & Veloso, M. (2020, October). 在金融中生成合成数据:机遇、挑战和陷阱. 在第一届 ACM 国际人工智能金融大会论文集(第 1–8 页)中.
-
Bishop, C. M. (1994). 神经网络及其应用. 科学仪器评论, 65(6), 1803–1832.
-
Bro, R., & Smilde, A. K. (2014). 主成分分析. 分析方法, 6(9), 2812–2831.
-
Crook, J. N., Edelman, D. B., & Thomas, L. C. (2007). 消费者信贷风险评估的最新发展. 欧洲运筹学杂志, 183(3), 1447–1465.
-
Crouhy, M., Galai, D., & Mark, R. (2000). 当前信用风险模型的比较分析. 银行与金融杂志, 24(1-2), 59–117.
-
Ezhov, A. A., & Ventura, D. (2000). 量子神经网络. 在《智能系统与信息科学的未来方向》一书中(第 213–235 页)。 Physica, Heidelberg.
-
Farhi, E., & Neven, H. (2018). 基于量子神经网络的分类研究:近端处理器的应用. arXiv 预印本 arXiv:1802.06002.
-
Figueira, A., & Vaz, B. (2022). 关于合成数据生成、评估方法和生成对抗网络的调查. 数学, 10(15), 2733.
-
Havlíček, V., Córcoles, A. D., Temme, K., Harrow, A. W., Kandala, A., Chow, J. M., & Gambetta, J. M. (2019). 使用量子增强特征空间的监督学习. Nature, 567(7747), 209–212.
-
Hearst, M. A., Dumais, S. T., Osuna, E., Platt, J., & Scholkopf, B. (1998). 支持向量机. IEEE Intelligent Systems and their applications, 13(4), 18–28.
-
Izenman, A. J. (2013). 线性判别分析. 在《现代多元统计技术》一书中(第 237–280 页)。 Springer, New York, NY.
-
Ji, G., & Zhu, Z. (2020). 宽神经网络中的知识蒸馏:风险界限、数据效率和不完美的教师. 神经信息处理系统进展, 33, 20823–20833.
-
Khan, S., Rahmani, H., Shah, S. A. A., & Bennamoun, M. (2018). 计算机视觉中的卷积神经网络指南. 计算机视觉综合讲座, 8(1), 1–207.
-
Khashman, A. (2010). 用于信用风险评估的神经网络:不同神经模型和学习方案的研究. 专家系统与应用, 37(9), 6233–6239.
-
Kingma, D. P., & Ba, J. (2014). Adam:一种随机优化方法. arXiv 预印本 arXiv:1412.6980.
-
Mancilla, J., & Pere, C. (2022). 使用 NISQ 算法的量子机器学习分类优势:金融中的预处理视角. 熵, 24(11), 1656.
-
Moritz, P., Nishihara, R., Wang, S., Tumanov, A., Liaw, R., Liang, E., ... & Stoica, I. (2018). Ray: A distributed framework for emerging {AI} applications. In 13th USENIX Symposium on Operating Systems Design and Implementation (OSDI 18) (**pp. 561–577).
-
Park, N., Mohammadi, M., Gorde, K., Jajodia, S., Park, H., & Kim, Y. (2018). 基于生成对抗网络的数据合成。arXiv 预印本 arXiv:1806.03384。
-
Rebentrost, P., Mohseni, M., & Lloyd, S. (2014). 用于大数据分类的量子支持向量机。物理评论快报, 113(13),130503。
-
Schuld, M., Bocharov, A., Svore, K. M., & Wiebe, N. (2020). 电路中心量子分类器。物理评论 A, 101(3),032308。
-
Sergeev, A., & Del Balso, M. (2018). Horovod:在 TensorFlow 中实现快速和简易的分布式深度学习。arXiv 预印本 arXiv:1802.05799。
-
Singh, D., & Singh, B. (2020). 研究数据归一化对分类性能的影响。应用软计算, 97,105524。
-
Tangirala, S. (2020). 评估 GINI 指数和信息增益在使用决策树分类算法中的分类影响。国际高级计算机科学与应用杂志, 11(2),612–619。
-
Yao, K., Zweig, G., Hwang, M. Y., Shi, Y., & Yu, D. (2013 年 8 月). 用于语言理解的递归神经网络。在 Interspeech(**第 2524–2528 页)。
第七章:在量子云中的实现
本章将深入探讨在量子设备上执行算法的选项,或者至少是超越我们经典设备能力的解决方案。为了简化,迄今为止你所看到的大多数算法都使用了某种本地模拟,来模仿在真实量子计算机上运行时的结果。
在我们开发方法时,我们有手段在本地模拟理想量子计算机的行为,同时参考每个操作所需的数学描述。但最终的目标是能够将我们的工作发送到量子设备上,从而利用实际量子计算的潜力。
鉴于拥有量子计算机是极少数特权人士能够做到的事情,我们将重点介绍如何通过云访问成为利用这些仍处于实验阶段资源的重要途径。
我们还将展示几个示例,演示如何利用云资源和云托管的量子设备来执行[第四章]、[第五章]和[第六章]中提到的示例。通过这样做,你不仅会熟悉它可能涉及的不同工作流程,还将理解在大多数公司进行概念验证或创新项目时,使用这些资源的优势。
最后,考虑到云服务是基于按需付费模式运营的,我们将探讨利用云服务进行项目开发的财务影响。我们还将探索一些有趣的方法,即使预算有限,仍然可以启动基于云托管服务的量子项目和实现。
第八章和第九章将深入探讨我们可能使用的不同类型的设备和模拟器,以及如何应对大多数设备在我们抽象电路中引入的噪声。最后,第十章将带我们了解可以利用的策略,以便开始将量子计算作为增值资产纳入我们的组织,并通过一个合理的采纳策略来成长,这样既不会伤害公司财务,也不会影响机构采用这些具有颠覆性但充满潜力的新范式的步伐,将其作为商业流程的一部分。
本章将涵盖以下主题:
-
访问云量子计算平台并实现算法的挑战
-
主要量子技术提供商
-
使用云服务提供商时的成本估算
在云平台上实现量子计算的挑战
正如我们之前提到的,大多数之前展示的示例利用了量子计算可以通过我们的经典资源(使用模拟器)来模拟的事实。举例来说,在第五章中,我们使用了以下例程:
backend = Aer.get_backend('qasm_simulator')
result = execute(quantum_circuit, backend, shots=10).result()
counts = result.get_counts(quantum_circuit)
我们使用了一个 qasm_simulator
,它是一个可以执行我们量子电路中定义的操作并根据量子计算的数学原理提供预期结果的实现。
我们希望将这同一个电路带到量子计算机上,但这并不像在亚马逊上购买一个那样简单。我们可以购买市售的设备,但对大多数组织来说,价格可能过于昂贵。
D-Wave
2011 年,D-Wave Systems 宣布推出世界上首款商业化量子计算机——一台 128 量子比特的量子退火设备。他们已经能够将其 Chimera 拓扑结构扩展至 2,000 量子比特,而新架构突破了这一瓶颈,预计到 2023 年末或 2024 年初将推出最多 8,000 量子比特的设备。考虑到其初期设备的成本达到了七位数(www.engadget.com/2011-05-18-d-wave-one-claims-mantle-of-first-commercial-quantum-computer.html
),且其外壳让人联想到老式大型机基础设施,正如在图 7.1中所示,这些设备需要数据中心来安置,因此显然它不会进行大规模生产:
图 7.1 – 一名技术员正在操作 D-Wave Systems 机器
IBM Quantum
IBM 在创建其初期芯片时也经历了类似的情况。2018 年,他们发布了首款商业化产品 IBM Q System One,如图 7.2所示,这是一台 20 量子比特的商业化量子计算机:
图 7.2 – IBM 的 Q System One 设备
但在此成就之前,他们已经意识到许多在量子计算领域工作的研究机构和大学的需求。它们希望使用实际设备,但需要自己建造设备来进行实验。
正因如此,IBM 在 2016 年初决定将其中一台实验设备连接到云服务,使得独立组织可以将他们的实验提交到首台可用的量子计算机上。这一里程碑标志着今天我们所知道的丰富的云量子计算生态系统的诞生。
2017 年初,Rigetti Computing 的一个团队成功地将一组指令编程到 IBM 的设备中,使用的是 pyQuil Python 封装的 Quil 量子指令集架构(Smith 等人,2016)。
和许多新兴行业一样,仍然可以找到多个标准。IBM 决定利用其自有标准。我们在前面的章节中提到过它。尽管如此,开放量子汇编语言(OpenQASM)已经进入第三个版本,最初在一篇出版物中被提及(Cross 等,2017),以及 IBM 的量子信息软件工具包(Qiskit - Anis, Md Sajid 等,2021)的代码,成为实现量子程序并与各种云端可用设备通信的最成熟框架之一。
Qiskit 可以将我们的量子代码从最终运行的设备中抽象出来,但鉴于设备的多样化,我们可能需要记住,根据最终使用的硬件,某些框架更能满足我们的需求。
一个最明显的例子是,当使用 D-Wave Systems 的设备时。这些是量子退火设备。因此,门操作目前尚不适用(techcrunch.com/2021/10/05/d-wave-plans-to-build-a-gate-model-quantum-computer
)。
他们的设备可以通过他们的服务平台 Leap 自由访问(图 7.3;cloud.dwavesys.com/leap/login
):
图 7.3 – D-Wave Systems 的云访问服务 Leap
你只需注册,便可以获得每月一定的时间来运行你的实验。事实上,在不同的计划中,你可以访问开发者计划(图 7.4),该计划只需要将 GitHub 账户与 D-Wave 的 Leap 服务同步——它提供每月最多 20 分钟的设备使用时间。考虑到他们的求解器运行时间只需要毫秒级,允许你在时间用尽前进行相当多的实验:
图 7.4 – D-Wave 云服务使用计划
与 Leap 交互时有两个主要选项。最简单的一种是直接使用他们基于云的开发环境。通过提供现有 GitHub 仓库的 URL,从中提取代码并提交以确保代码不会丢失,系统将创建一个临时的浏览器可访问的 IDE,并提供你的账户凭证。这为任何注册用户提供了一个即刻可用的工作环境:
图 7.5 – 一个包含航空公司示例的 Leap 工作区,加载在示例 IDE 中
这也将确保 D-Wave 的 Ocean 软件开发工具包已安装并准备就绪。
当然,您也可以在本地 Python 环境中安装 SDK,并通过 Leap 提供的令牌登录账户,该令牌应通过 Leap 界面可访问,如 图 7.6 所示:
图 7.6 – Leap 控制面板,在这里可以找到远程身份验证令牌
Ocean SDK 的文档已经提供了如何在本地进行操作的说明,这样与云服务的交互就能通过编程完成 (docs.ocean.dwavesys.com/en/latest/overview/install.html
)。
这就是我们如何通过远程方式在 第五章 中使用非自有的 D-Wave 设备免费解决投资组合优化问题。
与 D-Wave 类似,IBM 通过其云服务提供对部分设备的免费访问 (quantum-computing.ibm.com/
)。您可以使用多种凭据进行注册,因此如果您使用的是 LinkedIn 或 GitHub 账户,您可以轻松访问他们的解决方案(免费或按需付费)。
注册后,会显示一组服务,您可以根据自己的专业水平选择合适的服务。图 7.7 展示了所有可用的不同服务:
图 7.7 – IBM Quantum 控制面板,展示了不同的可用服务
我们首先会注意到,还有一个令牌选项,因此也可以提交远程作业——在这种情况下,使用 IBM 的 Qiskit 框架。这通常就是指令设置为本地环境时提到的令牌 (github.com/Qiskit/qiskit-ibmq-provider#configure-your-ibm-quantum-credentials
)。
IBM 还提供了一个创建量子电路的工具:Quantum Composer。这可能是开始 编写代码 第一个示例的最简单方式。图 7.8 展示了如何通过拖放门图形到 Quantum Composer 的中央控制台,显示不同的图表,甚至是 Qiskit 和 OpenQASM 代码。它简化了从图形设计师到基于代码的实现的过渡,这在您需要更复杂的示例或项目时会非常有用,比如我们在 第四章 到 第六章 中涵盖的内容:
图 7.8 – IBM 的 Quantum Composer 图形界面,用于开始量子算法编程
在前图的左上角,我们可以看到它还允许我们将电路提交到设备上。我们可以根据可能需要的量子比特数量和等待队列来选择设备(许多人将向同一个共享设备发送电路),因此我们可以选择最不繁忙的设备(图 7**.9):
图 7.9 – 从量子作曲器提交电路到可用设备
一旦作业发送到设备,队列将继续推进,我们的结果将会变得可用。在同一个控制台中,我们可以列出已发送的作业集,如果点击具体的作业本身,还可以请求更多信息(图 7**.10):
图 7.10 – 从 ibm_nairobi 设备获得的实际结果
IBM 会保留我们提交的所有作业列表,因此,旧的结果可以从云服务中恢复。一个非常有用的功能是,当某人必须发送一组示例以便后续分析时,我们可以利用这一功能。我们的许多示例需要一定的时间来运行,不仅因为它们可能经过变分训练,因此需要多次调用设备,而且因为设备的排队可能会增加,并且可能需要相当长的时间才能让我们的电路在设备上运行(队列中的优先级由你在某段时间内发出的请求数量决定)。
我们想要强调的两件有趣的事情是,如果我们查看图 7**.10中的图表,设备上的图表显示了在我们模拟结果时并不存在的状态值(图 7**.10中的右侧图表)。这是因为噪声效应和在真实设备上运行时引入的不同类型的错误。我们将在第八章和第九章中更详细地讨论这一点。尽管如此,值得强调的是,真实设备的表现不会像我们在某些示例中使用的理想模拟器那样,且会引入本不应存在的结果。
另一个有趣的事实是,如果我们查看刚刚提交的作业的细节,所发送的电路与实际运行的电路并不相同,正如图 7**.11中所见。从计算角度来看,它们是相同的,因为Z旋转和平方根X的组合提供了与 Hadamard 门相同的效果,但这是因为设备上无法使用 H 操作而有所改变。在理论设置中执行的并非所有操作都能在设备上执行。甚至有比我们想要使用的更多的量子比特。因此,在转向真实设备时,总是有一个步骤是我们无法省略的,这个过程叫做转换。
转译是将我们的理论算法适配到可能无法完全映射所需内容的芯片的特定门和拓扑结构的过程。这个过程试图使用一些启发式方法和不同的优化级别找到最佳的量子电路映射方式。通过程序化的方式,我们可以平衡适配算法所需的时间与其所转换的深度或操作次数。简而言之,转译作业将把复杂的门简化为基本门,以便映射到硬件架构上。
我们引入的操作越多,电路所承受的噪声也就越大,最终读取的结果可能会更加不准确。这就是为什么这一步骤对研究人员如此重要;他们投入大量时间寻找更好的改进方法。在 第九章 中,我们将看到这一过程的一些最新进展,这一过程被称为 错误缓解:
图 7.11 – 提交的电路与在 ibm_nairobi 上运行的实际电路
在 IBM 的云服务选项中,有一个部署工作区的选项,让我们可以从那里工作,而无需担心本地安装和账户设置。Quantum Lab 选项(图 7**.12)允许我们部署一个已经配置好最新 Qiskit 版本并加载我们账户的托管 JupyterLab 环境,这样提交作业就变得容易了:
图 7.12 – IBM Quantum Lab 工作区创建及可用教程
我们之前编写的任何示例都可以轻松地转移到这个工作区,因为 Jupyter 笔记本只需点击上传选项(图 7**.12 中的向上箭头)即可转移。假设我们点击可用的第一个 Notebook 选项,该选项在 Qiskit 的标志下显示 Python 3。在这种情况下,将显示一个新的 Jupyter 笔记本实例,其中会显示一些常见的库以及我们如何加载账户凭证:
图 7.13 – 创建 Qiskit 支持的笔记本时提供的默认单元格
图 7**.13 显示了加载默认提供程序以访问所有可用后端的代码。然后可以请求这些后端:
图 7.14 – IBM Quantum Lab 内部自由提供的设备和模拟器选项
图 7**.14 显示了后端函数的输出,并列出了设备和模拟器。这些是模拟可用量子计算机的经典资源,因此我们可以选择最符合要求的后端。
在介绍了两种最受欢迎的基于云的量子计算资源后,你可能会认为逐个提供商地测试不同的设备类型可能会变成一个关于令牌、配置和要使用的框架的噩梦。
这就是为什么主要的参与者也开始启用基于云的量子计算,但从稍微不同的角度来看。作为全球大多数企业的云服务提供商,AWS 和 Azure 旨在使技术更容易访问。这也是它们主要加入量子社区的方式——作为枢纽,不仅提供自身的服务,还提供对第三方提供商的访问,让你通过它们的服务访问众多选项。
这就是为什么在接下来的两部分中,我们将专注于 AWS 和 Azure,并展示如何访问这些计算资源的不同选项和方式,以便任何量子开发者都能最大程度地利用现有的广泛资源。
Amazon Braket
亚马逊网络服务(AWS)决定为量子计算创建一个既是服务又是框架的统一平台。
Amazon Braket 服务,像之前的例子一样,使得超出 AWS 实际提供的量子计算设备也能对任何用户开放。据我们所知,AWS 并未开发自己的硬件设备。那么,它们是如何提供量子计算平台的呢?事实上,它们与一些提供硬件的关键细分市场公司合作,这些公司选择通过第三方提供访问,而不是将维护客户访问平台的额外工作量纳入其商业模式。
任何拥有 AWS 账户的人都可以在其账户内访问 Braket 服务,尽管并非所有区域目前都提供此选项,如下所示:
图 7.15 – 显示在 AWS 服务控制台中的 Amazon Braket,突出显示区域选项
该控制台类似于我们之前看到的控制台,因为它同样提供了可用设备的概览、可在为远程开发创建的工作区上运行的笔记本,以及之前在服务中运行的作业列表:
图 7.16 – Amazon Braket 的主控制台和可用设备
使用 AWS Braket 而不是任何量子硬件公司提供的独立直接访问服务的关键优势之一是,它充当了一个枢纽。因此,通过使用相同的连接界面,客户可以直接访问许多不同类型的服务。
它还提供了一组库,其中包含我们在 第二章 中回顾过的一些经典算法的实现。如 图 7.17 所示,它们通过 Amazon Braket 的 Python SDK 提供,这是 AWS 提供的开源框架:
图 7.17 – Amazon Braket 的算法库和 Berstein Vazirani 实现示例
这个框架更为通用,因为 Amazon Braket 旨在支持的技术不仅仅是 IBM 专注的超导芯片。IBM 的框架主要是为了增加设备的使用,但 Amazon 不得不在其服务中涵盖更广泛的技术领域。在这里,我们可以找到中性原子、光子设备和陷阱离子服务,它们需要不同的交互方式并对计算过程提出不同要求。
要理解为什么这很重要,许多与逻辑电路转换过程相关的限制最初编码到特定设备设置中的都取决于设备的特定方面。最基本的限制之一是量子比特(qubit)的连通性,这会导致不同的转换方式。这种连通性因供应商(以及后端)而异,如下所示:
图 7.18 – IBM Washington(下)和 Rigetti Aspen-M-3(上)的超导芯片拓扑图
还有一些差异,比如供应商接受的本地量子门。例如,用于状态叠加的 Hadamard 门,如果不结合其他硬件实现的操作几乎无法实现,如图 7.11所示。但当基础技术发生变化时,这会产生更深远的影响。例如,陷阱离子设备可以任意连接“多对多”的量子比特(图 7.19 – 连接表示),更适合显示全互联结构的问题。例如,投资组合优化就是这种情况,它要求你评估所有潜在资产之间的协方差(第五章):
图 7.19 – IonQ 陷阱离子设备拓扑图
或者在中性原子设备的情况下,类似于 D-Wave 系统中发生的情况,必须提交模拟编码而非基于门的算法,这需要一些特定的知识来执行这些操作(docs.aws.amazon.com/braket/latest/developerguide/braket-quera-submitting-analog-program-aquila.html
)。这也是 Amazon Braket 开发的原因之一,因为它使我们能够在平台内启用新服务时扩展这些特定需求。
鉴于 Qiskit 在量子计算社区的使用和成熟,亚马逊还发布了一个插件,使得任何 Qiskit 编码的例程都可以发送到支持 Amazon Braket 的设备。这帮助我们与一些提供门控计算的设备对接,而无需学习第三方框架。
您可以使用以下代码来安装亚马逊提供商启用插件:
pip install qiskit-braket-provider
Qiskit 电路可以发送到亚马逊设备。类似于我们在图 7.14中的 IBM 启用提供商的做法,我们可以将 Amazon Braket 实例化为提供商:
from qiskit_braket_provider import AWSBraketProvider
provider = AWSBraketProvider()
我们还可以请求使用可用设备作为后端:
ionq_device = provider.get_backend("IonQ Device")
rigetti_device = provider.get_backend("Aspen-M-3")
oqc_device = provider.get_backend("Lucy")
在这里暂停非常重要。正如我们之前提到的,我们的电路可能需要根据最终设备的具体要求进行转换。因此,根据每种情况,可能需要进行某些适配。
此外,考虑到每个设备的定价方案不同,但它们都需要一个计费结构,以便在计费周期结束时收取运行任何示例的费用。
特别重要的是,我们需要关注每个设备的定价,因为在使用变分算法时,拟合参数所需的交互次数可能会急剧增加,这将直接影响每个任务的成本。
要弄清楚特定算法在给定设备上的成本,我们必须了解运行候选量子电路所需的资源和操作。
由于 PennyLane 在处理变分算法时的作用,它有一个非常有用的资源,称为跟踪器,可以跟踪发送到设备的任务。我们可以利用这个资源,通过 AWS 的 SDK 和 PennyLane 插件结合进行我们的估算:
pip install amazon-braket-sdk amazon-braket-pennylane-plugin
我们将照常进行,并创建一个电路,但在这种情况下,使用bracket.local.qubit
设备作为我们的目标设备:
import pennylane as qml
from pennylane import numpy as np
wires = 2 # Number of qubits
dev = qml.device("braket.local.qubit", wires=wires)
def circuit(params):
qml.Hadamard(wires=0)
qml.RY(params[0], wires=0)
qml.CNOT(wires=[0, 1])
return qml.expval(qml.PauliZ(1))
qnode_local = qml.QNode(circuit, dev)
现在,我们可以调用电路,通过qml.Tracker
对象执行围绕它的操作,如下所示:
params = np.array([0.1], requires_grad=True)
我们可以使用qml.Tracker(dev)
作为跟踪器:
print("Expectation value of circuit:", qnode_local(params))
>>> Expectation value of circuit: -0.09983341664682821
除了通过跟踪器产生预期结果外,我们还可以请求已发送到设备的任务:
print(tracker.history)
{'executions': [1], 'shots': [None], 'braket_task_id': ['0f6c047e-fb58-48d5-bc85-1ff4a1538115'], 'batches': [1], 'batch_len': [1]}
例如,如果我们执行梯度计算,对于参数偏移例程,将需要多次执行电路,我们将看到这被封装在不同的批量调用中:
with qml.Tracker(dev) as tracker:
print("Gradient of circuit:", qml.grad(qnode_local)(params))
print(tracker.history)
>>> Gradient of circuit: [-0.99500417]
>>> {'executions': [1, 1, 1], 'shots': [None, None, None], 'braket_task_id': ['2d68103f-3817-422c-9100-6b59b236a614', 'e44a156f-c78f-4a57-8426-0fa0c6133d76', 'abba84cb-3ff5-4b44-b8b9-cdae7ba16ed8'], 'batches': [1, 1], 'batch_len': [1, 2]}
远程设备向跟踪器对象提供更多信息,因此也能为执行提供更多信息。计算时间以毫秒为单位。账单可以用毫秒表示,并可以从history
字段中获取。当然,您必须根据目标设备及其定价方案进行最终计算。
任务跟踪成为关键。当将任务转换为特定设备的执行时,成本方案将相应地获得。当推送到设备时,我们可以实现不同算法和训练方案的意义以及相关成本。
了解我们的云成本是量子计算机和经典资源面临的最具挑战性的任务之一。这就是为什么微软将此视为他们服务的核心部分,并试图提供更简单的方式,使用户能够随时访问这些计费信息。
Azure
微软拥有广泛的企业市场,并且非常清楚量子计算技术可能会颠覆某些业务用户的操作工作负载。考虑到他们的云产品,他们决定通过 Quantum Workspace 服务以类似的设置与 AWS 竞争。
在这种情况下,微软决定根据他们的需求也创建一个框架——Q#,它遵循类似于之前的 C# 和 J# 专有语言的方式,并且在更通用的 .NET 框架中(learn.microsoft.com/en-us/azure/quantum/overview-what-is-qsharp-and-qdk
)。
要启用此服务,您必须从可用的订阅中创建一个量子工作区,订阅是微软用来计费已购买服务的计费单位。Quantum Workspace 是提供访问量子设备的服务,您可以使用这些设备,提供编码环境,这是一种基于笔记本的方式(使用无处不在的 Jupyter Notebook 引擎),以及有关配额、资源和执行量子电路所需的其他信息:
图 7.20 – Azure 门户和 Quantum Workspace 创建页面
默认情况下,Microsoft Azure 账户提供免费的积分,每个设备不同,作为与硬件提供商协议的一部分。这帮助用户在决定选择哪种类型的计划之前,先测试不同的服务提供商。这些计划是按使用量计费的,但也提供了月度服务选项。与先前的选项和量子设备类似,提供了一个笔记本服务,供您进行实验,并提供一个作业列表,以便您检索任何过去的作业(核心服务位于服务的主屏幕上,如图 7.21所示):
图 7.21 – Azure 的 Quantum Workspace 主页,左侧菜单提供管理选项
可用选项显示的服务提供商少于亚马逊的提供:
图 7.22 – 可用的 Azure Quantum Workspace 服务提供商
除了实际的硬件设备,Azure 还提供了优化例程的服务。用户无需处理编码和解决给定问题所需的过程。这是我们在 D-Wave 的 Hybrid 求解器或 IBM 的 Qiskit Runtime 中曾经见过的趋势。用户的抽象层级提高了,他们只需要关注要解决的问题。确实是一个相当有趣的趋势。
微软意识到像 Qiskit 这样的框架的成熟度,而不是强迫用户学习另一个量子计算框架,因此发布了 Qiskit 插件,使得任何 Qiskit 电路都可以发送到启用的设备上:
pip install azure-quantum[qiskit]
安装完成后,我们需要将我们的量子工作区注册为我们希望从中获取后端的提供者。这可以通过以下代码完成。以下代码行需要添加到任何实验的开始部分:
from azure.quantum.qiskit import AzureQuantumProvider
provider = AzureQuantumProvider (
resource_id = "/subscriptions/<suscription_id>/resourceGroups/AzureQuantum/providers/Microsoft.Quantum/Workspaces/<workspace>",
location = "eastus"
)
后端信息是从量子工作区的主窗口(浏览器)获取的,旨在识别它已部署到的区域和订阅:
图 7.23 – Azure 量子工作区主窗口,突出显示访问信息
借助此功能,所有在图 7.22中看到的设备都可以被调用,从而使我们的候选电路能够在这些设备上运行:
ionq_simulator_backend = provider.get_backend("ionq.simulator")
ionq_qpu_backend
= provider.get_backend("ionq.qpu")
在运行任何电路之前,检查运行电路所涉及的成本可能是有意义的。为了通过代码访问这一信息,我们可以使用 Azure 资源估算器,它只需要电路和将要运行的后端,即可评估执行的潜在成本:
cost = backend.estimate_cost(circuit, shots=1024)
微软提供了一个坚实的视角,展示了他们设想如何使用他们的服务(图 7.24),其中包括资源估算,这将成为量子资源长期高效使用的关键信息:
图 7.24 – 微软设想的量子开发管道
正如我们在 Amazon 的案例中看到的,这一资源估算器可以防止用户在任何执行之前花费大量资金。更多关于如何在算法实现之外使用 Azure 资源的示例,可以在他们的笔记本画廊中找到(图 7.25):
图 7.25 – 每个量子工作区内可用笔记本的示例
成本估算
我们简要提到过资源估算,但我们想强调,在寻求可持续采用策略时,这一能力的重要性。
量子计算仍处于早期阶段,需要持续且复杂的维护任务以提供尽可能最好的服务。这是经典计算资源长期以来所掌握的技术。由于硬件供应商生态系统的局限性以及技术的现状,特别是在追求真实硬件的情况下,我们将看到成本显著上涨,即使对于最简单的供应商也是如此。这就是为什么资源估算在任何量子计算管道中都如此重要,特别是当模型训练需要多次迭代时:
图 7.26 – Quantinuum 在 Azure 上的成本(下方)与 IonQ 在 AWS 上的成本(上方)
举个例子,我们可以从第四章中提取欧洲看涨期权定价的量子电路,该电路已经知道由块编码、资产的对数正态分布和执行计算支付函数的块组成:
european_call_pricing = EuropeanCallPricing(
num_state_qubits=nqubits,
strike_price=strike,
rescaling_factor=0.05,
bounds=(low, high),
uncertainty_model=dist_circ,
)
problem = european_call_pricing.to_estimation_problem()
problem.state_preparation.draw('mpl')
我们可能面临的问题是,根据所选择的设备,我们可能无法理解 P(X)和 F 块在操作方面的具体含义,如图 7.27 所示。我们需要将其转化为设备能够理解的基本门组合,因为高级抽象块通常不能直接在真实设备上执行。因此,我们还需要估算与此转换过程相关的潜在成本,因为这是一个常见的现象。
图 7.27 – 展示高层次抽象块的欧洲看涨期权定价问题电路
对于 Quantinuum 设备,我们可以使用旋转、恒等、CNOT 和 Hadamard 门的组合,并请求基于这些操作的电路转换:
from qiskit import transpile
result = transpile(problem.state_preparation, basis_gates=['id', 'ry', 'rx', 'rz', 'cx', 'h'], optimization_level=1, seed_transpiler=1)
然后,我们可以选择设备,以便它可以对生成的电路进行估算:
backend = provider.get_backend("quantinuum.qpu.h1-1")
costs = backend.estimate_cost(result, shots=1)
print(f" Estimated cost for a single shot is of {costs.estimated_total}{costs.currency_code}")
Estimated cost for a single shot is of 5.449HQC
在这种情况下,单次电路执行将消耗 5.5 个 Quantinuum 积分,对于标准订阅来说,总费用将接近 70 美元。如果我们考虑到幅度估算例程可能需要对同一电路进行多次迭代,那么仅仅为了资产支付评估,我们可能需要几百美元。当然,接下来是压缩这个电路,使得更少的操作仍能产生相同的状态准备。然而,这通常是研究机构的核心活动,不太可能是我们的分析师会投入时间的地方。
这就是为什么我们必须进行一些计算,并彻底评估预期的投资回报,以免在没有充分考虑的情况下,将我们的训练例程提交给一个愿意以这些价格处理请求的云服务提供商。
摘要
从本地部署到云托管的过渡对许多组织来说是一个复杂的过程,包括从拥有计算资源转变为如今普遍的按需付费模式。量子计算最初直接进入了云端。不同的平台提供了高效的成本结构,给予服务和供应商的访问权限。许多机构已经有了引入量子计算的设施。
量子硬件是以问题为导向的,并且随着选择的设备种类繁多,你必须决定哪一种设备最适合你的问题,这增加了复杂性和决策的难度。估算工具帮助公司评估使用这种新型机器的成本,为他们提供了一种有效的方式来估算每项研究所需的预算。
没有任何技术像量子计算一样,面对如此广泛、几乎是免费的学习和适应机会。硬件提供商将他们最新的设备集成到这些云服务中,帮助推动该领域的发展,既支持研究人员也支持商业用户。围绕用于操作这些硬件的库的不同社区的角色至关重要,它为自学量子计算提供了大量的笔记本和教程。
已经有提供 2 和 3 量子比特桌面系统的供应商,以具有竞争力的价格出售(www.discovermagazine.com/technology/a-desktop-quantum-computer-for-just-usd5-000
),但鉴于大多数组织似乎将其基础设施放在云端,这主要仍将作为一种教育资源。这简化了当你自托管这类资源时的任何集成工作。
总结来说,实施量子计算到云平台上面临几个挑战,包括以下几个方面:
-
可访问性:目前量子计算资源仅通过专业的云提供商提供,这对于一些用户来说可能较为难以访问。一般云提供商已经通过早期采用量子计算中心来缓解这一问题。
-
可扩展性:量子计算系统需要专门的硬件和基础设施,随着量子计算资源需求的增加,扩展这些系统可能会变得困难。
-
互操作性:不同的量子计算平台有不同的编程语言和接口,这使得开发人员在多个系统之间协作时遇到困难。
-
安全性:量子计算系统容易受到某些类型的攻击,例如量子黑客攻击,这可能会暴露敏感信息。
-
噪声与错误:量子计算机比经典计算机更容易受到噪声和错误的影响,这使得从量子算法中获得准确结果变得更加困难。
-
成本:量子计算资源仍然相对昂贵,这使得一些组织难以负担所需的硬件和基础设施。
无论如何,这项高速发展的技术刚刚开始发挥作用,而那些带来竞争优势的应用将揭示出这些资源最终将采用的路径。
进一步阅读
许多供应商已经开始塑造他们的产品,以便在未来几年中出现新的即服务范式。
牛津量子电路公司已经接受了量子计算即服务(QCaaS)的概念(www.techradar.com/news/quantum-computing-as-a-service-is-going-mainstream
),而像 QCentroid 这样的公司通过其量子即服务(QaaS)平台(marketplace.qcentroid.xyz/
)为行业特定应用提供现成的解决方案,目标是吸引更广泛的受众。
当考虑云访问资源时,最有趣的案例之一是变分量子算法的案例,在这种算法中,经典资源和量子资源之间需要不断交换。鉴于我们已看到的排队时间,我们必须意识到,如果我们尝试在实际设备上远程训练 ansatz,每次迭代的远程训练都将面临重要的延迟。
鉴于公司从经典机器学习模型中获得的现有收益,量子计算很可能会作为辅助工具来解决那些难以解决的问题。在合适的架构中这样做,需要高级岗位的人员站出来,超越领域中的炒作,做出关于采纳与长期战略的明智决策。公司们已经在为这些早期采用者简化决策过程。
为了解决这个问题,IBM 决定创建 Qiskit Runtime。Runtime 是一些包含知名算法的程序,其中附加信息被发送到远程执行引擎,后者负责经典部分和量子部分的执行。它提供了算法两部分之间更紧密的交互,从而实现了更高效的运行时间。一个示例工作流程见于图 7.28:
图 7.28 – IBM 设想的 Qiskit Runtime 用于高效的工作负载平衡
这个服务提供了一个成本方案,尽管有一个免费选项,最多提供 3 小时的免费访问,但你仍然需要考虑费用问题:
图 7.29 – 截至 2023 年 1 月的 IBM Qiskit Runtime 定价
D-Wave 还意识到,通过在其端结合经典和量子操作,他们可以扩展其产品组合,并减少解决某些需要中间经典步骤的问题所需的时间。这就是他们的混合求解器背后的秘密——经典例程与量子退火器交互,从而通过两者的结合创建了更广泛的问题求解范围。
根据定义,他们的求解器高效地解决二次二进制模型,但添加了经典例程。离散和受约束的模型也可以通过为每个过程步骤分配量子和经典资源来解决(docs.dwavesys.com/docs/latest/doc_leap_hybrid.html
)。
很可能,这些远程求解器的进展最终会表现为一个简化的服务,其中问题被提交,服务提供商的引擎确定最佳的资源组合。如果不是量子设备在特定问题领域提供的进展,可能很难察觉它们在过程中的作用。然而,这种方法将简化商业用户的可用性和抽象,他们的主要关注点是寻找解决方案,而可能不太关心为实现这些解决方案所采用的技术细节。
参考文献
Cross, A. W., Bishop, L. S., Smolin, J. A., & Gambetta, J. M. (2017). 开放量子汇编语言。arXiv 预印本 arXiv:1707.03429。
Anis MS, Abraham H, AduOffei RA, Agliardi G, Aharoni M, Akhalwaya IY, Aleksandrowicz G, Alexander T, Amy M, Anagolum S. (2021). Qiskit:一个开源的量子 计算框架。Qiskit/qiskit。
Smith, R. S., Curtis, M. J., & Zeng, W. J. (2016). 一个实用的量子指令集架构。arXiv 预印本 arXiv:1608.03355。
第三部分:即将到来的量子场景
本节强调了经典手段和高性能硬件在实现短期量子优势中的关键作用,提供了塑造量子-经典格局的关键方法的见解。它进一步探讨了基于不同提供商策略的噪声中等规模硬件的潜在发展,强调了其长期影响。最后,它讨论了在金融科技公司和银行中实施量子计算的挑战,并提供了确保项目成功和低风险执行的指导。
本部分包含以下章节:
-
第八章**, 高性能计算机与模拟器的相关性
-
第九章**, NISQ 量子硬件的发展
-
第十章**, 银行和金融科技的量子路线图
第八章:仿真器和高性能计算(HPC)在 NISQ 时代的作用
现在我们已经知道如何使量子和经典计算资源可用,并回顾了如何在这两个领域中提出我们的项目问题,我们应该评估可用的机制和策略,以高效地利用这些资源。这里的意思是成本和时间的效率,因为在将这些技术纳入公司日常流程时,这些因素也需要考虑。
现如今,大多数公司中的传统资源包括本地和云端资源的混合。这是大多数实验项目的常见情况,目的是通过分析改善运营流程。短期计算资源的需求可能因项目或我们设想使用的技术性质而有所不同。这就是为什么云原生按需付费模式已经成为大多数公司良好选择的原因。
根据任务的不同,图形处理单元(GPU)用于机器学习活动,或高性能计算资源用于优化问题可能是必需的。在不了解项目结果的情况下购买这些资源可能成本过高。但同样也有一个事实是,一旦这些过程实现了运营,利用基础设施成本并将这些资源整合到更具成本效益的结构中变得至关重要。如果不经过合理评估,按需付费可能会变得昂贵。通俗来说,既有租车市场,也有购车市场。一切最终归结为使用。
从一开始就找到正确的资源组合,即使是在项目生命周期中,对于量子计算以及整体业务的可持续性和竞争力至关重要。量子计算不仅仅局限于量子硬件本身,采用量子计算时可以选择多种方案。从量子启发到完全的量子算法,正如我们在之前的章节中所讨论的,我们必须为这些解决方案找到合适的资源。
因此,本章将探讨量子领域内各种潜在的选项,以及这些选项如何用于具有成本效益的技术采用。我们还将尝试概述一种合理的采用方法,以便服务那些不太熟悉分析项目生命周期的人。
我们将涵盖以下主要内容:
-
带噪声的量子硬件本地仿真
-
本地仿真器的分布式运行方法
本地噪声模型仿真
首先,我们必须区分本章及后续章节中使用的三种命名约定。之前,我们谈到量子算法如何可以在经典设备上运行,然后再传送到真正的量子设备,但经典执行的方式有多种不同的方式。这类问题已经存在一段时间,经典计算在过去的一段时间里发展了许多不同的方式来解决当时的技术问题。正如我们将看到的,这也可能带来一些与我们将要覆盖的不同经典设置的细节相关的挑战。模拟量子力学演化是一项非平凡的任务;这就是为什么量子计算被提出作为潜在解决方案的原因。
模拟器 是用经典方式处理信息,模拟理想量子计算机的方式。请记住,量子信息理论并不是由于量子硬件的出现才产生的一个新任务。在第一个量子设备诞生之前,很多工作就已经开始了(Bennet 和 Shor, 1998)。通过定义量子信息并确定要使用的操作集,将这些操作应用到我们的量子态的顺序被称为量子领域中的算法或电路。模拟器使得量子计算中使用的数学工具在计算上可用。我们在第一章中没有深入讨论这些术语,但请记住,量子态简单来说就是编码给定系统波函数的向量。举例来说,我们可以将基本的 0 态表示为列向量,如下方的方程所示:
|0⟩ = ( 1 0 )
因此,从计算的角度来看,我们可以将其表示如下:
import numpy as np
ket0 = np.array([[1.0], [0.0]])
另一方面,诸如 CNOT 或哈达玛门(Hadamard gate)等操作,用于创建叠加态,实际上不过是执行从一个状态到其乘积态演化的矩阵。例如,哈达玛门可以通过以下矩阵表示:
H = 1 _ √ _ 2 (1 1 1 − 1)
以下代码可以表达其编码版本:
hadamard = np.dot(1/np.sqrt(2), np.array([[1.0, 1.0], [1.0, -1.0]]))
由于每个运算符(量子门)都可以表示为一个矩阵,只要我们拥有足够的资源,就可以用经典资源执行这些操作。尤其是,随着系统规模的增大,内存变得尤为重要。量子计算机的表示是 2 的 N 次方矩阵,执行这些计算时需要处理向量。我们可以利用我们在向量化和稀疏矩阵处理方面的工作,但此时,我们的经典设备将达到这些技术的极限。
例如,应用哈达玛门(Hadamard gate)到我们的基本 0 态量子比特(qubit)将得到一个在 0 和 1 态的叠加状态。这个操作可以通过创建之前定义的对象的点积来模拟:
>>> np.dot(hadamard, ket0)
array([[0.70710678], [0.70710678]])
这是叠加的量子态:
|ψ⟩ = 1 _ √ _ 2 (|0⟩ + |1⟩)
到此为止,我们已经进行了第一次模拟。从初始状态开始,大多数设备都是通过一个哈达玛门操作符(H)初始化的,从而产生输出状态。我们可以将其扩展,使得所有基本门和状态都可以被表示,从而在更高的抽象层次上进行工作。这正是量子模拟器在我们使用它们运行算法时所做的。当我们使用 Qiskit 或 Pennylane 等框架时,它们将这一系列操作作为操作的矩阵积的抽象,使我们可以通过简单地使用这些定义来轻松地使用这些操作。
模拟一个量子系统需要多少经典资源?嗯,这正是事情变得有趣的地方——你可以预期许多量子比特能够在普通笔记本电脑上进行模拟,并且执行许多比特操作。但事实是,16 量子比特的算法可能已经超出了普通笔记本电脑可用的内存。例如,16 个量子比特会编码我们在第五章中回顾的投资组合优化任务的 16 个资产的可选方案。这是一个可以轻松用经典计算机解决的小问题,但在其量子版本中,使用前面提到的任何框架都可能消耗掉普通笔记本电脑上可用的 16GB 内存。那么,经典计算机是如何处理这些问题的,而量子模拟器又是如何在相同规模下失控的呢?
当你模拟量子力学系统时,你处理的信息量远远超出了你能够编码到这些量子物体中的资产和派生信息的简单总和。量子力学动态发生在更复杂的空间中,这需要更多的资源来忠实地重现整个系统的动态。但这也意味着,编码更多经典信息所需的量子资源较少(Bowen, 2001)。希望得益于这一事实,我们可以以不同的方式进行计算,这时优势就显现出来了。利用量子领域的特性,如叠加态或纠缠态,我们可以做一些不同的事情,例如通过单步操作评估所有潜在组合(Brassard et al. 2002),或让解之间相互抵消,放大最好的候选解,就像我们在第四章、第五章和第六章中的例子那样。
到此为止,我们已经涵盖了量子计算与经典计算的基本区别。因此,你必须知道,在模拟这些动态时,经典系统存在局限性。这也是为什么如此多的努力投入到开发能够在量子力学层面工作的计算机中,以避免因经典的“模拟”这些效应而导致的损失。
在模拟真实量子设备时,我们可以进一步发展,让经典模拟不仅能够像理想的量子计算机一样工作,还能够像特定设备一样工作。在模拟特定设备时,我们希望模拟所有与连接性或误差统计相关的限制条件。在当前的 NISQ 时代(Preskill, 2021),准确表征目标设备的细节非常重要。
模拟器 是指当模拟器在给定的特定量子硬件的限制条件下模拟量子动力学时使用的术语。例如,在 IBM 的超导芯片中,我们可以从 Qiskit 中提取它们的模型,并使用现有的本地模拟器,这些模拟器的功能仅限于真实设备的运行。这意味着,并不是所有可能的两比特门操作都能在任意两个量子比特之间执行,并且操作有时会失败,产生我们所称的误差,从而导致噪声(不准确性):
from qiskit.providers.fake_provider import FakeVigo
from qiskit.visualization import plot_error_map
emulator = FakeVigo()
plot_error_map(emulator)
图 8**.1 是假 Vigo 的误差图的表示。
图 8.1 – IBM Vigo 芯片描述,突出显示量子比特连接性及 H、CNOT 或测量操作中的误差
通过将我们的电路运行在这个假实例上,而不是模拟器上,我们将面临与使用真实设备时相同的问题,并获得与真实设备更接近的结果,而无需在实际设备队列中等待。这就是为什么当量子电路需要发送到实际设备(或模拟器模拟真实硬件)时,需要进行转译步骤。我们需要一个步骤,将我们的理论算法和设备无关的算法转化为可用的门,并为硬件提供连接性。
如果我们以 第一章中展示的两比特贝尔态为例,如图 8**.2 所示,我们可以对该fake_vigo
设备添加转译步骤,看看绘制出来的内容:
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.draw('mpl')
最后一行代码输出的是图 8**.2 中显示的电路。它表示其中一个贝尔态。
图 8.2 – 贝尔态电路
电路需要被分解成量子计算机上实现的门。为此,电路需要进行转译:
from qiskit import transpile
qc = transpile(qc, emulator)
qc.draw('mpl')
图 8.3 – 基于贝尔态的电路转译,采用模拟器配置
这些差异来自于 Hadamard 门不是设备中的本地操作,尽管其错误已显示在图 8.1中。我们需要将电路转换为本地门操作,以便它们的组合产生与 H 门相同的效果。我们还需要指定会发生什么,特别是对于那些属于硬件规格但不在电路中的其余量子比特。
这个事实当然适用于所有设备,不仅仅是 IBM 的设备,因为每个制造商和底层技术都是不同的。此外,每个芯片在不同时间点的错误统计数据会有所不同,因为它们正在被处理和改进。因此,设备模型可能需要不时更新,以使用设备的最新快照。
最后,我们有量子设备,即我们在第七章中展示的实际服务,这些设备最终可以用来运行我们的算法。
就像在任何合理的项目开发中一样,理解这三种选择之间的区别,并知道何时利用每一种方法,都是非常重要的。
模拟器帮助我们概念化算法和特定实现,使我们能够为给定的用例设想预期的结果。经典资源将限制我们,但正如我们将看到的,在继续前进之前,仍有许多选项可以尽可能地挤压这些资源。
量子算法的终极目标是将其运行在量子硬件上。尽管我们可以在经典资源上进行工作,但随着问题规模的增加,我们会发现限制。量子设备稀缺,我们可能需要根据特定硬件调整理论算法。但鉴于这些设备稀缺,且在本地进行相关工作,在继续之前模拟设备是一个合适的选择。
设备仿真使我们意识到我们的理论算法将面临的变化,且当其在设备上运行时,结果将更接近实际预期的结果。对于变分方法和量子机器学习(QML),这不仅需要多次迭代来调整参数,而且由于设备行为,参数拟合可能会发生实质性变化,这些资源非常宝贵。拥有设备的忠实表示或模型同样至关重要。尽管一些供应商会对模拟器收费,但大多数可以免费访问,或者通过我们目前所探索的软件进行模拟。第七章中展示的一些设备是经典模拟的量子设备表示。像 Quantinuum 这样的供应商提供其设备和模拟器的访问权限,通常提供较短的等待时间,以便研究人员在模拟器和实际设备之间平衡工作负载。
大多数库和框架提供资源,用于创建噪声模型,并将其添加到标准仿真器中(qiskit.org/documentation/tutorials/simulators/3_building_noise_models.html
)。但如果我们的算法需要的经典资源超过我们笔记本电脑能提供的资源怎么办?接下来,我们将探讨一些我们可能需要考虑的有趣选项,这些选项来自可用的经典资源范围,以充分利用这些设备。
用于量子仿真的分布式计算方法
我们获得最经典资源的一种方式是通过利用量子计算的分布式框架。
如今,这些方法在所有大型组织中无处不在。一些分布式计算框架,例如 Apache Spark 和 Ray,已广泛用于大数据集处理或深度学习模型训练(Meng 等,2016,Moritz 等,2018)。与此相近,量子计算仿真器可以通过拆分需要执行的数学运算来利用分布式生态系统。将一个应该作为整体运作的系统拆分成一组独立的运算,需要我们理解当前问题能否被有效拆分。
这就是为什么大多数处理分布式量子计算仿真的框架都来自研究团队,即使在像英特尔(Guerreschi 等,2020)和百度(Zhao 等,2021)这样的跨国公司中也是如此。
随着量子硬件的成熟,设备无关的框架可能会广泛传播,但仍然缺乏共识,这导致了分布式计算的孤立或硬件特定框架。这就是为什么微软的研究人员创建了量子中间表示(QIR)并成立了 QIR 联盟(www.qir-alliance.org/
),旨在提供一个行业标准,以促进硬件提供商与量子计算科学家之间的互操作性。
行业标准的创建还将有助于推动基于云的量子计算在量子深度学习(Kwak 等,2022)和为联合学习设计的量子版本(Li 等,2021)的研究进展,这些已经作为打击有组织犯罪和协作金融犯罪检测的解决方案出现(Suzumura 等,2021)。
尽管这些标准和分布式框架的发展与其经典对应物的成熟程度相当,但在仿真复杂系统的计算效率上仍有提升空间,这也是我们将在下一节深入探讨的内容。
用于仿真的张量网络
张量网络对于许多接触量子计算的人来说是新兴的,但它们早已被创造出来。尽管最初在 90 年代初期就已采取步骤来应对凝聚态物理领域的大型系统,但这很快扩展到其他领域,如高能物理和多体物理。到了 2000 年代初期,作为一整套方法和算法,它们迅速发展,适用于研究不同层次的纠缠现象(Biamonte 和 Bergholm,2017; Órus,2019)。
纠缠是量子计算中一种关键特性,使得量子计算既充满吸引力,又强大,同时也具有理解和培养直觉的挑战性。张量,作为数学对象,为处理与N维向量空间相关的对象集合之间的关系提供了一种一致的框架。由于某些物理领域中的问题所带来的维度性,张量网络框架使研究人员能够将这些复杂结构分解为张量积,进而进行收缩和扩展,从而更高效地处理它们。
了解到张量网络在量子计算领域的重要性,一些提供商已经迈出了前进的一步,开发了他们的框架,以便研究人员可以利用它们。这就是 Pennylane 的创建者 Xanadu 及其 Jet 框架的情况(Vincent 等,2022)。
在这里,我们将使用 Jet 框架模拟一个产生贝尔态的两量子比特电路作为练习。从下图可以看出,电路与张量表示之间的相似性,应该有助于你形象地理解这两种方法之间的相似之处。当电路规模增大时,计算效率将变得更加明显:
图 8.4 – 产生两量子比特纠缠贝尔态的量子电路(左);张量网络表示突出显示以下代码示例中将使用的索引(右)
如我们之前所做的那样,我们需要创建两个 0 态来启动我们的电路状态(初始化)。在这种情况下,我们需要指明我们的状态的索引和维度:
import jet
dim = [2]
ket0 = [1, 0]
# Initializing our qubits
qbit0 = jet.Tensor(["i"], dim, ket0)
qbit1 = jet.Tensor(["j"], dim, ket0)
类似地,哈达玛门由矩阵运算符表示,索引则表示它在我们的初始状态中放置的位置:
Hadamard = jet.Tensor(["i", "k"], [2, 2], [1/np.sqrt(2), 1/np.sqrt(2), 1/np.sqrt(2), -1/np.sqrt(2)])
如果k索引之前没有出现也没关系,因为它将是进一步操作的链接。最后的操作将是控制非门(CNOT)操作,仅当第一个量子比特(也称为控制量子比特)处于|1>态时,才作用于第二个量子比特。它的矩阵表示如下:
CNOT = ⎡ ⎢ ⎣1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0⎤ ⎥ ⎦
因此,我们可以通过选择矩阵中应替换为 1 的元素来组合它,因为矩阵初始化时值为 0:
CNOT = jet.Tensor(["k", "j", "m", "n"], [2, 2, 2, 2])
CNOT.set_value((0, 0, 0, 0), 1) # |00> -> |00>
CNOT.set_value((0, 1, 0, 1), 1) # |01> -> |01>
CNOT.set_value((1, 0, 1, 1), 1) # |10> -> |11>
CNOT.set_value((1, 1, 1, 0), 1) # |11> -> |10>
通过这四个元素,我们可以组合我们的张量网络,通过与其他元素共享的索引将每个元素连接起来。例如,我们可以简单地对第一个量子比特施加哈达玛操作(类似于我们在第一个练习中所做的),并要求它的收缩:
tnet = jet.TensorNetwork()
tnet.add_tensor(qbit0)
tnet.add_tensor(Hadamard)
tnet.contract()
这将产生|0>和|1>态的均等叠加:
Size = 2
Indices = {k}
Data = {(0.707107,0) (0.707107,0)}
我们可以看到获得的张量是由k索引引用的那个。只需通过连接进一步的操作并要求最终收缩,我们就可以有效地模拟整个操作链,直到电路产生最终状态:
tnet = jet.TensorNetwork()
tnet.add_tensor(qbit0)
tnet.add_tensor(qbit1)
tnet.add_tensor(Hadamard)
tnet.add_tensor(CNOT)
tnet.contract()
Size = 4
Indices = {m n}
Data = {(0.707107,0) (0,0) (0,0) (0.707107,0)}
在两比特情况下,我们可以看到第一个(|00>)和最后一个(|11>)状态具有大于零且相等的概率幅度。它们应与图 8.3中由电路编码的贝尔态一致,可以用狄拉克符号表示,如下所示:
图 8.5 – 量子电路产生纠缠的贝尔态(来源:维基百科)
由于其基本功能,许多提供商已经将其基础功能作为模拟器提供,以便用户可以在更高的抽象层次上工作。我们可以在一些云服务商那里找到它,例如 AWS 云设备中的选项,如下图所示:
图 8.6 – AWS TN1 张量网络模拟器描述页面
它的费用高达每分钟 0.275 美元,但可以处理最多 50 个量子比特和 100 个门电路实例。SV1 和 DM1 设备(也可以进行经典电路模拟)分别限制在最多 34 个量子比特和 17 个量子比特电路(也是更便宜的选择)。
鉴于这一切似乎归结为张量乘法(一般来说,状态使用向量表示,算子使用矩阵表示),显然有一个步骤是将我们的经典资源最大化,这通过在执行这些计算时利用所有可用的经典资源来实现。张量网络非常适合简化所需的计算,但硬件仍然需要提供。这时,经典的向量和矩阵计算资源便加入了量子计算的行列。
GPU
如前所述,GPU 在短期量子计算中也发挥着关键作用。最初,GPU 是为矩阵运算设计的,这些运算在计算机渲染图像时是必需的。90 年代中期,像 Nvidia (en.wikipedia.org/wiki/NV1
) 这样的制造商发布了他们的首款工作卡,并从那时起一直在积极创新。游戏产业确保了 GPU 制造商不断改进,提供了软件和硬件的持续更新,使得这些设备在执行其主要任务时越来越高效。
从相邻领域来看,GPU 制造商意识到,对于机器学习专家,特别是在计算机视觉领域,使用 CPU 训练模型变得越来越困难。随着大规模模型的爆炸性增长和深度学习时代的到来,显而易见,GPU 产品有一个潜在的市场可以开拓。它们提升深度学习任务的能力源于其高效执行矩阵运算的主要目的。通常,计算机将图像处理为张量,通过对其执行卷积操作来识别猫或狗(例如),检测图像中的物体,或对图像中的物体进行分割。
由于矩阵运算是量子计算数学概念的核心,一些供应商,如 Nvidia,专注于如何帮助推动这一领域的发展,后来发布了一个专门用于量子计算的 SDK,利用其卡架构的优势 (docs.nvidia.com/cuda/cuquantum/
)。不仅如此,它还为之前提到的技术和数学框架提供了专门的框架,使得其 GPU 卡成为当前量子计算研究的基石:
图 8.7 – NVIDIA 描述的基于 GPU 的仿真框架架构
得益于其抽象层,大多数硬件供应商和云计算服务商可以无缝地将最先进的量子仿真和仿真技术集成到其技术栈中,使普通公众也能够使用这些技术。
对于那些有兴趣深入了解该技术的人,像百度的 PaddlePaddle 和 Xanadu 的 Pennylane 这样的框架提供了在 Nvidia 卡上运行仿真的选项,通过允许 Python 中间库与在硬件上操作的原生 CUDA 库进行交互。即使听起来复杂,只需几行代码就能启用这种加速。
例如,在使用 Qiskit 作为主要框架时,你可以安装支持 GPU 的 Aer 仿真器版本:
pip install qiskit-aer-gpu
它将覆盖标准的qiskit-aer
库,所有仿真都将利用 GPU 支持的状态矢量仿真处理。
Xanadu 及其 QML 框架 Pennylane 走上了一条不同的道路。它发布了一个完全独立的库,名为 Lightning,一旦安装了 GPU 支持,用户可以调用 GPU 设备,使得所有需要的计算都发送到 GPU,而不是默认的 CPU:
pip install pennylane-lightning[gpu]
dev = qml.device("lightning.gpu", wires=2)
谷歌走上了另一条道路,定义其专用硬件为低维矩阵和张量的广义定义优化。这些设备被称为张量处理单元(cloud.google.com/tpu/docs/tpus
),是这种抽象的自然演变;它们特别适用于 AI,并且很可能会提升其云提供的量子计算服务的某些工作负载(quantumai.google/cirq/google/concepts
)。由于云的抽象,若非其价格,可能很难辨别我们的电路在哪运行。
总结
在本章中,我们看到在实际设备上运行量子计算机之前,有许多方法可以进行模拟。我们还看到,现实硬件的有限可用性、错误和特定特性带来了一些影响,需要考虑,而经典计算机在量子计算方面尚未“完成”。
建立验证我们电路、评估其潜力并决定算法运行地点的策略,要求理解几乎所有量子公司提供的选项集合。
张量网络提供了一个强大的数学框架,可以高效地模拟复杂系统。GPU 也在此领域下注。即使是将两者结合起来,已证明也是一种有效的模拟大规模设备的方法。
分布式计算预计将成为下一道障碍,需要一定的技术专长来有效地利用其潜力。类似于张量网络和 GPU 的发展轨迹,简化的方法已出现,以在不同层次上利用经典计算资源。
像 Nvidia 这样的供应商已经提供了一种名为 RAPIDS 的数据科学分布式框架,它简化了端到端的工作,促进了数据清洗、转化和模型训练的核心活动。它让我们能够想象一个未来,其中分布式 GPU 支持的张量网络根植的量子计算模拟器和仿真器将被集成到实际生态系统中,用于端到端的数据驱动应用场景的开发。即使当容错量子设备向公众开放时,这种设置也将提供一种高效、低成本的方式来应对当今公司面临的一些最复杂的问题。
混合量子计算将利用所有已开发的研究,从而加速科学和商业领域的有意义进展,这些进展将在不久的将来出现。
深入阅读
对于那些有兴趣深入了解本章提到的一些技术的人,这里有一些推荐资料,应该能帮助你理解基本概念。
我们讨论的最有趣且具有挑战性的框架之一是张量网络。许多资源可以在文献中找到。不过,我们可以推荐两篇:2017 年比阿蒙特和伯赫霍尔姆的工作,它为更好地理解张量网络的潜力提供了坚实的基础。对于那些更倾向于动手的工程师,Quimb(格雷,2018)和 Jet(文森特等,2022)的 Python 包提供了一种有趣的方式来学习和实验。
类似地,分布式计算有其发展路径,扎哈里亚等人(2010)关于 Apache Spark 的工作以及莫里茨等人(2018)关于 Ray 的研究,正在引领朝向易于实现的分布式解决方案的方向。
一个特别有趣的贡献是百度团队对现有 PaddlePaddle 框架的贡献(马等,2020)。他们不仅为深度学习提供了一个工业级框架,还将其一部分改编以包含与 QML 相关的工作,扩展为一个最有趣的混合 QML 平台之一,且公开可用:github.com/PaddlePaddle/Quantum
。
它还指定了在 GPU 上执行此计算的可能性,从而让用户充分利用经典计算资源。
参考文献
贝内特,C. H.,& 绍尔,P. W.(1998)。量子信息理论。IEEE 信息理论汇刊, 44(6),2,724-2,742。
比阿蒙特,J.,& 伯赫霍尔姆,V.(2017)。张量网络简述。arXiv 预印本 arXiv:1708.00006。
布拉萨德,G.,霍耶,P.,莫斯卡,M.,& 塔普,A.(2002)。量子振幅放大与估计。《当代数学》, 305,53-74。
鲍文,G.(2001)。超密编码的经典信息容量。物理评论 A, 63(2),022302。
格雷雷斯基,G. G.,霍戈博姆,J.,巴鲁法,F.,& 萨瓦亚,N. P.(2020)。英特尔量子模拟器:一种云端高性能量子电路模拟器。《量子科学与技术》, 5(3),034007。
格雷,J.(2018)。quimb:一个用于量子信息和多体计算的 Python 包。《开源软件期刊》, 3(29),819。
郭,Y.,尹,W. J.,金,J. P.,赵,H.,朴,J.,崔,M.,... & 金,J.(2022)。量子分布式深度学习架构:模型、讨论与应用。 ICT Express。
李,W.,卢,S.,& 邓,D. L.(2021)。通过盲量子计算进行量子联邦学习。《中国科学:物理学、力学与天文学》, 64(10),1-8。
马,Y.,于,D.,吴,T.,& 王,H.(2019)。PaddlePaddle:来自工业实践的开源深度学习平台。《数据与计算前沿》, 1(1),105-115。
孟,X.,布拉德利,J.,亚夫兹,B.,斯帕克斯,E.,文卡塔拉曼,S.,刘,D.,... & 塔尔沃卡尔,A.(2016)。Mllib:Apache Spark 中的机器学习。《机器学习研究期刊》, 17(1),1,235-1,241。
Moritz, P., Nishihara, R., Wang, S., Tumanov, A., Liaw, R., Liang, E., ... & Stoica, I. (2018). Ray:一个用于新兴{AI}应用的分布式框架。在第 13 届 USENIX 操作系统设计与实现研讨会(OSDI 18)中(**第 561-577 页)。
Orús, R. (2019). 复杂量子系统的张量网络。自然物理评论, 1(9),538-550。
Preskill, J. (2021). 量子计算 40 年后。arXiv 预印本 arXiv:2106.10522.
Suzumura, T., Zhou, Y., Kawahara, R., Baracaldo, N., & Ludwig, H. (2022). 用于协同金融犯罪检测的联邦学习。在联邦学习(第 455-466 页)中。 Springer,Cham。
Vincent, T., O’Riordan, L. J., Andrenkov, M., Brown, J., Killoran, N., Qi, H., & Dhand, I. (2022). Jet:通过基于任务的并行张量网络收缩进行快速量子电路仿真。Quantum, 6,709。
Zaharia, M., Chowdhury, M., Franklin, M. J., Shenker, S., & Stoica, I. (2010). Spark:具有工作集的集群计算。在第 2 届 USENIX 云计算热点问题研讨会(**HotCloud 10)中。
Zhao, X., Zhao, B., Wang, Z., Song, Z., & Wang, X. (2021). 使用 LOCCNet 的实用分布式量子信息处理。npj 量子信息, 7(1),1-7。
第九章:NISQ 量子硬件路线图
在使用我们实现的电路进行我们探索的不同选项时,一个关键因素是噪声对获得有意义结果的相关性。在这方面,我们希望带您了解您可能需要考虑的工作,包括如何适应每个特定硬件供应商、这些设备的具体细节,以及他们在规模化路线图中所做的一些尝试,这样您可以明智地选择在这条旅程中的合作伙伴。
之前,我们已经看到如何使用经典设备来运行模拟器,这些模拟器不受任何噪声的影响,正如我们在第八章中所解释的那样。我们也可以包括不同类型量子设备的限制和噪声模型,以便进行仿真。因此,即使经典资源将用于执行我们的计算,系统也会引入错误和与实际设备的量子比特耦合相关的特定特性,从而使结果类似于在实际硬件上运行的效果。
无论如何,模拟器和仿真器都受到经典硬件的限制,以及它模仿量子电路动态的能力。即使今天已经有高效的手段,正如我们在前一章中所看到的,这一限制最终还是会将我们引向实际硬件。特别是当我们关注实际应用时,可能需要多个量子比特来编码手头的问题。
目前,像 IBM 和 D-Wave 这样的公司提供的量子硬件服务约为 433 个量子比特(例如 IBM 的超导芯片)和 5,000 个量子比特(例如 D-Wave 的退火机器)。要模拟如此规模的设备是非常复杂的。最近,AWS 量子计算中心的研究人员发现,他们可以通过利用分布式计算云资源,进行一个 44 量子比特的仿真(aws.amazon.com/blogs/hpc/simulating-44-qubit-quantum-circuits-using-aws-parallelcluster/
)。您可以看到,在这种规模下进行电路仿真时,我们可能面临的经典计算问题。
因此,为了充分利用当前量子设备的潜力,我们需要在执行量子电路时处理噪声和潜在的错误。
每个供应商都提出了其设备演变的路线图,这些路线图包括通过经典通信量子设备实现低级别的模拟编码、通过量子设备进行扩展,甚至像 D-Wave 一样从特定功能转向更广泛的数字化设备。那么,为什么会有这样的决策?这些决策的基础是什么?它们如何影响我们采用量子计算的路线图?
为了更好地理解这些决策并帮助我们相应地设计战略,本章将深入探讨以下主题:
-
物理量子比特与逻辑量子比特的区别
-
容错与 NISQ 时代的对比
-
缓解和扩展
-
退火过程和其他类型的计算
这个话题是一个高度技术性的内容,因此主要目的是让你理解并意识到在选择特定设备和提供者时可能面临的挑战和局限性。
逻辑量子比特与物理量子比特
经典计算资源处理的是由各种来源产生的物理故障或错误。关于这些需求,错误更正码已经得到了广泛研究(en.wikipedia.org/wiki/Error_correction_code
)。理查德·哈明(1950)是第一个在 1950 年代初提出错误更正码的人。经典错误更正码使用冗余或信息复制的概念来发现给定通道或计算结果中的不一致性。通过这种方式,可以检测到错误,甚至进行更正,以恢复缓解后的结果。
将此问题带入量子领域面临两个主要挑战。不可克隆定理(Lindblad 1999)指出,如果量子状态未知,就无法复制该量子状态。了解该状态意味着对其进行测量,而这一事件将迫使状态坍缩并丧失所有量子信息。这两个挑战要求提出创新的解决方案来应对量子领域内的错误,因为在这种情况下,经典协议将无法执行。
如果我们查看例如 IBM 的 127 量子比特超导设备(ibm_washington
),我们会注意到除了不同量子比特之间的耦合图外,还提供了其他信息,如图 9.1所示:
图 9.1 – IBM 华盛顿设备的错误图,配备 127 个超导量子比特(Eagle r1)
在图 9.1的左侧,我们可以看到 Pauli-X 门的误差率。这表示该操作对所应用的量子比特的影响失效的次数。我们可以在给定时间内为设备中的每个量子比特检索此信息。
前图中的另一个相关信息是 CNOT 两比特操作,它是量子比特间相互作用和生成纠缠所必需的。我们可以看到,单比特操作的误差率处于合理的中值(10 −4)。然而,对于两比特纠缠门(CNOT),尽管中值较低(10 −2),我们仍然可以看到在某些耦合中它会升高到 100%的概率(查看量子比特 96、109 和 114),这意味着几乎所有涉及这三个量子比特的纠缠操作都将面临完全失败。
更重要的是,我们应该考虑这些指令在之前设计的电路中涉及的数量。如果我们以第五章中覆盖的投资组合优化用例为例,每个资产都会显著增加操作的数量,因为我们需要覆盖其与每个其他资产的关系。为了有效实现电路,将需要更多的指令。电路深度指的是必须按顺序执行的量子门(操作)的最长序列,从输入到输出。更正式地说,在量子电路模型中,电路的深度是执行电路所需的最大时间步数,假设作用于不同量子比特的门可以同时执行。随着电路深度的增加,更多的量子门将参与到电路中。这个事实造成了噪声被引入系统的累积概率,因此我们将面临更高的错误率。这就是为什么社区专注于创建更浅的电路来解决同样的问题(Bravyi 等人 2018)。
有一些技术可以提高我们电路的有效性,专门处理这些错误源。理想情况下,我们希望将电路从底层硬件的具体性质中抽象出来。从经典领域的经验来看,已经提出了错误检测方案和纠正码。
让我们考虑一个简单的例子,即之前提到的位翻转错误或泡利-X 错误。假设一个位于|ψ⟩状态的单个量子比特需要通过一个嘈杂通道ϵ进行传输,这个通道也可以被看作是电路运行所需的时间。在这种情况下,噪声表现为以概率 p 发生的 X 门。因此,如果我们将这个单个量子比特状态传递通过该噪声通道,最终的状态有(1 - p)的概率将被读取为预期的结果状态|ψ⟩,有 p 的概率为翻转版本(X|ψ⟩)。
我们可以使用三个位物理量子比特代替物理量子比特(实际硬件基础的量子比特),从而替换编码状态的单个量子比特,形成一个更高级的抽象或逻辑版本。
我们潜在的|ψ⟩状态的逻辑表示可以通过以下方程描述:
|0 L⟩ ≡ |000⟩
|1 L⟩ ≡ |111⟩
我们可以通过使用纠缠态来描述逻辑量子比特,从而识别任何位翻转。如果我们在某个时刻测量,例如在我们的通道中测量|010⟩态,我们将能够检测到该态的不一致性。它只能是之前描述的那些状态之一,所以系统中发生了某些事情。鉴于我们知道当前的状态,我们可以通过利用这些额外物理量子比特中的冗余信息来恢复原始状态,这些冗余量子比特被称为综合量子比特:
图 9.2 – 用于比特翻转检测和纠正的 3 量子比特物理编码实现
该方案对初始的|ψ⟩状态进行检测和纠正,这是量子比特内含有逻辑形式信息的一部分。错误操作(由比特块表示)因此可以被识别,并且如果它们可以映射到某些操作,甚至可以被纠正,正如我们后面将看到的那样。这是 Asher Peres(Peres 1985, Peres 1996)提出的第一个错误恢复编码之一。
这些错误发生的原因是量子比特并未完全与环境隔离。像之前展示的量子电路一样,几乎不可能完全与环境隔离,而环境本身也是一个量子力学系统,因此两者之间的相互作用可能导致一些意外的行为,进而导致影响初始状态的一组不同操作。这会导致在我们的错误块中发生四种主要的操作,这些操作可能影响我们完美的初始状态:
-
无状态: |ψ⟩
-
比特翻转: X|ψ⟩
-
相位翻转: Z|ψ⟩
-
两者: Y|ψ⟩
1995 年,Peter Shor(Shor 1995)建议使用 9 个物理量子比特,以便检测和纠正任何任意的变化,扩展了先前在单量子比特比特翻转和符号变化方面的研究。图 9.3展示了遵循 Shor 方案的其中一个逻辑量子比特的基础电路。E块指示错误可能发生的地方:
图 9.3 – 用于比特翻转检测和纠正的 9 量子比特物理编码实现(Shor)
这一研究领域已经扩展到目前的状态,并且出现了一些非常有趣的技术。从最初的环面编码(Bravyi 和 Kitaev 1998)的研究工作中,Fowler 2012提出了表面编码,并且近年来尝试在二维晶格结构上为这些技术提供一种更通用的方法。毫无疑问,这一研究领域将在完全发展后使得算法设置与硬件无关,一旦量子硬件能够提供所需的物理量子比特数量。
当然,这使我们不得不考虑实现依赖于所有干扰和错误源的逻辑量子比特所需的物理量子比特数量的极限。在实际系统中,具有错误恢复能力的量子计算可能需要相当多的物理资源。据建议,物理量子比特的数量大约为每个逻辑量子比特 1,000 个,尽管这个数字可能因特定实现而有所不同。
再次引用彼得·肖尔和他著名的质因数分解算法,要有效地解码一个 2,048 位的 RSA 整数,在 8 小时内(Gidney & Ekerå 2021),我们需要提供一个大约 2000 万个物理量子比特的量子机器,原因是需要使用逻辑量子比特来克服硬件生成的错误。从这一点可以看出,在当前的噪声环境和物理约束下,我们离实现这些方法还有很长的路要走。
使用逻辑量子比特进行电路实现也在资源的可扩展性方面提出了挑战。盲目地尝试应用它们将迫使硬件供应商扩展到百万量子比特的规模,这似乎是一个长期的赌注,即使对于一些当前可用的硬件来说是可行的(Fellous-Asiani 2021)。
一些供应商认为这是应该遵循的方法,这也是为什么他们的产品路线图旨在提供数百万个量子比特,尽管在更大规模上操作的保真度可能会下降。谷歌是这些供应商之一,目标是构建百万量级的量子比特设备,正如他们的路线图所显示的那样(quantumai.google/learn/map
)。
容错方法
扩展量子错误检测和修正的概念,容错量子计算扩展了经典计算中已知的一些技术的应用范围。一个完全容错的系统(Paler 和 Devitt, 2015)应在物理量子比特级别和系统级别上寻找错误,以便我们的电路能够运行,即使它们在某个时刻需要切换硬件实例。当我们希望将前几章中展示的技术和示例从理论应用到实际领域时,这个概述是一个关键因素。
正如我们之前讨论过的那样,量子领域中的一些错误可以被检测和修正。其他错误可能来源于系统性缺陷,例如读取错误,我们将在后面讨论。但是,一些错误可能来源于这些机器在服务级别的故障。大多数使用的量子设备处于实验室状态,因此它们的可用性可能低于我们在其他经典服务中习惯的水平。
我们将在排队时间和非操作周期中遇到这些量子设备,它们在操作上可能不会那么有用
:
图 9.4 – Azure 和 IBM 云服务的可用性和排队时间
生产环境需要意识到整个操作链可能带来的问题,从数据收集到结果处理再到预处理。特定问题也可能会利用对更大系统的需求,而这些系统通常更为稀缺,因此,获取可用计算时间会更加困难。
在某些情况下,我们可能能够将问题适配到不同的设备中以并行化工作负载。然而,这些不同的设备将配备不同的错误缓解和修正技术,导致一些小的差异。这使得分布式量子计算(Häner 等 2021)成为一个必要但仍处于起步阶段的领域。
获得所有优势的一个关键要求是能够互连这些设备而不失去量子优势的技术。这可以通过使用光纤和贝尔态作为通信状态来实现,进入量子通信和量子互联网的有前景领域(Kimble 2018)。
更实际地说,像 IBM 这样的供应商已经提出使用现有的通信网络和经典分布式系统的知识,不是为了实现量子网络系统可能提供的理论增益,而是突破单芯片计算的障碍,单芯片计算如今限制了我们练习的能力。
电路编织
电路编织在最近被提出(Piveteau 和 Sutter 2022),考虑到在不引入大量错误的情况下提供更大芯片的复杂性。与其追求更大、更完全的量子芯片,不如考虑分布式资源系统,在这些系统中,这些实例是经典连接的。
这种架构已在分布式 GPU 计算领域(Gu 等 2019)、大数据的分布式计算领域(Zaharia 等 2012)甚至边缘计算领域(Shi 2016)得到应用。然而,它并不意味着从经典到量子的范式转变,因为所有这些资源都在相同的物理层面上工作。
这些方法与电路编织的主要区别在于,需要拆分一个量子电路,该电路在经典情况下会与电路的其他部分通信。假设有一组门能够最小化两个更密集连接的操作组之间的切割,你可以将电路分成两组,用经典方式替代连接两组之间的量子交互,如图 9.5所示,其中两个 CNOT 门可以被重塑为两个可分割的电路(经典连接):
图 9.5 – 两个 CNOT 门被拆分为经典连接电路的块
你需要反思,当将量子状态转化为经典比特和字节再转回来时,量子优势如何被妥协。你还必须思考将初始设计拆分为密集连接和弱连接电路块的能力。
对于稀疏连接的示例,这些方案可能提供显著的优势。然而,我们看到的一些示例需要量子比特之间的全对全连接,这使得拆分更加复杂,并且无法丧失量子硬件所追求的实际计算增益。
错误缓解
一些常见的误差来源可以通过更系统的方法来解决,因为测量量子硬件的经典结果并非没有误差。幸运的是,这种类型的误差可以通过观察读取时常见的错误并对结果进行后处理补偿来解决。
如果我们再次查看我们的 IBM Quantum Experience 服务,我们可以请求某个设备的读取误差。在图 9.6中,我们可以观察到,在对量子比特 10 和 15 进行操作时,测量结果可能会被误解:
图 9.6 – IBM Toronto 设备的读取误差(27 个超导量子比特 Falcon r4)
这些统计数据可以通过简单地放置一个已知结果的操作(例如,X|ψ⟩),并记录在进行大量实验时测量的差异来得出。如果这些统计数据是已知的,你可以通过了解这个系统误差来补偿实验中的测量结果。
让我们考虑一个简单的情境。假设我们分别对两量子比特的所有可能组合进行编码。这些状态是通过在相应的量子比特上施加 X 门来准备的,并且我们对每种情况在 10000 次实验中得到了以下结果:
Prepared state: 00 Measured: {'01': 102, '11': 3, '10': 97, '00': 9798}
Prepared state: 01 Measured:becomes {'00': 92, '11': 102, '01': 9806}
Prepared state: 10 Measured:becomes {'01': 5, '00': 99, '11': 106, '10': 9790}
Prepared state: 11 Measured:becomes {'01': 99, '10': 97, '11': 9804}
我们可以看到,输出几乎总是正确的,在我们通过应用 X 门准备的状态中,10000 次电路运行中有 9800 次接近正确。但这并不是一个完美的统计,因为在 1-2%的情况下,测量结果会出现意外的比特串(例如,当我们准备了|00⟩状态时,测量得到 11)。如果对于我们在之前实验中使用的设备,在 100 次尝试中得到了以下输出,你会怎么想?
{'01': 2, '11': 52, '10': 2, '00': 46}
一半的时间,我们得到了 11 比特串,另一半时间得到了 00,偶尔会测量到 01 和 10。我们已经知道该设备有 1-2%的误差率,会使量子比特状态发生翻转。因此,我们能否假设在|00⟩和|11⟩状态之间有叠加?也许是一个贝尔态?
通过理解给定设备相较于理想操作表示所引入的系统误差,我们可以表征其误差并通过逆效应进行缓解。通过设置一个矩阵转换来执行操作映射,将准备的状态与测量的状态进行比对,我们可以在每次实验的测量中进行误差修正。
Qiskit 已经在其实验包中提供了一些这些功能:
from qiskit_experiments.library import CorrelatedReadoutError
qubits = [0,1]
num_qubits = len(qubits)
exp = CorrelatedReadoutError(qubits)
for c in exp.circuits():
print(c)
上述代码将绘制出用于校准读取误差的电路,如图 9.7所示。
图 9.7 – 两量子比特设备的校准电路
通过这种方式,仅通过调用一个嘈杂的后端进行校准,我们将获得缓解读取误差所需的矩阵。
作为一个例子,如果我们以ibmq_lima
设备上的 |00⟩ 状态为例,就像前面图表中显示的第一个电路一样,我们预计只会读取到 00 比特串。然而,我们会看到它的图表与预期结果不同,绘制出一些不想要的或意外的比特串:
图 9.8 – 在 1,024 次实验后对 |00⟩ 状态的估计
在这里,我们可以使用之前的电路来校准设备上的系统误差,如图 9.7所示:
result = exp.run(emulator)
mitigator = result.analysis_results(0).value
result.figure(0)
通过这样做,我们将获得一个类似于以下的矩阵,该矩阵适用于先前测量的比特串的计数。通过这种方式,它将能够在测量时纠正设备的系统误差。通过绘制这个矩阵,我们会看到,除了明显的黑色映射外,还会出现灰色区域,表示某些状态从准备状态过渡到测量状态的过渡。这就是所谓的缓解矩阵,因为它允许我们映射在状态之间发生的系统性过渡。一旦应用于测量后,它可以逆转或至少补偿设备内发生的错误造成的影响:
图 9.9 – |00⟩ 状态的缓解矩阵
通过这种方式,我们可以比较缓解和未缓解结果的图表。这个矩阵能够提取一个具有负概率值的概率分布,因此,一旦它应用于比特串测量后的结果概率,其补偿效果将绘制测量的准概率。在这里,准概率是指相较于常规概率分布的放松,因为负值可能会反映在结果中:
图 9.10 – 获得状态 |00⟩ 的概率,带有和不带有误差缓解
请注意,当扩展到更大的设备(更多的量子比特)时,这种技术可能效果不佳,因为我们需要对系统中可用的量子比特数量的所有可能组合进行表征,以获得这些统计数据。这就是为什么针对大规模设备(具有多个量子比特的设备)提出了不同的误差缓解方法,这些方法在大规模设备上能够表现得更好。让我们来看一下这些早期研究领域,深入探讨误差缓解:
-
概率误差消除(Pashayan 等,2015)是一种试图描述理想门集输出概率的技术,因此可以将其视为一种更通用的误差消除技术。这个概念与上面描述的误差缓解相同,都是希望为特定设备设置并修正输出概率,但在这种情况下,使用的是蒙特卡洛平均概率。
-
零噪声外推(Giurgica-Tiron 等,2020)更适用于使用期望值的情况。通过运行硬件并增加其噪声因子(λ)来建模误差,从而拟合曲线。如果硬件噪声设置为 λ = 1,那么该模型可以用于估算 λ = 0 时的期望值,因为这就是我们的误差缓解期望值。
-
动态解耦(Viola 等,1999)是一种几乎在硬件的最低层级上进行的技术。我们之前提到的每个门操作都有不同的物理含义。例如,在 IBM 的情况下,这些操作是脉冲,脉冲的持续时间会根据所执行的操作有所不同(可能更长或更短)。由于指令长度之间存在差异,当某些量子比特空闲一段时间时,其他量子比特会受到操作。这些空闲的量子比特容易由于与环境的相互作用而发生错误。通过引入一系列不会影响问题结果的操作,我们可以保持这些量子比特处于活跃状态,从而减少因空闲而产生的错误。
如果你不想深入到所使用硬件的电子学层面,Mitiq 框架已经启用了一个数字动态解耦包,这样我们就可以从那些 DD 方案的复杂性中抽象出来(mitiq.readthedocs.io/en/stable/guide/ddd-5-theory.html#common-examples-of-ddd-sequences
和 mitiq.readthedocs.io/en/stable/guide/ddd-3-options.html
)。
鉴于应用之前描述的大多数技术所需的复杂性和特定知识,许多公司在其路线图中增加了一个硬件/软件中间层,负责处理这些技术。像 IBM 这样的公司已经将这些技术纳入其最近发布的 Qiskit Runtime,或者与技术提供商如 Riverlane 合作,后者旨在构建一个完美的抽象层,连接算法开发者和硬件提供商。
在中期,需要对这些错误的处理方式以及用户如何从中抽象出来做出一些重要的改变。然而,在撰写本文时,需要早期采用者特别关注,选择一组技术以便充分利用硬件提供商的能力。
退火器和其他设备
我们主要谈论的是数字量子计算机,这些计算机使用门的抽象来操作量子比特。但是,像第五章到第七章(D-Wave 的量子退火机)中使用的量子退火机在处理更大规模的问题时也会出现错误和问题,主要是在增加我们操作中涉及的资产数量时。
如果以资产组合优化为例,D-Wave 提供了最多 5000 个量子比特的芯片,这可能意味着需要优化最多 5000 个资产组合。
退火机要求问题被编码或映射到其硬件上,这涉及使用 QUBO 或 Ising 模型表示资产,并将它们分配到芯片上的特定量子比特。然后,这些变量之间的关系被映射到量子比特之间的耦合。那些链接将承载与给定对相关的参数,这通常在 Ising 类型问题的标准形式中表示为 J ij,如下所示:
H(σ) = − ∑ 〈ij〉 J ij σ i σ j − μ∑ j h j σ j,
在这里,σ j 将是映射到设备中的量子比特的变量。这种连接并不总是存在,因为设备本身可能缺乏在全连接问题中所需的一些连接。
事实上,在 2019 年,Venturelli 和 Kondratyev 通过利用次级嵌入编译技术,成功地将最多 60 个资产组合嵌入到 DW 2000Q 系统中。这使他们能够将所有资产放置在一个一维串中,从而可以将它们放置在 Chimera 芯片上。由于嵌入技术的开销,这是他们能够实现的最大规模,即使是对于一个 2000 量子比特的系统。这个限制在查看图 9.11的芯片架构时是显而易见的:
图 9.11 – D-Wave 的 Chimera 芯片量子比特架构和耦合图(32 量子比特方阵)
在前述的 Chimera 图中,我们可以看到每个量子比特通常直接连接到另外 5 个或 6 个量子比特。这意味着,如果一个表示变量的量子比特需要更多的连接,而它所拥有的连接数不足,你就需要将多个量子比特实例连接成链,因为它们将代表问题的同一个变量——因此叫做链,意味着两个量子比特作为一个单元工作。通过这种方式,通过失去一个耦合器,量子比特几乎可以将其连接能力翻倍。
这就是 D-Wave 所称的链。这是通过在这两个单元之间设置强耦合来建立的,使得它们将返回相同的值(记住,它们指的是相同的量子比特)。在这种情况下,这两个物理量子比特代表(或应代表)相同的逻辑单元或量子比特。
然而,这个链条可以被打破。通常,这些耦合的强度高于被嵌入的特定问题的参考值。然而,它们可能在读取时返回不同的值,意味着链条被打破,所获得的解可能不符合我们问题定义中的有效解。要深入了解这个链条的概念,D-Wave 的文档提供了大量相关信息(docs.ocean.dwavesys.com/en/stable/concepts/embedding.html
)。最终,我们在量子设备的通用案例中发现的许多限制,也可以在特定机器中找到,例如量子退火器。
总结
在本章中,我们探讨了使用真实硬件可能带来的挑战。根据硬件的具体性质,无论它是特定用途的(如量子退火器)还是数字量子计算机的众多实现之一,这些概念仍然难以忽视。
意识到给定问题的映射是在硬件层面进行的,关注哪些量子比特被使用,它们的相关误差,以及这如何反映在结果中,你可以实施对策,以确保结果仍然具有足够的分辨率。这样,量子计算所期望的优势仍然可以是显著的。
通过理解不同的挑战以及它们如何影响给定的问题设置,你可以选择更适合问题的硬件。
退火器可以用于解决大规模问题,但在嵌入限制和能够解决的问题类型方面,它们并不像你想象的那样能处理如此庞大的问题。与其他提供商相比,D-Wave 的量子比特数量仍然在数千量级,并预计在 2023/2024 年达到接近 8000 个量子比特。然而,这仍可能不足以编码某些规模上行业所需的问题。
数字量子硬件提供了不同类型的物理实现供选择,从 IBM 提供的超导芯片,到 QuEra 的冷原子技术,再到微软的拓扑量子比特。
毫无疑问,每种技术都会提供不同的耦合架构或误差水平,以确保操作的保真度或读取准确性。对这一点有最基本的理解,将在短期内至关重要,因此,勇于探索的人可能需要自己了解这些硬件规格。幸运的是,IBM 在 Qiskit Runtime 和电路编织技术方面的积极努力,可能很快就会让你不再需要理解如何将问题最优地嵌入到你的设备中。然而,这项技术仍处于起步阶段,旨在提供重大的进展,同时努力接近 D-Wave 提供的数量(www.ibm.com/quantum/roadmap
)。
谷歌也在稳步推进,专注于将其设备扩展到数百万量子比特的范围,超越竞争对手,力图实现误差修正量子比特所需的规模。到目前为止,他们已经稳步进展,但要使用现有的设备,你需要进入特权合作伙伴名单(quantumai.google/hardware
)。
最后,像 IonQ 和 Quantinuum 这样的离子阱提供商,专注于提供最好的硬件。它们的质量是一个重要的里程碑,标志着它们在整合操作数时提供一致性改进,同时提供有意义的结果(www.quantinuum.com/news/quantum-volume-reaches-5-digits-for-the-first-time-5-perspectives-on-what-it-means-for-quantum-computing
)。
你永远不能忘记,这是一个积极研究的领域,科学突破在其中是指日可待的。某些针对可扩展性特定技术的限制可能会在下一个十年内得到解决,因此不要犹豫,去尝试所有不同的选项,以便做好准备。得益于云服务提供商,现在这一切比以往更加容易。与合适的服务商合作或选择合适的提供商的一个重要关键是平衡问题的规模、连接性和准确性,以提供有意义的结果。这很可能会影响你在不久的将来的决策。
进一步阅读
值得强调的是,我们在本章讨论的技术,理解其优势时需要较少的技术细节。有趣的是,黄等人(2022 年)的研究引用了从算法定义到在设备上执行低级操作的完整路径,并提供了一些详细信息,说明之前讨论的误差缓解技术如何被应用:
图 9.12 – 量子误差缓解技术的全景
你也可以从开源社区中找到现有的实现,这样你就可以应用它们,而无需具备深入的技术知识来编写文献中已有的代码。如今,发布结果的实现版本公开发布已变得非常普遍。
Qiskit 是量子计算领域最成熟的框架之一,具有丰富的文档和实用教程,这将使理解这些概念变得更加容易。
与硬件相关的教程和低级实验,例如我们在本章中涉及的内容,可以在他们的实验库文档中找到:qiskit.org/documentation/experiments/tutorials/index.html
。
另一个有趣的资源是 Mitiq 包,它由非营利组织 Unitary Fund 支持。这个资源不仅在不同的硬件和云服务提供商上实现了已经讨论过的一些技术,还提供了详尽的文档和一个充满活力的社区,您可以加入该社区讨论任何与高效量子计算相关的话题:mitiq.readthedocs.io/en/stable/index.html
。
参考文献
Bravyi, S. B., & Kitaev, A. Y. (1998). 带边界的格上的量子编码。arXiv 预印本 quant-ph/9811052。
Bravyi, S., Gosset, D., & König, R. (2018). 浅电路下的量子优势。科学, 362(6412), 308-311。
Fellous-Asiani, M., Chai, J. H., Whitney, R. S., Auffèves, A., & Ng, H. K. (2021). 量子计算中的资源约束限制。PRX Quantum, 2(4), 040335。
Fowler, A. G., Mariantoni, M., Martinis, J. M., & Cleland, A. N. (2012). 表面码:迈向实用的大规模量子计算。物理评论 A, 86(3), 032324。
Gidney, C., & Ekerå, M. (2021). 如何使用 2000 万个嘈杂的量子比特在 8 小时内分解 2048 位 RSA 整数。Quantum, 5, 433。
Giurgica-Tiron, T., Hindy, Y., LaRose, R., Mari, A., & Zeng, W. J. (2020 年 10 月). 量子误差缓解的数字零噪声外推。在 2020 年 IEEE 国际量子计算与工程会议(QCE)中(第 306-316 页)。IEEE。
Gu, J., Chowdhury, M., Shin, K. G., Zhu, Y., Jeon, M., Qian, J., ... & Guo, C. (2019). Tiresias:一个用于分布式深度学习的{GPU}集群管理器。在第 16 届 USENIX 网络系统设计与实现研讨会(NSDI 19)中(**第 485-500 页)。
Hamming, R. W. (1950). 错误检测与错误纠正码。贝尔系统技术期刊, 29(2), 147-160。
Häner, T., Steiger, D. S., Hoefler, T., & Troyer, M. (2021 年 11 月). 使用 qmpi 进行分布式量子计算。在国际高性能计算、网络、存储与分析会议论文集中(**第 1-13 页)。
Huang, H. L., Xu, X. Y., Guo, C., Tian, G., Wei, S. J., Sun, X., ... & Long, G. L. (2022). 近期量子计算技术:变分量子算法、误差缓解、电路编译、基准测试和经典模拟。arXiv 预印本 arXiv:2211.08737。
Kimble, H. J. (2008). 量子互联网。自然, 453(7198), 1023-1030。
Lindblad, G. (1999). 一般的不可克隆定理。数学物理学通讯, 47(2), 189-196。
Paler, A., & Devitt, S. J. (2015). 容错量子计算简介。arXiv 预印本 arXiv:1508.03695。
Pashayan, H., Wallman, J. J., & Bartlett, S. D. (2015). 使用准概率估算量子电路的结果概率。物理评论快报, 115(7), 070501。
Peres, A. (1985). 可逆逻辑与量子计算机。物理评论 A, 32(6), 3266。
Peres, A. (1996). 量子计算机中的错误修正与对称化。arXiv 预印本 quant-ph/9611046.
Piveteau, C., & Sutter, D. (2022). 使用经典通信的电路编织。arXiv 预印本 arXiv:2205.00016.
Shi, W., & Dustdar, S. (2016). 边缘计算的前景。Computer, 49(5), 78-81.
Shor, P. W. (1995). 量子计算机内存中去相干的减少方案。Physical review A, 52(4), R2493.
Venturelli, D., & Kondratyev, A. (2019). 反向量子退火方法在投资组合优化问题中的应用。Quantum Machine Intelligence, 1(1), 17-30.
Viola, L., Knill, E., & Lloyd, S. (1999). 开放量子系统的动态解耦。Physical Review Letters, 82(12), 2417.
Zaharia, M., Chowdhury, M., Das, T., Dave, A., Ma, J., Mccauley, M., ... & Stoica, I. (2012). 基于 Spark 的 Hadoop 数据快速交互式分析。Usenix Login, 37(4), 45-51.
第十章:商业实施
Zapata Computing 在 2021 年 12 月发布了其首份年度报告。报告中提到了对 300 多名领导者(CTO、CIO、C 级高管和副总裁级别高管)进行的调查结果。即使排除像 Zapata Computing 这样的量子生态系统参与者可能存在的偏见,结果仍然提供了有用且有趣的信息,揭示了量子计算的应用现状。
尽管一些企业已经希望使用量子技术一段时间,但它们与量子硬件之间的桥梁尚未搭建完成。软件应用应该是连接这两个世界的桥梁。根据 Zapata Computing 的报告,74%的受访者同意,不采用量子计算解决方案的公司很快会落后。此外,29%的受访者已经进入量子计算的初期或高级阶段,另外 40%的人预计会在 2022 年跟进。同时,96%的受访高管表示,他们需要一个可靠的合作伙伴或供应商,帮助他们克服量子障碍。
另一方面,凯捷研究院发布了一份名为《量子技术:如何为量子优势做好组织准备》的报告,发布时间为 2022 年。报告中最重要的见解之一是,23%的公司已经在使用量子技术或计划使用。然而,许多公司尚未进行测试或试点。此外,根据高盛 2021 年的预测,量子计算可能会在未来五年内开始在实际金融应用中带来量子优势,大多数调查结果显示,预计在未来三到五年内,量子解决方案(特别是某些特定使用案例)将进入实际和商业化应用。凯捷对 857 家组织的调查显示,其中 10%的组织预计量子技术将在未来三年内用于至少一个重要的商业应用。
有许多报告,如上述报告,以及来自麦肯锡、BCG、埃森哲和安永的报告,展示了公司如何以不同方式启动他们的量子之旅。大多数公司也遇到了一些主要障碍,通常包括以下几点:
-
IT 集成的复杂性
-
安全性问题
-
缺乏先进的内部能力
-
缺乏专业知识或人才
-
缺乏明确的使用案例
-
内部怀疑态度
-
缺乏这些计划的预算或资金
-
硬件市场的成熟度不足
《量子至上之路》(The Road to Quantum Supremacy)报告由 Quantum.Tech 与霍尼韦尔(Honeywell)合作发布,报告进一步探讨了将量子计算解决方案落地的困难。他们对 100 名量子项目负责人进行了调查。调查中询问了一个问题:“你在使用量子技术时面临的最大障碍是什么?” 大多数受访者提到的主要挑战包括:成本(23%)、建立正确的关键绩效指标(KPIs)(18%)、说服利益相关者(13%)、技术的未知价值/投资回报(ROI)(12%)和失败的恐惧(5%)。
如前所述,市场似乎正朝着量子计算快速获胜的需求发展,并试图克服在各种报告中提到的一些障碍。量子软件开发可能是部分解决这些挑战的关键。我们之前知道,2018 年至 2021 年间,量子技术的投资有所增加,但现在看起来也在放缓,并且正在经历过渡期。2021 年,量子计算机的直接投资为 16.7 亿美元,软件的直接投资为 1.68 亿美元,分别占总投资的 77%和 7%。2022 年,量子计算机的投资为 9.42 亿美元(45%),软件的投资为 7.85 亿美元(38%)。2022 年的总投资仅为 2021 年投资的 93%。这是市场放缓的一个显著迹象(The Quantum Insider, 2022 年 12 月)。
图 10.1 – 量子技术投资演变(《量子内幕》,2022 年 12 月)
市场正朝着一个阶段发展,在这个阶段,将量子软件应用于现实世界问题并展示更多可量化且广泛的优势,可能比仅仅讨论这些优势更为重要。研究人员和量子初创团队总是在寻找这些系统功能如何应用于当前商业环境的例子。这可以促进投资,并澄清在几个月、几年或几十年内能够实现的目标。
本章将带您了解一些使用案例和策略,帮助克服与量子计算在金融机构实施相关的大部分挑战和误解:
-
量子劳动力障碍
-
基础设施整合障碍
-
通过量子机器学习(QML)识别量子优势的潜力
-
资金或预算问题
-
市场成熟度、炒作和怀疑
-
金融机构早期采用量子计算的路线图
-
量子管理人员培训
量子劳动力障碍
培养能够操作量子计算机的人才是量子技术增长和采纳的重要方面。随着量子计算机的普及,对精通这些系统的专业人才的需求将不断增加。
组织可以投资于培训项目和教育计划,以培养这些技能。这些项目可能包括量子计算原理和算法的专业课程、编程语言和软件开发工具的培训,以及与量子计算机配合使用的云基础设施实施。
在 QTEdu 和 Quantum Flagship 联合开发、欧盟资助的一份报告《量子技术的资格概况》(2022 年)中提到了几种量子职位。有些是随着该技术和市场的演进而出现的新职位。当然,工程师需要负责硬件和软件的开发,但量子技术战略师职位出现在高度专业化的职位中间。报告对这些战略师的定义是:
这样的人已经探索过所有基础的量子技术,并且至少了解一些更具体的方面、硬件和使能技术。通过他们的教育,他们已经探索了基本概念,了解了量子技术的物理基础,并将这些与 面向应用的方面紧密联系起来。
可以观察到,除了应对技术挑战外,还需要多种类型的量子专业人才来找出高度复杂的观点与商业问题之间的联系,而这些问题可以通过这些应用程序得到解决。
除了培训项目外,组织还可以投资于研发工作,推动量子计算领域的发展。这些工作可能涉及与学术机构、政府机构和其他组织的合作,推动前沿的量子计算技术,并开发新的技术和应用。
总体而言,培养操作量子计算机的人力资源是量子技术增长和应用中的一个重要方面。通过投资培训项目和研发工作,组织可以建立起有效使用和利用这些系统的专业知识和知识库。
案例研究
摩根大通(JPMC),全球领先的金融机构之一,正在通过投资该领域的人才培养,迈向计算的未来。随着量子技术潜力的不断增长,摩根大通旨在将自己定位于这一革命性领域的最前沿。通过全面的方法,摩根大通正在通过教育、研究合作和内部发展计划培养人才。
近年来,摩根大通(JPMC)已经制定了保持在量子计算领域领先地位的策略,而人才是其中的关键领域。2020 年,他们推出了量子计算助理项目,旨在吸引具有计算机科学、数学和工程等领域的硕士和博士学生,并且这些学生要有量子计算及其应用方面的经验。值得注意的是,金融经验或知识并不是必须的,但申请者需要熟练掌握 Python 编程。成功的申请者将参与一种混合模式,为公司带来利益,同时也推动社会的科学知识进步。JPMC 主要在建立一个内部量子实验室,旨在提供潜在优势,同时通过公开发布(论文和文章)采用科学方法,旨在增强生态系统。
目前,大约有 10 位专业人士在 LinkedIn 上展示与 JPMC 相关的量子职位,此外,还有超过 100 人从事与这些技术相关的工作,涉及工程、研究、数据科学和定量建模等领域。除此之外,他们还在与芝加哥量子交流中心(Chicago Quantum Exchange)、Quantinuum、Q-NEXT 和 IBM 等机构建立强有力的合作伙伴关系。
培训资源的关键技能
使用量子技术和计算机培训内部资源可以成为公司和组织在这一快速发展的领域中建立专业知识的有效途径。通过投资培训项目,公司可以培养量子计算及相关技术的内部专业人才,这些人才可以用来推动创新并解决复杂问题。
然而,仔细考虑在量子技术和计算机领域培训内部资源的成本与效益是很重要的。培训项目可能会很昂贵,而且通常涉及到开发和实施培训的显著前期成本。
减轻量子技术内部资源培训成本的一种方式是与具有该领域专业知识的学术机构或其他组织建立合作关系。这些合作关系可以提供访问专业培训项目和资源的机会,帮助降低整体培训成本。
降低量子技术内部资源培训成本的另一种方式是聚焦于针对组织特定需求量身定制的培训项目。通过识别与组织目标和任务最相关的关键技能和知识,公司可以设计出更高效且具成本效益的培训项目。例如,当前大多数组织的数据科学和机器学习领域,当需要使用某些 Python SDK 来实现量子计算解决方案时,技能可能会有所重叠。具体了解团队当前的技能,并围绕这些项目缩小目标,可以通过培训过程快速取得成果,或者在量子计算方面获得初步结果或概念验证(PoC)。
与此同时,尽管 NISQ 时代仍然存在,且量子计算机尚未足够强大,但可以培养人才,利用量子启发的解决方案(基于张量网络),并且还可以借助 GPU 和 HPC 与量子算法(这些算法全部基于经典计算机而非量子计算机)的结合。
最终,是否投资于量子技术和量子计算机的内部资源培训,将取决于组织的具体需求和目标。通过仔细考虑成本和效益,公司可以决定是否在这些技术上培训内部资源是适合其业务的正确选择。
基础设施整合障碍
对于那些希望探索量子计算解决方案的公司来说,一个自然的障碍是如何将这些解决方案整合到当前的运营中。根据具体情况,真实量子硬件的技术可能更多或更少准备好进行实时响应,并与公司在云端部署的现有系统共存。特别是在量子机器学习(QML)领域,对于分类挑战(如信用评分或欺诈预测),量子计算机的即时响应可能成为需要解决的问题,因为大多数机器都有排队系统,因为可用的计算机数量较少。作为一种有效的选择,公司可以使用几种类型的云模拟器,在低量子比特范围内进行操作(大多数量子-经典混合算法在 QML 领域可以很好地在几十个量子比特的情况下运行),低于 40 量子比特的界限。
使用模拟器可以代表一个良好的成本效益选择,因为量子算法可以运行得更快(在量子比特较少的情况下)、成本更低、可以实时响应,并且可以在没有错误的情况下进行(取决于用户希望应用的设置和参数)。与需要等待每个作业或训练迭代的队列时间的真实量子计算机相比,QML 模型的训练过程可能需要几天才能完成,而对于相同的挑战,模拟器可能只需几个小时。
使用模拟器的另一个优势是,软件无论如何都会为未来量子计算机的改进做好准备,因为大多数量子 SDK(例如 Qiskit 或 PennyLane)可以轻松处理 后端 的变化。因此,在模拟器和正式的量子硬件之间切换,可以像调整几行代码一样简单。
关于模拟器,有多种选择,但最受欢迎且最容易使用的是那些集成在知名云平台中的模拟器。AWS Braket、Azure Quantum、Google(Quantum AI)和 IBM Quantum 是最简单的选择,因为它们可以在传统公司基础设施下使用。在 Amazon Web Services 中,可以找到 braket_sv、braket_dm、SV1、DM1 和 TN1 模拟器;在 IBM 中,有 statevector、stabilizer、extended stabilizer、MPS 和 QASM。Google 也有一种有趣的方法,提供了 qsim(一个优化的量子电路模拟器)和 量子虚拟机(QVM),它模拟了 Google 的量子计算机。根据模拟器的类型,用户可以执行的电路包含的量子比特数量从几个到超过 100 个(如 MPS 的情况)。
当通用量子计算机不可用且需要解决优化问题时,量子退火器可能是最佳选择。这项技术可以被视为更为成熟,因为像 D-Wave 这样的公司已经花费了超过 20 年的时间,使用非电路型量子计算机探索解决方案,并且它们是首个商业化这一技术的公司。
例如,D-Wave 的机器有一套求解器执行量子退火过程。在处理大规模和复杂的优化问题时,文献中也采用了类似的方法,这些方法受到冶金学中退火过程的启发(Bertsimas 和 Tsitsiklis,1993)。
遵循绝热过程,D-Wave 的机器从一个已知问题开始——横场伊辛模型,然后逐步将其形状修改为一个已知的、更复杂的目标问题。整体思路是,如果机器从一个简单问题的解开始,并且我们缓慢地改变它的形状朝向更复杂的一个,那么在过程结束时,机器将会从简单问题的解演化为用户需要解决的复杂问题的解。
由于机器已经被编码为遵循这一过程,用户与其交互时只需要提供目标问题,以便 D-Wave 的机器能够产生其“魔力”。例如,投资组合优化问题就是这样。通过提供我们投资组合中资产如何相互作用的数学描述,D-Wave 的机器将按照这一过程进行处理。
D-Wave 并不是其领域中唯一的资源,随着越来越多的公司在这个领域扩展选项,其他公司也在不断增加选择。这就是富士通的数字量子退火器的例子(www.fujitsu.com/global/services/business-services/digital-annealer/index.html
)。关键在于它是量子启发式的,这意味着使用经典计算技术,并遵循量子启发式过程(例如量子退火过程),但就像前面提到的量子模拟器一样,使得这一技术能够更广泛地为公众所使用,并且在大多数情况下更具成本效益。
案例研究
CaixaBank 是西班牙最大的金融机构之一。它由多个金融领域的不同垂直业务组成,但其中对集团最为重要的业务单元之一是其保险部门 VidaCaixa。
其部分业务涉及选择最佳投资组合以提高盈利能力。我们在第五章中讨论了如何实现这一目标的案例。然而,看到一个实际的例子很有趣,在这个例子中,使用 D-Wave 混合求解器(经典与量子求解器的结合),他们能够更快地生成投资组合(从小时缩短到分钟),节省了高达 90% 的计算时间,内部收益率(IRR)提高了 10%,甚至能够提出比以前更多复杂的约束条件(www.caixabank.com/comunicacion/noticia/caixabank-group-d-wave-collaborate-on-innovative-new-quantum-applications-for-finance-industry_en.html?id=43342
)。混合求解器的理念确实是合理的,因为在证明经典资源更可靠的地方使用经典资源,而将量子处理留给那些可以比完全经典方法带来更多好处的领域。我们可以在变分算法,甚至著名的 Shor 算法中看到这种例子,在这些算法中,量子过程仅是完整因式分解方案的一部分。
创新总是充满挑战,因为它需要合理的风险接受,但如果专注于公司的核心业务,就像 VidaCaixa 的情况一样,即便是全新的、还有很大改进空间的技术,也能相较于许多公司陷入的“照常业务”方式,指引出最佳的技术与问题匹配路径。
识别 QML 的潜在优势
在 QML 领域,金融行业有多个潜在应用,正如前面章节所概述的。以下是一些例子:
-
风险分析与管理
-
交易
-
欺诈检测
-
信用评分
-
用户流失预测
需要注意的是,尽管量子机器学习在金融领域有很多潜在应用,但该领域仍处于初期阶段。目前尚不清楚这些算法在实践中的表现如何,以及公司能从 QML 实现中获得什么。因此,分析如何衡量量子项目的成功可能是一个挑战。
尽管前述的顾虑存在,探索量子机器学习挑战的一个有趣点是,像 Qiskit(IBM)、TensorFlow Quantum(Google)和 PennyLane(Xanadu)等流行的 Python SDK 使用户和量子开发者在项目进入评估阶段时,能够进行“同类对比”。考虑到这一点,可以按照典型的机器学习项目流程来提供结构、阶段和里程碑,并且可以通过对比测量来展示哪种方法表现更好。
像 Amazon SageMaker 这样的云工具可以用于经典机器学习开发或量子实验和探索。考虑到这一点以及 Python、Jupyter Notebooks 的使用,部分结合一些当前机器学习基础设施来创建 QML 解决方案,这样的障碍可以视为相对于当前的数据科学知识及相关研究路线图而言不那么复杂。
考虑到数据科学与量子机器学习发展之间的重叠,项目管理的经典机器学习方法可以按以下步骤实施:
-
收集数据
-
准备数据
-
选择和工程化特征
-
预处理数据
-
选择最佳模型
-
训练模型
-
评估结果
-
调整参数并迭代结果
-
将模型投入回测
-
执行质量保证
-
部署到生产环境
回测在 NISQ 时代将至关重要,因为需要发现将量子技术纳入当前公司工作流程的合适位置。QML 方法可以作为主要算法来创建预测,作为分析数据点及其可分性的核,或者作为集成架构,将多个算法(经典和量子)结合起来生成一个预测(Grossi 等, 2022, arxiv.org/abs/2208.07963
)。
图 10.2 – 经典与量子相结合的单一预测流程图
图片来源:来自论文《混合量子-经典方法用于量子特征选择的欺诈检测》,可在arxiv.org/abs/2208.07963
查阅
比较经典模型和量子模型的结果将展示,在特定情况下,量子“附加功能”可能是有用的,并且即使在噪声较大的时代,也能成为一种高效的解决方案。
实施 PoC 和识别量子技术优势并非孤立的案例,而是一个不断增长的趋势。波士顿咨询集团(BCG)在 2022 年 Q2B 活动中分享了一些有趣的发现,这些发现可以总结如下:
-
终端用户在量子计算方面的实验正在起飞——2022 年有超过 100 个活跃的终端用户 PoC,与 2020 年相比增加了 3 倍。
-
目前花费超过 500 万美元用于量子计算的公司中,有 80% 计划在未来几年增加这方面的开支。
-
这一领域的早期采用者占有不成比例的价值份额。这是由于知识产权能力的建设以及与相关供应商签订合同和建立伙伴关系,后来这些可以提高他们的价格和合同要求。
波士顿咨询集团(BCG)强调,在我们目前处于的研发阶段,企业可以在量子技术采用开始增长时捕获大量价值。在几年或甚至几个月内,当这个价值可能最终得到广泛确认时,计算资源仍将保持有限,价格可能会上涨,定制的量子解决方案也将需要时间才能在生产生态系统中制作并推出。
案例研究
拉丁美洲最大的银行 Itaú Unibanco 开始与 QC Ware(量子软件和服务开发公司)合作,旨在通过引入量子机器学习方法来改进其流失预测模型。该合作伙伴关系旨在理解量子算法的潜力,并为 Itaú Unibanco 准备未来量子银行系统的使用和部署。
Itaú Unibanco 向 QC Ware 提供了两年的匿名用户数据和超过 180,000 个数据点,以更好地理解哪些客户可能在接下来的三个月内离开银行。QC Ware 基于行列式抽样方法开发了量子化的客户保留模型(QML)训练架构。在研发阶段,量子软件公司发现了一种将这些方法的变体应用于今天的经典计算机的方式,从而通过将捕获的提款数量提高 2% 和将模型的总体精度从 71% 提升至 77.5%,增强了 Itaú Unibanco 的模型。
在这种情况下,最重要的一点是讨论银行算法的可扩展性。尽管他们目前的量子模型运行在经典计算机上,但当量子硬件准备好并适用于银行试图解决的问题时,它们可以迅速转换为在真正的量子硬件上运行。如果发生这种情况,这些算法的加速和收益将进一步扩大。
资金或预算问题
许多组织已经依赖数据和分析部门,利用公司现有的信息来提取洞察力并推动业务收入。但不久之前,所有这些举措都只是创新流程中的附属项目,或者只是由组织关键人物领导的简单尝试。这主要是一个需要证明作为商业资产的愿景。
高层管理人员的支持至关重要,但大多数时候,这些创新项目必须克服资源严重不足和在已经建立的组织中对变革的抵制。最重要的是,这些项目必须追踪支出和投资回报率(ROI)。这是许多项目无法克服的一个关键方面,而考虑到一些量子硬件的高昂成本,这一点尤为重要。图 10.3展示了 Azure 中 Quantinuum 和 IonQ 硬件成本的一个例子,用于专用工作负载。
图 10.3 – 2022 年冬季 Azure 中 Quantinuum 和 IonQ 服务的成本
因此,很明显,涉及量子计算的这些举措也应该有一个合理的路线图,以证明它们在商业利益方面的可行性。
许多项目通常从模拟开始,这样可以只使用现有的分配资源。但如果系统规模增大,可能也需要相当多的基础设施,就像我们在 AWS 模拟 44 量子比特时所看到的那样。除了硬件访问,许多供应商还提供设备噪声模型,这样就可以使用经典方法加载并模拟真实设备的响应。这将帮助公司的远见者制定计划,指导管理层并确保项目在资源和资金方面能够得到增长。这确实是一个关键方面。
谨慎的做法可能需要展示将量子算法纳入经典解决方案中的好处。根据我们希望解决的问题的规模(例如,100 资产组合优化),我们可能需要与一些供应商讨论,看看他们是否有兴趣在我们的项目中合作。许多公司已经开始与学术机构或早期创新驱动企业(IDEs)展开合作,以便在其量子技术发展过程中获得支持并获得帮助。这是一种有趣的方法,因为它允许组织处于创新的前沿,并且在最大限度减少资源风险的同时,培养内部人才。
一旦项目成功,负责运营成本的其他部门,如企业架构、安全性或金融服务,可能也会希望参与讨论。鉴于技术的成熟度和商业解决方案的复杂性,这可能需要更长的时间,因此在涉及技术文化变革时,应该避免急功近利的做法,转而选择一场较长时间的马拉松。
案例研究
例如,像 Credit Agricole 这样的公司已经与 Pasqal 和 Multiverse Computing 携手合作。三方合作可以解开经典与量子资源在风险分析和资本市场管理中的复杂结合(pressroom.credit-agricole.com/news/credit-agricole-cib-explores-quantum-computing-applications-in-partnership-with-pasqal-and-multiverse-computing-5121-94727.html
)。他们利用了欧洲量子旗舰计划,成立了这个联盟。因此,他们对项目的主要贡献是他们在要解决的问题上的领域知识。除了物理学家和软件开发人员外,其他领域专家专注于并引导解决方案沿着正确的路径发展,这一点至关重要,只有这样,最终成果才能在实际环境中使用。
Crédit Agricole CIB 的项目赞助人 Ali El Hamidi 这样说道:
量子计算在理论、硬件和算法方面与我们今天所知和使用的几乎一切都截然不同。这个项目将汇集许多不同的专业能力:银行家、物理学家、数学家、计算机科学家、IT 架构师,大家共同合作 开展 这一非凡的旅程。这是一个巨大的挑战,我们相信,凭借我们才华横溢的合作伙伴 Pasqal 和 Multiverse Computing,我们一定会成功完成这一任务。*
这并不是唯一的例子。有人可能认为这些机会仅仅是大公司才能享有的。量子计算社区是开放的,并愿意接受用例的挑战。因此,像微软这样的服务提供商会向与研究机构合作的项目提供研究额度,而 AWS Braket 团队也非常愿意提供帮助。即使是一些利基市场的公司,如 Strangeworks,也提供了后台通行证和 AWS 服务的额度。
最后,免费访问也是一种可能性。两个最著名的例子是 IBM 对小型设备的免费访问和 D-Wave 每月提供的免费分钟数,允许你在没有其他访问限制的情况下使用他们的退火机一段时间。Azure 和 AWS 也提供了一些免费额度,尽管这些额度可能不会持续太久。
市场成熟度、炒作和怀疑
量子计算并不是我们面临的第一次技术革命。大数据、云计算、远程工作和互联网已经彻底改变了我们的工作和商业方式。特别是,我们已经从基于办公室的服务转向了应用优先的策略,以及金融行业中前瞻性的服务管理。
我们生活在一个商业环境中,在这个环境里,我们常常不知道客户的面孔。但我们可以预测他们的收入,绘制他们的消费档案,甚至推荐如何改变他们的习惯以节省开支。这是一个引人入胜的局面,如果没有周围的所有技术,这一切是不可能实现的。但在这些领域曾经存在怀疑,至少在早期是如此:
在在线世界度过二十年后,我感到困惑。并不是说我在互联网上没有过一段愉快的时光。我结识了很多优秀的人,甚至还抓住过一两个黑客。但今天,我对这个最时尚且被过度炒作的社区感到不安。未来的愿景是远程工作的员工、互动图书馆和多媒体教室。他们谈论电子市政会议和虚拟社区。商业和生意将从办公室和商场转移到网络和调制解调器。而数字网络的自由将使政府变得更加民主。
胡说八道。我们的计算机专家难道完全没有常识吗?事实是,没有任何在线数据库能够取代你每天的报纸,没有 CD-ROM 能代替一个称职的老师,没有任何计算机网络能够改变政府运作的方式。
这段文字来自 1995 年《新闻周刊》一篇名为《为何网络不会是天堂》的文章 (www.newsweek.com/clifford-stoll-why-web-wont-be-nirvana-185306
)。他们甚至不相信会有在线市场来购买书籍或报纸。他们错了。
在突破的边缘,很难判断是否真如眼前所见。销售代表总是试图突出展示产品的好处,同时忽略那些不那么吸引人的部分,而这一点并没有改变太多。这就是为什么我们必须保持对突破的积极怀疑。它们可能会应用到我们的商业机会中;它们可能带来新意,但不会对市场产生重大变化。最重要的是,我们要检查和验证技术,获得知识并做出适当的决策。
Gartner 的炒作周期和关于这些周期的报告,尽管这些来自知名公司的报告和图表可能会被私人部门的才能、创意和持续的研发超越,但仍然是了解这一领域变化的一种很好的方式,尤其是从大企业的角度来看。
公司内部的探索工作中,有很大一部分是由创新部门或试点项目来进行的,这使我们能够测试和比较现有的资源。这样的方案可以帮助我们管理风险,并保护运营中的业务。不仅如此,正如麻省理工所描述的那样,创新生态系统能够促进利益相关者之间的长期互动,让我们能够超越传统商业的范围。
根据我们机构的性质,我们可以扮演五个由 MIT 突出显示的利益相关方之一的角色,如图 10.4所示,可能是大组织、小型初创公司(金融科技)或投资创新项目的风险资本资助者。这些不同的角色会有非常不同的影响,但都能更好地理解市场以及来自潜在突破性技术或发展的解决方案。
图 10.4 – MIT 创新生态系统框架的五个利益相关者
图片来源:innovation.mit.edu/assets/MIT-Stakeholder-Framework_Innovation-Ecosystems.pdf
案例研究
根据 2022 年 Hyperion 的调查,量子计算预计处于早期采用阶段。调查发现,485 家参与调查的组织中有 34%正在研究其选择,并监控技术以采用量子计算技术。在调查中提到,早期采用者看到了通过使用量子计算机或模拟器加速现有经典工作负载的可能性,尤其是在财务优化和物流供应链管理等计算工作负载方面。
图 10.5 – 与量子计算采用相关的产品生命周期
图表显示,技术产品经历四个阶段:引入、早期增长、增长和成熟:
-
在引入阶段,一项新技术被投放到市场。通常,只有少数研究人员和组织能够在这一阶段使用它。
-
在早期增长阶段,技术变得更加普及,使用更加方便,并且一些商业应用开始出现。
-
随着技术进入增长阶段,它变得更加普及,并在许多行业中得到越来越广泛的应用。
-
当技术最终达到成熟阶段时,它将成为一种许多人使用的主流技术。
高盛是一个例子,尽管量子计算仍处于初期阶段,但公司正在研究如何利用量子计算。该公司一直在与 D-Wave 合作,探索如何将量子计算机应用于金融领域,进行投资组合优化和风险分析。通过早期使用量子计算技术,高盛将获得竞争优势,并在大多数其他公司之前发现其潜在利益。
有几个重要因素促成了量子计算市场当前的增长水平:
标准 | 描述 |
---|---|
成本 | 实施和维护该技术的成本是多少? |
利益 | 该技术将为组织带来哪些好处,例如提高效率或竞争力? |
可行性 | 该技术是否已准备好进行实际应用,还是仍处于早期开发阶段? |
兼容性 | 该技术是否与组织当前的基础设施和流程兼容,还是需要进行重大变更? |
风险 | 使用该技术可能带来的风险是什么,例如安全性或可靠性方面的问题? |
专业知识 | 组织是否拥有有效实施和使用该技术所需的专业知识? |
支持 | 是否有足够的技术支持,如培训或技术援助? |
量子计算市场仍处于早期发展阶段。可能需要再过几年,量子计算机才能广泛可用,并且应用范围更广。然而,根据专家建议并经过用例研究,作者发现一些公司已经在使用量子计算机克服这些限制。 |
挑战 | 量子计算如何提供帮助 | 示例 |
---|---|---|
复杂性 | 量子计算机能够处理经典计算机无法应对的复杂问题,因为它们能够并行执行大量计算。 | 高盛正在使用量子计算机来优化投资组合,这需要分析大量数据并进行复杂的计算。 |
速度 | 量子计算机能够比经典计算机更快地执行某些任务,使其适用于时间敏感的应用程序。 | 摩根大通正在使用量子计算机进行实时风险分析,这需要快速处理大量数据。 |
准确性 | 量子计算机有可能比经典计算机产生更准确的结果,因为它们能够处理更多的数据并考虑更多的变量。 | 瑞信银行正在使用量子计算机对金融工具进行建模,以提高定价和对冲的准确性。 |
安全性 | 量子计算机可能为敏感数据提供更好的安全性,因为拦截或篡改量子信息非常困难。 | 富国银行正在探索使用量子计算机来增强数据存储和传输的安全性。 |
能效 | 量子计算机在某些任务中可能比经典计算机更节能,因为它们能够以更少的能量执行某些计算。 | 瑞士银行正在使用量子计算机优化数据中心的能耗。 |
成本 | 尽管量子计算机的购买和维护成本可能高于经典计算机,但通过提高效率并减少人工劳动的需求,它们可能在长时间内带来成本节约。 | 摩根士丹利正在使用量子计算机来自动化某些流程,减少人工劳动的需求,从而可能带来成本节约。 |
公司可以利用量子计算机的特殊功能来解决传统计算机无法解决的难题,通过开发与量子计算机兼容的软件和算法来实现这一目标。
用例 | 业务功能 | 时间表 | 公司 |
---|---|---|---|
投资组合优化 | 投资管理 | 5-10 年 | 高盛,摩根大通 |
风险分析与建模 | 风险管理 | 5-10 年 | 美国银行,花旗集团 |
信用评分与欺诈检测 | 信贷与贷款 | 5-10 年 | 美国运通,Visa |
金融工具的定价与对冲 | 交易与市场做市 | 5-10 年 | 巴克莱银行,德意志银行 |
资产与负债管理 | 财务与资本管理 | 5-10 年 | 汇丰银行,富国银行 |
供应链金融 | 贸易融资 | 5-10 年 | 阿里巴巴,花旗 |
合规性监管 | 合规与报告 | 5-10 年 | 瑞银,摩根士丹利 |
预测分析 | 数据分析与决策 | 5-10 年 | 贝莱德,富达投资 |
量子计算在金融机构早期应用的路线图
金融机构可能会使用基于云的量子模拟器来建模和测试量子算法,用于风险分析和投资组合优化任务。这使机构能够评估量子计算的潜在好处,而无需投资其量子硬件。
一旦机构找到一个有前景的量子算法,就可以通过基于云的量子模拟器进行测试和改进。这可以包括在不同的数据集上运行模拟,并调整算法使其更好、更准确。
一旦机构对量子算法的性能满意,就可以使用量子硬件在真实数据上运行该算法。然后,机构可以利用量子计算的结果来帮助决策,或改进其风险分析、投资组合优化或其他金融操作。
案例研究
这与量子计算没有直接关系,但了解金融行业以前所面临的一些思维转变是很有趣的,特别是在云服务的案例中。
Capital One 在将其服务迁移到云端时遇到了严重问题(www.occ.treas.gov/news-issuances/news-releases/2020/nr-occ-2020-101.html
)。尽管预计云计算会提升银行的敏捷性和收入,但过于匆忙的云端采用使他们面临来自货币监理署(OCC)的严重罚款。福布斯指出,银行在将服务迁移到云端时面临的网络安全要求是一个值得关注的问题。
与此同时,桑坦德银行在 2022 年将其核心银行业务迁移至云端,并创建了一个平台,其核心将通过 Google Cloud 向他人开放,以促进这一核心银行业务的转型。
有趣的是,我们可以看到在两个案例中同一项活动的结果却截然不同。事实上,战略和前瞻性规划似乎是我们可以得出的主要结论,并且这些结论可以扩展到几乎任何其他技术的采用过程中。许多公司已经部署了复杂的分布式计算基础设施,这些基础设施维护成本高昂,而只有少数公司能够充分利用它们。
找到在技术早期采用和关键技术晚到之间的正确平衡,将有助于推动这些创新方法,同时市场逐渐成熟,从而最小化对我们组织的风险。技术意识和市场研究是调节这种平衡的关键因素。这也是为什么像 Gartner 或麦肯锡这样的战略咨询公司,或像 Stafford Computing 这样的细分市场咨询公司,能够成为这一过程中宝贵的合作伙伴。
量子管理者培训
负责处理和管理量子计算资源的管理者必须全面理解量子计算的基本原理,以及量子硬件和软件的技术能力与局限性。这可能需要在量子力学、量子算法和量子误差纠正等领域接受专业教育和培训。
除了技术专长,管理者还需要扎实的项目管理技能,以及协调多个团队和利益相关者工作的能力。这可能包括设定目标和优先事项、分配资源、并监控进展情况。管理者可能还需要强大的沟通能力,以便向广泛的受众,包括技术和非技术的利益相关者,解释量子计算的可能好处和风险。
各种教育和培训项目可以帮助管理者掌握处理和管理量子计算资源所需的技能和知识。这些项目可能包括量子计算或计算机科学的学位课程,以及各大学、研究机构和私营公司提供的专业发展课程和研讨会。
案例研究
比尔拉管理技术学院 (BIMTECH) 成立于 1988 年,是德里的顶尖商学院之一。该学院于 2022 年开发了一门名为量子管理者的 12 周课程,该课程是与 QKRISHI 合作推出的在线课程。
该课程费用接近 500 美元,通过 36 小时的现场课程,由来自学术界和行业的量子专家讲授。该项目旨在带领专业人员逐步了解与量子计算相关的各个阶段的信息,从线性代数开始,最后展示一个关于如何将这些技术应用于任何公司或初创企业的综合项目。
关于平台和内容交付,本课程非常直接。他们使用 Zoom 进行授课,Google Classroom 用于提供材料、作业和课程内容,WhatsApp 用于保持联系。该项目有着大量的学科专家。你可以从 IBM、AWS 以及其他与量子计算相关的大学、组织和企业的知名专家和研究人员那里接受课程。
结论
可以证明,在任何企业中实施量子计算解决方案都会遇到障碍。事实上,对于每个障碍或困难,始终有一套相应的工具、策略和解决方案,它们不断发展,提供正确的组合来克服采纳问题。
正如我们提到的,生态系统正在自然发展,更多的投资和量子软件的开发正推动着 NISQ 时代所需的快速成功。同样,培训方法、仿真技术、文献以及技术生态系统的许多其他领域也将在快速发展中壮大,以稳健地应对公司量子化发展之路上的挑战。
参考文献
Bertsimas, D., & Tsitsiklis, J. (1993). 模拟退火. 统计科学, 8(1), 10-15.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2024-01-21 油管公式(全)