From 25e25862e3f7eea7ac6bd65b180778febd79d387 Mon Sep 17 00:00:00 2001 From: Gopal Ramesh Dahale <49199003+Gopal-Dahale@users.noreply.github.com> Date: Wed, 22 May 2024 19:57:21 +0530 Subject: [PATCH] QCBM Tutorial (#1053) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Title:** Quantum Circuit Born Machines **Summary:** Introduces the ideas of Quantum Circuit Born Machines (QCBMs) along with its gradient-based training. Applies QCBM to learn bars and stripes and two peaks dataset. **Relevant references:** [Differentiable Learning of Quantum Circuit Born Machine](https://arxiv.org/abs/1804.04168) **Possible Drawbacks:** **Related GitHub Issues:** ---- If you are writing a demonstration, please answer these questions to facilitate the marketing process. * GOALS — Why are we working on this now?: The purpose is to use PennyLane to implement a popular algorithm in unsupervised generative modelling based on the paper "Differentiable Learning of Quantum Circuit Born Machine". * AUDIENCE — Who is this for?: The demo provides a gentle introduction to QCBMs, making it suitable for beginners. It also targets individuals interested in generative modelling with quantum algorithms. * KEYWORDS — What words should be included in the marketing post?: QCBM, QML, MMD, Gradient-based Optimization * Which of the following types of documentation is most similar to your file? (more details [here](https://www.notion.so/xanaduai/Different-kinds-of-documentation-69200645fe59442991c71f9e7d8a77f8)) - [ ] Tutorial - [x] Demo - [ ] How-to --------- Co-authored-by: Guillermo Alonso-Linaje <65235481+KetpuntoG@users.noreply.github.com> Co-authored-by: Alvaro Ballon <91897656+alvaro-at-xanadu@users.noreply.github.com> --- _static/authors/gopal_ramesh_dahale.jpeg | Bin 0 -> 40138 bytes _static/authors/gopal_ramesh_dahale.txt | 4 + ..._QuantumCircuitBornMachines_2024-05-13.png | Bin 0 -> 49215 bytes ..._QuantumCircuitBornMachines_2024-05-13.png | Bin 0 -> 12340 bytes ..._QuantumCircuitBornMachines_2024-05-13.png | Bin 0 -> 52618 bytes demonstrations/tutorial_qcbm.metadata.json | 96 +++ demonstrations/tutorial_qcbm.py | 576 ++++++++++++++++++ 7 files changed, 676 insertions(+) create mode 100644 _static/authors/gopal_ramesh_dahale.jpeg create mode 100644 _static/authors/gopal_ramesh_dahale.txt create mode 100644 _static/demonstration_assets/qcbm/OGthumbnail_large_QuantumCircuitBornMachines_2024-05-13.png create mode 100644 _static/demonstration_assets/qcbm/thumbnail_QuantumCircuitBornMachines_2024-05-13.png create mode 100644 _static/large_demo_thumbnails/thumbnail_large_QuantumCircuitBornMachines_2024-05-13.png create mode 100644 demonstrations/tutorial_qcbm.metadata.json create mode 100644 demonstrations/tutorial_qcbm.py diff --git a/_static/authors/gopal_ramesh_dahale.jpeg b/_static/authors/gopal_ramesh_dahale.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..533d88dee6dd88de2c22a324a77a59453e0edf3a GIT binary patch literal 40138 zcmb4qWl&sA(C*@H!7T)Lf(LhZTio5&&~VYuj>B3eWv

TqyA{-nnEF3Zd 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 literal 0 HcmV?d00001 diff --git a/_static/authors/gopal_ramesh_dahale.txt b/_static/authors/gopal_ramesh_dahale.txt new file mode 100644 index 0000000000..514b37840c --- /dev/null +++ b/_static/authors/gopal_ramesh_dahale.txt @@ -0,0 +1,4 @@ +.. bio:: Gopal Ramesh Dahale + :photo: ../_static/authors/gopal_ramesh_dahale.jpeg + + Gopal is a quantum research software engineer at Qkrishi and a Qiskit advocate interested in applications of quantum computing in machine learning, chemistry and combinatorial optimization problems. \ No newline at end of file diff --git a/_static/demonstration_assets/qcbm/OGthumbnail_large_QuantumCircuitBornMachines_2024-05-13.png b/_static/demonstration_assets/qcbm/OGthumbnail_large_QuantumCircuitBornMachines_2024-05-13.png new file mode 100644 index 0000000000000000000000000000000000000000..2f5841045b18ede45a78a9857e90d839b1b7ee44 GIT binary patch literal 49215 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

2bFrGu9}m(aKBl4xm(E8c^2VNY1+Oa184-TN@yf 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%0DD z0$xi@Q$VWz1mc$2j0_}U0V;aAa77rA4###+GKkMG$Nw!LOR}d1|E{$T{6tkz4nPRl zMmgk#(y*U%%5~wtyMuiEE@m$U?QZ`lOLDi)1TOq7+4f@<*(yPV=__b42QWNOXZBPk zRzim`{#KK_V+S)q>hG|I(to7sXtM8jaZw{|r6mi&`nhcoC;G+4VlVjssDVa_4x2G@ z?(g1pIR0yqpgAaBOOn#{>Xe`_m_pRbj|tjPU0uPR3qDWnN)f_lo=KQ@1Gef$Y2U*= z&xCX=Bnmp}mprZ>etU;33$Lw*qg_=a^Ou*sVhTJ9h*#+UCDL8(jnOg|xs#NqKOwus zhhCgEb-6`JM_F8W1WZ4D?D+E=qf<132!TO0GzY`MGm7u#UI{z0V3kQnSwm{CFeB7# z^QKeeizO%Te)#yBJQiu9<=1n&aO4!G9p$orUon$Q*8i_bBwB}gbp3bExNy)#LnUbz z?h*awePRg4nI0`-fAyJ$!3it3a1x*!^kUVDNDr(3Nz?iD0NpC~qn1G`#F?@W&G4yL zPo{55>V(w()sBKQWN0)KJn~*nMNU1B1;ZBeaM$m0#<9~m#X4~F-2Aii*9K>iLkpjb RJlSMWJ+E<&pls^@e*kgpyrKXA literal 0 HcmV?d00001 diff --git a/_static/demonstration_assets/qcbm/thumbnail_QuantumCircuitBornMachines_2024-05-13.png b/_static/demonstration_assets/qcbm/thumbnail_QuantumCircuitBornMachines_2024-05-13.png new file mode 100644 index 0000000000000000000000000000000000000000..6cd10e3762159c1c33edc48ac3f2a047b96e0989 GIT binary patch literal 12340 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. + +We can now write the loss function in terms of :math:`K(x,y)` as + +.. math:: + + \mathcal{L} = \underset{x, y \sim p_\boldsymbol{\theta}}{\mathbb{E}}[{K(x,y)}]-2\underset{x\sim p_\boldsymbol{\theta},y\sim \pi}{\mathbb{E}}[K(x,y)]+\underset{x, y \sim \pi}{\mathbb{E}}[K(x, y)] +""" + +###################################################################### +# Armed with these ingredients, we can write code for the QCBM and the loss function. +# We first define the ``MMD`` class for computing the squared MMD loss with radial basis +# function kernel. Upon initialization, it calculates the kernel function. +# + +import jax +import jax.numpy as jnp + +jax.config.update("jax_enable_x64", True) + + +class MMD: + + def __init__(self, scales, space): + gammas = 1 / (2 * (scales**2)) + sq_dists = jnp.abs(space[:, None] - space[None, :]) ** 2 + self.K = sum(jnp.exp(-gamma * sq_dists) for gamma in gammas) / len(scales) + self.scales = scales + + def k_expval(self, px, py): + # Kernel expectation value + return px @ self.K @ py + + def __call__(self, px, py): + pxy = px - py + return self.k_expval(pxy, pxy) + + +###################################################################### +# Defining classes helps in caching the kernel instead of calculating it everytime to find the +# expectation value. Next up, the ``QCBM`` holds the definition for the quantum circuit born machine +# and the objective function to minimize. +# + +from functools import partial + + +class QCBM: + + def __init__(self, circ, mmd, py): + self.circ = circ + self.mmd = mmd + self.py = py # target distribution π(x) + + @partial(jax.jit, static_argnums=0) + def mmd_loss(self, params): + px = self.circ(params) + return self.mmd(px, self.py), px + + +###################################################################### +# Learning the Bars and Stripes data distribution +# ----------------------------------------------- +# +# We train the QCBM on the Bars and stripes dataset. The dataset has binary black and white images of +# size :math:`n \times n` pixels. We consider :math:`n=3` for this tutorial, which will give 14 valid +# configurations. The dataset is represented by flattened bitstrings. The quantum circuit will use 9 +# qubits in total. +# + +###################################################################### +# Data generation +# ~~~~~~~~~~~~~~~ +# + +import numpy as np + + +def get_bars_and_stripes(n): + bitstrings = [list(np.binary_repr(i, n))[::-1] for i in range(2**n)] + bitstrings = np.array(bitstrings, dtype=int) + + stripes = bitstrings.copy() + stripes = np.repeat(stripes, n, 0) + stripes = stripes.reshape(2**n, n * n) + + bars = bitstrings.copy() + bars = bars.reshape(2**n * n, 1) + bars = np.repeat(bars, n, 1) + bars = bars.reshape(2**n, n * n) + return np.vstack((stripes[0 : stripes.shape[0] - 1], bars[1 : bars.shape[0]])) + + +n = 3 +size = n**2 +data = get_bars_and_stripes(n) +print(data.shape) + +###################################################################### +# The dataset has 9 features per data point. A visualization of one data point is shown below. Each +# data point represents a flattened bitstring. +# + +import matplotlib.pyplot as plt + +sample = data[1].reshape(n, n) + +plt.figure(figsize=(2, 2)) +plt.imshow(sample, cmap="gray", vmin=0, vmax=1) +plt.grid(color="gray", linewidth=2) +plt.xticks([]) +plt.yticks([]) + +for i in range(n): + for j in range(n): + text = plt.text( + i, j, sample[j][i], ha="center", va="center", color="gray", fontsize=12 + ) + +print(f"\nSample bitstring: {''.join(np.array(sample.flatten(), dtype='str'))}") + +###################################################################### +# We can plot the full dataset of :math:`3 \times 3` images. +# + +plt.figure(figsize=(4, 4)) +j = 1 +for i in data: + plt.subplot(4, 4, j) + j += 1 + plt.imshow(np.reshape(i, (n, n)), cmap="gray", vmin=0, vmax=1) + plt.xticks([]) + plt.yticks([]) + +###################################################################### +# Next we compute the integers represented by the valid configurations. We will use them later +# to evaluate the performance of the QCBM. +# + +bitstrings = [] +nums = [] +for d in data: + bitstrings += ["".join(str(int(i)) for i in d)] + nums += [int(bitstrings[-1], 2)] +print(nums) + +###################################################################### +# Using the dataset, we can compute the target probability distribution :math:`\pi(x)` which is visualized below. +# + +probs = np.zeros(2**size) +probs[nums] = 1 / len(data) + +plt.figure(figsize=(12, 5)) +plt.bar(np.arange(2**size), probs, width=2.0, label=r"$\pi(x)$") +plt.xticks(nums, bitstrings, rotation=80) + +plt.xlabel("Samples") +plt.ylabel("Prob. Distribution") +plt.legend(loc="upper right") +plt.subplots_adjust(bottom=0.3) +plt.show() + +###################################################################### +# One can observe that it is a uniform distribution and only the probabilities of the valid configurations are +# non-zero while rest are zero. Next we define a parameterized quantum circuit to train. This quantum circuit +# will act as a generative model, thus, realize a Born machine. +# + +import pennylane as qml + +np.random.seed(42) + + +n_qubits = size +dev = qml.device("default.qubit", wires=n_qubits) + +n_layers = 6 +wshape = qml.StronglyEntanglingLayers.shape(n_layers=n_layers, n_wires=n_qubits) +weights = np.random.random(size=wshape) + + +@qml.qnode(dev) +def circuit(weights): + qml.StronglyEntanglingLayers( + weights=weights, ranges=[1] * n_layers, wires=range(n_qubits) + ) + return qml.probs() + + +jit_circuit = jax.jit(circuit) + +###################################################################### +# Using the ``MMD`` and ``QCBM`` classes defined earlier, we create their respective objects. Using Optax, we +# define the Adam optimizer. +# + +import optax + +bandwidth = jnp.array([0.25, 0.5, 1]) +space = jnp.arange(2**n_qubits) + +mmd = MMD(bandwidth, space) +qcbm = QCBM(jit_circuit, mmd, probs) + +opt = optax.adam(learning_rate=0.1) +opt_state = opt.init(weights) + +###################################################################### +# We can also verify that the summation in the first line of :math:`\mathcal{L}` is equal to the +# expectation values in the second line. +# + +loss_1, px = qcbm.mmd_loss(weights) # squared MMD +loss_2 = mmd.k_expval(px, px) - 2 * mmd.k_expval(px, probs) + mmd.k_expval(probs, probs) +print(loss_1) +print(loss_2) + +###################################################################### +# Training +# ~~~~~~~~ +# +# We define the ``update_step`` method which +# +# - computes the squared MMD loss and gradients. +# +# - apply the update step of our optimizer. +# +# - updates the parameter values. +# +# - calculates the KL divergence. +# +# The KL divergence [#Kull]_ is a measure of how far the predicted distribution :math:`p_\boldsymbol{\theta}(x)` +# is from the target distribution :math:`\pi(x)`. +# + + +@jax.jit +def update_step(params, opt_state): + (loss_val, qcbm_probs), grads = jax.value_and_grad(qcbm.mmd_loss, has_aux=True)( + params + ) + updates, opt_state = opt.update(grads, opt_state) + params = optax.apply_updates(params, updates) + kl_div = -jnp.sum(qcbm.py * jnp.nan_to_num(jnp.log(qcbm_probs / qcbm.py))) + return params, opt_state, loss_val, kl_div + + +history = [] +divs = [] +n_iterations = 100 + +for i in range(n_iterations): + weights, opt_state, loss_val, kl_div = update_step(weights, opt_state) + + if i % 10 == 0: + print(f"Step: {i} Loss: {loss_val:.4f} KL-div: {kl_div:.4f}") + + history.append(loss_val) + divs.append(kl_div) + +###################################################################### +# Visualizing the training results, we get the following plot. +# + +fig, ax = plt.subplots(1, 2, figsize=(12, 5)) + +ax[0].plot(history) +ax[0].set_xlabel("Iteration") +ax[0].set_ylabel("MMD Loss") + +ax[1].plot(divs, color="green") +ax[1].set_xlabel("Iteration") +ax[1].set_ylabel("KL Divergence") +plt.show() + +###################################################################### +# Comparing the target probability distribution with the QCBM predictions, we can see that the +# predictions results in a good approximation. +# + +qcbm_probs = np.array(qcbm.circ(weights)) + +plt.figure(figsize=(12, 5)) + +plt.bar( + np.arange(2**size), probs, width=2.0, label=r"$\pi(x)$", alpha=0.4, color="tab:blue" +) +plt.bar( + np.arange(2**size), + qcbm_probs, + width=2.0, + label=r"$p_\theta(x)$", + alpha=0.9, + color="tab:green", +) + +plt.xlabel("Samples") +plt.ylabel("Prob. Distribution") + +plt.xticks(nums, bitstrings, rotation=80) +plt.legend(loc="upper right") +plt.subplots_adjust(bottom=0.3) +plt.show() + +###################################################################### +# Testing +# ~~~~~~~ +# +# To visualize the performance of the model, we generate samples and compute +# :math:`\chi \equiv` P(:math:`x` is a bar or stripe) which is a measure of +# generation quality. +# + + +def circuit(weights): + qml.StronglyEntanglingLayers( + weights=weights, ranges=[1] * n_layers, wires=range(n_qubits) + ) + return qml.sample() + + +for N in [2000, 20000]: + dev = qml.device("default.qubit", wires=n_qubits, shots=N) + circ = qml.QNode(circuit, device=dev) + preds = circ(weights) + mask = np.any( + np.all(preds[:, None] == data, axis=2), axis=1 + ) # Check for row-wise equality + chi = np.sum(mask) / N + print(f"χ for N = {N}: {chi:.4f}") + +print(f"χ for N = ∞: {np.sum(qcbm_probs[nums]):.4f}") + +###################################################################### +# Few of the samples are plotted below. The ones with a red border represents +# invalid images. +# + +plt.figure(figsize=(8, 8)) +j = 1 +for i, m in zip(preds[:64], mask[:64]): + ax = plt.subplot(8, 8, j) + j += 1 + plt.imshow(np.reshape(i, (n, n)), cmap="gray", vmin=0, vmax=1) + if ~m: + plt.setp(ax.spines.values(), color="red", linewidth=1.5) + plt.xticks([]) + plt.yticks([]) + +###################################################################### +# The model is able to learn the target distribution due to a circuit with larger layers. Also, +# [#Liu]_ has argued that training a QCBM with deeper circuits does not suffer from the +# vanishing gradients problem. +# + +###################################################################### +# Learning a mixture of Gaussians +# ------------------------------- +# +# Now we use a QCBM to model a mixture of Gaussians +# +# .. math:: +# +# \pi(x)\propto e^{-\frac{1}{2}\left(\frac{x-\mu_1}{\sigma}\right)^2}+e^{-\frac{1}{2}\left(\frac{x-\mu_2}{\sigma}\right)^2}, +# +# with :math:`x` ranging from :math:`0 \dots 2^{n}-1,` where :math:`n` is the +# number of qubits. +# + + +def mixture_gaussian_pdf(x, mus, sigmas): + mus, sigmas = np.array(mus), np.array(sigmas) + vars = sigmas**2 + values = [ + (1 / np.sqrt(2 * np.pi * v)) * np.exp(-((x - m) ** 2) / (2 * v)) + for m, v in zip(mus, vars) + ] + values = np.sum([val / sum(val) for val in values], axis=0) + return values / np.sum(values) + + +n_qubits = 6 +x_max = 2**n_qubits +x_input = np.arange(x_max) +mus = [(2 / 7) * x_max, (5 / 7) * x_max] +sigmas = [x_max / 8] * 2 +data = mixture_gaussian_pdf(x_input, mus, sigmas) + +plt.plot(data, label=r"$\pi(x)$") +plt.legend() +plt.show() + +###################################################################### +# In contrast to the Bars and Stripes dataset, the Gaussian mixture distribution exhibits +# a smooth and non-zero probability for every basis state. Similar to the previous experiment, +# we will create an ansatz and measure probabilities. +# + +dev = qml.device("default.qubit", wires=n_qubits) + +n_layers = 4 +wshape = qml.StronglyEntanglingLayers.shape(n_layers=n_layers, n_wires=n_qubits) +weights = np.random.random(size=wshape) + + +@qml.qnode(dev) +def circuit(weights): + qml.StronglyEntanglingLayers( + weights=weights, ranges=[1] * n_layers, wires=range(n_qubits) + ) + return qml.probs() + + +jit_circuit = jax.jit(circuit) + +qml.draw_mpl(circuit, expansion_strategy="device")(weights) +plt.show() + +###################################################################### +# With the quantum circuit defined, we are ready to optimize the squared MMD loss function +# which follows a code similar to the Bars and Stripes case. +# + +bandwidth = jnp.array([0.25, 60]) +space = jnp.arange(2**n_qubits) + +mmd = MMD(bandwidth, space) +qcbm = QCBM(jit_circuit, mmd, data) + +opt = optax.adam(learning_rate=0.1) +opt_state = opt.init(weights) + +history = [] +divs = [] +n_iterations = 100 + +for i in range(n_iterations): + weights, opt_state, loss_val, kl_div = update_step(weights, opt_state) + + if i % 10 == 0: + print(f"Step: {i} Loss: {loss_val:.4f} KL-div: {kl_div:.4f}") + + history.append(loss_val) + divs.append(kl_div) + +###################################################################### +# Finally, we plot the histogram with the probabilities obtained from QCBM and compare +# it with the actual probability distribution. +# + +qcbm_probs = qcbm.circ(weights) + +plt.plot(range(x_max), data, linestyle="-.", label=r"$\pi(x)$") +plt.bar(range(x_max), qcbm_probs, color="green", alpha=0.5, label="samples") + +plt.xlabel("Samples") +plt.ylabel("Prob. Distribution") + +plt.legend() +plt.show() + +###################################################################### +# The histogram (green bars) aligns remarkably well with the exact probability distribution (blue +# dashed curve). +# + +###################################################################### +# Conclusion +# ---------- +# +# In this tutorial, we introduced and implemented Quantum Circuit Born Machine (QCBM) using PennyLane. +# The algorithm is a gradient-based learning involving optimizing the squared MMD loss. We also +# evaluated QCBMs on the Bars and Stripes and two peaks datasets. One can also leverage the differentiable +# learning of the QCBM to solve combinatorial problems where the output is binary strings. +# + +###################################################################### +# References +# ---------- +# +# .. [#Liu] +# +# Liu, Jin-Guo, and Lei Wang. “Differentiable learning of quantum circuit born machines.” Physical +# Review A 98.6 (2018): 062324. +# +# .. [#Ben] +# +# Benedetti, Marcello, et al. “A generative modeling approach for benchmarking and training shallow +# quantum circuits.” npj Quantum Information 5.1 (2019): 45. +# +# .. [#Du] +# +# Du, Yuxuan, et al. "Expressive power of parametrized quantum circuits." Physical Review Research +# 2.3 (2020): 033125. +# +# .. [#Ack] +# +# Ackley, David H., Geoffrey E. Hinton, and Terrence J. Sejnowski. "A learning algorithm for +# Boltzmann machines." Cognitive science 9.1 (1985): 147-169. +# +# .. [#Gret] +# +# Gretton, Arthur, et al. "A kernel method for the two-sample-problem." Advances in neural +# information processing systems 19 (2006). +# +# .. [#Kull] +# +# Kullback, Solomon, and Richard A. Leibler. "On information and sufficiency." The annals +# of mathematical statistics 22.1 (1951): 79-86. +# +# + +###################################################################### +# About the author +# ----------------