首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用TensorFlow Quantum进行量子机器学习

使用TensorFlow Quantum进行量子机器学习

作者头像
人工智能小咖
修改于 2020-04-16 01:41:29
修改于 2020-04-16 01:41:29
1.3K00
代码可运行
举报
文章被收录于专栏:人工智能小咖人工智能小咖
运行总次数:0
代码可运行

介绍

2020年3月9日,谷歌人工智能确认了TensorFlow Quantum (TFQ)的可用性,它是一个用于快速研发量子机器学习模型的开源库。

早先还有如Pennylane的其他几个框架,但都没有TFQ出色。TFQ作为工具箱出现在这个领域,依旧未被公开。笔者已经阅读并了解了一些其他框架,但是在对TFQ进行研究之后,不可否认TFQ是最好的。

一起了解如何使用TFQ设计量子神经网络。

如何在参数化量子电路上进行机器学习?

为弄清楚这一点,马苏德·莫西尼(Masoud Mohseni)(TFQ的技术负责人)提供了示例。

他说,“需要注意的是,时空体中打印这种单位运算或随机旋转是一种连续的参数化旋转,模仿了经典电路,比如深度神经网络中将输入映射到输出。”

这就是量子神经网络的原理。

但是如何创建这些参数化的量子电路呢?

开发混合量子模型的第一步是能够利用量子运算。为此,TFQ依赖于Cirq(一个近期计算机上实现量子电路的开源平台)。Cirq包括定义量子计算所需的基本结构,如量子位、门、电路和计算算符。Cirq背后的理念是提供一个简单的编程模型,抽象出量子应用的基本构件块。

能把cirq和TFQ结合起来吗?挑战是什么?

技术障碍1

  • 无法导入量子数据。
  • 量子数据必须随时准备。
  • 数据和模型都是量子电路中的层。

技术障碍2

  • QPU每次运行都需要完整的量子程序。
  • QPU在几微秒内运行。
  • 相对高延迟的CPU——QPU。
  • 批量作业被中继到量子计算机

为使其实用并克服障碍,TFQ团队在编程背景下提出了一些不可忽视的架构概念。架构标准如下所示。

1.可微分性:须支持量子电路的微分和混合反向传播。

2.电路批处理:量子数据上传为量子电路,并行训练多个不同的电路。

3.执行后端不可知: 几步就能从模拟器切换到真实设备。

4.极简主义:Cirq和TF间的桥梁:无需用户重新学习如何与量子计算机交互来解决机器学习问题。

逐步执行

混合判别模型的TFQ管道

步骤1:

准备一个量子数据集:量子数据加载为一个张量,定义为用Cirq编写的量子电路。张量由量子计算机上的TensorFlow执行以生成量子数据集。

量子数据集为非参数化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cirq.Circuit

对象被应用于计算机图表使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tfq.convert_to_tensor

步骤2:

评估量子神经网络模型:这一步中,研究人员可以使用Cirq制作量子神经网络的原型,然后将其嵌入TensorFlow计算图中。

量子模型的构建用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cirq.Circuit

包含SymPy符号的对象,并且可以使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tfq.AddCircuit

分层附加到量子数据源。

步骤3:

样本或平均值:这一步利用步骤(1)和(2)的几次运行取平均值。

样本或取平均值通过将量子数据和量子模型送至

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tfq.Sample 

或者

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tfq.Expectation

层。

步骤4:

评估经典神经网络模型:这一步使用经典深度神经网络来提取前面步骤中提取的度量间的相关性。

由于TFQ与TensorFlow完全兼容,量子模型可直接与其联系

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tf.keras.layers.Layer

如tf.keras.layers.Dense.

步骤5:

评估成本函数:类似于传统的机器学习模型,通过这一步骤,TFQ评估成本函数。如果量子数据被标记,评估成本函数可能基于模型执行分类任务的准确程度,如任务无监督,则基于其他标准。

将分阶段(1)到(4)构建的模型打包于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tf.keras.Model

允许用户访问模块中的所有损失。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tf.keras.losses 

步骤6:

评估梯度和更新参数-评估成本函数后,为降低成本,管道中的自由参数应按照预期方向更新。

