{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Input space optimization\n", "\n", "In this toy example, we directly optimize point configurations in $\\mathbb{R}^2$. The example is motivated by the toy experiments from the following paper:\n", "\n", "**A Topology Layer for Machine Learning** \n", "R. Brüel-Gabrielsson, B. J. Nelson, A. Dwaraknath, P. Skraba, L. J. Guibas and G. Carlsson \n", "arXiv, 2019 \n", "[PDF](https://arxiv.org/abs/1905.12200)\n", "\n", "**Note**: In all the following examples, we use the $l_1$ norm during Vietoris-Rips persistent homology computation (whereas the paper mentioned above uses $l_2$). " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import torch\n", "import matplotlib.pyplot as plt\n", "from torchph.pershom import vr_persistence_l1\n", "\n", "device = \"cuda\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data\n", "\n", "The toy data generated for this example is sampled from a 2D uniform distribution in $[0,1]^2$. In particular, we sample 300 points." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "np.random.seed(1234)\n", "toy_data = np.random.rand(300, 2)\n", "\n", "plt.figure()\n", "plt.plot(toy_data[:, 0], toy_data[:, 1], 'b.', markersize=3)\n", "plt.title('Toy data');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 1\n", "\n", "**Task**: Optimize for uniform distribution of H0 lifetimes." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration: 1 | Loss: 15.35\n", "Iteration: 20 | Loss: 5.85\n", "Iteration: 40 | Loss: 3.74\n", "Iteration: 60 | Loss: 2.66\n", "Iteration: 80 | Loss: 2.00\n", "Iteration: 100 | Loss: 1.69\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "X = torch.tensor(\n", " toy_data, \n", " device=device, \n", " requires_grad=True)\n", "\n", "opt = torch.optim.Adam([X], lr=0.01)\n", "\n", "for i in range(1,100+1):\n", " pers = vr_persistence_l1(X, 1, 0)\n", " h_0 = pers[0][0]\n", " \n", " lt = h_0[:, 1] # H0 lifetimes\n", " loss = (lt - 0.1).abs().sum()\n", " \n", " if i % 20 == 0 or i == 1:\n", " print('Iteration: {:3d} | Loss: {:.2f}'.format(i, loss.item()))\n", " \n", " opt.zero_grad()\n", " loss.backward()\n", " opt.step() \n", " \n", "X = X.cpu().detach().numpy()\n", "plt.figure()\n", "plt.plot(X[:, 0], X[:, 1], 'b.');\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 2\n", "\n", "**Task**: Minimize (non-essential) H0 lifetimes (i.e., a slightly modified as in *Brüel-Gabrielsson et al., arXiv 2019*, Fig. 1 top-right)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration: 1 | Loss: 14.74\n", "Iteration: 20 | Loss: 7.25\n", "Iteration: 40 | Loss: 5.65\n", "Iteration: 60 | Loss: 4.87\n", "Iteration: 80 | Loss: 4.43\n", "Iteration: 100 | Loss: 4.10\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "X = torch.tensor(\n", " toy_data, \n", " device=device, \n", " requires_grad=True)\n", "\n", "opt = torch.optim.Adam([X], lr=0.01)\n", "\n", "for i in range(1,100+1):\n", " pers = vr_persistence_l1(X, 1, 0)\n", " h_0 = pers[0][0]\n", " \n", " lt = h_0[:, 1] # non-essential H0 lifetimes\n", " loss = lt.sum()\n", " \n", " if i % 20 == 0 or i == 1:\n", " print('Iteration: {:3d} | Loss: {:.2f}'.format(i, loss.item()))\n", " \n", " opt.zero_grad()\n", " loss.backward()\n", " opt.step() \n", " \n", "X = X.cpu().detach().numpy()\n", "plt.figure()\n", "plt.plot(X[:, 0], X[:, 1], 'b.');\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 3\n", "\n", "**Task**: Increase (non-essential) H0 lifetimes (i.e., a slightly modified version as in *Brüel-Gabrielsson et al., arXiv 2019*, Fig. 1 top-left)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration: 1 | Loss: -14.74\n", "Iteration: 20 | Loss: -26.88\n", "Iteration: 40 | Loss: -33.22\n", "Iteration: 60 | Loss: -38.43\n", "Iteration: 80 | Loss: -43.28\n", "Iteration: 100 | Loss: -47.87\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "X = torch.tensor(\n", " toy_data, \n", " device=device, \n", " requires_grad=True)\n", "\n", "opt = torch.optim.Adam([X], lr=0.01)\n", "\n", "for i in range(1,100+1):\n", " pers = vr_persistence_l1(X, 1, 0)\n", " h_0 = pers[0][0]\n", " \n", " lt = -h_0[:, 1] # non-essential H0 lifetimes\n", " loss = lt.sum()\n", " \n", " if i % 20 == 0 or i == 1:\n", " print('Iteration: {:3d} | Loss: {:.2f}'.format(i, loss.item()))\n", " \n", " opt.zero_grad()\n", " loss.backward()\n", " opt.step() \n", " \n", "X = X.cpu().detach().numpy()\n", "plt.figure()\n", "plt.plot(X[:, 0], X[:, 1], 'b.');\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.7.6" } }, "nbformat": 4, "nbformat_minor": 2 }