2026-01-27 11:33:28
7
关键要点本文展示了德勤如何结合量子计算和机器学习技术来构建一个高效的支付欺诈检测解决方案,并探讨了在数字支付平台上这种创新技术的潜力。
随著数字商务的扩展,欺诈检测在保护企业和消费者进行在线交易中变得至关重要。通过实施机器学习ML算法,可以对高频交易数据进行即时分析,迅速识别欺诈行为。这种先进能力有助于降低财务风险,并在不断扩大的数字市场中保护客户隐私。
德勤作为一个全球性战略系统集成商,在全球拥有超过19000名AWS认证从业者,不断提升其标准,并在AWS能力计划中参与著29个能力领域,包括机器学习。
本文展示了量子计算算法搭配机器学习模型的潜力,以颠覆数字支付平台中的欺诈检测。我们将分享德勤如何利用亚马逊Braket构建混合量子神经网络解决方案,以示范这一新兴技术所带来的潜在收益。
量子计算机有潜力彻底改变金融体系,使解决方案变得更快且更精确。与传统计算机相比,量子计算机在模拟、优化和机器学习领域预计将实现明显的优势。当前,关于量子计算机是否能在机器学习中提供有意义的加速仍是研究的活跃话题。
量子计算可以在关键领域如定价和风险管理中开展高效的近即时模拟。金融机构的优化模型主要用于确定资产组合的最佳投资策略、资本的分配或提升生产力。一些优化问题对于传统计算机来说几乎无法解决,因此必须使用近似方法在合理时间内解决这些问题。量子计算机可以更快更准确地进行优化,而无须使用任何近似。
尽管短期内仍在探索阶段,但这项技术的破坏性潜力使得金融机构希望尽早进入这一领域,透过建立内部量子研究团队、扩大现有的机器学习中心以纳入量子计算,或与德勤等合作伙伴合作。
在此阶段,客户寻求不同量子硬件和模拟能力的选择,以便进行实验和积累专业知识。Braket是一个完全托管的量子计算服务,使用户能够探索量子计算。它提供来自IonQ、OQC、Quera、Rigetti和IQM的量子硬件,还提供各种本地和按需的模拟器,包括GPU加速的模拟器以及运行混合量子经典算法例如量子机器学习的基础设施。Braket与AWS服务如Amazon简单存储服务Amazon S3和AWS身份与访问管理IAM完全集成,并且客户仅需为使用的资源付费。
本文将演示如何利用Braket和AWS原生服务构建基于量子神经网络的欺诈检测解决方案。尽管目前尚无法在生产中使用量子计算机,我们的解决方案提供了一个工作流程,未来随著商业化的量子设备问世,将无缝适应并运作。
这篇文章的目的是探讨量子机器学习的潜力,并提出一个概念性工作流,当技术成熟时可作为即插即用系统。量子机器学习仍处于初期阶段,本文旨在展示可能性而不深入具体的安全考量。随著量子机器学习技术的进步及准备进入生产阶段,强大的安全措施将是必需的。然而,现在的重点是概述一个高层次的概念架构,为将来的技术成熟做好准备。
以下图示显示了使用AWS服务实施的基于神经网络的欺诈检测解决方案的架构。该解决方案使用混合量子神经网络实现,神经网络使用Keras库构建,量子组件则使用PennyLane实现。
该工作流程包括以下关键组件,分为推理AF和训练GI:
数据获取 通过Amazon Kinesis数据流实时获取金融交易数据预处理 AWS Glue的串流提取、转换和加载ETL作业消耗数据流来进行预处理和轻度转换储存 使用Amazon S3存储输出工件端点部署 使用Amazon SageMaker端点部署模型分析 将交易数据和模型推理存储于Amazon Redshift数据可视化 使用Amazon QuickSight可视化欺诈检测结果训练数据 使用Amazon S3存储训练数据建模 Braket环境生成推理模型治理 使用Amazon CloudWatch、IAM和AWS CloudTrail分别进行可观察性、治理和审计我们使用在Kaggle上可获得的开源数据来训练模型。该数据集包含2013年9月欧洲持卡人使用信用卡进行的交易。这个数据集总共记录了284807笔交易,其中492笔侦测到欺诈。该数据集呈现出明显的类别不平衡,欺诈交易仅占整体数据集的0172。由于数据高度不平衡,数据准备和模型开发过程中采取了多种措施。
数据集仅包含经过主成分分析PCA转换的数值输入变量,这是出于保密原因。
数据中仅包括数值输入特征经PCA转换以确保保密性和三个主要字段:
Time 每次交易与第一次交易之间的时间Amount 交易金额Class 目标变量,1表示欺诈,0表示非欺诈我们将数据分为训练集、验证集和测试集,并定义目标和特征集,其中Class为目标变量:
pythonytrain = dftrain[Class]xtrain = dftraindrop([Class] axis=1)yvalidation = dfvalidation[Class]xvalidation = dfvalidationdrop([Class] axis=1)ytest = dftest[Class]xtest = dftestdrop([Class] axis=1)
Class字段取值为0和1。为了使神经网络处理数据不平衡问题,我们在y集合上执行标签编码:
pythonlblclf = LabelEncoder()ytrain = lblclffittransform(ytrain)ytrain = tfkerasutilstocategorical(ytrain)
编码映射将0编码为[10],1编码为[01]。
最后,我们应用标准化来移除均值以及将特征标准化为单位方差:
pythonstdclf = StandardScaler()xtrain = stdclffittransform(xtrain)xvalidation = stdclffittransform(xvalidation)xtest = stdclftransform(xtest)
LabelEncoder和StandardScaler函数可在scikitlearn Python库中找到。
加速器官网推荐经过所有转换后,数据集准备好作为神经网络的输入。
我们根据几次实验,组建了以下层次的神经网络架构:
第一个稠密层包含32个节点第二个稠密层包含9个节点量子层作为神经网络输出并且有以03的比率进行随机失活的层我们对第一层应用L2正则化,对第二层同时进行L1和L2正则化以避免过拟合。我们使用henormal函数来初始化所有的权重。随机失活层同样是用于减少过拟合效果。
pythonhidden = Dense(32 activation=relu kernelinitializer=henormal kernelregularizer=tfkerasregularizersl2(001))out2 = Dense(9 activation=relu kernelinitializer=henormal kernelregularizer=tfkerasregularizersl1l2(l1=0001 l2=0001))do = Dropout(03)
构建量子层的第一步是建立量子电路或量子节点。为此,我们使用了Python库PennyLane。
PennyLane是一个开源库,无缝集成了量子计算和机器学习。它允许用户创建和训练量子经典混合模型,其中量子电路作为经典神经网络中的层。通过利用量子力学的力量并将其与像PyTorch、TensorFlow和Keras这样的经典机器学习框架融合,PennyLane使得探索量子机器学习的前沿变得可能,打开了新领域的机会。
电路的设计是整个解决方案中最重要的部分。模型的预测能力完全依赖于电路的构建。
量子计算中的基本信息单元量子比特qubit与传统比特的行为有所不同。与只能表示0或1的经典比特不同,量子比特可以同时存在于这两个状态的超位置中,从而实现量子并行性,对某些问题提供更快的计算。
我们决定仅使用三个量子比特,这个数量虽小但足以满足我们的需求。
我们如下实例化量子比特:
pythonnumwires = 3dev = qmldevice(defaultqubit wires=numwires)
‘defaultqubit’是PennyLane的量子比特模拟器。要访问真实的量子计算机,可以用以下代码替换第二行:
pythondevicearn = arnawsbraketeuwest2device/qpu/ionq/Aria1dev = qmldevice(braketawsqubit devicearn=devicearn wires=numwires)
deviceARN可以是Braket支持的设备的ARN支持的设备清单请参考亚马逊Braket支持的设备。
我们所定义的量子节点如下:
python@qmlqnode(dev interface=tf diffmethod=backprop)def quantumnn(inputs weights) qmlRY(inputs[0] wires=0) qmlRY(inputs[1] wires=1) qmlRY(inputs[2] wires=2) qmlRot(weights[0] inputs[3] weights[1] inputs[4] weights[2] inputs[5] wires=1) qmlRot(weights[3] inputs[6] weights[4] inputs[7] weights[5] inputs[8] wires=2) qmlCNOT(wires=[1 2]) qmlRY(weights[6] wires=2) qmlCNOT(wires=[0 2]) qmlCNOT(wires=[1 2]) return [qmlexpval(qmlPauliZ(0)) qmlexpval(qmlPauliZ(2))]
inputs是从神经网络前一层输出的值,weights是量子电路的实际权重。
RY和Rot是施加于量子比特上的旋转函数;CNOT是受控位翻转闸,用于将量子比特嵌入电路中。