为支持梯度下降,向TensorFlow反向传播机制公开量子操作的导数,通过

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tfq.differentiators.Differentiatorinterface

混合量子-经典反向传播,量子和经典模型参数都可以针对量子数据进行优化。

编码演示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#Importing dependencies
!pip install --upgrade cirq==0.7.0
!pip install --upgrade tensorflow==2.1.0
!pip install qutip
!pip install tensorflow-quantum
import cirq
import numpy as np
import qutip
import random
import sympy
import tensorflow as tf
import tensorflow_quantum as tfq
#Quantum Dataset
def generate_dataset(qubit, theta_a, theta_b, num_samples):
 """Generate a dataset of points on `qubit` near the two given angles; labels
  for the two clusters use a one-hot encoding.
   """
     q_data = []
     bloch = {"a": [[], [], []], "b": [[], [], []]}
     labels = []
     blob_size = abs(theta_a - theta_b) / 5
    for _ in range(num_samples):
      coin = random.random()
      spread_x = np.random.uniform(-blob_size, blob_size)
      spread_y = np.random.uniform(-blob_size, blob_size)
     if coin < 0.5:
       label = [1, 0]
       angle = theta_a + spread_y
       source = "a"
     else:
       label = [0, 1]
       angle = theta_b + spread_y
      source = "b"
     labels.append(label)
     q_data.append(cirq.Circuit(cirq.ry(-angle)(qubit), cirq.rx(-spread_x)(qubit)))
     bloch[source][0].append(np.cos(angle))
     bloch[source][1].append(np.sin(angle)*np.sin(spread_x))
     bloch[source][2].append(np.sin(angle)*np.cos(spread_x))
   return tfq.convert_to_tensor(q_data), np.array(labels), bloch
 #Genrate the dataset
 qubit = cirq.GridQubit(0, 0)
 theta_a = 1
 theta_b = 4
 num_samples = 200
q_data, labels, bloch_p = generate_dataset(qubit, theta_a, theta_b, num_samples
#Model
#We will use a parameterized rotation about the Y axis followed by a Z-axis measurement as the quantum portion of our model. For the classical portion, we will use a two-unit SoftMax which should learn to distinguish the measurement statistics of the two data sources.
# Build the quantum model layer
theta = sympy.Symbol('theta')
q_model = cirq.Circuit(cirq.ry(theta)(qubit))
q_data_input = tf.keras.Input(
    shape=(), dtype=tf.dtypes.string)
expectation = tfq.layers.PQC(q_model, cirq.Z(qubit))
expectation_output = expectation(q_data_input)
# Attach the classical SoftMax classifier
classifier = tf.keras.layers.Dense(2, activation=tf.keras.activations.softmax)
classifier_output = classifier(expectation_output)
model = tf.keras.Model(inputs=q_data_input, outputs=classifier_output)
# Standard compilation for classification
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.1),
              loss=tf.keras.losses.CategoricalCrossentropy())
tf.keras.utils.plot_model(model, show_shapes=True, dpi=70)
#Training
history = model.fit(x=q_data, y=labels, epochs=50, verbose=0)
test_data, _, _ = generate_dataset(qubit, theta_a, theta_b, 1)
p = model.predict(test_data)[0]
print(f"prob(a)={p[0]:.4f}, prob(b)={p[1]:.4f}")

结论

