{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "$$\n", "\\newcommand{\\mat}[1]{\\boldsymbol {#1}}\n", "\\newcommand{\\mattr}[1]{\\boldsymbol {#1}^\\top}\n", "\\newcommand{\\matinv}[1]{\\boldsymbol {#1}^{-1}}\n", "\\newcommand{\\vec}[1]{\\boldsymbol {#1}}\n", "\\newcommand{\\vectr}[1]{\\boldsymbol {#1}^\\top}\n", "\\newcommand{\\rvar}[1]{\\mathrm {#1}}\n", "\\newcommand{\\rvec}[1]{\\boldsymbol{\\mathrm{#1}}}\n", "\\newcommand{\\diag}{\\mathop{\\mathrm {diag}}}\n", "\\newcommand{\\set}[1]{\\mathbb {#1}}\n", "\\newcommand{\\norm}[1]{\\left\\lVert#1\\right\\rVert}\n", "\\newcommand{\\pderiv}[2]{\\frac{\\partial #1}{\\partial #2}}\n", "\\newcommand{\\bb}[1]{\\boldsymbol{#1}}\n", "\\newcommand{\\Tr}[0]{^\\top}\n", "\\newcommand{\\softmax}[1]{\\mathrm{softmax}\\left({#1}\\right)}\n", "$$\n", "\n", "# CS236781: Deep Learning\n", "# Tutorial 11: Variational AutoEncoders\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Introduction\n", "\n", "In this tutorial, we will cover:\n", "\n", "- Discriminative Vs. Generative\n", "- start simple- KDE and GMM\n", "\n", "- VAE\n", " - KL divergence\n", " - representation trick\n", " - VAE loss\n", " - code example\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2022-03-24T07:25:15.707910Z", "iopub.status.busy": "2022-03-24T07:25:15.707373Z", "iopub.status.idle": "2022-03-24T07:25:16.993157Z", "shell.execute_reply": "2022-03-24T07:25:16.992767Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Setup\n", "%matplotlib inline\n", "import numpy as np\n", "import pandas as pd\n", "import os\n", "import sys\n", "import time\n", "import matplotlib.pyplot as plt\n", "from mpl_toolkits.mplot3d import Axes3D\n", "import seaborn as sns; sns.set()\n", "\n", "\n", "\n", "# pytorch\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import torchvision\n", "from torchvision import datasets, transforms\n", "from torch.utils.data import DataLoader,Dataset \n", "\n", "\n", "if torch.cuda.is_available():\n", " torch.backends.cudnn.deterministic = True\n", "\n", "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n", " \n", "# sklearn imports\n", "from sklearn import mixture\n", "from sklearn.manifold import TSNE" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2022-03-24T07:25:16.995346Z", "iopub.status.busy": "2022-03-24T07:25:16.995233Z", "iopub.status.idle": "2022-03-24T07:25:17.008877Z", "shell.execute_reply": "2022-03-24T07:25:17.008540Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "plt.rcParams['font.size'] = 20\n", "data_dir = os.path.expanduser('~/.pytorch-datasets')\n", "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Discriminative Vs. Generative" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "recall for our probabalistic notation:\n", "\n", "- Domain: $\\vec{x}^i \\in \\set{R}^D$\n", "- Target: $y^i \\in \\set{Y}$ - typically for classification, a set of classes.\n", "\n", "* When did we solve a regresion problem in the course?\n", "* what was the Target space there?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**Discriminative models**, are most of the models we saw in the course so far: we're trying to learn $P(Y|X)$ \n", "for that type of models, we have to use labels, so we use supervised learning setup.\n", "\n", "**Generative models**, are models that learn $P(X)$ rather explicitly (Today), or implicitly (Next week). can also learn $P(X|Y)$ if we know the target space.\n", "\n", "and serve two perposes:\n", "\n", "1. we can use bayes rule: $(Y|X) = \\frac{P(X|Y) P(X)}{P(Y)}$ and since we only like to maximize, we can only look at $P(X|Y) P(X)$, and thus we can classify the example!\n", "\n", "2. We can sample the learned distribution $P(X)$ or $P(X|Y)$ and generate new instances !\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## KDE" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "A bit before we dive into the deep (learning/water), let's see how we might create a generative model for low- dimentional data.\n", "\n", "We have N points $X \\in \\set{R}^2$ where $X_i$ ~ $D$ and we want to learn $D$\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def make_data(N, f=0.3, rseed=1):\n", " rand = np.random.RandomState(rseed)\n", " x = rand.randn(N)\n", " x[int(f * N):] += 5\n", " return x\n", "\n", "x = make_data(1000)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "simplest way (yet not accurate) to estimate D would be to use a histogram of the samples.\n", "\n", "Problem:\n", "\n", "* when the values are of a continues grid, each uniqe value would have a column with the hight of one.\n", " * we can choose in advance the number of bins we want to use\n", " * each datapoint that will come in a bit will be assined for the bin" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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FuXn5wf3z5o1S8nJyTp27Jgk6fDhw8rPz1diYqKys7N15MgRSVJjY+Og4wAAY8t2DV+6elrmq6++Kp/Pp9LSUlVWVqqyslJVVVXKzMzUmTNn9OSTT6qnp0e33Xabfv3rXyspKUlnz55VbW2tOjs7NXPmTG3btk3f/OY3x2JcAICvCSnwAQDjH/fSAQBDEPgAYAgCHwAMQeADgCEI/BAdO3ZMpaWlcrvdeuCBB3T27NlolzQsTU1NKi4uVkFBgerr66Ndzoi9/PLLWrp0qZYuXaqtW7dGu5yIeP7551VbWxvtMkbs/fffV0lJiYqKivT0009Hu5wRO3z4cPCz9vzzz0e7nOGxEJK77rrLOn36tGVZlvXmm29aq1atinJF4fv888+tu+66y7pw4YLV29truVwu65NPPol2WcP20UcfWT/96U+ty5cvW1euXLHKy8utlpaWaJc1Iq2trdaiRYusX/7yl9EuZUT+85//WHl5edb58+etK1euWPfff7/117/+NdplDdulS5esH/zgB1ZnZ6fl8/ms0tJS66OPPop2WWFjhh+CK1eu6PHHH9e8efMkSXPnztX58+ejXFX4rr0RXkpKSvBGeOOVw+FQbW2tkpKSlJiYqO985zs6d+5ctMsati+//FJ1dXVatWpVtEsZsXfffVfFxcXKyMhQYmKi6urqdPvtt0e7rGHz+/0KBALq6+vTwMCABgYGlJycHO2ywkbghyApKUlu99XbKAcCAb388stavHhxlKsKX0dHhxwOR7DtdDrl8XiiWNHIfPe73w3epfXf//633n77bd15553RLWoEfvWrX6m6ulpTp06Ndikj9tlnn8nv92vVqlVyu93at2/fuL7oMjU1VY8//riKiop05513atasWVq4cGG0ywobgf81b7/9tvLz8wf9efDBByVdnemvXbtWAwMDevTRR6Nb6DDY3QhvvPrkk0/00EMPad26dZo9e3a0yxmWN998UzNnztQdd9wR7VIiwu/3q62tTc8++6z279+v48ePq6GhIdplDduZM2d08OBB/eUvf9EHH3yg+Ph4vfbaa9EuK2w8FuprioqKVFRUdN323t5erV69WmlpaXrllVeUmJgYhepGJiMjQ+3t7cH2RLih3bFjx1RVVaX169dr6dKl0S5n2I4cOSKv1yu3262LFy/q0qVLevbZZ7V+/fpolzYst956q+644w5Nnz5dkrR48WIdP35cJSUlUa5seD788EPdcccdmjFjhqSrz/fYt2+fKioqolxZeJjhh6impkbf+ta3tH37diUlJUW7nGGxuxHeeHP+/Hk99thjeuGFF8Z12EvS66+/rj/+8Y86fPiwqqqq9KMf/Wjchr0k3XXXXfrwww/11Vdfye/364MPPtBtt90W7bKGbd68eWptbdWlS5dkWZbef/99ZWZmRrussDHDD8GpU6f05z//WXPmzNF9990n6er69+7du6NcWXjS09NVXV2t8vLy4I3wsrKyol3WsL322mu6fPmynnvuueC2FStW6P77749iVZCk22+/XRUVFSorK5PP59MPf/hD/fjHP452WcOWl5enU6dOqaSkRImJicrMzNQjjzwS7bLCxs3TAMAQLOkAgCEIfAAwBIEPAIYg8AHAEAQ+ABiCwAcAQxD4AGAIAh8ADPFfVnSmbNcz+kQAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "hist = plt.hist(x, bins=30,density=True)\n", "density, bins, patches = hist\n", "widths = bins[1:] - bins[:-1]\n", "(density * widths).sum()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* if we don't have high number of datapoints, the setimation could defer." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = make_data(20)\n", "bins = np.linspace(-5, 10, 10)\n", "fig, ax = plt.subplots(1, 2, figsize=(12, 4),\n", " sharex=True, sharey=True,\n", " subplot_kw={'xlim':(-4, 9),\n", " 'ylim':(-0.02, 0.3)})\n", "fig.subplots_adjust(wspace=0.05)\n", "for i, offset in enumerate([0.0, 0.6]):\n", " ax[i].hist(x, bins=bins + offset, density=True)\n", " ax[i].plot(x, np.full_like(x, -0.01), '|k',\n", " markeredgewidth=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "to avoid sampling only the mean of each bin, think that instead of stacking blocks we can add a block (with small width) around each point:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x_d = np.linspace(-4, 8, 2000)\n", "density = sum((abs(xi - x_d) < 0.5) for xi in x)\n", "\n", "plt.fill_between(x_d, density, alpha=0.5)\n", "plt.plot(x, np.full_like(x, -0.1), '|k', markeredgewidth=1)\n", "\n", "plt.axis([-4, 8, -0.2, 8]);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "This is starting to look more like a distribution function, yet we need to determine the width of each bin\n", "\n", "and more important, it is still discrete.\n", "\n", "We can, instead, add a gaussian around each point:\n", "\n", " \n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "(-0.02, 0.22)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.neighbors import KernelDensity\n", "\n", "# instantiate and fit the KDE model\n", "kde = KernelDensity(bandwidth=1.0, kernel='gaussian')\n", "kde.fit(x[:, None])\n", "\n", "# score_samples returns the log of the probability density\n", "logprob = kde.score_samples(x_d[:, None])\n", "\n", "plt.fill_between(x_d, np.exp(logprob), alpha=0.5)\n", "plt.plot(x, np.full_like(x, -0.01), '|k', markeredgewidth=1)\n", "plt.ylim(-0.02, 0.22)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Other way could be to use a Gausian Mixture Model (GMM):\n", "\n", "
\n", "\n", "\n", "And while the original algorithm is unsupervised learning, using labels we can tweek it to learn $P(Y|X)$, where for each new datapoint, we can decide what distribution it is more likely come from." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "If you are intrested, you can [watch](https://www.youtube.com/watch?v=XLKoTqGao7U&ab_channel=VictorLavrenko) the EM algorithm\n", "\n", "and to experince with code, you may run the code below:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAx8AAAHiCAYAAACJN3FLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzdd5xcZ3n3/885Z+ruzGzvVatuS7Jly5YrBmFcwAJXMBhDChCKDeEJEEJICC2B50dwiEkgBB6eJA8JGMcYjEsMGEwx7kWyrV5Wq+2975Rz378/7jNNu7JVt17v12teMzs7s3t2NZqd79z3dV2W1lojhBBCCCGEEKeZPdcHIIQQQgghhFgaJHwIIYQQQgghZoWEDyGEEEIIIcSskPAhhBBCCCGEmBUSPoQQQgghhBCzQsKHEEIIIYQQYlZI+BBiCTp8+DCrV6/mhz/8Yd713/nOd/jkJz95Wr7ntm3b+Ou//msAtm/fzoc//OFT8nXvvPNOPve5z52SrwXwyU9+ku985zsAvOUtb2FkZIR77rmHP/mTP5mTr3M8Pve5z3HnnXeetq+fa/v27WzZsgWA//qv/+Jb3/rWK97+hz/8Id/73veO+/tcc801PPHEE9Ouv/XWW3nooYeO++udiPb2dj75yU9y5ZVX8qY3vYkrr7ySO+64g2QyCcATTzzB6tWr+fM///MZj3Pjxo3HdTshhFjMJHwIsUTZts2Xv/xl9u/fPyvfb+/evXR3dwOwfv16/vEf/3FWvu/J+PGPf0wsFps3X2e+evvb38773ve+V7zNM888w9TU1Cwd0anT3d3N2972Ns455xweeugh7r//fu655x7279/Pl7/85cztKioq+OUvf8nk5GTmuvb2dg4cOJD39Y71dkIIsVhJ+BBiiQqFQvzhH/4hH/vYx0gkEtM+n0gk+Nu//Vuuu+463vzmN/PJT36SsbExwKxiXH/99WzdupUPfehDXHfddTzxxBMopfjCF77ATTfdxBvf+EauvvpqnnnmGTo7O/nHf/xHnn76af7iL/6CJ554gmuuuYbR0VHOOeccent7M9/3pptu4tFHH33F7380e/bs4dZbb2Xr1q28+c1v5t5778187lvf+hZXXHEF1113HV/84hcz79q/ktWrVzMwMJB33UMPPcTll1+eCW0//OEPuf7667n22mv5gz/4A/bt2/eKX6e3t5f3ve99bN26lWuvvTZz+66uLt7//vezdetWrrnmGr797W9n7v/zn/+ca6+9lje/+c28/e1vZ9u2bQCMjY3xkY98hCuvvJJbb731qEHyzjvv5GMf+xjvfOc7ufLKK/nIRz6S+V1u2bKFP/3TP+Xqq6/mZz/7Gd3d3XzoQx/K/Pt+85vfzHyd//zP/+TKK6/khhtu4D//8z/zvn569enAgQPceuutvOlNb2Lr1q088MAD/OxnP+ORRx7h//7f/5tZ/fjGN77Bddddx1ve8hY++MEPZoLp3r17eetb38rWrVv5yEc+wsTExFH/fX72s59x/fXX88Y3vpFvfOMbma/7Z3/2Z5nbPP3001x77bXT7vv8889zyy23cNNNN/Ha176WT33qUzN+j/Tj5q1vfSuWZQFQWFjIX/3VX9HU1JS5XXFxMeeeey4///nPM9fde++9bN26Ne/rHevthBBisZLwIcQS9oEPfICCggLuuOOOaZ/71re+heM43HPPPfzkJz+hsrKSr3zlK6RSKW6//XY+8pGPcN9993HrrbeyY8cOAF544QV6enr4wQ9+wAMPPMB1113Hv/7rv1JTU8OHP/xhNm3axN/93d9lvkc0GuUNb3gDP/nJTwDYt28ffX19XHrppUf9/keTSqX4wAc+wK233sp9993Hv/7rv/LVr36V5557jt/85jfcc8893H333dxzzz2Mj4+f0O/rpz/9KV//+tf5j//4D1paWnjyySe59957+d73vse9997Le97zHm677bZX/BptbW385V/+Jffddx+bNm3KbM362Mc+xubNm7nvvvv4r//6L37yk59w//33s2/fPj7zmc9w55138pOf/IQPf/jDfPCDH2RsbIx//Md/JBQK8dBDD/G1r33tFd89f+qpp/iHf/gHHnzwQXw+H//0T/+U+dzKlSt58MEHecMb3sDHP/5xbrjhhszv67HHHuOBBx5gx44dfP3rX+f//b//x3//93/j9/tn/D7/63/9L6666iruv/9+vvWtb/HVr36VCy+8kC1btvAHf/AH3HLLLdx7773s3r2bH/7wh/z4xz/msssu49Of/nTm93DTTTdx33338a53vYuOjo6j/kzj4+Pcdddd3HXXXfzkJz/h0Ucf5a1vfSu/+tWvGBoaAuCuu+7i5ptvnnbff//3f+fDH/4wP/zhD7n//vt55JFHePHFF6fd7umnn+aSSy6Zdn1lZSW33npr3nXXXnstP/7xjzMfP/jgg1xzzTXT7nustxNCiMXIN9cHIISYO7Zt8//9f/8f11577bQXWL/61a8YHR3lscceAyCZTFJWVsbu3bsBuOyyywC44IILWLlyJQAbN26kqKiI73//+7S1tfHEE09QWFj4isdw00038dnPfpY//uM/5r//+7+54YYbsG37qN//aA4ePEg8HueKK64AoKqqiiuuuILf/OY3jIyMcNVVV2W2Pt1yyy08/vjjx/W72r59O7/5zW/41Kc+RU1NTeZ31NramvfidmRkJPPCdyYbNmzIvGO+du1afvaznzExMcGzzz7L//k//wcwoez666/n17/+NUNDQ1xwwQU0NDQAcOGFF1JaWsqLL77I73//ez71qU9hWRalpaW84Q1vOOr3veqqqygvLwfgxhtv5G//9m8ztQebNm0CYGJigqeeeorh4WG+9rWvZa7buXMnXV1dXHzxxVRUVADwtre9jd/+9rd532NoaIidO3dy0003AVBTU5P3Dn/aL3/5S7Zv384NN9wAgFKKyclJBgcH2bVrV2al4txzz808tmZy44034vP5iEQiXHnllTz22GNcdtllvPa1r+XHP/4x1157Lb/97W/5zGc+M+2+X/rSl/j1r3/NN7/5Tfbv3088Hp9xlUVrnVnxAPj2t7/NfffdB0BfXx/3339/5nOve93r+Ju/+Rv6+vpobW2lpaWFoqKiaV/zWG8nhBCLkYQPIZa4mpoaPvvZz/Lnf/7nedtTlFJ86lOfyoSM8fFx4vE4vb29aK3zvobjOIB5Mf7FL36RP/zDP+T1r389LS0tmVWNo9m0aROpVIpt27bx05/+lB/84Aev+P2PxnXdvBeJYF44plIpfD5f3jGnjxdMMXjaF77whaN+/Wg0yt///d/zp3/6p7z2ta+lvr4epRRvectb+PjHP5455p6enld8IenzZZ92LctCa41SatrvVClFKpVCKXXUnyt9eaaf60i5n1NKYdvZhe+CgoLM9Vprvv/97xMOhwEYGBggGAzygx/84FW/V/pnyz3e/fv3U1tbO+1ne8973sM73vEOwGzxGx4ezvv5jvyar/Yzaa0zt73lllv4m7/5G3w+H1dcccWMAfid73wnq1ev5tJLL+Xqq6/mhRdemPZvACZQP/nkk7zuda8D4D3veQ/vec97ALOdTimVuW0gEOCKK67g/vvvZ+/evVx33XUzHvex3k4IIRYj2XYlhOCqq67iNa95Df/2b/+Wue6SSy7he9/7HolEAqUUf/VXf8VXv/pVli9fTiAQ4Ne//jVg6j92796NZVn87ne/43Wvex3veMc7WLduHT//+c9xXRcwLxTTL5iPdNNNN/H5z3+e1atXZ1YVjvb9j6alpQWfz8fDDz8MmELh//mf/+Giiy7isssu4+GHH2Z0dBSAu+++O3O/H//4x5nT+vXrj/r1m5ubufDCC7n11lv58z//c5RSXHLJJdx///309PQApuvTu9/97lf9fR8pEolw1llnZeohRkdHuffee7nooou48MIL+e1vf0tbWxsAv//97+ns7OSss87i0ksv5e6770YpxfDwML/4xS+O+j1+8YtfMDo6ilKKu+66K/Ni+sjjOPvss/nud78LmFWct7/97fziF7/g4osv5ne/+x1dXV0A/OhHP5rx/meeeWam1qazs5O3v/3tjI6O5v37X3LJJdx9992ZupOvfe1rfOITn6CkpIQzzzwz04XtpZdeyqy0zeTee+9Fa83w8DAPPvggl156KQDnnHMOtm3zne98Z8YtVyMjI2zfvp2PfexjXHHFFXR1dXHo0KG8IJH2gQ98gAcffJB7770381hOpVI88MADAHkhDsyWqh/96Ec89dRTmeOZybHeTgghFhtZ+RBCAPDpT3+aZ555JvPxBz/4Qb785S9z3XXX4boua9eu5ZOf/CQ+n48777yTz3zmM3z1q1+lubmZ8vJyQqEQN998M3/2Z3/G1q1bSaVSXHzxxTz88MMopTj77LP5p3/6J2677bYZ98p/9atfzQsXR/v+R+P3+/nnf/5nvvCFL3DnnXfiui4f+tCHuOCCCwB461vfytve9jZCoRArV67MvLN/vN7//vfzyCOP8O1vf5v3ve99vPe97+WP/uiPsCyLSCTC17/+9WkrFcfiK1/5Cp/73Oe45557SCQSbN26leuvvx7LsvjMZz7Dbbfdhuu6hEIhvvnNbxKNRrn99tv5zGc+w9VXX01paSmrVq066tcvLy/nve99L4ODg5x33nm8//3vP+pxfP7zn2fr1q0kEgmuueYa3vzmNwPw8Y9/nHe/+90UFhayYcOGGe//93//93z2s5/lP/7jP7Asiy9+8YtUVFTwmte8hi996UsA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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from matplotlib.colors import LogNorm\n", "\n", "n_samples = 500\n", "\n", "# generate random sample, two components\n", "np.random.seed(0)\n", "\n", "# generate spherical data around (20, -20)\n", "shifted_gaussian = np.random.randn(n_samples, 2) + np.array([20, -20])\n", "\n", "# generate zero centered stretched Gaussian data\n", "C = np.array([[-1.0, -0.7], [3.5, 0.7]])\n", "stretched_gaussian = np.dot(np.random.randn(n_samples, 2), C)\n", "\n", "# concatenate the two datasets into the final training set\n", "X_train = np.vstack([shifted_gaussian, stretched_gaussian])\n", "\n", "# fit a Gaussian Mixture Model with two components\n", "clf = mixture.GaussianMixture(n_components=2, covariance_type=\"full\")\n", "clf.fit(X_train)\n", "\n", "\n", "# display predicted scores by the model as a contour plot\n", "x = np.linspace(-50.0, 50.0)\n", "y = np.linspace(-50.0, 50.0)\n", "X, Y = np.meshgrid(x, y)\n", "XX = np.array([X.ravel(), Y.ravel()]).T\n", "Z = -clf.score_samples(XX)\n", "Z = Z.reshape(X.shape)\n", "\n", "plt.figure(figsize=(15, 8))\n", "CS = plt.contour(\n", " X, Y, Z, norm=LogNorm(vmin=1.0, vmax=1000.0), levels=np.logspace(0, 3, 10)\n", ")\n", "CB = plt.colorbar(CS, shrink=0.8)\n", "plt.scatter(X_train[:, 0], X_train[:, 1], 0.8)\n", "\n", "\n", "plt.title(\"Negative log-likelihood predicted by a GMM\")\n", "plt.axis(\"tight\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And sample points (just $P(X)$) like that:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "samled point:[-3.06122449 -1.02040816] with prob:0.12\n", "samled point:[ 19.3877551 -19.3877551] with prob:0.24\n", "samled point:[ 21.42857143 -21.42857143] with prob:0.04\n", "samled point:[ 19.3877551 -19.3877551] with prob:0.24\n", "samled point:[ 19.3877551 -19.3877551] with prob:0.24\n", "samled point:[-1.02040816 -1.02040816] with prob:0.05\n", "samled point:[1.02040816 1.02040816] with prob:0.05\n", "samled point:[ 19.3877551 -21.42857143] with prob:0.11\n", "samled point:[1.02040816 1.02040816] with prob:0.05\n", "samled point:[ 19.3877551 -19.3877551] with prob:0.24\n" ] } ], "source": [ "\n", "flat = np.exp(-1*Z.flatten())\n", "flat /= np.sum(flat)\n", "for _ in range(10):\n", " idx = np.random.choice(a=flat.size, p=flat)\n", " print(f\"samled point:{XX[idx]} with prob:{flat[idx]:.2f}\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Variational-Autoencoder (VAE)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "The idea is very similar to AutoEncoder that we've already saw.\n", "\n", "Now we can work in an unsupervised fashion. means, we don't need labels.\n", "\n", "The idea is to use an Encoder to some latent space that we can enforce with some known distribution, and then project it back to the image space with minimal changes." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "
\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* **Reminder:**\n", " * our goal is to learn **distributions**. \n", " * Similiarly to GANs, the trick would be to model the desired distribution by learning a deterministic function $F_\\theta$ which maps samples from a simple distribution $Z$ (i.e standard normal) to the target distribution $X$ (this is the inverse CDF trick).\n", " * Then, to generate new samples, one can sample $Z \\sim \\mathcal{N}(0,I)$ and compute $F_\\theta(Z)$.\n", " * The true conditional distribution is given $F_{\\theta^*}(z) = p_{\\theta^*}(X | Z=z)$ (assumed to be deterministic).\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Unlike GANs, which utilizes minimax games to learn the distribution -In VAEs we would like to directly maximiaze the log-likelihood of the given data.\n", "Namely, $LL = \\frac{1}{N} \\sum_i \\log p_{\\theta}(X_i)$ where each $X_i$ is sampled from the **true** distribution $p_{\\theta^*}(X_i)$.\n", "\n", "\n", "* **How can we do this?**\n", " * Note that $p_{\\theta}(X)$ can be marginalized as follows: $p_{\\theta}(X) = \\int p_\\theta(X|Z=z)f_Z(z) dz$.\n", " * **Idea 1:** sample from $p_\\theta(z)$ and use $F_\\theta(z) = p_\\theta(X|z)$ to approximate $p_{\\theta}(x)$.\n", " * **Problem:** Need too many samples...\n", " * **Idea 2:** if we knew the posterior $p_\\theta(z|x)$ it could have been useful...\n", " * Exploit algorithms such as Expectation-Maximization (EM).\n", " * **Problem:** hard to compute in our case, since we use a NN model." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* **Instead**: we use the *variational inference (VI)* technique:\n", " 1. Approximate $p_\\theta(z|x)$ by a model $q_\\phi(z|x)$.\n", " 2. Use this approximation to lower bound $log p_{\\theta}(x)$ (ELBO loss).\n", " 3. Update $\\theta,\\phi$ based on this lower-bound.\n", " * Q: How to fit a good $q_\\phi(z|x)$?\n", " * A: By minimizing $D_{KL}(q_\\phi(z|x) || p_\\theta(z|x))$!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Kullback-Leibler divergence" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Kullback-Leibler divergence is a metric to measure quasi-distance between 2 distributions:\n", "\n", "$$ D_{KL}(P || Q) = \\sum_{x \\in \\mathcal{X}} P(x) log(\\frac{P(x)}{Q(x)}) $$\n", "\n", "In other words, it is the expectation of the logarithmic difference between the probabilities $P$ and $Q$.\n", "\n", "* Some properties of the KL divergence:\n", " * $D_{KL}(P || Q) \\ne D_{KL}(Q || P)$\n", " * $D_{KL}(P || Q) \\geq 0$ and $D_{KL}(P || Q) = 0$ if and only if $P=Q$ almost everywhere.\n", " * $D_{KL}(P || Q) = \\mathbb{E}_P[log(\\frac{P}{Q})]$.\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Bounding the marginal log-likelihood" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "
\n", "By the Bayes' theorem:\n", "
\n", "$$ \\log p_\\theta(x) = - \\log p_\\theta(z|x) + \\log p_\\theta(x,z) $$\n", "
\n", "By adding and subtracting $\\log q_\\phi(z|x)$ from the RHS:\n", "
\n", "$$ \\log p_\\theta(x) = \\log( \\frac{q_\\phi(z|x)}{p_\\theta(z|x)} ) + [\\log p_\\theta(x,z) - \\log q_\\phi(z|x)] $$\n", "
\n", "Since the above is true for every $z$, we can take expectations w.r.t ${q_\\phi(z|x)}$:\n", "
\n", "$$ \\log p_\\theta(x) = \\mathbb{E}_{q_\\phi(z|x)}[\\log( \\frac{q_\\phi(z|x)}{p_\\theta(z|x)} )] +\n", "\\mathbb{E}_{q_\\phi(z|x)}[\\log p_\\theta(x,z) - \\log q_\\phi(z|x)] $$\n", "
\n", "By using the third property of KL-divergence:\n", "
\n", "$$ \\log p_\\theta(x) = D_{KL}(q_\\phi(z|x) || p_\\theta(z|x)) +\n", "\\mathbb{E}_{q_\\phi(z|x)}[\\log p_\\theta(x,z) - \\log q_\\phi(z|x)] $$\n", "
\n", "\n", "* Look carefully on what we have:\n", " * The log-likelihood is on the LHS.\n", " * The RHS is composed of two terms - where the first term is the KL-div we wanted to minimize to fit a good encoder.\n", " * The RHS depends on both $\\theta,\\phi$ whereas the LHS depends solely on $\\theta$.\n", " * So for a fixed $\\theta$...\n", " * maximizing the second term w.r.t $\\phi$...\n", " * is equivalent to minimizing the KL-div w.r.t $\\phi$!\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Let us refer to the second term as the ELBO (evidence lower bound) loss:\n", "$$ \\mathcal{L}(\\theta,\\phi;x) = \\mathbb{E}_{q_\\phi(z|x)}[\\log p_\\theta(x,z) - \\log q_\\phi(z|x)]$$\n", "It is called ELBO because it lower bounds the LL (recall that KL-div is always non-negative):\n", "$$ \\log p_\\theta(x) \\geq \\mathcal{L}(\\theta,\\phi;x) $$\n", "
\n", "Note that:\n", "$$ \\mathcal{L}(\\theta,\\phi;x) = \\mathbb{E}_{q_\\phi(z|x)}[\\log p_\\theta(z) + \\log p_\\theta(x|z) - \\log q_\\phi(z|x)]$$\n", "
\n", "And so:\n", "$$ \\mathcal{L}(\\theta,\\phi;x) = -D_{KL}(q_\\phi(z|x) || p_\\theta(z)) + \\mathbb{E}_{q_\\phi(z|x)}[\\log p_\\theta(x|z)]$$\n", "\n", "* The first term is called the **latent space regularization** and the second term is called the **reconstruction error**.\n", "* In VAEs we have:\n", " 1. $p_\\theta(z) \\sim \\mathcal{N}(\\bar{0},\\mathbf{I})$.\n", " 2. $q_\\phi(z|x) \\sim \\mathcal{N}(\\bar{\\mu}(x), diag(\\bar{\\sigma}^2(x))$ where both $\\bar{\\mu}(x), diag(\\bar{\\sigma}^2(x)$ are learned by an MLP. \n", " 3. The decoder $p_\\theta(x|z)$ is assumed to model $\\log p_\\theta(x|z)$ using Bernouli MLP:\n", "$$ \n", "\\log p(x|z) = x \\log g(z) + (1 − x) · \\log(1 − g(z))\n", "$$\n", "\n", "where $g(.)$ is an MLP, and the above equality is interpreted as pixelwise equality." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The Reparameterization Trick\n", "---\n", "As you recall, in deep neural networks we use **backpropagation** of the gradients to update the weights. In the training process we need to **sample** $z$'s and forward them through the decoder, and they are sampled from $\\mathcal{N}(\\mu(X), \\Sigma(X))$. So normaly, code-wise it would look something like this: `z = torch.normal(mu_x, sigma_x)` or `z = np.normal(mu_x, sigma_x)`.\n", "\n", "* What is the problem with that operation?\n", " * The sampling operation **does not have a gradient!** So we cannot update the encoder with respect to the loss function!\n", "* Solution - **The Reparametrization Trick**:\n", " * It makes the network differentiable!\n", " * The trick is as follows:\n", " * Recall that if you have $x \\sim \\mathcal{N}(\\mu, \\Sigma)$ and then you perform standartization, $x_{std}$, so that $\\mu=0, \\Sigma=1$, then you can revert it back to the original distribution by: $x = \\mu +\\Sigma^{\\frac{1}{2}} x_{std}$.\n", " * In our case, let $\\epsilon \\sim \\mathcal{N}(0,1)$: $$ z = \\mu(X) + \\Sigma(X)^{\\frac{1}{2}}\\epsilon $$\n", " * No we can take the derivative w.r.t. to $\\mu(X), \\Sigma(X)$ and backpropagate it through the network!" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "# reparametrization trick\n", "def reparameterize(mu, logvar, device=torch.device(\"cpu\")):\n", " \"\"\"\n", " This function applies the reparameterization trick:\n", " z = mu(X) + sigma(X)^0.5 * epsilon, where epsilon ~ N(0,I)\n", " :param mu: mean of x\n", " :param logvar: log variance of x\n", " :param device: device to perform calculations on\n", " :return z: the sampled latent variable\n", " \"\"\"\n", " std = torch.exp(0.5 * logvar)\n", " eps = torch.randn_like(std).to(device)\n", " return mu + eps * std" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### The VAE loss\n", "\n", "all we talked about so far is the KL div of $z$\n", "\n", "\n", "eventially, we want to reconstract the input image $X$ from this representation.\n", "\n", "the VAE Loss would be:\n", "\n", "$L(\\phi,\\theta,x) = R(\\hat{X}_{\\theta},X) + KL(p_{\\theta}(z|X),q_{\\phi}(z|X))$\n", "\n", "where the first part is the reconstruction loss of the input and the reconstucted image.$\\hat{X}_{\\theta}$ is infeere from the vector $z$ by the decoder part.\n", "\n", "we can simply use pixel-wize BCE (Binary cross enthropy)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def loss_function(recon_x, x, mu, logvar, loss_type='bce'):\n", " \"\"\"\n", " This function calculates the loss of the VAE.\n", " loss = reconstruction_loss - 0.5 * sum(1 + log(sigma^2) - mu^2 - sigma^2)\n", " :param recon_x: the reconstruction from the decoder\n", " :param x: the original input\n", " :param mu: the mean given X, from the encoder\n", " :param logvar: the log-variance given X, from the encoder\n", " :param loss_type: type of loss function - 'mse', 'l1', 'bce'\n", " :return: VAE loss\n", " \"\"\"\n", " if loss_type == 'mse':\n", " recon_error = F.mse_loss(recon_x, x, reduction='sum')\n", " elif loss_type == 'l1':\n", " recon_error = F.l1_loss(recon_x, x, reduction='sum')\n", " elif loss_type == 'bce':\n", " recon_error = F.binary_cross_entropy(recon_x, x, reduction='sum')\n", " else:\n", " raise NotImplementedError\n", "\n", " # see Appendix B from VAE paper:\n", " # Kingma and Welling. Auto-Encoding Variational Bayes. ICLR, 2014\n", " # https://arxiv.org/abs/1312.6114\n", " # 0.5 * sum(1 + log(sigma^2) - mu^2 - sigma^2)\n", " kl = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())\n", " return (recon_error + kl) / x.size(0) # normalize by batch_size" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "The Encoder part: we simply use 2 layers MLP\n", "\n", "The encoder takes the high-dimensional data, $X \\in \\mathcal{R}^D$, and encodes in a lower-dimensional latent space vector, $z \\in \\mathcal{R}^d$, that is, we model $q_{\\phi}(z|X)$. \n", "\n", "\n", "\n", "Since we are in a *variational* environment, and we model a distrubution $q_{\\phi}$, the outputs of the encoder are the mean, $\\mu(X) \\in \\mathcal{R}^d$ and the co-variance, $\\Sigma(X) \\in \\mathcal{R}^d$. \n", " * Remember that since we assume independce between the latent variables, the co-variance matrix is diagonal and we can represent it as a vector in $\\mathcal{R}^d$, where each value represents the variance (the $ii^{th}$ element in the co-variance matrix)." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# encoder - q_{\\phi}(z|X)\n", "class VaeEncoder(torch.nn.Module):\n", " \"\"\"\n", " This class builds the encoder for the VAE\n", " :param x_dim: input dimensions\n", " :param hidden_size: hidden layer size\n", " :param z_dim: latent dimensions\n", " :param device: cpu or gpu\n", " \"\"\"\n", "\n", " def __init__(self, x_dim=28*28, hidden_size=256, z_dim=10, device=torch.device(\"cpu\")):\n", " super(VaeEncoder, self).__init__()\n", " self.x_dim = x_dim\n", " self.hidden_size = hidden_size\n", " self.z_dim = z_dim\n", " self.device = device\n", " \n", " self.features = nn.Sequential(nn.Linear(x_dim, self.hidden_size),\n", " nn.ReLU())\n", " \n", " self.fc1 = nn.Linear(self.hidden_size, self.z_dim, bias=True) # fully-connected to output mu\n", " self.fc2 = nn.Linear(self.hidden_size, self.z_dim, bias=True) # fully-connected to output logvar\n", "\n", "\n", " def bottleneck(self, h):\n", " \"\"\"\n", " This function takes features from the encoder and outputs mu, log-var and a latent space vector z\n", " :param h: features from the encoder\n", " :return: z, mu, log-variance\n", " \"\"\"\n", " mu, logvar = self.fc1(h), self.fc2(h)\n", " # use the reparametrization trick as torch.normal(mu, logvar.exp()) is not differentiable\n", " z = reparameterize(mu, logvar, device=self.device)\n", " return z, mu, logvar\n", "\n", " def forward(self, x):\n", " \"\"\"\n", " This is the function called when doing the forward pass:\n", " z, mu, logvar = VaeEncoder(X)\n", " \"\"\"\n", " h = self.features(x)\n", " z, mu, logvar = self.bottleneck(h)\n", " return z, mu, logvar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The decoder takes a lower-dimensional latent space vector, $z \\in \\mathcal{R}^d$ and decodes it to a high-dimensional *reconstruction* data, $\\tilde{X} \\in \\mathcal{R}^D$ , that is, we model $p_{\\theta}(X|z)$. " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# decoder - p_{\\theta}(x|z)\n", "class VaeDecoder(torch.nn.Module):\n", " \"\"\"\n", " This class builds the decoder for the VAE\n", " :param x_dim: input dimensions\n", " :param hidden_size: hidden layer size\n", " :param z_dim: latent dimensions\n", " \"\"\"\n", "\n", " def __init__(self, x_dim=28*28, hidden_size=256, z_dim=10):\n", " super(VaeDecoder, self).__init__()\n", " self.x_dim = x_dim\n", " self.hidden_size = hidden_size\n", " self.z_dim = z_dim\n", " \n", " self.decoder = nn.Sequential(nn.Linear(self.z_dim, self.hidden_size),\n", " nn.ReLU(),\n", " nn.Linear(self.hidden_size, self.x_dim),\n", " nn.Sigmoid())\n", " #Sigmoid normelize in [0,1], like we normelize the input image\n", " #can delete that and norm by a function like tutorial 3.\n", "\n", " def forward(self, x):\n", " \"\"\"\n", " This is the function called when doing the forward pass:\n", " x_reconstruction = VaeDecoder(z)\n", " \"\"\"\n", " x = self.decoder(x)\n", " return x" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "class Vae(torch.nn.Module):\n", " def __init__(self, x_dim=28*28, z_dim=10, hidden_size=256, device=torch.device(\"cpu\")):\n", " super(Vae, self).__init__()\n", " self.device = device\n", " self.z_dim = z_dim\n", "\n", " self.encoder = VaeEncoder(x_dim, hidden_size, z_dim=z_dim, device=device)\n", " self.decoder = VaeDecoder(x_dim, hidden_size, z_dim=z_dim)\n", "\n", " def encode(self, x):\n", " return self.encoder(x)\n", "\n", " def decode(self, z):\n", " return self.decoder(z)\n", "\n", " def sample(self, num_samples=1):\n", " \"\"\"\n", " This functions generates new data by sampling random variables and decoding them.\n", " Vae.sample() actually generates new data!\n", " Sample z ~ N(0,1)\n", " \"\"\"\n", " z = torch.randn(num_samples, self.z_dim).to(self.device)\n", " return self.decode(z)\n", "\n", " def forward(self, x):\n", " \"\"\"\n", " This is the function called when doing the forward pass:\n", " return x_recon, mu, logvar, z = Vae(X)\n", " \"\"\"\n", " z, mu, logvar = self.encode(x)\n", " x_recon = self.decode(z)\n", " return x_recon, mu, logvar, z" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# define hyper-parameters\n", "BATCH_SIZE = 128 # usually 32/64/128/256\n", "LEARNING_RATE = 1e-3 # for the gradient optimizer\n", "NUM_EPOCHS = 15# 150 # how many epochs to run?\n", "HIDDEN_SIZE = 256 # size of the hidden layers in the networks\n", "X_DIM = 28 * 28 # size of the input dimension\n", "Z_DIM = 10 # size of the latent dimension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Deu to computetional constraints, we're not going to generate big images, but going to go back to mnist" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to data\\MNIST\\raw\\train-images-idx3-ubyte.gz\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "dadfbe862bff4592a803c3090856d9e2", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Extracting data\\MNIST\\raw\\train-images-idx3-ubyte.gz to data\\MNIST\\raw\n", "Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to data\\MNIST\\raw\\train-labels-idx1-ubyte.gz\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8a8021bc618a436ba8859e3a16348dda", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Extracting data\\MNIST\\raw\\train-labels-idx1-ubyte.gz to data\\MNIST\\raw\n", "Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to data\\MNIST\\raw\\t10k-images-idx3-ubyte.gz\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0c03076fa55b4531aef26476776e81b4", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Extracting data\\MNIST\\raw\\t10k-images-idx3-ubyte.gz to data\\MNIST\\raw\n", "Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to data\\MNIST\\raw\\t10k-labels-idx1-ubyte.gz\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "689bff12828a4be2acac368d4c5cea51", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0it [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Extracting data\\MNIST\\raw\\t10k-labels-idx1-ubyte.gz to data\\MNIST\\raw\n", "Processing...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\moshe\\anaconda3\\envs\\cs3600-tut\\lib\\site-packages\\torchvision\\datasets\\mnist.py:469: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at ..\\torch\\csrc\\utils\\tensor_numpy.cpp:141.)\n", " return torch.from_numpy(parsed.astype(m[2], copy=False)).view(*s)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Done!\n", "Image batch dimensions: torch.Size([128, 1, 28, 28])\n", "Image label dimensions: torch.Size([128])\n" ] } ], "source": [ "transform = torchvision.transforms.ToTensor()\n", "\n", "train_dataset = datasets.MNIST(root='data', \n", " train=True, \n", " transform=transform,\n", " download=True)\n", "\n", "test_dataset = datasets.MNIST(root='data', \n", " train=False, \n", " transform=transform)\n", "\n", "\n", "train_loader = DataLoader(dataset=train_dataset, \n", " batch_size=BATCH_SIZE, \n", " shuffle=True)\n", "\n", "test_loader = DataLoader(dataset=test_dataset, \n", " batch_size=BATCH_SIZE, \n", " shuffle=False)\n", "\n", "# Checking the dataset\n", "for images, labels in train_loader: \n", " print('Image batch dimensions:', images.shape)\n", " print('Image label dimensions:', labels.shape)\n", " break\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(8 ,5))\n", "samples, labels = next(iter(train_loader))\n", "for i in range(6):\n", " ax = fig.add_subplot(2, 3, i + 1)\n", " ax.imshow(samples[i][0, :, :].data.cpu().numpy(), cmap='gray')\n", " title = \"digit: \" + str(labels[i].data.cpu().item())\n", " ax.set_title(title)\n", " ax.set_axis_off()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epoch: 0 training loss: 171.57769 epoch time: 10.520 sec\n", "epoch: 1 training loss: 128.90011 epoch time: 11.004 sec\n", "epoch: 2 training loss: 122.67897 epoch time: 11.892 sec\n", "epoch: 3 training loss: 119.56529 epoch time: 13.966 sec\n", "epoch: 4 training loss: 117.53008 epoch time: 13.197 sec\n", "epoch: 5 training loss: 116.11026 epoch time: 13.531 sec\n", "epoch: 6 training loss: 114.98391 epoch time: 13.474 sec\n", "epoch: 7 training loss: 114.12774 epoch time: 14.079 sec\n", "epoch: 8 training loss: 113.46270 epoch time: 12.615 sec\n", "epoch: 9 training loss: 112.87070 epoch time: 12.998 sec\n", "epoch: 10 training loss: 112.36000 epoch time: 12.948 sec\n", "epoch: 11 training loss: 111.94424 epoch time: 12.560 sec\n", "epoch: 12 training loss: 111.51269 epoch time: 12.668 sec\n", "epoch: 13 training loss: 111.15255 epoch time: 12.881 sec\n", "epoch: 14 training loss: 110.82297 epoch time: 13.313 sec\n" ] }, { "data": { "text/plain": [ "'\\n# save\\nfname = \"./vae_mnist_\" + str(NUM_EPOCHS) + \"_epochs.pth\"\\ntorch.save(vae.state_dict(), fname)\\nprint(\"saved checkpoint @\", fname)\\n\\n# load\\nvae = Vae(x_dim=X_DIM, z_dim=Z_DIM, hidden_size=HIDDEN_SIZE, device=device).to(device)\\nvae.load_state_dict(torch.load(fname))\\nprint(\"loaded checkpoint from\", fname)\\n'" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create our model\n", "vae = Vae(x_dim=X_DIM, z_dim=Z_DIM, hidden_size=HIDDEN_SIZE, device=device).to(device)\n", "\n", "# optimizer \n", "vae_optim = torch.optim.Adam(params=vae.parameters(), lr=LEARNING_RATE)\n", "\n", "# save the losses from each epoch, we might want to plot it later\n", "train_losses = []\n", "\n", "for epoch in range(NUM_EPOCHS):\n", " epoch_start_time = time.time()\n", " batch_losses = []\n", " for batch_i, batch in enumerate(train_loader):\n", " # forward pass\n", " x = batch[0].to(device).view(-1, X_DIM) # just the images\n", " x_recon, mu, logvar, z = vae(x)\n", " # calculate the loss\n", " loss = loss_function(x_recon, x, mu, logvar, loss_type='bce')\n", " # optimization (same 3 steps everytime)\n", " vae_optim.zero_grad()\n", " loss.backward()\n", " vae_optim.step()\n", " # save loss\n", " batch_losses.append(loss.data.cpu().item())\n", " train_losses.append(np.mean(batch_losses))\n", " print(\"epoch: {} training loss: {:.5f} epoch time: {:.3f} sec\".format(epoch, train_losses[-1],\n", " time.time() - epoch_start_time))\n", " \n", " \n", "\"\"\"\n", "# save\n", "fname = \"./vae_mnist_\" + str(NUM_EPOCHS) + \"_epochs.pth\"\n", "torch.save(vae.state_dict(), fname)\n", "print(\"saved checkpoint @\", fname)\n", "\n", "# load\n", "vae = Vae(x_dim=X_DIM, z_dim=Z_DIM, hidden_size=HIDDEN_SIZE, device=device).to(device)\n", "vae.load_state_dict(torch.load(fname))\n", "print(\"loaded checkpoint from\", fname)\n", "\"\"\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can sample the model" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# now let's sample from the vae\n", "n_samples = 6\n", "vae_samples = vae.sample(num_samples=n_samples).view(n_samples, 28, 28).data.cpu().numpy()\n", "fig = plt.figure(figsize=(8 ,5))\n", "for i in range(vae_samples.shape[0]):\n", " ax = fig.add_subplot(2, 3, i + 1)\n", " ax.imshow(vae_samples[i], cmap='gray')\n", " ax.set_axis_off()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Investigate $z$ with interpulation\n", "\n", "we can create:\n", "$$ z_{new} = \\alpha z_1 + (1-\\alpha) z_2, \\alpha \\in [0,1] $$ \n", "\n", "and see the transition between the 2 images." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "alphas = np.linspace(0.1, 1, 10)\n", "# take 2 samples\n", "sample_dataloader = DataLoader(test_dataset, batch_size=2, shuffle=True, drop_last=True)\n", "it = iter(sample_dataloader)\n", "samples, labels = next(it)\n", "while labels[0] == labels[1]:\n", " # make sure they are different digits\n", " samples, labels = next(it)\n", "x_1, x_2 = samples\n", "\n", "# get their latent representation\n", "_,_, _, z_1 = vae(x_1.view(-1, X_DIM).to(device))\n", "_,_, _, z_2 = vae(x_2.view(-1, X_DIM).to(device))\n", "\n", "# let's see the result\n", "fig = plt.figure(figsize=(15 ,8))\n", "for i, alpha in enumerate(alphas):\n", " z_new = alpha * z_1 + (1 - alpha) * z_2\n", " x_new = vae.decode(z_new)\n", " ax = fig.add_subplot(1, 10, i + 1)\n", " ax.imshow(x_new.view(28, 28).cpu().data.numpy(), cmap='gray')\n", " ax.set_axis_off()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see what we've learned with T-SNE, to reduce dimention and cluster the outputs :)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 't-SNE of VAE Latent Space on MNIST')" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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fPbZZ+r3gnKcLMvknnvuIU899RQhhJAXX3yR/PCHP1S/Brfeeqt6jl/+8pfk8ssvJwsWLCD/9//+X7Jx40b1+0GL2fcbh9PX4C1CDqebGT9+PDZv3oxDhw6hvLwcu3fvxh//+Ef85je/wdy5c9Xjvva1r2HXrl34j//4D/zoRz+KO4+dVssXX3yBYDCIL3/5ywBi1bIvf/nL2LlzJyZPnmz62uXLl+NPf/oTlixZgn/84x+45JJLMH78eADAn//8ZyxatAgulws33XQTfvKTn2Dz5s2qLycVLcL58+djxIgRWL16NWpqalBWVka95+3bt6OmpgbLli1TH2tqakJjYyMAYNasWfB4PACAsWPH2motfv3rX8edd96J8vJylJeX44UXXsALL7ygVpfGjx+Pa665BgCwdOlS/OxnP0NDQwMeffRR7N69Gy+88AK++OILnDt3Dq2trTh69ChEUcSNN94IALjiiivw7rvv4vPPP8fx48d1f7/t7e2oqKjQtWfN/h6vvfZaDB06FBMmTAAATJw4EX/961+Z7+2KK66AJEn49NNPUVBQgEAggLFjx8YdJ4oinnnmGdx+++1q65rF448/jm9+85soKytDeXk5nn76aaxevRqvv/56r26pcjjJwAUWh9OFHDx4EE888YT653Xr1uFnP/sZvve97+GKK67AFVdcga9//et47rnn8MYbb+gEFgD8/Oc/x+LFi7Fhw4aEri/LMgRB0D1GCEEkErF87bx58/Dkk0/iiy++wF/+8hfcc889AIBTp05hx44dOHToEP72t78BACKRCF599VWd8TlZ1qxZo1530aJFyM3NpZr4o9EobrvtNjz66KPqn8+dO4cBAwYAiIk9BUEQQCzWr3700UfYv38/HnzwQcyZMwdz5szB9773PSxcuBC7d+9GXl4eVTRIkoTvfe97kGUZCxYswI033ogzZ86AEAJJkuL+Ho4ePQpCCLKzs3Vi9MKFC8jOztYda/X36PQ9Kt9T+fn5uO2225jHXXLJJfjpT3+KH/7wh7j99tupx/z9739HY2Mjli5diltuuQW33HILvvvd72L27NmoqKjAlVdeaXovHE5fhXuwOJwuQJIkRCIRXHnllXjnnXfU/7lcLhw7dgzPPfec6sGKRCKoqqrCxIkT484zYMAAPPPMM7opPycUFRXB5XKpQujs2bN4//33MWPG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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# take 2000 samples\n", "num_samples = 2000\n", "sample_dataloader = DataLoader(train_dataset, batch_size=num_samples, shuffle=True, drop_last=True)\n", "samples, labels = next(iter(sample_dataloader))\n", "\n", "labels = labels.data.cpu().numpy()\n", "# decode the samples\n", "_,_, _, z = vae(samples.view(num_samples, X_DIM).to(device))\n", "\n", "# t-SNE\n", "perplexity = 15.0\n", "t_sne = TSNE(n_components=2, perplexity=perplexity)\n", "z_embedded = t_sne.fit_transform(z.data.cpu().numpy())\n", "\n", "# plot\n", "fig = plt.figure(figsize=(10 ,8))\n", "ax = fig.add_subplot(1, 1, 1)\n", "for i in np.unique(labels):\n", " ax.scatter(z_embedded[labels==i,0], z_embedded[labels==i, 1], label=str(i))\n", "ax.legend()\n", "ax.grid()\n", "ax.set_title(\"t-SNE of VAE Latent Space on MNIST\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "#### Thanks" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "**Credits**\n", "\n", "This tutorial was written by [Moshe Kimhi](https://www.linkedin.com/in/moshekimhi/)
\n", "To re-use, please provide attribution and link to the original.\n", "\n", "\n", "some code snips from:
\n", "[kernel-density-estimation](https://jakevdp.github.io/PythonDataScienceHandbook/05.13-kernel-density-estimation.html)\n", "\n", "images sources:\n", "https://developers.google.com/machine-learning/gan/generator
\n", "https://towardsdatascience.com/comprehensive-introduction-to-turing-learning-and-gans-part-2-fd8e4a70775" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Slideshow", "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.8.8" }, "rise": { "scroll": true }, "toc-autonumbering": false }, "nbformat": 4, "nbformat_minor": 4 }