2024-08-11 16:06:09 -04:00

320 lines
94 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "134e7f9d",
"metadata": {},
"source": [
"# API 5: Grid"
]
},
{
"cell_type": "markdown",
"id": "2571d531",
"metadata": {},
"source": [
"One important feature of KANs is that they embed splines to neural networks. However, splines are only valid for approximating functions in known bounded regions, while the range of activations in neural networks may be changing over training. So we have to update grids properly according to that. Let's first take a look at how we parametrize splines. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "2075ef56",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'B_i(x)')"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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N2bMGIKCgposS25uLt988w133XXXRe998MEHhIeHM2DAAH7/+987u7O3Fa2Z38aNG4mMjKRPnz4sWrSIvLw853vt5Ry64vwBlJaWoijKRa7Xtj5/FouFvXv31vtcAaZPn97ofLZv337R+BkzZrBnzx6sVuslx7T19daS+V2Iw+GgvLyc0NDQeusrKipISEggLi6Oa665hv3797tM7ubQmjkOHTqUmJgYrrzySjZs2FDvPW86h0uWLGHatGkkJCTUW99ezmFzaS/XYKdsnNlW5OTkABAVFVVvfVRUFGlpac4xBoOBkJCQi8bUbd9W5OTkEBkZedH6yMjIJsvy7rvvEhAQwA033FBv/fz58+nevTvR0dEcPnyYxx57jOTkZNauXesS2ZtCS+c3a9YsbrrpJhISEjhz5gz/93//x9SpU9m7dy9Go7HdnENXnL+amhoeffRRbrvttnoN7zxx/goKCrDb7Q1eP43NJycnp8HxNpuNgoICYmJiGh3T1tdbS+Z3If/+97+prKzk5ptvdq5LTEzknXfeYeDAgZSVlfHiiy8yfvx4kpOT6d27t0vncDlaMseYmBjeeOMNhg8fjtlsZtmyZVx55ZVs3LiRiRMnAo2f5452DrOzs/n222/58MMP661vT+ewubSXa7DTKzdPPvkkTz311CXH7N69mxEjRrT4GIqi1PtbCHHRugtpypim0tQ5wsWyNleWpUuXMn/+fHx8fOqtX7RokfN1UlISvXv3ZsSIEezbt49hw4Y1ad+N4e75zZs3z/k6KSmJESNGkJCQwDfffHOREtec/TaVtjp/VquVW265BYfDwSuvvFLvPXeev8vR3OunofEXrm/JNekuWirLRx99xJNPPsmXX35ZT6kdM2ZMvYD38ePHM2zYMF5++WVeeukl1wneDJozx759+9K3b1/n32PHjiUjI4N//etfTuWmuft0Ny2V5Z133iE4OJjrrruu3vr2eA6bQ3u4Bju9cnPvvfdeNuujW7duLdp3dHQ0oGqyMTExzvV5eXlOrTU6OhqLxUJxcXG9J/+8vDzGjRvXouNeSFPnePDgQXJzcy96Lz8//yItuyE2b97M8ePHWb58+WXHDhs2DL1ez8mTJ1t9c2yr+dURExNDQkICJ0+eBNx/DttiflarlZtvvpkzZ86wfv36elabhnDl+WuM8PBwtFrtRU9z518/FxIdHd3geJ1OR1hY2CXHNOc74ApaMr86li9fzl133cWnn37KtGnTLjlWo9EwcuRI5/e1LWnNHM9nzJgxvP/++86/veEcCiFYunQpCxYswGAwXHKsJ89hc2k316DLonc6Ec0NKP7HP/7hXGc2mxsMKF6+fLlzTFZWlkcDinfu3Olct2PHjiYHpC5cuPCiLJvGOHTokADEjz/+2GJ5m0tr51dHQUGBMBqN4t133xVCtJ9z2NL5WSwWcd1114kBAwaIvLy8Jh2rrc7fqFGjxG9+85t66/r163fJgOJ+/frVW7d48eKLghlnzZpVb8zMmTM9FozanPkJIcSHH34ofHx8LhvYWYfD4RAjRowQP//5z1sjaotpyRwv5MYbbxRTpkxx/t3Rz6EQPwVOHzp06LLH8PQ5rIMmBhS3h2tQKjfNIC0tTezfv1889dRTwt/fX+zfv1/s379flJeXO8f07dtXrFixwvn3s88+K4KCgsSKFSvEoUOHxK233tpgKnhcXJz44YcfxL59+8TUqVM9mgo+aNAgsX37drF9+3YxcODAi1KJL5yjEEKUlpYKX19f8eqrr160z1OnTomnnnpK7N69W5w5c0Z88803IjExUQwdOtQjqdLNmV95ebn43e9+J7Zt2ybOnDkjNmzYIMaOHSu6dOnSLs9hc+dntVrF3LlzRVxcnDhw4EC9tFOz2SyE8Oz5q0uzXbJkiUhJSREPPPCA8PPzc2aWPProo2LBggXO8XVpqA8++KBISUkRS5YsuSgNdevWrUKr1Ypnn31WHD16VDz77LMeTyNu6vw+/PBDodPpxP/+979G0/KffPJJsWbNGpGamir2798vfv7znwudTldP6W1LmjvH//znP2LlypXixIkT4vDhw+LRRx8VgPj888+dYzryOazj9ttvF6NHj25wn+3pHJaXlzvvdYB4/vnnxf79+53ZlO31GpTKTTNYuHChAC5aNmzY4BwDiLffftv5t8PhEE888YSIjo4WRqNRTJw48SJNvbq6Wtx7770iNDRUmEwmcc0114j09PQ2mlV9CgsLxfz580VAQIAICAgQ8+fPvygl88I5CiHE66+/LkwmU4O1T9LT08XEiRNFaGioMBgMomfPnuK3v/3tRbVi2oLmzq+qqkpMnz5dRERECL1eL+Lj48XChQsvOj/t5Rw2d35nzpxp8Dt9/vfa0+fvf//7n0hISBAGg0EMGzasnrVo4cKFYtKkSfXGb9y4UQwdOlQYDAbRrVu3BhXuTz/9VPTt21fo9XqRmJhY78bZ1jRnfpMmTWrwXC1cuNA55oEHHhDx8fHCYDCIiIgIMX36dLFt27Y2nNHFNGeO//jHP0TPnj2Fj4+PCAkJEVdccYX45ptvLtpnRz2HQqjWXpPJJN54440G99eezmGdhamx71x7vQYVIWojfSQSiUQikUi8AFnnRiKRSCQSiVchlRuJRCKRSCRehVRuJBKJRCKReBVSuZFIJBKJROJVSOVGIpFIJBKJVyGVG4lEIpFIJF6FVG4kEolEIpF4FVK5kUgkEolE4lVI5UYikUgkEolXIZUbiUQikUgkXoVUbiQSiUQikXgVUrmRSCQdnvz8fKKjo3n66aed63bu3InBYOD777/3oGQSicQTyMaZEonEK1i9ejXXXXcd27ZtIzExkaFDhzJ79mxeeOEFT4smkUjaGKncSCQSr+Gee+7hhx9+YOTIkSQnJ7N79258fHw8LZZEImljpHIjkUi8hurqapKSksjIyGDPnj0MGjTI0yJJJBIPIGNuJBKJ13D69GmysrJwOBykpaV5WhyJROIhpOVGIpF4BRaLhVGjRjFkyBASExN5/vnnOXToEFFRUZ4WTSKRtDFSuZFIJF7BH/7wBz777DOSk5Px9/dnypQpBAQE8PXXX3taNIlE0sZIt5REIunwbNy4kRdeeIFly5YRGBiIRqNh2bJlbNmyhVdffdXT4kkkkjZGWm4kEolEIpF4FdJyI5FIJBKJxKuQyo1EIpFIJBKvQio3EolEIpFIvAqp3EgkEolEIvEqpHIjkUgkEonEq5DKjUQikUgkEq9CKjcSiUQikUi8CqncSCQSiUQi8SqkciORSCQSicSrkMqNRCKRSCQSr0IqNxKJRCKRSLyK/wc44tqa6n9v4gAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from kan.spline import B_batch\n",
"import torch\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from kan.spline import extend_grid\n",
"\n",
"# consider a 1D example.\n",
"# Suppose we have grid in [-1,1] with G intervals, spline order k\n",
"G = 5\n",
"k = 3\n",
"grid = torch.linspace(-1,1,steps=G+1)[None,:]\n",
"grid = extend_grid(grid, k_extend=k)\n",
"\n",
"# and we have sample range in [-1,1]\n",
"x = torch.linspace(-1,1,steps=1001)[None,:]\n",
"\n",
"basis = B_batch(x, grid, k=k)\n",
"\n",
"for i in range(G+k):\n",
" plt.plot(x[0].detach().numpy(), basis[0,:,i].detach().numpy())\n",
" \n",
"plt.legend(['B_{}(x)'.format(i) for i in np.arange(G+k)])\n",
"plt.xlabel('x')\n",
"plt.ylabel('B_i(x)')"
]
},
{
"cell_type": "markdown",
"id": "75af662c",
"metadata": {},
"source": [
"There are $G+k$ B-spline basis. The function is a linear combination of these bases $${\\rm spline}(x)=\\sum_{i=0}^{G+k-1} c_i B_i(x).$$ We don't need worry about the implementation since it's already built in KAN. But let's check if KAN is indeed implementing this. We initialize a [1,1] KAN, which is simply a 1D spline."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "4369a310",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"checkpoint directory created: ./model\n",
"saving model version 0.0\n"
]
},
{
"data": {
"text/plain": [
"tensor(0.0099, grad_fn=<MeanBackward0>)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from kan import KAN\n",
"\n",
"model = KAN(width=[1,1], grid=G, k=k)\n",
"# obtain coefficients c_i\n",
"model.act_fun[0].coef\n",
"assert(model.act_fun[0].coef[0].shape[1] == G+k)\n",
"\n",
"# the model forward\n",
"model_output = model(x[0][:,None])\n",
"\n",
"# spline output\n",
"spline_output = torch.einsum('j,ij->i',model.act_fun[0].coef[0][0], basis[0])[:,None]\n",
"\n",
"torch.mean((model_output - spline_output)**2)"
]
},
{
"cell_type": "markdown",
"id": "82150587",
"metadata": {},
"source": [
"They are not the same, what's happening? We want to remind that we model the activation function to have two additive parts, a residual function $b$(x) plus the spline function, i.e., $$\\phi(x)={\\rm scale\\_base}*b(x)+{\\rm scale\\_sp}*{\\rm spline}(x),$$ and by default $b(x)={\\rm silu}(x)=x/(1+e^{-x})$."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "7d76a3c4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor(0., grad_fn=<MeanBackward0>)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# residual output\n",
"residual_output = torch.nn.SiLU()(x[0][:,None])\n",
"scale_base = model.act_fun[0].scale_base\n",
"scale_sp = model.act_fun[0].scale_sp\n",
"torch.mean((model_output - (scale_base * residual_output + scale_sp * spline_output))**2)"
]
},
{
"cell_type": "markdown",
"id": "3d72e076",
"metadata": {},
"source": [
"What if my grid does not match my data? For example, my grid is in [-1,1], but my data is in [10,10] or [-0.5,0.5]. Use update_grid_from_sample to adjust grids to samples. This grid update applies to all splines in all layers."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "46717e8b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"checkpoint directory created: ./model\n",
"saving model version 0.0\n",
"Parameter containing:\n",
"tensor([[-2.2000, -1.8000, -1.4000, -1.0000, -0.6000, -0.2000, 0.2000, 0.6000,\n",
" 1.0000, 1.4000, 1.8000, 2.2000]])\n",
"Parameter containing:\n",
"tensor([[-22., -18., -14., -10., -6., -2., 2., 6., 10., 14., 18., 22.]])\n"
]
}
],
"source": [
"model = KAN(width=[1,1], grid=G, k=k)\n",
"print(model.act_fun[0].grid) # by default, the grid is in [-1,1]\n",
"x = torch.linspace(-10,10,steps = 1001)[:,None]\n",
"model.update_grid_from_samples(x)\n",
"print(model.act_fun[0].grid) # now the grid becomes in [-10,10]. We add a 0.01 margin in case x have zero variance"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "de04db15",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"checkpoint directory created: ./model\n",
"saving model version 0.0\n",
"Parameter containing:\n",
"tensor([[-2.2000, -1.8000, -1.4000, -1.0000, -0.6000, -0.2000, 0.2000, 0.6000,\n",
" 1.0000, 1.4000, 1.8000, 2.2000]])\n",
"Parameter containing:\n",
"tensor([[-1.1000, -0.9000, -0.7000, -0.5000, -0.3000, -0.1000, 0.1000, 0.3000,\n",
" 0.5000, 0.7000, 0.9000, 1.1000]])\n"
]
}
],
"source": [
"model = KAN(width=[1,1], grid=G, k=k)\n",
"print(model.act_fun[0].grid) # by default, the grid is in [-1,1]\n",
"x = torch.linspace(-0.5,0.5,steps = 1001)[:,None]\n",
"model.update_grid_from_samples(x)\n",
"print(model.act_fun[0].grid) # now the grid becomes in [-10,10]. We add a 0.01 margin in case x have zero variance"
]
},
{
"cell_type": "markdown",
"id": "e418ca2c",
"metadata": {},
"source": [
"Uniform grid or non-uniform? We consider two options: (1) uniform grid; (2) adaptive grid (based on sample distribution) such that there are (rougly) same number of samples in each interval. We provide a parameter grid_eps to interpolate between these two regimes. grid_eps = 1 gives (1), and grid_eps = 0 gives (0). By default we set grid_eps = 1 (uniform grid). There could be other options but it is out of our scope here."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "d2c4f636",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"checkpoint directory created: ./model\n",
"saving model version 0.0\n",
"Parameter containing:\n",
"tensor([[-2.2000, -1.8000, -1.4000, -1.0000, -0.6000, -0.2000, 0.2000, 0.6000,\n",
" 1.0000, 1.4000, 1.8000, 2.2000]])\n",
"Parameter containing:\n",
"tensor([[-8.3431, -6.8772, -5.4114, -3.9455, -2.4797, -1.0138, 0.4520, 1.9179,\n",
" 3.3837, 4.8496, 6.3154, 7.7813]])\n"
]
}
],
"source": [
"# uniform grid\n",
"model = KAN(width=[1,1], grid=G, k=k)\n",
"print(model.act_fun[0].grid) # by default, the grid is in [-1,1]\n",
"x = torch.normal(0,1,size=(1000,1))\n",
"model.update_grid_from_samples(x)\n",
"print(model.act_fun[0].grid) # now the grid becomes in [-10,10]. We add a 0.01 margin in case x have zero variance"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "b9b354c6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"checkpoint directory created: ./model\n",
"saving model version 0.0\n",
"Parameter containing:\n",
"tensor([[-2.2000, -1.8000, -1.4000, -1.0000, -0.6000, -0.2000, 0.2000, 0.6000,\n",
" 1.0000, 1.4000, 1.8000, 2.2000]])\n",
"Parameter containing:\n",
"tensor([[-8.3431, -6.8772, -5.4114, -3.9455, -0.8148, -0.2487, 0.2936, 0.8768,\n",
" 3.3837, 4.8496, 6.3154, 7.7813]])\n"
]
}
],
"source": [
"# adaptive grid based on sample distribution\n",
"model = KAN(width=[1,1], grid=G, k=k, grid_eps = 0.)\n",
"print(model.act_fun[0].grid) # by default, the grid is in [-1,1]\n",
"x = torch.normal(0,1,size=(1000,1))\n",
"model.update_grid_from_samples(x)\n",
"print(model.act_fun[0].grid) # now the grid becomes in [-10,10]. We add a 0.01 margin in case x have zero variance"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f7b8f994",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.16"
}
},
"nbformat": 4,
"nbformat_minor": 5
}