qmlexpval(qmlPauliZ(0))、qmlexpval(qmlPauliZ(2))分别是施加于量子比特0和量子比特1的测量,这些值将作为神经网络的输出。
从电路图示上看,如下所示:
plaintext0 RY(100) ltZgt1 RY(200)Rot(40010001800)2 RY(300)Rot(280040005400)XRY(700)XX ltZgt
对量子比特0施加的变换比对量子比特2施加的变换要少。此选择的原因在于,我们希望分离量子比特的状态,以便在执行测量时获得不同的值。对量子比特施加不同的变换使它们进入不同的状态,进而在执行测量时产生不同的结果。这一现象源自量子力学中超位置和纠缠的原理。
在定义量子电路之后,我们将定义量子混合神经网络:
pythondef hybridmodel(numlayers numwires) weightshapes = {weights (7)} qlayer = qmlqnnKerasLayer(quantumnn weightshapes outputdim=2) hybridmodel = tfkerasSequential([hidden do out2 do qlayer]) return hybridmodel
KerasLayer是PennyLane中的一个函数,用于将量子电路转换为Keras层。
在预处理数据和定义模型后,我们可以开始训练网络。
为了解决不平衡数据集的问题,我们首先需要定义每个类别的权重,依据逆根法则:
pythonclasscounts = npbincount(ytrainlist)classfrequencies = classcounts / float(len(ytrain))classweights = 1 / npsqrt(classfrequencies)
权重由每个可能目标值的出现次数的逆根