{ "cells": [ { "cell_type": "markdown", "id": "94c39534", "metadata": {}, "source": [ "# First Glance at QKAN and DARUAN\n", "\n", "Quantum-inspired Kolmogorov-Arnold Network (QKAN) is a novel approach to integrate the concept of Quantum Variational Activation Function (QVAF) into KANs.\n", "We use single qubit data reuploading circuit as a quantum-inspired activation function, DatA Re-Uploading ActivatioN (DARUAN), to enhance the expressivity of KANs." ] }, { "cell_type": "markdown", "id": "57659fcf", "metadata": {}, "source": [ "## DatA Re-Uploading ActivatioN (DARUAN)\n", "\n", "![DARUAN](../fig/daruan.png)\n", "\n", "While the word **daruan** may evoke the traditional Chinese string instrument, in our context, **DARUAN** refers to a **quantum-inspired activation function** derived from the concept of **data re-uploading circuits**.\n", "\n", "DARUAN leverages the architecture of data re-uploading to build a scalable and expressive **quantum variational activation layer**. Each block consists of fixed data encoding interleaved with **trainable unitaries**, forming a variational circuit capable of approximating both smooth **periodic** and **non-periodic** functions.\n", "\n", "The circuit outputs the **expectation value of a Pauli observable** (typically $\\sigma_z$), which is used as the **nonlinear transformation** (activation) applied to the neuron's input.\n", "\n", "In the figure below, DARUAN acts as a variational activation function (VAF) within a perceptron. Classical data is re-uploaded multiple times into the quantum circuit, and the final output is obtained via measurement:\n", "\n", "![DARUAN in Perceptron](../fig/DARUAN-perceptron.png)\n", "\n", "### Layer Extension Mechanism\n", "\n", "A key feature of DARUAN is its architectural **flexibility** through what we call **layer extension**—a mechanism that progressively increases the number of re-uploading repetitions (or depth of the variational circuit). This enables the model to:\n", "\n", "- Scale its expressivity on demand\n", "- Retain and refine previously learned features\n", "- Avoid catastrophic forgetting during deeper training\n", "\n", "### Practical Advantages\n", "\n", "- **Hardware-efficient**: Implemented using only single-qubit rotations and measurements\n", "- **NISQ-compatible**: Suitable for near-term quantum devices\n", "- **Expressive**: Capable of approximating a wide class of functions with minimal depth\n", "\n", "> DARUAN demonstrates that simple quantum-inspired modules can serve as powerful building blocks for classical or hybrid neural networks, bridging ideas from variational quantum algorithms and modern machine learning." ] }, { "cell_type": "markdown", "id": "60484ddc", "metadata": {}, "source": [ "## Quantum-Inspired Kolmogorov–Arnold Networks (QKAN)\n", "\n", "Building upon the foundational ideas of **Kolmogorov–Arnold Networks (KANs)** and the expressive capacity of the **DARUAN** activation function, we introduce the **Quantum-Inspired Kolmogorov–Arnold Network (QKAN)**.\n", "\n", "In QKAN, the traditional B-spline-based activation functions used in KAN are replaced by single-qubit **data re-uploading variational quantum circuits** (DARUAN), providing a compact and highly trainable nonlinear transformation.\n", "\n", "---\n", "\n", "### Motivation and Principle\n", "\n", "The key insight of QKAN is to leverage the **Fourier-like expansion behavior** of quantum data re-uploading circuits, which approximate target functions through tunable superpositions of sinusoidal frequency components.\n", "\n", "While classical KANs express nonlinearities using B-spline basis functions (requiring a grid size $G$), QKAN approximates similar functional forms by estimating Fourier coefficients through a **parameter-efficient quantum circuit** with only a small number of re-uploading repetitions $r$.\n", "\n", "This makes QKAN especially attractive in settings where parameter and memory efficiency are critical.\n", "\n", "---\n", "\n", "### Architecture\n", "\n", "![QKAN Architecture](../fig/qkan.png)\n", "\n", "Each layer in QKAN is a feedforward structure composed of **independent DARUAN modules**. For a layer $\\ell$ with $n_\\ell$ input nodes and $n_{\\ell+1}$ output nodes, the layer is defined as:\n", "\n", "$$\n", "\\begin{align}\n", " &\\Phi_\\ell = \\{\\phi_{\\ell,j,i}\\}, \\quad i = 1,\\dots,n_\\ell; \\quad j = 1,\\dots,n_{\\ell+1} \\\\\n", " &\\phi_{\\ell,j,i}(x_{\\ell,i}) = \\langle 0 \\vert U(x_{\\ell,i}, \\boldsymbol{\\theta}_{\\ell,j,i})^\\dagger M U(x_{\\ell,i}, \\boldsymbol{\\theta}_{\\ell,j,i}) \\vert 0 \\rangle \\\\\n", " &x_{\\ell+1,j} = \\sum_{i=1}^{n_\\ell} \\phi_{\\ell,j,i}(x_{\\ell,i})\n", "\\end{align}\n", "$$\n", "\n", "Here:\n", "- $U(x; \\boldsymbol{\\theta})$ is a **data re-uploading unitary** parameterized by $\\boldsymbol{\\theta}$,\n", "- $M$ is the **Pauli observable** (e.g., $\\sigma_z$) used for measurement,\n", "- Each $\\phi_{\\ell,j,i}$ acts as a nonlinear activation between nodes $i$ and $j$.\n", "\n", "The full QKAN model is then composed by sequentially stacking these layers:\n", "\n", "$$\n", "\\boldsymbol{y} = \\text{QKAN}(\\boldsymbol{x}) = \\left( \\Phi_L \\circ \\Phi_{L-1} \\circ \\cdots \\circ \\Phi_1 \\right)(\\boldsymbol{x})\n", "$$\n", "\n", "Because each quantum expectation value lies in the range $[-1, 1]$, the output at layer $\\ell+1$ is bounded within:\n", "\n", "$$\n", "x_{\\ell+1,j} \\in [-n_\\ell, n_\\ell]\n", "$$\n", "\n", "To extend the bounded output to a desired range, some post activation transformation (e.g., FCN or linear weight/bias layer) can be applied.\n", "\n", "---\n", "\n", "QKAN introduces a quantum-inspired activation mechanism into a Kolmogorov–Arnold framework, leading to:\n", "\n", "- High **expressive power** through tunable quantum feature maps\n", "- Strong **parameter efficiency** compared to B-spline KANs\n", "- Seamless integration with both classical and hybrid neural architectures\n", "\n", "> QKAN merges insights from function approximation theory, Fourier analysis, and quantum variational circuits, offering a promising path forward for expressive, scalable, and hardware-efficient learning models." ] }, { "cell_type": "markdown", "id": "a7bf35c5", "metadata": {}, "source": [ "## Example: Training a QKAN Model for Function Approximation\n", "\n", "This section provides a minimal example of how to **train a QKAN model** using the **DARUAN activation function**, and how to **visualize the learned nonlinearities**." ] }, { "cell_type": "code", "execution_count": 1, "id": "8af4eb81", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████| 20/20 [00:04<00:00, 4.42it/s, train loss=2.7591048e-05, test loss=2.865495e-05]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import torch\n", "\n", "from qkan import QKAN, create_dataset\n", "\n", "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", "\n", "# f(x,y) = exp(sin(pi*x)+y^2)\n", "f = lambda x: torch.exp(torch.sin(torch.pi*x[:,[0]]) + x[:,[1]]**2)\n", "dataset = create_dataset(f, n_var=2, device=device)\n", "\n", "model = QKAN(\n", " [2,5,1],\n", " reps = 3,\n", " device=device,\n", " preact_trainable=True, # enable flexible fourier frequency\n", " postact_bias_trainable=True, # extend output bound\n", " postact_weight_trainable=True, # extend output bound\n", " ba_trainable=True, # enable residual connection for better convergence\n", " save_act=True, # save activation for visualization\n", ")\n", "optimizer = torch.optim.LBFGS(model.parameters(), lr=1.)\n", "\n", "model.train_(dataset, optimizer=optimizer, steps=20)\n", "model.plot(from_acts=True, metric=None)" ] }, { "cell_type": "markdown", "id": "ba9c098b", "metadata": {}, "source": [ "We also demonstrate how to apply **pruning**, a technique originally proposed in the KAN paper, to reduce the number of active nodes and simplify the model without sacrificing performance." ] }, { "cell_type": "code", "execution_count": 2, "id": "3ec80bc2", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAFICAYAAACcDrP3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAuhElEQVR4nO3deXyM58I+8GtGhGxEInatJG8cS9V61E4rBKkwCRIxU0HV8pJaj2OpHm29R0sPwWlL1SkzEkuSSZBIqFhqryVaihP7UrtMmmQikcz9+6M/c9pDNcuTeWa5vp+Pf5jlys3jmvt5nvsehRBCgIiISEJKuQMQEZH9YbkQEZHkWC5ERCQ5lgsREUmO5UJERJJjuRARkeRYLkREJDmWCxERSY7lQkREkmO5EBGR5FguREQkOZYLERFJjuVCRESSY7kQEZHkWC5ERCQ5J7kDENkCIQQePnyIvLw8uLu7w9vbGwqFQu5YRFaLMxeiFzAYDIiJiUFAQAB8fHzg6+sLHx8fBAQEICYmBgaDQe6IRFZJwW+iJHq+9PR0hIWFwWg0Avhl9vLU01mLq6srEhISEBQUJEtGImvFciF6jvT0dAQHB0MIAZPJ9LuPUyqVUCgUSElJYcEQ/QrLhei/GAwGNGrUCAUFBS8slqeUSiVcXFxw8+ZNeHp6Vn5AIhvAay5E/2XdunUwGo2lKhYAMJlMMBqNWL9+fSUnI7IdnLkQ/YoQAgEBAbh8+TLKcmgoFAr4+fkhKyuLd5ERgeVC9BsPHjyAj49PhZ7v7e0tYSIi28TTYkS/kpeXV6Hn5+bmSpSEyLaxXIh+xd3dvULP9/DwkCgJkW1juRD9ire3N/z9/ct13USpVOK9997DkSNHynS9hsgesVyIfkWhUGDy5Mnlem6vXr2QnJyMzp07o2nTpliwYAEuXrwocUIi28AL+kT/pSLrXDw8PLB3715otVokJCQgLy8PnTt3hlqtRnh4OC/2k8NguRA9R1lX6KempqJv376/+TOj0Yjk5GTodDqkp6dDqVSif//+0Gg0ePPNN1G9evXK/jGIZMNyIfodpd1bLDEx8Zli+W93797Fpk2boNVqcfz4cdSsWRNDhw6FWq1G9+7doVTyDDXZF5YL0QsYDAasX78ey5cvx6VLl8y/7+/vj+joaIwcORI1a9Ys02ueP38eOp0OOp0O165dw0svvYQRI0ZAo9GgefPmUv8IRLJguRCVghACjx49Qm5uLjw8PODl5VXhlfgmkwkHDx6ETqfD5s2bYTAY0K5dO2g0GkRERKBevXoSpSeyPJYLkRV4/PgxUlNTodPpsH37dpSUlKBv375Qq9UYPHgw3Nzc5I5IVCYsFyIr8+jRI2zZsgVarRYHDx6Em5sbQkNDodFo8MYbb6BKlSpyRyT6QywXIit2+fJlbNiwAVqtFllZWahfvz4iIyOhVqvRunVrbpJJVovlQmQDhBD47rvvoNPpEBcXhwcPHuCVV16BWq3GiBEj0KhRI7kjEv0Gy4XIxjx58gQ7d+6EVqtFcnIyCgsL0atXL2g0GoSFhaFGjRpyRyRiuRDZsp9//hkJCQnQ6XTYs2cPqlWrhpCQEGg0GgQFBaFq1apyRyQHxXIhshM3btxAXFwctFotzpw5g9q1ayMiIgJqtRodO3bk9RmyKJYLkZ0RQuD777+HVqtFbGwsbt++jYCAAKjVaqjVavj5+ckdkRwAy4XIjpWUlCAjIwM6nQ4JCQnIz89H165doVarMWzYMHh5eckdkewUy4XIQeTn5yM5ORlarRY7d+5ElSpVEBwcDI1Gg+DgYFSrVk3uiGRHWC5EDujOnTvYuHEjdDodTpw4AU9PTwwbNgxqtRpdu3blRppUYSwXIgd37tw580aa169fR5MmTTBixAio1Wo0a9ZM7nhko1guRATgl400Dxw4AK1Wiy1btiAnJwcdOnSAWq3G8OHDUadOHbkjkg1huRDRMx4/foyUlBRotVqkpqbCZDKhb9++0Gg0GDRoEFxdXeWOSFaO5UJEL/Tw4UNs3rwZWq0Whw8fhru7O8LCwqBWq/H6669zI016LpYLEZXapUuXzBtpXrx4EQ0aNEBkZCQ0Gg1effVVueORFWG5EFGZCSFw7NgxaLVabNy4EQ8fPkSrVq2g0WgQGRmJhg0byh2RZMZyIaIKKSoqQnp6OnQ6HZKTk1FUVIQ33ngDarUaYWFh8PDwkDsiyYDlQkSSycnJQUJCArRaLfbu3QsXFxcMGjQIGo0Gffr04UaaDoTlQkSV4vr164iNjYVWq8WPP/4IHx8fDB8+HGq1Gh06dOBGmnaO5UJElUoIgczMTOh0OsTGxuLOnTv405/+ZP6iM19fX7kjUiVguRCRxRQXFyMjIwNarRaJiYkwGo3o1q0bNBoNhg4dilq1askdkSTCciEiWeTl5SEpKQk6nQ67du2Ck5MT3nzzTajVagwYMIAbado4lgsRye727dvYuHEjtFotTp06hVq1amHYsGHQaDTo0qULr8/YIJYLEVmVs2fPQqfTYcOGDbhx4wZ8fX3NX3TWtGlTueNRKbFciMgqmUwm7N+/HzqdDlu2bMHPP/+Mjh07Qq1WIzw8nBtpWjmWCxFZvYKCAmzfvh1arRY7duyAEAL9+vWDWq3GoEGD4OLiIndE+i8sFyKyKQ8ePMCmTZug0+lw5MgReHh4ICwsDBqNBj179uRGmlaC5UJENisrKwsbNmyATqfDpUuX0LBhQ/MXnbVq1UrueA6N5UJENk8IgSNHjkCr1WLTpk149OgRWrduDbVajcjISDRo0EDuiA6H5UJEdqWoqAg7duyATqfDtm3bUFRUhN69e0Oj0UClUnEjTQthuRCR3TIYDIiPj4dWq8X+/fvh6uqKwYMHQ61Wo0+fPnBycpI7ot1iuRCRQ7h27Zr5i87Onz+POnXqYPjw4dBoNGjXrh0XakqM5UJEDkUIgZMnT0Kn0yEuLg53795Fs2bNoNFoMGLECLz88styR7QLLBcicljFxcX45ptvoNPpoNfrYTQa0aNHD6jVagwdOhSenp5yR7RZLBciIgC5ublISkqCVqvF7t274eTkhIEDB0Kj0aB///5wdnaWO6JNYbkQEf2Xn376CXFxcdDpdMjMzISXlxfCw8OhVqvRuXNnXp8pBZYLEdELnDlzxryR5s2bN+Hn52feSDMgIEDueFaL5UJEVAolJSXYv38/tFot4uPjkZubi9deew0ajQbh4eGoXbu23BGtCsuFiKiMCgoKsHXrVuh0OqSlpQEA+vfvD7VajYEDB3IjTbBciIgq5P79+9i0aRO0Wi2OHTuGGjVqYMiQIdBoNOjRoweUSqXcEWXBciEiksi///1v6HQ66HQ6XLlyBY0bNzZvpNmyZUu541kUy4WISGJCCBw6dAg6nQ6bNm1CdnY22rRpA41Gg+HDh6N+/fpyR6x0LBciokpUWFiIHTt2QKvVYvv27SguLkZgYCA0Gg0GDx4Md3d3uSNWCpYLEZGFZGdnY8uWLdDpdPj222/h6uoKlUoFjUaD3r1729VGmiwXIiIZXLlyBbGxsdBqtbhw4QLq1auH4cOHQ61Wo23btja/UJPlQkQkIyEETpw4Aa1Wi7i4ONy/fx8tWrTAwoULMXjwYLnjlRvLhYjIAkrzX+3TxwghoFAoyjV7sZYZj/2c4CMismILFixA69atK+W1S0pKcOXKFXh4eGD8+PGV8h5lxZkLEZEFREREYMOGDZXy2mq1Gtu3b0dQUBDi4+Mr5T3KijMXIiILUCgUqFKliuSvm5KSgk2bNqFbt26Sv3ZFOOa+BEREduDRo0cIDQ2Fi4uLeY8za8GZCxGRDTKZTOjevTuePHmCjIwMuLq6yh3pNzhzISKyMUIITJkyBefOncPMmTPRpUsXuSM9g+VCRGRjtm3bhpUrV6JNmzZYtGiR1dx+/GssFyIiG3L16lUMGTIE7u7u2Lt3r1UWC8ByISKyGUajEZ07d0ZJSQn27duHGjVqyB3pd/GCPhGRDTCZTAgMDMTdu3fx5Zdfom3btnJHeiHOXIiIrJwQAqNHj8aRI0cwadIkjB49Wu5If4jlQkRkxYQQ+OCDD7B+/XoEBgZi2bJlVnud5ddYLkREVkoIgTVr1mDBggVo2bIltm/fDqXSNv7bto2UREQORgiBLVu2YPz48WjUqBEOHjwIZ2dnuWOVGsuFiMjKCCGQnJyMyMhI+Pj44OjRo1Z9Z9jzsFyIiKyIEALx8fEYOnQoatWqhWPHjqF+/fpyxyozlgsRkZUQQmDt2rUYPnw4vLy8cPToUbz00ktyxyoXlgsRkRUwmUz46KOP8M4776BRo0b47rvv4OfnJ3escuMiSiIimeXn52PcuHGIjY1Fu3btsGPHDvj4+Mgdq0I4cyEikokQAmfOnEG3bt0QGxuLoUOHYv/+/TZfLADLhYhIFo8fP8bSpUvRuXNnnDt3DosWLUJsbKzVfS9LefG0GBGRBRUXF2PPnj2YO3cujh8/jpYtW2L16tXo1KmTTay8Ly3OXIiILCQ1NRXBwcEYMGAAsrKyMH/+fBw+fBidO3e2q2IBOHMhIrKYkJAQuLu7Y9SoUfjLX/4Cf39/uyuVp1guREQW4OzsjIEDB+L111+Hn58fLly4gAsXLkj6Hk2aNJH09SpCIYQQcocgIrJ3BQUFlf4eVapUsZr9x1guRERW5tf/LdvqaTNe0CcisjKnTp2CUqnEqVOn5I5SbiwXIiKSHMuFiIgkx3IhIiLJsVyIiEhyLBciIpIcy4WIiCTHciEiIsmxXIiISHIsFyIikhzLhYiIJMdyISIiybFciIhIciwXIiKSHMuFiIgkx3IhIiLJsVyIiEhyLBciIpIcy4WIiCTHciEiIsmxXIiISHIsFyIikhzLhYiIJMdyISIiybFciIhIciwXIiKSHMuFiIgkx3IhIiLJsVyIiEhyLBciIpIcy4WIiCTHciEiIsmxXIiISHIsFyIikhzLhYiIJMdyISIiybFciIhIciwXIiKSHMuFiIgkx3IhIiLJsVyIiEhyLBciIpIcy4WIiCTHciEiIsmxXIiISHIsFyIikhzLhYiIJMdyISIiyTnJHaAihBB4+PAh8vLy4O7uDm9vbygUCrljWTWOWflw3MqOY1Y+QghkZ2cDALKzsyGEsMlxs8mZi8FgQExMDAICAuDj4wNfX1/4+PggICAAMTExMBgMcke0Ohyz8uG4lR3HrHx+PW6BgYEAgMDAQNsdN2Fj0tLShJubm1AoFEKhUAgA5l9Pf8/NzU2kpaXJHdVqcMzKh+NWdhyz8rHHcbOpcklLSxNVqlQRSqXyN4P/37+USqWoUqWKTf1FVBaOWflw3MqOY1Y+9jpuCiGEkHo2VBkMBgMaNWqEgoICmEymP3y8UqmEi4sLbt68CU9Pz8oPaIU4ZuXDcSs7jln52PO42cw1l3Xr1sFoNJbqLwAATCYTjEYj1q9fX8nJrBfHrHw4bmXHMSsfex43m5i5CCEQEBCAy5cvoyxxFQoF/Pz8kJWVZZN3W1QEx6x8OG5lxzErH3sfN5solwcPHsDHx6dCz/f29pYwkfXjmJUPx63sOGblY+/jZhOnxfLy8ir0/NzcXImS2A6OWflw3MqOY1Y+9j5uNlEu7u7uFXq+h4eHRElsB8esfDhuZccxK7s7d+4gPj6+Qq9h7eNmE+Xi7e0Nf3//Mp9fVCgU8Pf3h5eXVyUls14cs/LhuJUdx6x0rl69iqVLl6JHjx5o2LAhZs+eDRcXlzK/jq2Mm02Ui0KhwOTJk8v13OjoaKu+6FVZOGblw3ErO47Z7zt//jz+7//+Dx06dICfnx9mz54NT09PrFmzBnfu3MHf//73cv38tjBuNnFBH7Dv+8ErC8esfDhuZccx+4UQAqdOnYJer0diYiLOnTsHNzc3DBgwAKGhoejfvz9q1Khhfrxdj5uFF21WSFlXsqanp8sdWXYcs/LhuJWdo45ZSUmJOHDggJg+fbrw9fUVCoVCeHl5iaioKJGcnCyMRuMLn2+v42ZT5SJE6ffgsZW/AEvgmJUPx63sHGXMioqKxK5du8SECRNE/fr1hUKhEPXq1RMTJkwQO3fuFEVFRWV6vReN29Oxs7Vxs7lyEUKI7OxsERMTI/z9/X/zF+Dv7y9iYmKEwWCQO6LV4ZiVD8et7Ox1zAoKCkRycrKIiooSXl5eQqFQiCZNmohp06aJAwcOiOLi4gq9/u+Nm5OTk1i4cKHNjZvNXHN5HiEEHj16hNzcXHh4eMDLy8vqL3LJjWNWPhy3srOHMcvNzUVqair0ej1SUlKQn5+P5s2bIzQ0FCqVCm3btpX8Z/r1uJlMJvTp0wfvvfceoqKiJH2fymbT5UJEJLWHDx9i27ZtSExMxK5du1BYWIh27dpBpVIhNDQUzZs3t2ie0aNHw2AwIDEx0aLvW1EsFyJyeLdv34Zer4der8fevXthMpnQpUsX8wylSZMmsmVLSkrCu+++i0OHDqFhw4ay5SgrlgsROaTLly+bC+Xw4cNQKpV44403oFKpMGjQINSvX1/uiACA/Px8tGvXDlOnTsX48ePljlNqLBcicghCCJw7dw4JCQnQ6/XIzMxEtWrVEBQUBJVKhYEDB1rtqveJEyfiypUr2LFjh9xRSo3lQkR2SwiBEydOmBc1XrhwAe7u7ggODjYvaqzo3miWkJ6ejnfeeQcZGRnw9/eXO06psFyIyK6UlJTg0KFD5kK5fv06vLy8MGjQIKhUKgQGBqJ69epyxyyTpzcVvP3225g6darccUqF5UJENq+oqAh79+5FYmIikpKScO/ePdSvXx8qlQoqlQo9e/aEk5OT3DErZPr06Th58iQyMjJs4pZu2x5tInJYBQUFSE9Ph16vx7Zt22AwGODr64u33noLKpUKr732GpRKm9ibt1RCQkIQHx+PH3/8ES1btpQ7zh9iuRCRzfj555+RkpICvV6P1NRUGI1GtGzZEpMnT4ZKpULr1q1t4lN9eXTt2hVeXl5ITk62iXLhaTEismoPHjzA1q1bkZiYiG+++QZFRUXo0KGDeVHjn/70J7kjWsy8efOwe/duHDx40OpnZSwXIrI6t27dMq9B2bdvH4QQ6NatG0JDQzF48GC8/PLLckeUxdGjRzFs2DAkJCSgQ4cOcsd5IZ4WIyKrcOnSJSQmJkKv1+PIkSNwcnJC79698dlnn2HQoEGoW7eu3BFl9+c//xn16tVDcnKy1ZcLZy5EJAshBM6ePWte1Pj999+jevXq6NevH1QqFd58803UqlVL7phW56OPPkJiYiKOHTtm1XfAsVyIyGKEEPjuu+/Ma1CysrLg4eGBgQMHQqVSoV+/fnBzc5M7plX7/vvvMXDgQOh0OnTv3l3uOL+L5UJElaqkpAQHDhwwF8rNmzfh7e2NwYMHQ6VSoXfv3qhWrZrcMW2GEAK9evVCx44dsXjxYrnj/C6WCxFJrqioCBkZGdDr9UhKSsL9+/fRsGFD8x1e3bp1s+pTOtZuyZIl+Prrr3Hy5Ek4OzvLHee5WC5EJIn8/Hzzosbt27cjJycH/v7+CAsLg0qlwp///Gerv33WVmRlZSEwMBBr1qxBnz595I7zXCwXIio3g8FgXtS4Y8cOFBQUoFWrVubvQWnVqpXdLmqUW1BQEJo2bYoVK1bIHeW5OC8lojK5d+8ekpOTodfrsXv3bjx58gQdO3bE/PnzoVKp0LRpU7kjOoSQkBCsWLECRqMRrq6ucsd5BmcuRPSHbty4YV7U+O233wIAunfvbl7U2LhxY5kTOp7r16+je/fuWLFiBUJCQuSO8wyWCxE9V1ZWlnlR47Fjx1C1alUEBgZCpVIhJCQEderUkTuiwxs8eDBq166NNWvWyB3lGTwtRkQAfrnF9YcffoBer0dCQgLOnDkDFxcX9O/fH5MnT0ZwcDA8PT3ljkm/EhISgoULFyInJwc1a9aUO85vcOZC5MBMJhOOHTtmXoNy6dIl1KxZ07yoMSgoyCrP59Mv7t69i9deew2ffPIJhg0bJnec32C5EDmY4uJifPvtt+ZrKLdu3YKPj495UeMbb7xhtWsn6FkRERFwcnKCTqeTO8pv8LQYkQMoLCzE7t27odfrkZycjAcPHqBRo0bmNSjdunVDlSpV5I5J5RASEoK5c+fiwYMHqF27ttxxzDhzIbJTeXl5SEtLMy9qzM3NRUBAgLlQOnTowDUodiA7OxsdOnTA/PnzMXLkSLnjmLFciOxIdnY2tm/fDr1ej7S0NDx+/BitW7c2b7vSsmVLFoodioqKQm5uLhISEuSOYsZyIbJxd+/eRXJyMhITE5GRkYHi4mJ06tQJKpUKKpUK//M//yN3RKpker0eU6ZMweHDh9GgQQO54wBguRDZpGvXrpkvyB84cAAKhQK9evWCSqXC4MGD0bBhQ7kjkgXl5+ejbdu2mD59OsaNGyd3HAAsFyKbceHCBfOixuPHj8PZ2Rl9+vQxL2q0pou5ZHkTJkzAtWvXkJqaKncUACwXIqslhMDp06fNixp//PFHuLq6YsCAAVCpVAgODkaNGjXkjklWIi0tDePGjcOePXvg5+cndxyWC5E1MZlMOHLkiHlR45UrV+Dp6YmBAwciNDQUffv2hYuLi9wxyQo9fvwY7dq1wzvvvIMpU6bIHYflQiS3J0+eYP/+/eZrKLdv30adOnXMF+R79erFRY1UKtOmTcOpU6eQkZEh+12BXERJJIPHjx/jm2++QWJiIrZu3YpHjx7hpZdeQnh4OFQqFbp06cJFjVRmISEhSEhIwLlz59CiRQtZs7BciCwkNzcXO3bsgF6vR0pKCvLy8tC0aVOMGzcOoaGhaNeuneyfNsm2devWDbVq1UJycrLs5cLTYkSV6NGjR9i2bRv0ej3S09NRWFiItm3bmhc1Nm/enIVCkpo7dy4yMjJw6NAhWf9tsVyIJHbnzh0kJSUhMTERe/bsQUlJCbp06WIuFF9fX7kjkh07cuQIwsPDkZiYiPbt28uWg6fFiCRw9epV8xqUQ4cOQalUolevXli+fDkGDRpkNaumyf517NgRdevWxdatW2UtF85ciMrp3Llz5kI5efIkqlWrhr59+0KlUmHgwIHw9vaWOyI5qA8//BBJSUk4evQonJzkmUOwXIhKSQiBU6dOITExEYmJiTh//jzc3NwQHBwMlUqFAQMGwMPDQ+6YRDh9+jRCQkIQGxuLrl27ypKB5UL0AiaTCYcOHTIvarx27Rpq1aqFkJAQhIaGIjAwkIsayeoIIdCzZ0906tQJn3zyiSwZWC5E/+XJkyfYu3cv9Ho9kpKScOfOHdSrV8+8qLFnz56oWrWq3DGJXmjJkiVYt24dTpw4IcsiXJYLEYCCggLs2rULiYmJ2LZtG7Kzs9GkSROEhoZCpVKhc+fOUCqVcsckKrULFy6gb9+++OqrrxAYGGjx92e5kMPKzc1FSkoK9Ho9UlNTkZ+fj+bNm5u/qbFNmzZcg0I2rW/fvmjWrBmWL19u8ffmrcjkUB4+fIitW7dCr9dj586dKCoqQvv27TF79myoVCo0b95c7ohEkgkJCcHKlSthNBrh6upq0ffmzIXs3k8//WRe1Lhv3z6YTCZ07drVfA2lSZMmckckqhTXrl1Djx49sHLlSgwcONCi781yIbt14MABzJo1C4cPH4aTkxNef/11hIaGYtCgQahXr57c8YgsYtCgQahbty5Wr15t0fdluZBN+fDDD/HKK6+U+vEmkwkKheI3106Kiopw9epV1K1bFzVr1nzmOQ8fPsTbb78tSV6iyhATE4Nq1aqVatZtNBrx5MmT5/5bfx4hBG7dugU3NzcMHz683Bl5zYVsytmzZ/HXv/613M/PycnBwIEDcebMGdSvXx8bN25Eq1atfvOYESNGsFzIql24cAF79uyBTqfDq6++Kulrf/HFF1i1ahW6devGciHHoVAoyr3GRAiBvn374vTp0xg7dizWrl2LPn364Pbt2/wyLrIpSqUSRqMRs2bNwjfffCPpay9fvhxFRUUVfh3euE8OY/PmzTh9+jTGjBmDzz//HOvWrYPBYMDo0aPljkZUZh4eHsjKyoKUVzZKSkpQVFSEHj16VPi1WC7kEIQQGDVqFJycnPDZZ59BoVAgIiICTZo0QVxcHB4/fix3RKIymTt3LgDg7t27kr1mfHw8gF9W91cUy4Ucws6dO1FYWIjFixebd4lVKBRITU0FAEydOlXOeERlNnToUADAlClTJHvNhQsXAgDq1KlT4ddiuZDdE0JgxIgRAIBJkyb95s+aNm0KV1dXfPnll5KeXiCqbE5OTnB2dsbhw4cl+bdrMpmQk5ODZs2aSbIzBcuF7F5OTg6ys7OhUqme2R9MoVDgs88+gxACBw4ckCkhUflER0cDAO7fv1/h19q1axcAYNmyZRV+LYDlQg7gnXfeAQB89dVXz/3zp7Oaitx2SSSHcePGAQBmzpxZ4deaPXs2AKBZs2YVfi2A5UJ2TgiBhIQEuLm5oUaNGs99jFKpRPPmzXH79m2UlJRYOCFR+Tk7O8PZ2Rl79+6t0Kkxk8mEhw8fokWLFpJt1spyIbt24sQJAMA///nPFx40W7ZsAQBotVqL5CKSyowZMwAAt2/fLvdrbN++HYB0p8QAlgvZuYiICAD/OfX1e56eCpg2bVqlZyKS0pgxYwAAEydOLPdrzJkzB8AvN7hIheVCdstkMuHKlSvw8/P7wy/6UigU6Ny5M3JyciyUjkgaTk5OqFmzJk6dOlWuU2NFRUXIzc1Fu3btJP3+IpYL2a24uDgA/1kY9kcSEhIkWTxGZGkff/wxAJTrjsdPP/0UALBy5UpJM7FcyG5NmDABAEq9sV/dunW5mJJsUr9+/QD859bk0hJC4Msvv0SVKlXQoEEDSTOxXMjmlOaOroKCAuTn52PAgAH8qmKyewqFAt27d8ejR49gNBpL/byLFy+ipKQEkyZNkvw4YbmQzRkyZAiys7Nf+JjJkycDAP71r39ZIhKR7FasWAEAmD59eqmf8/RmgKfHi5RYLmRThBDYunUrRo4c+cLHfP3116hevTq8vb0tmI5IPp6envD09ERqaiqKi4v/8PG5ubm4du0aWrduXe6vsXgRlgvZFIVCAQ8PD6SkpPzunTH79++HEALLly/nKTFyGAqFAl988QUA4JNPPvnDxz+9JrlmzZpKycNyIZvz9GB4uvDx14QQGDJkCABg1KhRFs1FJLdOnTrBw8MDq1evxpMnT373cQaDAd9++y18fX3h4+NTKVlYLmRzwsLCoFQqMWbMmGdmL5cuXcKjR48QERHxh2tbiOyNQqHAqlWrIITAzJkznzu7F0JAo9EA+GVHisqa3fPoI5ujUCgwd+5cGI1GJCUlmX//6dcYA5U31Seydl26dEHTpk2h1+tx8uTJZ/48NTUV33//Pfr27YtGjRpVWg6WC9mk9957D87OzhgxYgQMBgOEEFi1ahWuXbuGqKgouLi4yB2RSBYKhQJxcXGoWrUqNBoNLl68CCEEhBA4deoUoqOj4ebmhhUrVlTqNUmWC9mkKlWqQKvVorCwED179sTHH3+MyZMno06dOuaLmkSOqnbt2vj888/x+PFjhIWFYcWKFVi8eDGGDx8OpVKJDRs2oHr16pWageVCNufpp7CwsDDMmzcPV65cwfz58xEQEID9+/fDycnJ/Jjy/CKyBX/07zgwMBBffPEFatSogZiYGKxevRqNGzeGTqdDmzZtKv04cJLgZySymNq1a//mOkubNm0wc+ZM3Lp1C506dcKZM2dw5syZCr1H69atK5iSqHLVqlUL6enppXrs//7v/+Ls2bNwcnLCK6+8guzs7FI9t0WLFhXKqBD8qEY2pDSLwypKoVCgSpUqlf4+ROVlC8cBy4XslhACJpMJSqWSiynJIQkhkJ+fj+LiYnh6elr0vXnNhexOcXEx3n//fVStWhW9e/fGvXv35I5EZHHZ2dkYN24cWrZsiSVLllj8K7x5zYXsytWrV6FWq3H06FG8//77mDNnDk9xkcM5cuQI3n33XTx+/Bhffvmlef2XJXHmQnZj06ZNaNu2LW7duoV9+/bhvffeY7GQQykuLsbixYsREREBX19fpKeny1IsAMuF7EBeXh7GjBmD4cOHo1+/fjh16hS6dOkidywii7p+/TqGDBmCzz//HDNnzsSGDRtQr1492fLwtBjZtJMnTyIyMhK3bt3C2rVrMXLkSF68J4eTnJyM2bNnw8vLCwkJCWjbtq3ckThzIdtkMpnwj3/8A507d4a7uztOnDiBqKgoFgs5lPz8fEybNg3R0dHo06cP0tLSrKJYAM5cyAbduXMHo0aNQnp6OqZPn46FCxfC2dlZ7lhEFnX69GlER0fj/v37WLp0KUJDQ+WO9BssF7IpO3bswKhRo6BQKLBjxw4EBQXJHYnIokwmE1avXo3FixejZcuWWLduHZo0aSJ3rGfwtBjZhMLCQkybNg3BwcFo3749Tp8+zWIhh3Pv3j1oNBosWrQIY8eORUJCglUWC8CZC9mA8+fPIzIyEj/++COWLl2K6OhoXlshh7N7927MmDEDTk5O2LBhA7p27Sp3pBfizIWslhACa9asQYcOHVBQUGBeGMZiIUdSWFiI999/H6NHj0bbtm2RlpZm9cUCcG8xslJPt66Ij4/H2LFj8Y9//ANubm5yxyKyqKysLEyePBmXLl3CvHnz8NZbb9nMhyueFiOrc+DAAajVavz888/YvHkzhgwZInckIosSQiA2NhYffPABGjdujK1bt6J58+ZyxyoTnhYjq1FcXIwFCxagV69eePnll5GZmcliIYdjMBgwfvx4zJkzB0OGDMG2bdtsrlgAzlzISly7dg1qtRqHDx/G/PnzMWfOHDg58Z8nOZYjR45gypQpMBqNWL16tU3fEcmZC8luy5YtaNOmDW7cuIF9+/Zh/vz5LBZyKMXFxViyZAkiIiLw8ssvIz093aaLBWC5kIzy8/MxduxYhIeHIygoCJmZmTZxFwyRlG7cuIGhQ4fis88+w/Tp0xEbG4v69evLHavC+PGQZHHq1ClERkbixo0bWLNmjXnVPZEjSU5Oxpw5c+Dp6Yn4+Hi0a9dO7kiS4cyFLMpkMmHp0qXo3LkzXF1dceLECYwePZrFQg4lPz8fM2bMQHR0NHr37o20tDS7KhaAMxeyoLt372LUqFFIS0vDtGnTsHDhQlSrVk3uWEQW9cMPP2Dy5Mm4e/cuPv30U4SFhdnlhyuWC1lEeno6oqKiIIRAamoq+vXrJ3ckIosymUxYs2YNPv74YzRv3hz/+te/4OvrK3esSsPTYlSpCgsLMWPGDPTv3x9t27bF6dOnWSzkcO7du4e33noLCxcuxJgxY6DX6+26WADOXKgSXbhwAZGRkThz5gw+/fRTvPvuu1Aq+XmGHMuePXswffp0KJVK6HQ6dO/eXe5IFsEjnSQnhMDatWvRvn17GI1GHDlyBFOnTmWxkEMpLCzEggULEBUVhdatWyM9Pd1higXgxpUksadbV2zevBljxozBsmXLuOEkOZyLFy9i0qRJuHjxIubOneuQX8HN02IkmYMHD0KtVsNgMGDjxo0YNmyY3JGILEoIgY0bN+Jvf/sbGjVqZLP7gkmB5ymowkpKSvDBBx+gZ8+eaNSoETIzM1ks5HBycnIwYcIE/PWvf0VoaCi2b9/usMUCcOZCFXT9+nVoNBocPHgQ7733HubOnct9wcjhHDt2DO+++y7y8/OxatUq3hEJzlyoAuLj49GmTRtcvXoVe/bswfvvv89iIYdSXFyMTz/9FOHh4WjcuDHS0tJYLP8fy4XKLD8/H+PGjcOwYcMQGBiIzMxMh7oLhggAbt68iWHDhuGf//wnpk2bhri4ODRo0EDuWFaDHzOpTDIzMxEZGYnr169j9erVGDNmjMPdBUO0bds2zJ49GzVq1MCWLVvQvn17uSNZHc5cqFSEEFi2bBk6deqE6tWr4/jx43j77bdZLORQ8vPzMXPmTEyaNAm9evVCWloai+V3cOZCf+jevXsYPXo0UlNTMWXKFPz973/nhpPkcM6cOYPJkyfjzp07WLJkCYYMGcIPVy/AcqEX2rlzJ0aOHAmTyYSUlBT0799f7khEFmUymfDVV19h0aJFaNasGVJSUuDn5yd3LKvH02L0XEVFRZg5cyb69euH1q1b4/Tp0ywWcjj379/HyJEj8dFHH2HUqFFISkpisZQSZy70jH//+9+IjIzEDz/8gCVLlmDKlCncF4wczt69ezFt2jQoFApotVr06NFD7kg2hf9jkJkQAl9//TXat2+PvLw8HD58GNOmTWOxkEMpKirCBx98gJEjR+LVV1/Fzp07WSzlwI0rCcAvG05OnDgRGzduxKhRoxATEwN3d3e5YxFZ1KVLlzBp0iRkZWVhzpw5GDVqFC/alxNPixEOHTqEESNGIDs7G3FxcQgPD5c7EpFFCSGwadMm/O1vf0P9+vWxdetWtGjRQu5YNo3nOxxYSUkJPvzwQ/Ts2RMNGzZEZmYmi4UcTk5ODiZOnIhZs2Zh8ODBSElJYbFIgDMXB3Xjxg1oNBocOHAA8+bNw7x587gvGDmc7777DtHR0cjLy8Pnn3+OAQMGyB3JbvB/EweUmJiIsWPHws3NDRkZGbxYSQ6nuLgYK1aswPLly9GhQwfExMRwXzCJ8bSYAzEajRg/fjyGDBmC119/HZmZmSwWcji3bt1CeHg4li9fjilTpnDDyUrCmYuDOH36NCIjI3H16lWsWrWK+4KRQ0pJScGsWbPg4eGBLVu2oEOHDnJHslucudg5IQSWL1+OTp06wdnZGcePH8fYsWNZLORQjEYj/vKXv2DixIno2bMn0tPTWSyVjDMXO3b//n2MHj0aKSkpiI6OxqJFi1C9enW5YxFZ1NmzZzFp0iTcvn0bixcvxtChQ/nhygJYLnZq165dGDlyJEpKSrBt2zYEBwfLHYnIokwmE9auXYtFixahadOmSE1N5b5gFsTTYnamqKgIs2bNQlBQEFq1aoXMzEwWCzmcBw8eYNSoUfjwww8RFRXFDSdlwJmLDRBC4OHDh8jLy4O7uzu8vb2fO63PysrCiBEjcPr0aXzyySfcF4zsSmmPg3379mHq1KkAgHXr1qFXr14WTkoAZy5WzWAwICYmBgEBAfDx8YGvry98fHwQEBCAmJgYGAwGAL8cdOvWrUO7du2Qk5ODgwcPYsaMGSwWsgulPQ6Kiorw0Ucf4a233kKrVq2wc+dOFouMuHGllUpPT0dYWBiMRiOAXwrkqaef1lxdXbF+/XokJCQgLi4OUVFRWL58OTecJLtR2uNg5cqV2Lx5My5cuIDZs2dj9OjR/HAlM5aLFUpPT0dwcDCEEDCZTL/7OIVCASEE3NzcsGbNGkRERFgwJVHlKutx8OqrryI2NhYtW7a0YEr6PSwXK2MwGNCoUSMUFBS88ID6NRcXF/z000/w9PSs3HBEFlKe48DV1RW3bt3icWAlOG+0MuvWrYPRaCz1AQUAjx8/xvr16ysxFZFllec4KCgo4HFgRThzsSJCCAQEBODy5csoy1+LQqGAn58fsrKyuDiMbB6PA/vAcrEiDx48gI+PT4We7+3tLWEiIsvjcWAfeFrMiuTl5VXo+bm5uRIlIZIPjwP7wHKxIhW9hdjDw0OiJETy4XFgH1guVsTb2xv+/v5lPl+sUCjg7+8PLy+vSkpGZDk8DuwDy8WKKBQKTJ48uVzPjY6O5kVMsgs8DuwDL+hbmbLe369UKuHi4oKbN2/y/n6yGzwObB9nLlbG09MTCQkJUCgUf7h9hVKphEKhQGJiIg8osis8Dmwfy8UKBQUFISUlBS4uLlAoFM9M85/+nouLC1JTU9G3b1+ZkhJVHh4Hto3lYqWCgoJw8+ZNLFu27JnvofDz88OyZctw69YtHlBk13gc2C5ec7EBQgg8evQIubm58PDwgJeXFy9aksPhcWBbWC5ERCQ5nhYjIiLJsVyIiEhyLBciIpIcy4WIiCTHciEiIsmxXIiISHIsFyIikhzLhYiIJMdyISIiybFciIhIciwXIiKSHMuFiIgkx3IhIiLJsVyIiEhy/w+PB89XqnFYiQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model.prune(node_th=0.5)\n", "model.plot(dataset[\"train_input\"], mask=True)" ] }, { "cell_type": "code", "execution_count": 3, "id": "fe7f668b", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "new_model = model.prune(node_th=0.5)\n", "new_model(dataset['train_input'])\n", "new_model.plot(from_acts=True, metric=None, in_vars=[\"$x$\", \"$y$\"], out_vars=[\"$\\exp(\\sin(\\pi x)+y^2)$\"])" ] }, { "cell_type": "markdown", "id": "19b405c9", "metadata": {}, "source": [ "From the trained activation plots, we can infer the underlying structure of the learned function. In this example, the QKAN model, with minimal architecture, successfully recovers the form of the target function $f(x,y) = \\exp(\\sin(\\pi x)+y^2)$." ] }, { "cell_type": "markdown", "id": "dd995add", "metadata": {}, "source": [ "## Further Reading\n", "\n", "If you are interested in learning more about QKAN and DARUAN, please read our paper: **[\"Quantum Variational Activation Functions Empower Kolmogorov-Arnold Networks\"](https://arxiv.org/abs/2509.14026)**." ] } ], "metadata": { "kernelspec": { "display_name": "venv", "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.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }