教你在经典计算机上搭建一个量子神经网络,已开源


教你在经典计算机上搭建一个量子神经网络,已开源
本文插图
作者 | Sashwat Anagolum
编译 | 张大倩、陈彩娴
本文将教你搭建简单的二分类量子神经网络 , 并在经典计算机上运行 , 该项目已经开源 。 构建量子神经网络与传统的方式并不完全相同——它没有使用带权重和偏置的神经元 , 而是将输入数据编码为一系列量子比特 , 应用一系列量子门 , 并改变门的参数 , 使损失函数最小化 。
项目地址:https://github.com/SashwatAnagolum/DoNew/tree/master/QNN
教你在经典计算机上搭建一个量子神经网络,已开源
本文插图
虽然这听起来很新鲜 , 但其根本思想和传统还是一样的——改变参数集 , 使网络预测和输入标签之间的差异最小化 , 并且同样基于反向传播算法 。
接下来 , 我们首先会介绍传统神经网络的工作原理 , 如果你对此已经很熟悉 , 可以直接跳到第3节阅读如何搭建量子神经网络 。
1 权重、偏差和构建模块
几乎人人都知道神经网络 。 如今 , 许多酷炫的技术都使用了神经网络 , 包括自动驾驶汽车、语音助手和恶搞名人照片的软件等 。
神经网络与其他算法的不同之处在于:我们不用写下一长串的规则 , 只需要向神经网络提供数据即可 。
我们可以从IRIS数据集中提取一些数据注入神经网络 , 这些数据包括三种花的信息 , 然后网络会预测是哪种花 。
教你在经典计算机上搭建一个量子神经网络,已开源
本文插图
神经网络由大量的神经元组成 , 如下所示:
教你在经典计算机上搭建一个量子神经网络,已开源
本文插图
大多神经元会含有多个数字输入(上图的蓝色圆圈) , 然后将每个输入与表示输入重要性的权重(w_i)相乘 。 权重越大 , 相关输入就越重要 。
偏差被视为另一种权重 , 只是它所与之相乘的输入值始终为1 。 将所有加权输入进行相加后 , 得到输出值 。
教你在经典计算机上搭建一个量子神经网络,已开源
本文插图
然后应用激活函数 , 我们将得到神经元的激活值 , 如上图中的紫色圆圈所表示 。 激活值通过一个函数(上图中的蓝色长方形)传递 , 输出神经元:
教你在经典计算机上搭建一个量子神经网络,已开源
本文插图
我们可以通过更改激活函数来改变神经元的行为 。 比方说 , 我们可以进行一个非常简单的转换 , 例如:
教你在经典计算机上搭建一个量子神经网络,已开源
本文插图
但实际上 , 我们应用的是更复杂的函数 , 例如Sigmoid函数:
教你在经典计算机上搭建一个量子神经网络,已开源
本文插图
神经元怎样才能发挥作用呢?
神经元可以根据所接收到的输入来做决策 。 比方说 , 我们可以向神经元注入以下三个问题的答案 , 然后让神经元来猜测我们下次去意大利用餐时是想吃披萨还是想吃意大利面:

  • 问题1:我喜欢这家餐厅的意大利面吗?
  • 问题2:这家餐厅有意大利青酱吗?
  • 问题3:这家餐厅有三层奶酪披萨吗?
抛开可能存在的饮食健康问题不说 , 我们来看一下神经元会有什么表现:
在对输入进行编码时 , 我们用0代表“否” , 1代表“是” 。 同样地 , 对输出进行编码时 , 我们可以分别用0指代意大利面、用1来指代披萨:
教你在经典计算机上搭建一个量子神经网络,已开源