GitHub_collection_pykan/tutorials/Example_12_unsupervised_learning.ipynb
2024-07-13 22:17:48 -04:00

325 lines
128 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "5d904dee",
"metadata": {},
"source": [
"# Example 12: Unsupervised learning"
]
},
{
"cell_type": "markdown",
"id": "6465ec94",
"metadata": {},
"source": [
"In this example, we will use KAN for unsupervised learning. Instead of trying to figure out how a target variable $y$ depends on input variables, we treat all variables on the equal footing (as input variables). Below we contruct a synthetic dataset where we have six variables $x_1, x_2, x_3, x_4, x_5, x_6$. $(x_1, x_2, x_3)$ are dependent such that $x_3={\\rm exp}({\\rm sin}(\\pi x_1)+x_2^2)$; $(x_4,x_5)$ are dependent such that $x_5=x_4^3$. And $x_6$ is independent of all other variables. Can we use KANs to discover these dependent groups?\n",
"\n",
"The idea is that we treat the problem as a classification problem. The dataset that satisfies these interdependent relations are 'positive' samples, while corrupted samples (by random permutation of features across samples) are 'negative' samples. We want to train a KAN to output 1 when it is a positive sample, and output 0 when it is a negative sample. We set the last layer activation to be Gaussian, so positive samples will have zero activation in the second to last layer, while negtive samples will have non-zero activation in the second to last layer. We can then define the relation implicitly as $g=0$ where $g$ is the activation in the second to last layer."
]
},
{
"cell_type": "markdown",
"id": "94056ef6",
"metadata": {},
"source": [
"Intialize model and create dataset"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "0a59179d",
"metadata": {},
"outputs": [],
"source": [
"from kan import KAN\n",
"import torch\n",
"import copy\n",
"\n",
"\n",
"seed = 1\n",
"\n",
"model = KAN(width=[6,1,1], grid=3, k=3, seed=seed)\n",
"\n",
"# create dataset\n",
"\n",
"\n",
"def create_dataset(train_num=500, test_num=500):\n",
" \n",
" def generate_contrastive(x):\n",
" # positive samples\n",
" batch = x.shape[0]\n",
" x[:,2] = torch.exp(torch.sin(torch.pi*x[:,0])+x[:,1]**2)\n",
" x[:,3] = x[:,4]**3\n",
"\n",
" # negative samples\n",
" def corrupt(tensor):\n",
" y = copy.deepcopy(tensor)\n",
" for i in range(y.shape[1]):\n",
" y[:,i] = y[:,i][torch.randperm(y.shape[0])]\n",
" return y\n",
"\n",
" x_cor = corrupt(x)\n",
" x = torch.cat([x, x_cor], dim=0)\n",
" y = torch.cat([torch.ones(batch,), torch.zeros(batch,)], dim=0)[:,None]\n",
" return x, y\n",
" \n",
" x = torch.rand(train_num, 6) * 2 - 1\n",
" x_train, y_train = generate_contrastive(x)\n",
" \n",
" x = torch.rand(test_num, 6) * 2 - 1\n",
" x_test, y_test = generate_contrastive(x)\n",
" \n",
" dataset = {}\n",
" dataset['train_input'] = x_train\n",
" dataset['test_input'] = x_test\n",
" dataset['train_label'] = y_train\n",
" dataset['test_label'] = y_test\n",
" return dataset\n",
"\n",
"dataset = create_dataset()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "79665292",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 500x400 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model(dataset['train_input'])\n",
"model.plot(beta=10)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "45760ca2",
"metadata": {},
"outputs": [],
"source": [
"# set the (1,0,0) activation to be gausssian\n",
"#model.fix_symbolic(1,0,0,lambda x: torch.exp(-x**2/10),fit_params_bool=False)\n",
"model.fix_symbolic(1,0,0,'gaussian',fit_params_bool=False)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "d951ae17",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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srIyPP30081+OqpcDAYDfvvtNzg5OaFPnz51vp/btWuHzp07IyMjA+fPn7dBKRtPkiTcdddd+PHHHxEQEID33nsPS5YsUfT4UVNIkoT77rsP27ZtM09Rnjt3rnlyRmxsLMaPH48ffvgBzs7OeOaZZ7Bq1Srs27cPf/75J9asWYPevXtj8+bNGD16tGJmoFk9XExrTYqKitC7d+86u6hUKhX69OkDnU4nS9eYwWDA6dOn4eLigrCwsCY9l1wyMjKg1WoRERFR59YYkiQhLCwMDg4OSE1NtUEJLU+SJIwfPx4zZsxAamoqxo0bh8LCQkV8MJTs6tWrSElJQWho6E2n1JtaAHq9Hr/99pvd1akkSbjzzjuxatUqeHl54fXXX8ePP/5od9dRX5IkoV27dvjoo4+wZ88e/L//9//Qr18/dOjQAbGxsXjppZewYcMG7N+/H0uWLMHIkSPRqVMnRERE4OGHH8b69esxZswYHD16FNOmTUNVVZWtL8n64WIwGPDLL79ArVZj4MCBdd51mabsOTk54eDBg03uGisqKsLly5fh7+9f7+1YLEkIgbNnz0KSJERFRd20JeXl5QUvLy/k5eVZZGq2EqjVasybNw8jRozA3r17MWXKlGZ7rXI5fPgwKisrERcXd9M9uyRJwj333ANXV1fs2bPHLruVJEnCvffeixUrVkClUmHKlCmKm14tN5VKhejoaLz22mv46aefsHPnTvz888/mSTA+Pj61doWWJAkeHh747LPPEBcXhy1btuA///mPzevJ6uFy8eJFXLhwAeHh4bc8utXX1xehoaHIzs7GlStXmvSapjPkO3bsqIjxFq1Wi6ysLGg0mlvuOWWaqqnVapGbm2vFElqXq6srli1bhri4OPzwww+YNWuWIu68lEgIgT179pjXtNyqi7dNmzaIjo5GZmYmLl68aMVSykeSJAwdOhQff/wxSkpKMG7cuBaxPkqSJDg4OMDJyQkODg716sp3d3fHF198AQ8PD8yfPx+XLl2yQklvzqrftKYPhk6nw/3333/LL3qVSoW7774b1dXVOHbsWKPfTEIIHD9+HIByxltMLZHg4OBb7i9kmjUGGAOyuX6gTOfU/Pe//0WXLl2wfPlyzJ07164Goq2loqICycnJ8PHxQYcOHW75WJVKhf79+6O6utqu11FIkoRJkybh+eefR0pKCiZPnmw+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\n",
"text/plain": [
"<Figure size 500x400 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model(dataset['train_input'])\n",
"model.plot(beta=10)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "aa26622b",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loss: 1.82e-01 | test loss: 1.80e-01 | reg: 3.61e+01 : 100%|██| 50/50 [00:14<00:00, 3.37it/s]\n"
]
}
],
"source": [
"model.fit(dataset, opt=\"LBFGS\", steps=50, lamb=0.002, lamb_entropy=10.0, lamb_coef=1.0);"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "9d162e40",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 500x400 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model.plot(in_vars=[r'$x_{}$'.format(i) for i in range(1,7)])"
]
},
{
"cell_type": "markdown",
"id": "b239996d",
"metadata": {},
"source": [
"This gives the dependence among $(x_4,x_5)$. Another random seed can give dependence among $(x_1,x_2,x_3)$."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "e3c31cf5",
"metadata": {},
"outputs": [],
"source": [
"seed = 6\n",
"model = KAN(width=[6,1,1], grid=3, k=3, seed=seed)\n",
"dataset = create_dataset()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e1d5046a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 500x400 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model(dataset['train_input'])\n",
"model.plot(beta=10)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "52ec328b",
"metadata": {},
"outputs": [],
"source": [
"# set the (1,0,0) activation to be gausssian\n",
"#model.fix_symbolic(1,0,0,lambda x: torch.exp(-x**2/10),fit_params_bool=False)\n",
"model.fix_symbolic(1,0,0,'gaussian',fit_params_bool=False)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "79fff8e1",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 500x400 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model(dataset['train_input'])\n",
"model.plot(beta=10)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "818d76e2",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loss: 2.11e-01 | test loss: 2.35e-01 | reg: 7.55e+00 : 100%|█| 100/100 [00:14<00:00, 6.75it/s\n"
]
}
],
"source": [
"model.fit(dataset, opt=\"LBFGS\", steps=100, lamb=0.01, lamb_coef=1.0);"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "c5cb7884",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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QUpKCjQaDZ566iksWLAAiYmJ6NChA7788kvMnDkTJ0+edKsxfUcTEZSUlGD37t1ISkrCkCFD8Oqrr8LDwwP/7//9P5e6gZijWbcbVz2qIvfnlMFwEcHWrVvx+uuv47bbbsO3336LqKgoGAwGeHh44P3338eiRYuwePFil/rE5wgVFRV45ZVXsHPnTgwcOBDz589H165doSgKRARPPPEE3n33XXz11Vd47rnnsHTp0hZz5r0arJdOyc7OxjfffIMvv/wSx44dg8FgwO23347p06dj2rRpCA0NRUVFhbPLdbiqRysMFrInp4TL9evX8dxzz8FsNmP58uWIioqCoijw9PTEwoULsXXrVqxcuRLPPPMMunfv7owSnUJEsG7dOvzzn/9EVFQUFi1aBD8/v2pLsDt06IC5c+eiY8eOSElJwQsvvIDk5GR07ty5VQeMiODKlSvYvHkz1q1bh3379qG4uBjt2rVDbGwsnnzyScTFxSEgIKBV9xNQfSKfyF4c/tFFRPD3v/8d2dnZmDRpEh566KFqG3mnTp0wZ84cFBYWIjk5udUM+4gIcnJy8P7776NDhw546aWXqgVLVTqdDlOmTMGECRNw/vx5vPLKK63yUzhgGV49efIknn/+edx1112YNm0adu3ahV69euH111/H3r178c033+Cpp55q1hxVS8CjFnIkh29hFy9eRHJyMgIDAzF//vwaE6qKomDSpEno1KkT1q1bh/z8fEeX6BRGoxF///vfUVZWhpkzZyIsLKzeHaFOp8OsWbMwaNAg7Nu3D+vWrWs1QQxYdpQ//vgj5syZg2HDhmHJkiUwGAyYMWMG/vnPf+Lf//435s6di4iICOh0ulYdKsAvRytcfkyO4tBwERG88847yMvLw6xZs9C1a9daH9exY0c89thjyM3NxYYNG1r8TlNEsH//fhw4cABRUVGIj49v1Bvfy8sLL774Ijp06IDVq1fj1KlTraKv8vPz8eqrr2LYsGFYtmwZ2rdvj1dffRX79+/HO++8g5iYGHh7e3PneRMetZAjOXQr+/nnn7FmzRoEBQVhxowZdb75FUXBb37zG+h0OqxevbrFL5c0GAxISUkBADzzzDONvi+JoigICQnBzJkzUVZWhqVLl9pubNYSGY1GbNq0Cffeey8WLFgARVHw17/+FT/88AP++Mc/qnL+T0tkXYrNoxZyJIe9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\n",
"text/plain": [
"<Figure size 500x400 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model.plot(in_vars=[r'$x_{}$'.format(i) for i in range(1,7)])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6b5975f8",
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}