概述
在自然语言处理过程中,词嵌入(Word embedding)是其中的重要步骤,它是一个将高维度空间的词向量嵌入到一个维数更低的连续向量空间的过程。当给予神经网络的语料信息不断增加时,网络的训练过程将越来越困难。利用量子力学的态叠加和纠缠等特性,我们可以利用量子神经网络来处理这些经典语料信息,加入其训练过程,并提高收敛精度。下面,我们将简单地搭建一个量子经典混合神经网络来完成一个词嵌入任务。
本教程实现的是一个CBOW模型,即利用某个词所处的环境来预测该词。例如对于“I love natural language processing”这句话,我们可以将其切分为5个词,["I", "love", "natural", "language", "processing”],在所选窗口为2时,我们要处理的问题是利用["I", "love", "language", "processing"]来预测出目标词汇"natural"。这里我们以窗口为2为例,搭建如下的量子神经网络,来完成词嵌入任务。
这里,编码线路会将"I"、"love"、"language"和"processing"的编码信息编码到量子线路中,待训练的量子线路由四个Ansatz线路构成,最后我们在量子线路末端对量子比特做ZZ基矢上的测量,具体所需测量的比特的个数由所需嵌入空间的维数确定。
数据预处理
我们对所需要处理的语句进行处理,生成关于该句子的词典,并根据窗口大小来生成样本点。
根据如上信息,我们得到该句子的词典大小为5,能够产生一个样本点。
编码线路
为了简单起见,我们使用的编码线路由RXRX旋转门构成,结构如下。
我们对每个量子门都作用一个RXRX旋转门。
我们通常用||0〉|0〉和||1〉|1〉来标记二能级量子比特的两个状态,由态叠加原理,量子比特还可以处于这两个状态的叠加态:
|𝜓〉=𝛼||0〉+𝛽||1〉
对于𝑛𝑛比特的量子态,其将处于2𝑛2𝑛维的希尔伯特空间中。对于上面由5个词构成的词典,我们只需要⌈log25⌉=3⌈log25⌉=3个量子比特即可完成编码,这也体现出量子计算的优越性。
例如对于上面词典中的"love",其对应的标签为2,2的二进制表示为010
,我们只需将编码线路中的e_0
、e_1
和e_2
分别设为00、𝜋𝜋和00即可。下面来验证一下。
通过上面的验证,我们发现,对于标签为2的数据,最后得到量子态的振幅最大的位置也是2,因此得到的量子态正是对输入标签的编码。我们将对数据编码生成参数数值的过程总结成如下函数。
根据上面的结果,我们将4个输入的词编码的信息合并为一个更长向量,便于后续神经网络调用。
Ansatz线路
Ansatz线路的选择多种多样,我们选择如下的量子线路作为Ansatz线路,它的一个单元由一层 RY 门和一层 CNOT 门构成,对此单元重复𝑝𝑝次构成整个Ansatz线路。
定义如下函数生成Ansatz线路。
测量
我们把对不同比特位上的测量结果作为降维后的数据。具体过程与比特编码类似,例如当我们想将词向量降维为五维向量时,对于第三维的数据可以如下产生:
- 3对应的二进制为
00011
。 - 测量量子线路末态对𝑍0𝑍1𝑍0𝑍1哈密顿量的期望值。
下面函数将给出产生各个维度上数据所需的哈密顿量(hams),其中n_qubits
表示线路的比特数,dims
表示词嵌入的维度:
量子版词向量嵌入层
量子版词向量嵌入层结合前面的编码量子线路和待训练量子线路,以及测量哈密顿量,将num_embedding
个词嵌入为embedding_dim
维的词向量。这里我们还在量子线路的最开始加上了Hadamard门,将初态制备为均匀叠加态,用以提高量子神经网络的表达能力。
下面,我们定义量子嵌入层,它将返回一个量子线路模拟算子。
整个训练模型跟经典网络类似,由一个嵌入层和两个全连通层构成,然而此处的嵌入层是由量子神经网络构成。下面定义量子神经网络CBOW。
下面我们对一个稍长的句子来进行训练。首先定义LossMonitorWithCollection
用于监督收敛过程,并搜集收敛过程的损失。
接下来,利用量子版本的CBOW
来对一个长句进行词嵌入。运行之前请在终端运行export OMP_NUM_THREADS=4
,将量子模拟器的线程数设置为4个,当所需模拟的量子系统比特数较多时,可设置更多的线程数来提高模拟效率。
通过如下方法打印量子嵌入层的量子线路中的参数:
经典版词向量嵌入层
这里我们利用经典的词向量嵌入层来搭建一个经典的CBOW神经网络,并与量子版本进行对比。
首先,搭建经典的CBOW神经网络,其中的参数跟量子版本的类似。
生成适用于经典CBOW神经网络的数据集。我们对经典CBOW网络进行训练。打印收敛过程中的损失函数值:
由上可知,通过量子模拟得到的量子版词嵌入模型也能很好的完成嵌入任务。当数据集大到经典计算机算力难以承受时,量子计算机将能够轻松处理这类问题。
参考文献
[1] Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean. Efficient Estimation of Word Representations in Vector Space