所以,以简单的步骤发掘了量子神经网络,甚至用TFQ执行了量子神经网络。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AI框架分析与介绍
AI 框架是 AI 算法模型设计、训练和验证的一套标准接口、特性库和工具包,集成了算法的封装、数据的调用以及计算资源的使用,同时面向开发者提供了开发界面和高效的执行平台,是现阶段 AI 算法开发的必备工具。
量子发烧友
2023/02/24
4.8K0
AI框架分析与介绍
利用TFQ纠正量子位校准误差
TensorFlow Quantum(TFQ)是谷歌在 2020 年 3 月 9 日宣布推出一个用于量子机器学习的 Python 框架,它能够将机器学习和量子计算结合在一起。这个框架可以构造量子数据集,原型混合量子模型和经典机器学习模型,支持量子电路模拟以及训练判别与生成量子模型等操作。
量子发烧友
2023/02/24
1.2K0
利用TFQ纠正量子位校准误差
下(应用篇)| 推荐几款较流行的量子算法
量子算法是量子计算机的必要软件支撑,同时量子算法的研究也是推动量子计算发展的强大动力。以下将对各个发展阶段的典型量子算法进行比较分析。
量子发烧友
2023/02/24
2.2K0
下(应用篇)| 推荐几款较流行的量子算法
TensorFlow Quantum:建立在量子架构上工作的机器学习模型
量子计算和人工智能(AI)的交叉有望成为整个科技史上最引人注目的工作之一。量子计算的出现可能会迫使我们重新设想几乎所有现有的计算范式,人工智能也不例外。然而,量子计算机的计算能力也有可能加速人工智能的许多领域,这些领域目前仍不实用。人工智能和量子计算协同工作的第一步是将机器学习模型重新构想为量子架构。最近,谷歌开源TensorFlow Quantum框架,用于构建量子机器学习模型。
deephub
2020/12/24
7030
混合量子-经典体系对量子数据的分类问题
经典计算机中可以利用比特位和逻辑门进行二进制运算,在物理硬件方面,二进制运算主要通过半导体的特殊电性质实现。在量子计算机中,主要利用量子的纠缠和叠加特性通过量子比特位和量子逻辑门来实现运算。量子计算对算力的加速优势也在量子计算机不断发展中得到证实。但关于量子计算机与经典计算机的存在性问题,并非取而代之这么简单。目前,在物理硬件设备基础和量子技术的发展方面,依然无法制造出可以超越经典计算的通用量子计算机。
量子发烧友
2023/03/08
4860
混合量子-经典体系对量子数据的分类问题
"量子优越性"之后,谷歌强势开源量子版TensorFlow!
继2019年10月谷歌在《Nature》上发布关于验证“量子优越性”论文之后,3月9日,谷歌再次就“量子”做出新的发布。
AI科技评论
2020/03/11
6810
量子+AI:量子计算加速机器学习
量子计算和机器学习都是当前最炙手可热的研究领域。在量子计算方面,理论和硬件的一个个突破性进展让人们看到大规模通用量子计算机的脚步越来越近。在机器学习方面,具备机器学习能力的人工智能在某些方面的能力远超人类。
量子发烧友
2023/02/24
1.4K0
量子+AI:量子计算加速机器学习
量子近似优化算法及其应用
量子近似优化算法(QAOA)是一种经典和量子的混合算法,是一种在基于门的量子计算机上求解组合优化问题的变分方法。一般而言,组合优化的任务就是从有限的对象中寻找使成本最小化的目标对象,在实际生活中的主要应用包括降低供应链成本、车辆路径、作业分配等。
量子发烧友
2023/03/08
1.4K0
量子近似优化算法及其应用
一文概览量子机器学习!
【导读】大家好,我是泳鱼。一个乐于探索和分享AI知识的码农!熟话说,“遇事不决 量子力学!”。当两股科技顶流——量子计算 + 人工智能 相遇,会产生怎么样的火花呢?
算法进阶
2023/08/28
1.2K0
一文概览量子机器学习!
谷歌重磅发布TensorFlow Quantum:首个用于训练量子ML模型的框架
去年 10 月,谷歌宣布首次实现「量子优越性」,用一台 54 量子比特的量子计算机实现了传统架构计算机无法完成的任务。谷歌称,在世界第一超算需要计算 1 万年的实验中,量子计算机只用了 3 分 20 秒。这被视为量子计算领域的里程碑事件,并登上了《自然》杂志 150 周年版的封面。
机器之心
2020/03/11
7230
量子计算与人工智能
量子计算是一种遵循量子力学规律调控量子信息单元进行计算的新型计算模式,它的处理效率要大大快于传统的通用计算机。那么什么是人工智能,人工智能的发展历程,以及人工智能如何跟量子计算的结合和应用。本篇文章就为大家做个简单分享。
量子发烧友
2023/02/24
1.1K0
量子计算与人工智能
给量子计算装上AI大脑!谷歌量子计算库TensorFlow Quantum开源,超强算力可兼容TensorFlow
据谷歌人工智能博客称,新的量子电路模拟器和量子计算模型可以跟标准的 Keras 函数、现有的 TensorFlow API 无缝兼容,因此创建量子模型成为可能。
新智元
2020/03/12
9130
给量子计算装上AI大脑!谷歌量子计算库TensorFlow Quantum开源,超强算力可兼容TensorFlow
[新知] Google开源量子机器学习函数库TensorFlow Quantum
“ TensorFlow Quantum是个可以让开发者建立,可在古典量子电路模拟器上执行的量子机器学习模型。”
阿泽
2020/03/12
5520
[新知] Google开源量子机器学习函数库TensorFlow Quantum
Qutrunk与Paddle结合实践--VQA算法示例
QuTrunk 是启科量子开发和已经开源的一款量子编程框架软件产品,它使用 Python 作为宿主语言,利用Python 的语法特性实现针对量子程序的 DSL(领域专用语言),所有支持 Python 编程的 IDE 均可安装使用 QuTrunk。QuTrunk 基于量子逻辑门、量子线路等概念提供量子编程所需的各类API。这些 API 分别由相应的模块实现,比如 QCircuit 实现量子线路功能,Qubit 实现量子比特,Qureg 实现量子寄存器,Command 对应每个量子门操作的指令, Backend 代表运行量子线路的后端模块,gate 模块实现了各类基础量子门操作。同时 QuTrunk 还可以作为其他上层量子计算应用的基础,比如:量子算法、量子可视化编程、量子机器学习等。
量子发烧友
2023/02/24
5310
Qutrunk与Paddle结合实践--VQA算法示例
首次线上直播,TF Dev Summit 都讲了啥?
场景描述:今日凌晨,一场技术直播引来了无数人的围观,甚至不惜肝到天明,到底是什么让开发者如此激动?原来是一年一度的 TensorFlow 技术峰会,这场线上直播的盛会,带来了哪些关于 TensorFlow 的信息,本文就将从几个重点进行一次深入的回顾。
HyperAI超神经
2020/03/16
7720
首次线上直播,TF Dev Summit 都讲了啥?
QuTrunk与MindSpore量子神经网络初探
QuTrunk 是启科量子开发和已经开源的一款量子编程框架软件产品,关于QuTrunk的详细介绍,用户可以访问启科的开发者社区站点详细了解,也可以进入github上此项目下进行查询。
量子发烧友
2023/03/08
7910
QuTrunk与MindSpore量子神经网络初探
使用Python探索量子机器学习
量子计算与机器学习的结合正在成为一个激动人心的研究领域。量子机器学习(Quantum Machine Learning, QML)利用量子计算的强大计算能力,提升传统机器学习算法的效率和性能。本文将以Python为例,介绍如何使用量子计算框架构建简单的量子机器学习应用。
Echo_Wish
2024/12/23
1980
量子机器学习Variational Quantum Classifier (VQC)简介
变分量子分类器(Variational Quantum Classifier,简称VQC)是一种利用量子计算技术进行分类任务的机器学习算法。它属于量子机器学习算法家族,旨在利用量子计算机的计算能力,潜在地提升经典机器学习方法的性能。
deephub
2023/08/30
5710
量子机器学习Variational Quantum Classifier (VQC)简介
量子计算 + AI:科幻照进现实?
说到量子计算,很多人第一反应可能是:“这玩意儿离我们还远着呢吧?” 确实,量子计算现在还处于早期发展阶段,但如果你是个AI开发者,或者对计算加速有需求,那你真的应该关注它。量子计算可能成为未来AI训练和推理的“加速器”,帮助我们在海量数据中找到最优解。
Echo_Wish
2025/03/22
1500
量子计算 + AI:科幻照进现实?
量子+AI应用:量子计算与神经网络
神经网络是当下计算应用中发展最快,使用最广的机器学习算法。然而,由于传统的神经网络只能使用单个网络来存储许多算法模式,随着应用不断复杂化导致网络结构不断扩大,存储性能瓶颈已逐渐凸显。
量子发烧友
2023/02/24
1.5K0
量子+AI应用:量子计算与神经网络
推荐阅读
相关推荐
AI框架分析与介绍
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验