890 lines (889 with data), 185.4 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"id": "2CJGEgyVcBoj",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"outputId": "e6feb05d-7444-46d0-ff26-3ee7c6e91dc1"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since beginning of run: 1693295628.532853\n",
"Tue Aug 29 07:53:48 2023\n"
]
}
],
"source": [
"# This cell is added by sphinx-gallery\n",
"# It can be customized to whatever you like\n",
"%matplotlib inline\n",
"# !pip install pennylane\n",
"import time\n",
"seconds = time.time()\n",
"print(\"Time in seconds since beginning of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FSW44zn1cBok"
},
"source": [
"Function Fitting using Quantum Signal Processing\n",
"================================================\n",
"\n",
"::: {.meta}\n",
":property=\\\"og:description\\\": Learn how to create polynomial\n",
"approximations to functions using Quantum Signal Processing (QSP).\n",
":property=\\\"og:image\\\":\n",
"<https://pennylane.ai/qml/demonstrations/function_fitting_qsp/cover.png>\n",
":::\n",
"\n",
"*Author: Jay Soni --- Posted: 24 May 2022. Last updated: 17 April 2023.*\n",
"\n",
"Introduction\n",
"------------\n",
"\n",
"This demo is inspired by the paper ['A Grand Unification of Quantum\n",
"Algorithms'](https://arxiv.org/abs/2105.02859). This paper is centered\n",
"around the Quantum Singular Value Transform (QSVT) protocol and how it\n",
"provides a single framework to generalize some of the most famous\n",
"quantum algorithms like Shor's factoring algorithm, Grover search, and\n",
"more.\n",
"\n",
"The QSVT is a method to apply polynomial transformations to the singular\n",
"values of *any matrix*. This is powerful because from polynomial\n",
"transformations we can generate arbitrary function transformations using\n",
"Taylor approximations. The QSVT protocol is an extension of the more\n",
"constrained Quantum Signal Processing (QSP) protocol which presents a\n",
"method for polynomial transformation of matrix entries in a single-qubit\n",
"unitary operator. The QSVT protocol is sophisticated, but the idea at\n",
"its core is quite simple. By studying QSP, we get a relatively simpler\n",
"path to explore this idea at the foundation of QSVT.\n",
"\n",
"In this demo, we explore the QSP protocol and how it can be used for\n",
"curve fitting. We show how you can fit polynomials, as illustrated in\n",
"the animation below.\n",
"\n",
"{.align-center\n",
"width=\"50.0%\"}\n",
"\n",
"This is a powerful tool that will ultimately allow us to approximate any\n",
"function on the interval $[-1, 1]$ that satisfies certain constraints.\n",
"Before we can dive into function fitting, let's develop some intuition.\n",
"Consider the following single-qubit operator parameterized by\n",
"$a \\in [-1, 1]$:\n",
"\n",
"$$\\begin{aligned}\n",
"\\hat{W}(a) = \\begin{bmatrix} a & i\\sqrt{1 - a^{2}} \\\\ i\\sqrt{1 - a^{2}} & a \\end{bmatrix}.\n",
"\\end{aligned}$$\n",
"\n",
"$\\hat{W}(a)$ is called the *signal rotation operator* (SRO). Using this\n",
"operator, we can construct another operator which we call *signal\n",
"processing operator* (SPO),\n",
"\n",
"$$\\hat{U}_{sp} = \\hat{R}_{z}(\\phi_{0}) \\prod_{k=1}^{d} \\hat{W}(a) \\hat{R}_{z}(\\phi_{k}).$$\n",
"\n",
"The SPO is parameterized by a vector $\\vec{\\phi} \\in \\mathbb{R}^{d+1}$,\n",
"where $d$ is a free parameter which represents the number of repeated\n",
"applications of $\\hat{W}(a)$.\n",
"\n",
"The SPO $\\hat{U}_{sp}$ alternates between applying the SRO $\\hat{W}(a)$\n",
"and parameterized rotations around the z-axis. Let's see what happens\n",
"when we try to compute the expectation value\n",
"$\\langle 0|\\hat{U}_{sp}|0\\rangle$ for the particular case where $d = 2$\n",
"and $\\vec{\\phi} = (0, 0, 0)$ :\n",
"\n",
"$$\\begin{aligned}\n",
"\\begin{align*}\n",
"\\langle 0 |\\hat{U}_{sp}|0\\rangle &= \\langle 0 | \\ \\hat{R}_{z}(0) \\prod_{k=1}^{2} \\hat{W}(a) \\hat{R}_{z}(0) \\ |0\\rangle \\\\\n",
"\\langle 0 |\\hat{U}_{sp}|0\\rangle &= \\langle 0 | \\hat{W}(a)^{2} |0\\rangle \\\\\n",
"\\end{align*}\n",
"\\end{aligned}$$\n",
"\n",
"$$\\begin{aligned}\n",
"\\langle 0 |\\hat{U}_{sp}|0\\rangle = \\langle 0 | \\begin{bmatrix} a & i\\sqrt{1 - a^{2}} \\\\ i\\sqrt{1 - a^{2}} & a \\end{bmatrix} \\ \\circ \\ \\begin{bmatrix} a & i\\sqrt{1 - a^{2}} \\\\ i\\sqrt{1 - a^{2}} & a \\end{bmatrix} |0\\rangle\n",
"\\end{aligned}$$\n",
"\n",
"$$\\begin{aligned}\n",
"\\langle 0|\\hat{U}_{sp}|0\\rangle = \\langle 0| \\begin{bmatrix} 2a^{2} - 1 & 2ai\\sqrt{1 - a^{2}} \\\\ 2ai\\sqrt{1 - a^{2}} & 2a^{2} - 1 \\end{bmatrix} |0\\rangle\n",
"\\end{aligned}$$\n",
"\n",
"$$\\langle 0|\\hat{U}_{sp}|0\\rangle = 2a^{2} - 1$$\n",
"\n",
"Notice that this quantity is a polynomial in $a$. Equivalently, suppose\n",
"we wanted to create a map $S: a \\to 2a^2 - 1$. This expectation value\n",
"would give us the means to perform such a mapping. This may seem oddly\n",
"specific at first, but it turns out that this process can be generalized\n",
"for generating a mapping $S: a \\to \\text{poly}(a)$. The following\n",
"theorem shows us how:\n",
"\n",
"### Theorem: Quantum Signal Processing\n",
"\n",
"Given a vector $\\vec{\\phi} \\in \\mathbb{R}^{d+1}$, there exist complex\n",
"polynomials $P(a)$ and $Q(a)$ such that the SPO, $\\hat{U}_{sp}$, can be\n",
"expressed in matrix form as:\n",
"\n",
"$$\\hat{U}_{sp} = \\hat{R}_{z}(\\phi_{0}) \\prod_{k=1}^{d} \\hat{W}(a) \\hat{R}_{z}(\\phi_{k}),$$\n",
"\n",
"$$\\begin{aligned}\n",
"\\hat{U}_{sp} = \\begin{bmatrix} P(a) & iQ(a)\\sqrt{1 - a^{2}} \\\\ iQ^{*}(a)\\sqrt{1 - a^{2}} & P^{*}(a) \\end{bmatrix},\n",
"\\end{aligned}$$\n",
"\n",
"where $a \\in [-1, 1]$ and the polynomials $P(a)$, $Q(a)$ satisfy the\n",
"following constraints:\n",
"\n",
"- $deg(P) \\leq d \\ $ and $deg(Q) \\leq d - 1$,\n",
"- $P$ has parity $d$ mod 2 and $Q$ has parity, $d - 1$ mod 2\n",
"- $|P|^{2} + (1 - a^{2})|Q|^{2} = 1$.\n",
"\n",
"The third condition is actually quite restrictive because if we\n",
"substitute $a = \\pm 1$, we get the result $|P^{2}(\\pm 1)| = 1$. Thus it\n",
"restricts the polynomial to be pinned to $\\pm 1$ at the end points of\n",
"the domain, $a = \\pm 1$. This condition can be relaxed to\n",
"$|P^{2}(a)| \\leq 1$ by expressing the signal processing operator in the\n",
"Hadamard basis, i.e., $\\langle + |\\hat{U}_{sp}(\\vec{\\phi};a)|+\\rangle$).\n",
"This is equivalent to redefining $P(a)$ such that:\n",
"\n",
"$$P^{'}(a) = \\text{Re}(P(a)) + i\\text{Re}(Q(a))\\sqrt{1 - a^{2}}$$\n",
"\n",
"*This is the convention we follow in this demo.*\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ts0T3hdDcBol"
},
"source": [
"Let\\'s Plot some Polynomials\n",
"============================\n",
"\n",
"Now we put this theorem to the test! In this section we construct the\n",
"SRO $\\hat{W}(a)$, and then use PennyLane to define the SPO. To test the\n",
"theorem we will randomly generate parameters $\\vec{\\phi}$ and plot the\n",
"expectation value $\\langle + |\\hat{U}_{sp}(\\vec{\\phi};a)|+\\rangle$ for\n",
"$a \\in [-1, 1]$.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BeuyFNE2cBom"
},
"source": [
"Next, we introduce a function called `rotation_mat(a)`, which will\n",
"construct the SRO matrix. We can also make a helper function\n",
"(`generate_many_sro(a_vals)`) which, given an array of possible values\n",
"for '$a$', will generate an array of $\\hat{W}(a)$ associated with each\n",
"element. We use Pytorch to construct this array as it will later be used\n",
"as input when training our function fitting model.\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"id": "vOAKUWFUcBom"
},
"outputs": [],
"source": [
"import torch\n",
"\n",
"\n",
"def rotation_mat(a):\n",
" \"\"\"Given a fixed value 'a', compute the signal rotation matrix W(a).\n",
" (requires -1 <= 'a' <= 1)\n",
" \"\"\"\n",
" diag = a\n",
" off_diag = (1 - a**2) ** (1 / 2) * 1j\n",
" W = [[diag, off_diag], [off_diag, diag]]\n",
"\n",
" return W\n",
"\n",
"\n",
"def generate_many_sro(a_vals):\n",
" \"\"\"Given a tensor of possible 'a' vals, return a tensor of W(a)\"\"\"\n",
" w_array = []\n",
" for a in a_vals:\n",
" w = rotation_mat(a)\n",
" w_array.append(w)\n",
"\n",
" return torch.tensor(w_array, dtype=torch.complex64, requires_grad=False)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "L2EBaj75cBom"
},
"source": [
"Now having access to the matrix elements of the SRO, we can leverage\n",
"PennyLane to define a quantum function that will compute the SPO. Recall\n",
"we are measuring in the Hadamard basis to relax the third condition of\n",
"the theorem. We accomplish this by sandwiching the SPO between two\n",
"Hadamard gates to account for this change of basis.\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"id": "aNby7jlFcBom"
},
"outputs": [],
"source": [
"import pennylane as qml\n",
"\n",
"\n",
"def QSP_circ(phi, W):\n",
" \"\"\"This circuit applies the SPO. The components in the matrix\n",
" representation of the final unitary are polynomials!\n",
" \"\"\"\n",
" qml.Hadamard(wires=0) # set initial state |+>\n",
" for angle in phi[:-1]:\n",
" qml.RZ(angle+0.1, wires=0)\n",
" qml.QubitUnitary(W, wires=0)\n",
"\n",
" qml.RZ(phi[-1], wires=0) # final rotation\n",
" qml.Hadamard(wires=0) # change of basis |+> , |->\n",
" return"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZC9gzKXOcBon"
},
"source": [
"Finally, we randomly generate the vector $\\vec{\\phi}$ and plot the\n",
"expectation value $\\langle +|\\hat{U}_{sp}|+\\rangle$ as a function of\n",
"$a$. In this case we choose $d = 5$. We expect to observe the following:\n",
"\n",
"- Since $d$ is odd, we expect all of the polynomials we plot to have\n",
" odd symmetry\n",
"- Since $d = 5$, we expect none of the polynomials will have terms \\~\n",
" $O(a^6)$ or higher\n",
"- All of the polynomials are bounded by $\\pm1$\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 430
},
"id": "dIFHdGdvcBon",
"outputId": "97d6dfc0-94c1-4dc8-fb75-e88bb0a606a8"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
}
],
"source": [
"import math\n",
"import matplotlib.pyplot as plt\n",
"\n",
"d = 5\n",
"a_vals = torch.linspace(-1, 1, 50)\n",
"w_mats = generate_many_sro(a_vals)\n",
"\n",
"gen = torch.Generator()\n",
"gen.manual_seed(444422) # set random seed for reproducibility\n",
"\n",
"for i in range(5):\n",
" phi = torch.rand(d + 1, generator=gen) * 2 * torch.tensor([math.pi], requires_grad=False)\n",
" matrix_func = qml.matrix(QSP_circ)\n",
" y_vals = [matrix_func(phi, w)[0, 0].real for w in w_mats]\n",
"\n",
" plt.plot(a_vals, y_vals, label=f\"poly #{i}\")\n",
"\n",
"plt.vlines(0.0, -1.0, 1.0, color=\"black\")\n",
"plt.hlines(0.0, -1.0, 1.0, color=\"black\")\n",
"plt.legend(loc=1)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZZ_MLQ2EcBon"
},
"source": [
"{.align-center\n",
"width=\"50.0%\"}\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kHiHHvzIcBon"
},
"source": [
"Exactly as predicted, all of these conditions are met!\n",
"\n",
"- All curves have odd symmetry\n",
"- Qualitatively, the plots look similar to polynomials of low degree\n",
"- Each plot does not exceed $\\pm1$ !\n",
"\n",
"Function Fitting with Quantum Signal Processing\n",
"===============================================\n",
"\n",
"Another observation we can make about this theorem is the fact that it\n",
"holds true in both directions: If we have two polynomials $P(a)$ and\n",
"$Q(a)$ that satisfy the conditions of the theorem, then there exists a\n",
"$\\vec{\\phi}$ for which we can construct a signal processing operator\n",
"which maps $a \\to P(a)$.\n",
"\n",
"In this section we try to answer the question:\n",
"\n",
"**Can we learn the parameter values of** $\\vec{\\phi}$ **to transform our\n",
"signal processing operator polynomial to fit a given function?**\n",
"\n",
"In order to answer this question, we leverage the power of machine\n",
"learning. In this demo we assume you are familiar with some concepts\n",
"from quantum machine learning, for a refresher checkout this [blog post\n",
"on\n",
"QML](https://pennylane.ai/blog/2021/10/how-to-start-learning-quantum-machine-learning/).\n",
"We begin by building a machine learning model using Pytorch. The\n",
"`__init__()` method handles the random initialization of our parameter\n",
"vector $\\vec{\\phi}$. The `forward()` method takes an array of signal\n",
"rotation matrices $\\hat{W}(a)$ for varying $a$, and produces the\n",
"predicted $y$ values.\n",
"\n",
"Next we leverage the PennyLane function\n",
"[qml.matrix()](https://pennylane.readthedocs.io/en/stable/code/api/pennylane.matrix.html?highlight=qml%20matrix#pennylane.matrix),\n",
"which accepts our quantum function (it can also accept quantum tapes and\n",
"QNodes) and returns its unitary matrix representation. We are interested\n",
"in the real value of the top left entry, this corresponds to $P(a)$.\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"id": "waKHRXcqcBon"
},
"outputs": [],
"source": [
"torch_pi = torch.Tensor([math.pi])\n",
"\n",
"\n",
"class QSP_Func_Fit(torch.nn.Module):\n",
" def __init__(self, degree, num_vals, random_seed=None):\n",
" \"\"\"Given the degree and number of samples, this method randomly\n",
" initializes the parameter vector (randomness can be set by random_seed)\n",
" \"\"\"\n",
" super().__init__()\n",
" if random_seed is None:\n",
" self.phi = torch_pi * torch.rand(degree + 1, requires_grad=True)\n",
"\n",
" else:\n",
" gen = torch.Generator()\n",
" gen.manual_seed(random_seed)\n",
" self.phi = torch_pi * torch.rand(degree + 1, requires_grad=True, generator=gen)\n",
"\n",
" self.phi = torch.nn.Parameter(self.phi)\n",
" self.num_phi = degree + 1\n",
" self.num_vals = num_vals\n",
"\n",
" def forward(self, omega_mats):\n",
" \"\"\"PennyLane forward implementation\"\"\"\n",
" y_pred = []\n",
" generate_qsp_mat = qml.matrix(QSP_circ)\n",
"\n",
" for w in omega_mats:\n",
" u_qsp = generate_qsp_mat(self.phi, w)\n",
" P_a = u_qsp[0, 0] # Taking the (0,0) entry of the matrix corresponds to <0|U|0>\n",
" y_pred.append(P_a.real)\n",
"\n",
" return torch.stack(y_pred, 0)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "OJRrAm7ucBoo"
},
"source": [
"Next we create a `Model_Runner` class to handle running the\n",
"optimization, storing the results, and providing plotting functionality:\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"id": "8olPljw6cBoo"
},
"outputs": [],
"source": [
"class Model_Runner:\n",
" def __init__(self, model, degree, num_samples, x_vals, process_x_vals, y_true):\n",
" \"\"\"Given a model and a series of model specific arguments, store everything in\n",
" internal attributes.\n",
" \"\"\"\n",
" self.model = model\n",
" self.degree = degree\n",
" self.num_samples = num_samples\n",
"\n",
" self.x_vals = x_vals\n",
" self.inp = process_x_vals(x_vals)\n",
" self.y_true = y_true\n",
"\n",
" def execute(\n",
" self, random_seed=13_02_1967, max_shots=25000, verbose=True\n",
" ): # easter egg: oddly specific seed?\n",
" \"\"\"Run the optimization protocol on the model using Mean Square Error as a loss\n",
" function and using stochastic gradient descent as the optimizer.\n",
" \"\"\"\n",
" model = self.model(degree=self.degree, num_vals=self.num_samples, random_seed=random_seed)\n",
"\n",
" criterion = torch.nn.MSELoss(reduction=\"sum\")\n",
" optimizer = torch.optim.SGD(model.parameters(), lr=1e-5)\n",
"\n",
" t = 0\n",
" loss_val = 1.0\n",
"\n",
" while (t <= max_shots) and (loss_val > 0.25):\n",
"\n",
" self.y_pred = model(self.inp)\n",
"\n",
" if t == 1:\n",
" self.init_y_pred = self.y_pred\n",
"\n",
" # Compute and print loss\n",
" loss = criterion(self.y_pred, self.y_true)\n",
" loss_val = loss.item()\n",
"\n",
" if (t % 1000 == 0) and verbose:\n",
" print(f\"---- iter: {t}, loss: {round(loss_val, 4)} -----\")\n",
"\n",
" # Perform a backward pass and update weights.\n",
" optimizer.zero_grad()\n",
" loss.backward()\n",
" optimizer.step()\n",
"\n",
" t += 1\n",
"\n",
" self.model_params = model.phi\n",
"\n",
" def plot_result(self, show=True):\n",
" \"\"\"Plot the results\"\"\"\n",
" plt.plot(self.x_vals, self.y_true.tolist(), \"--b\", label=\"target func\")\n",
" plt.plot(self.x_vals, self.y_pred.tolist(), \".g\", label=\"optim params\")\n",
" plt.plot(self.x_vals, self.init_y_pred.tolist(), \".r\", label=\"init params\")\n",
" plt.legend(loc=1)\n",
"\n",
" if show:\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ubl_AjJqcBoo"
},
"source": [
"Now that we have a model, lets first attempt to fit a polynomial. We\n",
"expect this to perform well when the target polynomial also obeys the\n",
"symmetry and degree constraints that our quantum signal processing\n",
"polynomial does. To do this, we defined a function `custom_poly(x)`\n",
"which implements the target polynomial. In this case, we (arbitrarily)\n",
"choose the target polynomial:\n",
"\n",
"$$y = 4x^{5} - 5x^{3} + x$$\n",
"\n",
"Lets see how well we can fit this polynomial!\n",
"\n",
"> ::: {.note}\n",
"> ::: {.title}\n",
"> Note\n",
"> :::\n",
">\n",
"> Depending on the initial parameters, training can take anywhere from\n",
"> 10 - 30 mins\n",
"> :::\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 742
},
"id": "n4R-bELScBoo",
"outputId": "a249426a-9f3b-443a-d8ca-26d899ab56f5"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"---- iter: 0, loss: 11.9546 -----\n",
"---- iter: 1000, loss: 9.9639 -----\n",
"---- iter: 2000, loss: 8.0088 -----\n",
"---- iter: 3000, loss: 6.2046 -----\n",
"---- iter: 4000, loss: 4.6952 -----\n",
"---- iter: 5000, loss: 3.5372 -----\n",
"---- iter: 6000, loss: 2.6919 -----\n",
"---- iter: 7000, loss: 2.0818 -----\n",
"---- iter: 8000, loss: 1.6347 -----\n",
"---- iter: 9000, loss: 1.2985 -----\n",
"---- iter: 10000, loss: 1.0393 -----\n",
"---- iter: 11000, loss: 0.8356 -----\n",
"---- iter: 12000, loss: 0.6734 -----\n",
"---- iter: 13000, loss: 0.5432 -----\n",
"---- iter: 14000, loss: 0.4385 -----\n",
"---- iter: 15000, loss: 0.3542 -----\n",
"---- iter: 16000, loss: 0.2863 -----\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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p6cjPT0dEydOLPP5Zs2ahSFDhuDYsWNo0aIFBg0ahJEjRyIuLg6HDh2CEAJjxoypsN2TJk3ChAkTcPToUURERKBv3764du0aAECn00GtVmPDhg04ffo0pk+fjjfeeANff/21wTF27dqFs2fPYufOndi6dSsA4N69e5g1axb++OMPbN68GWlpaRg2bFiJ53/77bfxySefYN++fbh06RKee+45LFy4EF988QV++OEH7NixA4sWLQIApKenY+DAgXjxxReRnJyMPXv24Omnn4YQosLzrBJRDWVnZwsAIjs729ZNIaLq5tIlIVxchACKLkql3O7A7ty5I06fPi3u3LlT6WPs/t9ugbdR4pKYmmi+hhaTk5MjatasKdatW6fflpeXJ/z8/MS8efOEEEIkJiYKAGL9+vX6fa5duyY8PDzEV199JYQQYtWqVcLLy6vE8QMCAsSHH36ovw1ATJ06VX87KSlJABDx8fH6bV9++aVwd3cvs82pqakCgJg7d65+271794RarRbvvfdemY97+eWXxTPPPKO/PXToUOHj4yNyc3PLfIwQQhw8eFAAEDdv3hRCFP0+fvrpJ/0+c+bMEQDE+fPn9dtGjhwpoqOjhRBCHD58WAAQaWlp5T5XofL+lkz5/GYPDhGRNXFZdpmC6wfDRWH4saRUKBFUzzIrus6fP4979+7h0Ucf1W+rWbMmOnbsiOTkZIN9IyIi9D/Xq1cPISEhJfYxRuvWrfU/+/j4AABCQ0MNtt29exdarbbc4xRvT40aNdChQweD9ixevBjt27dHw4YNUbt2bSxbtgwXL140OEZoaGiJeTeHDx9G37590aRJE9SpUwddunQBgBKPvf88PD090axZM4NthUNbbdq0Qbdu3RAaGopnn30Wy5cvx40bN8o9P3NggENEZE1cll0mtUqNZX2WQamQK7qUCiWW9lnq0BON71ezZk39zwqFosxtuvuDYBOsX78eEydORExMDHbs2IFjx45h+PDhyMvLM9ivVq1aBrdv3bqF6OhoqFQqrFu3DgcPHsSmTZsAoMRj729z8duF2wrPQalUYufOnfjxxx/RqlUrLFq0CCEhIUhNTa30ORqDAQ4RkTVxWXa5YtrFIG1cGhKHJiJtXBpi2sVY7LmaN28OV1dX7N27V7/t3r17OHjwIFq1amWw7++//67/+caNG/jvf/+Lli1bAgBc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\n"
},
"metadata": {}
}
],
"source": [
"import numpy as np\n",
"\n",
"d = 9 # dim(phi) = d + 1,\n",
"num_samples = 50\n",
"\n",
"\n",
"def custom_poly(x):\n",
" \"\"\"A custom polynomial of degree <= d and parity d % 2\"\"\"\n",
" return torch.tensor(4 * x**5 - 5 * x**3 + x, requires_grad=False, dtype=torch.float)\n",
"\n",
"\n",
"a_vals = np.linspace(-1, 1, num_samples)\n",
"y_true = custom_poly(a_vals)\n",
"\n",
"qsp_model_runner = Model_Runner(QSP_Func_Fit, d, num_samples, a_vals, generate_many_sro, y_true)\n",
"\n",
"qsp_model_runner.execute()\n",
"qsp_model_runner.plot_result()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5Q2gTY65cBoo"
},
"source": [
"::: {.rst-class}\n",
"sphx-glr-script-out\n",
"\n",
"Out:\n",
"\n",
"``` {.none}\n",
"---- iter: 0, loss: 13.5938 -----\n",
"---- iter: 1000, loss: 11.8809 -----\n",
"---- iter: 2000, loss: 10.229 -----\n",
"---- iter: 3000, loss: 8.6693 -----\n",
"---- iter: 4000, loss: 7.2557 -----\n",
"---- iter: 5000, loss: 6.0084 -----\n",
"---- iter: 6000, loss: 4.9197 -----\n",
"---- iter: 7000, loss: 3.9801 -----\n",
"---- iter: 8000, loss: 3.1857 -----\n",
"---- iter: 9000, loss: 2.5312 -----\n",
"---- iter: 10000, loss: 2.0045 -----\n",
"---- iter: 11000, loss: 1.5873 -----\n",
"---- iter: 12000, loss: 1.2594 -----\n",
"---- iter: 13000, loss: 1.0021 -----\n",
"---- iter: 14000, loss: 0.7997 -----\n",
"---- iter: 15000, loss: 0.6397 -----\n",
"---- iter: 16000, loss: 0.5127 -----\n",
"```\n",
"\n",
"{.align-center\n",
"width=\"50.0%\"}\n",
":::\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "OLd8Gl3YcBoo"
},
"source": [
"We were able to fit that polynomial quite well! Lets try something more\n",
"challenging: fitting a non-polynomial function. One thing to keep in\n",
"mind is the symmetry and bounds constraints on our polynomials. If our\n",
"target function does not satisfy them as well, then we cannot hope to\n",
"generate a good polynomial fit, regardless of how long we train for.\n",
"\n",
"A good non-polynomial candidate to fit to, that obeys our constraints,\n",
"is the step function. Let's try it!\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 904
},
"id": "sbrwU-7bcBop",
"outputId": "a9115a23-e743-4199-b40c-430ebf590020"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"---- iter: 0, loss: 35.1845 -----\n",
"---- iter: 1000, loss: 20.2562 -----\n",
"---- iter: 2000, loss: 12.4083 -----\n",
"---- iter: 3000, loss: 8.7749 -----\n",
"---- iter: 4000, loss: 7.0312 -----\n",
"---- iter: 5000, loss: 6.1235 -----\n",
"---- iter: 6000, loss: 5.6099 -----\n",
"---- iter: 7000, loss: 5.2969 -----\n",
"---- iter: 8000, loss: 5.0933 -----\n",
"---- iter: 9000, loss: 4.9533 -----\n",
"---- iter: 10000, loss: 4.8522 -----\n",
"---- iter: 11000, loss: 4.7761 -----\n",
"---- iter: 12000, loss: 4.7167 -----\n",
"---- iter: 13000, loss: 4.669 -----\n",
"---- iter: 14000, loss: 4.6297 -----\n",
"---- iter: 15000, loss: 4.5966 -----\n",
"---- iter: 16000, loss: 4.5684 -----\n",
"---- iter: 17000, loss: 4.5438 -----\n",
"---- iter: 18000, loss: 4.5222 -----\n",
"---- iter: 19000, loss: 4.5032 -----\n",
"---- iter: 20000, loss: 4.4861 -----\n",
"---- iter: 21000, loss: 4.4708 -----\n",
"---- iter: 22000, loss: 4.4569 -----\n",
"---- iter: 23000, loss: 4.4444 -----\n",
"---- iter: 24000, loss: 4.4329 -----\n",
"---- iter: 25000, loss: 4.4225 -----\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAGdCAYAAAAfTAk2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABnVUlEQVR4nO3deVxU5f4H8M/MsCsDogjSIGCQSy64JGGLXOWKpabVr7S8uURimpWZuZRrZlpZmeVNKdS817K61zYrzQxblFwxW9TAC+qooIIygsoy8/z+mGZgZBhmYNYzn/frdV7MnHnOmeeZM3C+PKtMCCFAREREJCFyV2eAiIiIyN4Y4BAREZHkMMAhIiIiyWGAQ0RERJLDAIeIiIgkhwEOERERSQ4DHCIiIpIcBjhEREQkOT6uzoAr6HQ6nD59GsHBwZDJZK7ODhEREVlBCIFLly4hKioKcrnlOhqvDHBOnz6N6OhoV2eDiIiImuDkyZNQqVQW03hlgBMcHAxA/wEplUoX54aIiIisodFoEB0dbbyPW+KVAY6hWUqpVDLAISIi8jDWdC9hJ2MiIiKSHAY4REREJDkMcIiIiEhyvLIPDhEROYYQAjU1NdBqta7OCnkghUIBHx8fu0zhwgCHiIjsoqqqCmfOnMHly5ddnRXyYEFBQWjXrh38/PyadR4GOERE1Gw6nQ4FBQVQKBSIioqCn58fJ1IlmwghUFVVhXPnzqGgoAAJCQmNTuZnCQMcIiJqtqqqKuh0OkRHRyMoKMjV2SEPFRgYCF9fXxw/fhxVVVUICAho8rnYyZiIiOymOf9xEwH2+w7xm0hERESS49AA54cffsCwYcMQFRUFmUyGTz/9tNFjduzYgV69esHf3x/x8fFYt25dvTQrV65EbGwsAgICkJSUhD179tg/80RERG7s8uXLuPfee6FUKiGTyXDx4kVXZ8mtODTAqaioQI8ePbBy5Uqr0hcUFGDIkCH429/+hoMHD2Lq1Kl45JFHsHXrVmOaDz/8ENOmTcP8+fNx4MAB9OjRA2lpaTh79qyjikFERBKVkpKCqVOnujobJqzN03vvvYcff/wRu3btwpkzZxASEuL4zHkQh3YyvuOOO3DHHXdYnX7VqlWIi4vDq6++CgDo3LkzfvrpJ7z++utIS0sDALz22muYMGECxo8fbzzmyy+/xJo1azBr1iz7F4KIiIzUGjXySvKQ0DoBKqXl1Zy9SVVVVbOHNdvq2LFj6Ny5M7p27erU9/UUbjWKKicnB6mpqSb70tLSjJFsVVUV9u/fj9mzZxtfl8vlSE1NRU5OToPnraysRGVlpfG5RqOxb8aJyG1VVgLLlwNnzuifDxoE3Hmn/nFxMbBkScPHpqQAI0boH1+4ACxc2HDafv2A++/XP66oAJ57ruG0ffoA//iH/nF1NfDMMw2n7d4dePjh2udPPQUIYT5tp07Ao4/WPp85U19+czp0AJ54ovb53LnApUvm06pUwPTpQNaBLGRszoBO6CATcgy4nImuVekAAKUSSEsDWrQAIq+rwtWaqwjwCUDJWT9UV5s/r48PEBVV+7y4uOH8yuX6fBicPQtcvWo+rUwGREfXPj93DrhypX66p58eh++//x7ff/893njjDQDA/v0FaNUqGrNmZWDXru9w7lwRrruuPR56aDIefvhJqFT6vIwbNw5nz17EjTfehPXrV8LPzx87dxZg375dmDt3Mo4dO4KuXbtizpw5uPvuu/H997mIjU0EABw9+hsWL34Ge/f+iKCgFrjttkFYufJ1tGvXBuPG1c/TTz8VIDo61pjvyEhg0KAUfP/993+VV4abb+6PDz/cgZgYGTIzP0Fa2ggAQEQEEBERiuXLl+Oee8bh118LceutcVi16r9Yt+5NHDy4G3FxCVi8eBXuuCMZhkFL27btxLx5z+HgwT3w8/NHYmJfvPXWRoSEtAIAhIcDgYH6tBUVQEmJ6WcbHAy0amX++jiLWwU4RUVFiIiIMNkXEREBjUaDK1eu4MKFC9BqtWbTHDlypMHzLlmyBAst/WUiIsnauhWoW7kbHFwb4Fy4APx1DzFLoagNcMrLLae9erU2wLl61XLaf/yjNsDRai2nvece0wBnxQpApzOfNi3NNMD55z/1+Tbn1ltNA5xV76txXpcHlCYAGtOamV69gFEZamNwAwBCpsP2wInYvjoN0KgQE6MP8kovl+Js8Wnjsb4VMdAUhZvNg68vEBYG4021tBQ4f958fn18gNata2+qFy7og5xrBQbWD3AuXgTKyuqnfeyxN3D06J9ISuqKRYueBwBoNOEoLtZBqVRh8eKPERLSGocO7cKLL2bA378dZsy433j8Dz9sh0ymxIoV2wAA//ufBg8/PAz9+t2J+fPfR2DgcUyfPhWAPgg4exa4dOkiRo4cgOHDH8GUKa+jsvIK3nxzJh544H7s2PEd3njjDfz225+Iju6KiROf/6vs4SZlbdMG2LRpE2bNmoUDB37DCy9sgq+vnzFNWVntZxMWVnvc5cu1gcjSpc/hySeXYfr0BLz99nN47LEH8Ntv+QgI8MHBgwcxbNhADB36MB5//A0oFD7Yvz8bxcVaYwCqVNZei6tX618LmYwBjlPMnj0b06ZNMz7XaDSIrvvtJyLJKi3V/7z+emDkSOD222tfa90aePbZho+95Zbax8HBltP27Vv7ODDQctrExNrHCoXltDfeaPp89uyGa3ASEkyfT58OVFWZTxsTU/s460AWSsZkANDXzNyhzUSiLt34elQUkFeSZwxujORajH48HzFChZYtgeCQGtQEnTZJUt3iOG6/3XyAA+iDzS+/1D9u3Rro3dt8bQsA9O8P7NihfxwW9ldAVWqaRq2uf1xYGGB+ap4QtGjhh6CgIERGRgIA/PyAFi0UWLCg9p/iPn3icOxYDn766SPMnFkb4LRo0QJvvfWusWnqX/9aBblchjfffAcBAQGIjOyC4uJTmDBhAlq2BNq1Az766C10794TL7zwovE8N9ywBn37RuPPP//EDTfcgIAAP7RuHYRu3SLNfg6+vkBQUBiCgoIQGOhXL12rVvr3MqStzS/Qtq3+8WOPTcd99w356/NZiAEDbsTJk/kIC+uEl19+GT179sEbb/zTeOytt5p+Ef39ax8HBta+n0HLlmaz7lRuFeBERkaiuLjYZF9xcTGUSiUCAwOhUCigUCjMpjF8Oc3x9/eHf92rQURew/AfZ7duwOLFpq+Fh9ff15DQUOvTBgVZn9bX1/q0APDCC9annT+/8TRqjb5mRqC2Zmar70Ssnppm0sdGrUmAXCY3CXIUMgWWzoiHSqn/L/5wXg2aswJV27b6//ytER6ubyq61nXX1d/XunXD5/H3N31PQ43HypUrsWbNGpw4cQJXrlxBVVUVEhMTTd6ze/duiIur7XdTXHwUiYndcf31tZPT9f0r8g0O1uetoOAX7NqVjY4d60cAx44dww033AAfH32AYK4s11Io6qdr3dr8scHB+uYtAOjfv7sxTVCQPjopKzsLoBMOHjyI++67z6r31x/fUADpWm4V4CQnJ+Orr74y2bdt2zYkJycDAPz8/NC7d29s374dI/6qN9bpdNi+fTumTJni7OwSkQcwBDj8H8c8czUzWqFFfmm+SYCjUqqQOTQTEzdPhFZooZApsHroapM0PnIfaM2EOKVlVfBTmHbArdLq++m08A8AUPuapQGx1wY0hYWNl68pNm7ciOnTp+PVV19FcnIygoOD8corr2D37t0m6Vq0aGHzucvLyzFs2DC89NJL9V5rd201SBPIZDKIa6r4qs10gvKtU7VjWFJD91fbZ6Ch7cnDOTTAKS8vR35+vvF5QUEBDh48iLCwMLRv3x6zZ8/GqVOnsH79egDAo48+irfeegszZszAww8/jO+++w4fffQRvjTUXwKYNm0axo4diz59+qBv375Yvnw5KioqjKOqiIjqYoBjWUJr8zUz8WHx9dKm90pHWnwa8kvzER8WX28UlY/cB61btsbpq7XNVDEhMWjVwjS4OVdxDsfLj+ufXAViEIPwFvpmLFtihibEF/X4+fnVW/l8586d6NevHyZPnmzcd+zYsUbP1bFjR/z73/9GZWWlsdVg7969Jml69eqF//73v4iNjYWPj/lbsLk8WSs8PBxnDD3qAeTl5Vm9+Gm1thqaSg26duuK7du3e3zfVYfOg7Nv3z707NkTPXv2BKAPTnr27Il58+YBAM6cOYMTJ04Y08fFxeHLL7/Etm3b0KNHD7z66qt49913jUPEAWDkyJFYtmwZ5s2bh8TERBw8eBBbtmyp1/GYiAjQ9/FYtw5IT280qVcy1MwoZAoAMFszc236lNiUBl8PCwpD94ju6Ni6I7pHdDcGLgZV2iocLztusu942XFUaRvoLORgsbGx2L17NwoLC3H+/HnodDokJCRg37592Lp1K/7880/MnTu3XqBizoMPPgidToeMjAwcPnwYW7duxbJlywDU1pI89thjKC0txQMPPIC9e/fi2LFj2Lp1K8aPH28MaszlyVoDBgzAW2+9hdzcXOzbtw+PPvqoSW2NJf+78D/8WfIn7kq/C3v37sXkyZNx6NAhHDlyBG+//TbON9QD3F0JL1RWViYAiLKyMldnhYjI4U6WnRTf/e87cbLspMU02QXZFtNYcuXKFfHHH3+IK1euWExXdrVM7D21t96muapp0vs219GjR8XNN98sAgMDBQBRUFAgrl69KsaNGydCQkJEaGiomDRpkpg1a5bo0aOH8bixY8eK4cOH1zvfzp07Rffu3YWfn5/o3bu3eP/99wUAceTI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\n"
},
"metadata": {}
}
],
"source": [
"d = 9 # dim(phi) = d + 1,\n",
"num_samples = 50\n",
"\n",
"\n",
"def step_func(x):\n",
" \"\"\"A step function (odd parity) which maps all values <= 0 to -1\n",
" and all values > 0 to +1.\n",
" \"\"\"\n",
" res = [-1.0 if x_i <= 0 else 1.0 for x_i in x]\n",
" return torch.tensor(res, requires_grad=False, dtype=torch.float)\n",
"\n",
"\n",
"a_vals = np.linspace(-1, 1, num_samples)\n",
"y_true = step_func(a_vals)\n",
"\n",
"qsp_model_runner = Model_Runner(QSP_Func_Fit, d, num_samples, a_vals, generate_many_sro, y_true)\n",
"\n",
"qsp_model_runner.execute()\n",
"qsp_model_runner.plot_result()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hrhFnaMicBop"
},
"source": [
"::: {.rst-class}\n",
"sphx-glr-script-out\n",
"\n",
"Out:\n",
"\n",
"``` {.none}\n",
"---- iter: 0, loss: 33.8345 -----\n",
"---- iter: 1000, loss: 19.0937 -----\n",
"---- iter: 2000, loss: 11.6557 -----\n",
"---- iter: 3000, loss: 8.2853 -----\n",
"---- iter: 4000, loss: 6.6824 -----\n",
"---- iter: 5000, loss: 5.8523 -----\n",
"---- iter: 6000, loss: 5.3855 -----\n",
"---- iter: 7000, loss: 5.1036 -----\n",
"---- iter: 8000, loss: 4.9227 -----\n",
"---- iter: 9000, loss: 4.8004 -----\n",
"---- iter: 10000, loss: 4.7138 -----\n",
"---- iter: 11000, loss: 4.6502 -----\n",
"---- iter: 12000, loss: 4.6018 -----\n",
"---- iter: 13000, loss: 4.5638 -----\n",
"---- iter: 14000, loss: 4.5333 -----\n",
"---- iter: 15000, loss: 4.5082 -----\n",
"---- iter: 16000, loss: 4.4872 -----\n",
"---- iter: 17000, loss: 4.4693 -----\n",
"---- iter: 18000, loss: 4.4537 -----\n",
"---- iter: 19000, loss: 4.4401 -----\n",
"---- iter: 20000, loss: 4.4281 -----\n",
"---- iter: 21000, loss: 4.4174 -----\n",
"---- iter: 22000, loss: 4.4078 -----\n",
"---- iter: 23000, loss: 4.3991 -----\n",
"---- iter: 24000, loss: 4.3912 -----\n",
"---- iter: 25000, loss: 4.3839 -----\n",
"```\n",
"\n",
"{.align-center\n",
"width=\"50.0%\"}\n",
":::\n"
]
},
{
"cell_type": "code",
"source": [
"seconds = time.time()\n",
"print(\"Time in seconds since end of run:\", seconds)\n",
"local_time = time.ctime(seconds)\n",
"print(local_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 0
},
"id": "-iqvB4zXku3B",
"outputId": "de0c38a3-8099-4819-d0ca-8b1288137dae"
},
"execution_count": 18,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time in seconds since end of run: 1693310405.2955284\n",
"Tue Aug 29 12:00:05 2023\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QWCru-kdcBop"
},
"source": [
"Conclusion\n",
"==========\n",
"\n",
"In this demo, we explored the Quantum Signal Processing theorem, which\n",
"is a method to perform polynomial transformations on the entries of the\n",
"SRO $\\hat{W}(a)$. This polynomial transformation arises from the\n",
"repeated application of $\\hat{W}(a)$ and the parameterized Z-axis\n",
"rotations $e^{i \\phi \\hat{Z}}$. Note, the SRO is itself a\n",
"transformation, in this case a rotation around the X-axis by\n",
"$\\theta = -2 \\cos^{-1}(a)$, which rotates our basis. Thus the underlying\n",
"principal of quantum signal processing is that we can generate\n",
"polynomial transformations through parameterized rotations along a\n",
"principal axis followed by change of basis transformations which\n",
"re-orients this axis.\n",
"\n",
"This is the same principal at the heart of QSVT. In this case the\n",
"subspace in which we apply our parameterized rotations is defined by the\n",
"singular vectors, the change of basis transformation takes us between\n",
"these subspaces and this allows us to apply polynomial transformations\n",
"on the singular values of our matrix of interest.\n",
"\n",
"We also showed that one could use a simple gradient descent model to\n",
"train a parameter vector $\\vec{\\phi}$ to generate reasonably good\n",
"polynomial approximations of arbitrary functions (provided the function\n",
"satisfied the same constraints). This isn\\'t the only way to compute the\n",
"optimal values. It turns out there exist *efficient* algorithms for\n",
"explicitly computing the optimal values for $\\vec{\\phi}$ known as\n",
"\\\"Remez-type exchange algorithms\\\" for analytic function fitting. If you\n",
"want to explore other approaches to function fitting, checkout this\n",
"[demo](https://pennylane.ai/qml/demos/quantum_neural_net.html) where we\n",
"use a photonic neural network for function fitting.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Kg7gBQNScBop"
},
"source": [
"{.align-center\n",
"width=\"50.0%\"}\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3vu4e3m1cBop"
},
"source": [
"References\n",
"==========\n",
"\n",
"\\[1\\]: *John M. Martyn, Zane M. Rossi, Andrew K. Tan, Isaac L. Chuang.\n",
"\"A Grand Unification of Quantum Algorithms\"* [PRX Quantum 2,\n",
"040203](https://arxiv.org/abs/2105.02859)*, 2021.*\n",
"\n",
"About the author\n",
"================\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.17"
},
"colab": {
"provenance": []
}
},
"nbformat": 4,
"nbformat_minor": 0
}