论文量子电路设计如图所示:
对其进行复现
用于深度Q网络(VQ-DQN)的通用变分量子电路架构。单量子比特门Rx (θ)和Rz (θ)分别表示沿x轴和z轴沿给定角度θ的旋转。CNOT门用于纠缠来自每个量子位的量子态,R(α, β, γ)表示具有三个参数的一般单量子位酉门。标记为θi和φi的参数用于状态制备,不受迭代优化的约束。标记为αi、βi、γi的参数为迭代优化参数。请注意,量子位的数量可以调整以适应感兴趣的问题,分组框可能会重复几次以增加参数的数量,这取决于用于实验的量子机器的容量和能力。
一般的n-量子比特状态可以表示为:
可以参考前面博客对于多量子比特的描述。
我们讨论这里采用的程序,将经典状态编码到变分量
其中cq1,…,qn∈C是每个量子态的振幅,每个qn∈{0,1}。振幅的平方cq1,…,qn是在|q1i⊗|q2i⊗|q3i⊗…⊗|qni中测量后态的概率,以及总概率子电路的量子寄存器中。让我们以图1所示的冰冻湖环境为例。有4 ×4 = 16种可能的状态,我们用0到15范围内的整数来标记每种可能的状态。我们需要一个4量子位系统来包含16种状态的所有可能性。首先将十进制数转换为二进制数,然后通过单量子位的幺正旋转编码为量子态。也就是说,每个经典态都可以用一个四位数的二进制数b1b2b3b4表示,其中b1、b2、b3、b4只能取0或1的值,那么对应的编码量子态将是|b1i⊗|b2i⊗|b3i⊗|b4i。
论文伪代码如图所示:
算法1 变分量子深度Q学习
- 将回放记忆D初始化为容量N
- 使用随机参数初始化动作值函数量子电路Q
- 对于每一集
- 初始化状态S1并将其编码成量子态
- 对于每个时间步t
- 以概率选择一个随机动作at
- 否则从量子电路输出中选择at = maxa Q(a;θ)的动作
- 执行动作a,在模拟器中观察奖励rt和下一个状态st+1
- 将转换(st, at, rt, st+1)存储在D中
- 从D中随机抽取一个转换(sj, aj, rj, sj+1)的小批量
- 对于终止状态sj+1
- 如果sj+1是非终止状态,设置yj = rj + γ maxw Q(sj+1, w; θ)
- 对(yj - Q(sj, aj; θ))执行梯度下降步骤
- 结束
- 结束
对于标红可参考前文博客。
对于论文中量子电路红色部分不需要迭代,代表使用rz,和rx进行旋转一定的角度。其受到以智能体观察到的标记为11的状态控制,通过这个0-15的值控制旋转门中的值。
在量子电路中,控制非(CNOT)门用于纠缠每个量子位的量子态。
表示具有三个参数的一般单量子位酉门。标记为αi、βi和γi的参数为迭代优化的参数。该部分为量子电路的主要优化目标。如图所示由两个Rz和ry门组成。在电路初始化时随机初始化某个值。
量子电路在冰冻湖问题中的设计如图,通过对该量子电路的参数不断的优化以达到强化学习中Q 值函数的作用。