空枝|教你在经典计算机上搭建一个量子神经网络,已开源( 二 )


抛开可能存在的饮食健康问题不说 , 我们来看一下神经元会有什么表现:
在对输入进行编码时 , 我们用0代表“否” , 1代表“是” 。 同样地 , 对输出进行编码时 , 我们可以分别用0指代意大利面、用1来指代披萨:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源接着 , 我们用阶跃函数(step function)来转换神经元的激活值:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源只需要一个神经元 , 我们就可以捕捉多种不同的决策行为:

  • 决策1:如果我们喜欢这家餐厅的意大利面 , 我们就会点意大利面 , 除非青酱卖完 , 或者这家餐厅提供三层奶酪比萨 。
  • 决策2:如果我们不喜欢这家餐厅的意大利面 , 我们就会点披萨 , 除非还有青酱 , 或者没有三层奶酪披萨 。
或者换个方式:我们可以对神经元进行编程 , 让这个神经元与一组特定的偏好对应 。
如果我们只是想要预测下次出门吃什么 , 我们很容易就能找出神经元的一组权重和偏差 。 但如果我们要在一个规模齐全的网络上进行同样的预测 , 那该怎么办?
预测过程可能要耗很长一段时间 。
幸运的是 , 我们不用猜测所需的权重值 , 只需创建可以改变神经网络参数(比如权重、偏差甚至结构)的算法 , 以便网络可以学习如何解决问题 。
2 “以退为进”
在理想情况下 , 神经网络的预测应该与输入关联的标记相同 。 因此 , 预测与实际输出的差异越小 , 神经网络所学到的权重就越优秀 。
我们用一个损失函数来量化这种差异 。 损失函数可以采用任何形式 , 例如二次损失函数(quadratic loss function):
空枝|教你在经典计算机上搭建一个量子神经网络,已开源y(x)是理想输出 。 当馈送带有参数θ的数据x时 ,
空枝|教你在经典计算机上搭建一个量子神经网络,已开源是神经网络的输出 。 由于损失始终为非负值 , 一旦取值接近于0 , 我们就知道网络已经学会了一个好的参数组 。 当然 , 这个过程中可能还会出现其他问题 , 例如过拟合 , 但这些可以暂时忽略 。
【空枝|教你在经典计算机上搭建一个量子神经网络,已开源】应用损失函数 , 我们可以找到网络设置的最佳参数是:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源因此 , 我们要做的不是猜测权重 , 而是在使用参数θ时 , 应用梯度下降技术将C最小化:
空枝|教你在经典计算机上搭建一个量子神经网络,已开源这时 , 我们需要留意 , 增加θ_i的值后 , 损失会如何变化 , 然后更新θ_i , 以使损失稍微降低 。 η是一个很小的数字 , 它的变化取决于我们更新θ_i时所做的改变 。
为什么η是一个小的数字呢?因为我们可以对它进行调整 , 以保证在每次更新后 , 数据x的损失会接近0 。 在多数情况下 , 这并不是一个好的解决方法 , 因为这虽然可以减少当下x的损失 , 但其他馈送到网络的数据样本很可能会因此而表现较差 。
想必现在大家都已掌握了基本的原理 , 接下来我们来看看要如何构建一个量子神经网络(quantum neural network) 。


推荐阅读