{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Mixture Density Network" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mixture Density Networks (MDNs) [1] are mixture models in which the parameters such as means, covariances and mixture proportions are learned by a neural network. MDNs combine structured data representation (a density mixture) with unstructured parameter inference (MLP neural network). Mixture Density Network learn the mixture parameters by maximizing the log-likelihood or equivalently minimizing a negative log-likelihood loss." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Assuming a Gaussian Mixture Model (GMM) with $K$ components, we can write down the probability of a test data point $y_i$ conditioned on training data $x$ as follows:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{equation}\n", " p(y_i|x) = \\sum_{k=1}^{K}\\pi_k(x) N\\big(y_i| \\mu_k(x), \\Sigma_k(x)\\big)\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where the parameters $\\mu_k, \\sigma_k, \\pi_k$ are learned by a neural network (e.g. a Multi-Layer Perceptron (MLP)) parameterixed by $\\theta$:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{equation}\n", "\\mu_k, \\sigma_k, \\pi_k = \\mathrm{NN}(x; \\theta)\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a result, the Neural Network (NN) is a multi-output model, subject to the following constraints on the ouput:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{eqnarray}\n", " \\forall k \\sigma_{k}(x) &>& 0\\\\\n", " \\sum_{k=1}^{K} \\pi_k(x) &=& 1 \n", "\\end{eqnarray}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first constraint can be achieved by using exponential activations, while the second constrained can be achieved by using softmax activations. Finally, by making use of the iid assumption, we want to minimize the following loss function:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{eqnarray}\n", " \\min_{\\theta} L(\\theta) &=& \\mathrm{NLLLoss}(\\theta) = - \\log \\prod_{i=1}^{n} p(y_i|x) = -\\sum_{i=1}^{n} \\log p(y_i|x) \\\\\n", " &=& - \\sum_{i=1}^{n}\\log \\bigg[\\sum_{k=1}^{K} \\pi_k(x_i, \\theta) N(y_i|\\mu_k(x_i,\\theta), \\Sigma_{k}(x_i,\\theta)) \\bigg]\n", "\\end{eqnarray}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the example below, we assume an isotropic covariance $\\Sigma_k = \\sigma_k^{2} I$, thus we can write a $d$-dimensional Gaussian as a product:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{equation}\n", " N(y_i | \\mu_k, \\Sigma_k) = \\frac{1}{(2\\pi)^{d/2}|\\Sigma_k|^{1/2}} \\exp \\bigg(-\\frac{1}{2}(y_i-\\mu_k)^{T}\\Sigma_{k}^{-1}(y_i-\\mu_k) \\bigg)\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{equation}\n", " N(y_i | \\mu_k, \\Sigma_k) = \\frac{1}{(2\\pi \\sigma_{k}^{2})^{d/2}} \\exp \\bigg[-\\frac{1}{2\\sigma_{k}^{2}} \\sum_{d=1}^{D}(y_{i,d} - \\mu_{k,d})^2\\bigg]\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{equation}\n", " N(y_i | \\mu_k, \\Sigma_k) = \\prod_{d=1}^{D} \\frac{1}{\\sigma_k \\sqrt{2\\pi}} \\exp \\bigg[-\\frac{1}{2\\sigma_{k}^{2}}(y_{i,d}-\\mu_{k,d})^{2} \\bigg]\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's implement a Gaussian MDN using Keras [3]!" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Couldn't import dot_parser, loading of dot files will not be possible.\n" ] } ], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import matplotlib.cm as cm\n", "import matplotlib.pyplot as plt\n", "\n", "import math\n", "import tensorflow as tf\n", "\n", "import keras\n", "from keras import optimizers\n", "from keras import backend as K\n", "from keras import regularizers\n", "from keras.models import Sequential, Model\n", "from keras.layers import concatenate, Input\n", "from keras.layers import Dense, Activation, Dropout, Flatten\n", "from keras.layers import BatchNormalization\n", "\n", "from keras.utils import np_utils\n", "from keras.utils import plot_model\n", "from keras.models import load_model\n", "\n", "from keras.callbacks import ModelCheckpoint\n", "from keras.callbacks import TensorBoard\n", "from keras.callbacks import LearningRateScheduler \n", "from keras.callbacks import EarlyStopping\n", "\n", "from sklearn.datasets import make_blobs\n", "from sklearn.metrics import adjusted_rand_score\n", "from sklearn.metrics import normalized_mutual_info_score \n", "from sklearn.model_selection import train_test_split\n", "\n", "np.random.seed(0)\n", "sns.set_style('whitegrid')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll use a synthetic dataset of K=4, 2-D Gaussians for ease of visualization." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def generate_data(N):\n", " pi = np.array([0.2, 0.4, 0.3, 0.1])\n", " mu = [[2,2], [-2,2], [-2,-2], [2,-2]]\n", " std = [[0.5,0.5], [1.0,1.0], [0.5,0.5], [1.0,1.0]]\n", " x = np.zeros((N,2), dtype=np.float32)\n", " y = np.zeros((N,2), dtype=np.float32)\n", " z = np.zeros((N,1), dtype=np.int32)\n", " for n in range(N):\n", " k = np.argmax(np.random.multinomial(1, pi))\n", " x[n,:] = np.random.multivariate_normal(mu[k], np.diag(std[k]))\n", " y[n,:] = mu[k]\n", " z[n,:] = k\n", " #end for\n", " z = z.flatten()\n", " return x, y, z, pi, mu, std\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's define a function for computing a D-dimensional Gaussian with isotropic covariance:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def tf_normal(y, mu, sigma):\n", " y_tile = K.stack([y]*num_clusters, axis=1) #[batch_size, K, D]\n", " result = y_tile - mu\n", " sigma_tile = K.stack([sigma]*data_dim, axis=-1) #[batch_size, K, D]\n", " result = result * 1.0/(sigma_tile+1e-8)\n", " result = -K.square(result)/2.0\n", " oneDivSqrtTwoPI = 1.0/math.sqrt(2*math.pi) \n", " result = K.exp(result) * (1.0/(sigma_tile + 1e-8))*oneDivSqrtTwoPI\n", " result = K.prod(result, axis=-1) #[batch_size, K] iid Gaussians\n", " return result\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we'll define the negative log-likelihood loss which takes in a $d$-dimensional $y_{true}$ vector and MDN output parameters $y_{pred}$:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def NLLLoss(y_true, y_pred):\n", " out_mu = y_pred[:,:num_clusters*data_dim]\n", " out_sigma = y_pred[:,num_clusters*data_dim : num_clusters*(data_dim+1)] \n", " out_pi = y_pred[:,num_clusters*(data_dim+1):]\n", "\n", " out_mu = K.reshape(out_mu, [-1, num_clusters, data_dim])\n", "\n", " result = tf_normal(y_true, out_mu, out_sigma)\n", " result = result * out_pi\n", " result = K.sum(result, axis=1, keepdims=True)\n", " result = -K.log(result + 1e-8)\n", " result = K.mean(result)\n", " return tf.maximum(result, 0)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's generate and visualize training and test data:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#generate data\n", "X_data, y_data, z_data, pi_true, mu_true, sigma_true = generate_data(1024)\n", "\n", "data_dim = X_data.shape[1]\n", "num_clusters = len(mu_true)\n", "#X_data, y_data = make_blobs(n_samples=1000, centers=num_clusters, n_features=data_dim, random_state=0)\n", "#X_train, X_test, y_train, y_test = train_test_split(X_data, y_data, random_state=0, test_size=0.7)\n", "\n", "num_train = 512 \n", "X_train, X_test, y_train, y_test = X_data[:num_train,:], X_data[num_train:,:], y_data[:num_train,:], y_data[num_train:,:]\n", "z_train, z_test = z_data[:num_train], z_data[num_train:]\n", "\n", "#visualize data\n", "plt.figure()\n", "plt.scatter(X_train[:,0], X_train[:,1], c=z_train, cmap=cm.bwr)\n", "plt.title('training data')\n", "plt.savefig('./figures/mdn_training_data.png')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now define the training parameters as well as MDN parameters and architecture:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "____________________________________________________________________________________________________\n", "Layer (type) Output Shape Param # Connected to \n", "====================================================================================================\n", "input_1 (InputLayer) (None, 2) 0 \n", "____________________________________________________________________________________________________\n", "dense_1 (Dense) (None, 32) 96 input_1[0][0] \n", "____________________________________________________________________________________________________\n", "dropout_1 (Dropout) (None, 32) 0 dense_1[0][0] \n", "____________________________________________________________________________________________________\n", "batch_normalization_1 (BatchNorm (None, 32) 128 dropout_1[0][0] \n", "____________________________________________________________________________________________________\n", "dense_2 (Dense) (None, 32) 1056 batch_normalization_1[0][0] \n", "____________________________________________________________________________________________________\n", "dropout_2 (Dropout) (None, 32) 0 dense_2[0][0] \n", "____________________________________________________________________________________________________\n", "batch_normalization_2 (BatchNorm (None, 32) 128 dropout_2[0][0] \n", "____________________________________________________________________________________________________\n", "dense_3 (Dense) (None, 8) 264 batch_normalization_2[0][0] \n", "____________________________________________________________________________________________________\n", "dense_4 (Dense) (None, 4) 132 batch_normalization_2[0][0] \n", "____________________________________________________________________________________________________\n", "dense_5 (Dense) (None, 4) 132 batch_normalization_2[0][0] \n", "____________________________________________________________________________________________________\n", "concatenate_1 (Concatenate) (None, 16) 0 dense_3[0][0] \n", " dense_4[0][0] \n", " dense_5[0][0] \n", "====================================================================================================\n", "Total params: 1,936\n", "Trainable params: 1,808\n", "Non-trainable params: 128\n", "____________________________________________________________________________________________________\n" ] } ], "source": [ "#training params\n", "batch_size = 128 \n", "num_epochs = 128 \n", "\n", "#model parameters\n", "hidden_size = 32\n", "weight_decay = 1e-4\n", "\n", "#MDN architecture\n", "input_data = Input(shape=(data_dim,))\n", "x = Dense(32, activation='relu')(input_data)\n", "x = Dropout(0.2)(x)\n", "x = BatchNormalization()(x)\n", "x = Dense(32, activation='relu')(x)\n", "x = Dropout(0.2)(x)\n", "x = BatchNormalization()(x)\n", "\n", "mu = Dense(num_clusters * data_dim, activation='linear')(x) #cluster means\n", "sigma = Dense(num_clusters, activation=K.exp)(x) #diagonal cov\n", "pi = Dense(num_clusters, activation='softmax')(x) #mixture proportions\n", "out = concatenate([mu, sigma, pi], axis=-1)\n", "\n", "model = Model(input_data, out)\n", "adam = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)\n", "model.compile(loss=NLLLoss, optimizer=adam, metrics=['accuracy'])\n", "model.summary()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's train the model with early stopping:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 409 samples, validate on 103 samples\n", "Epoch 1/128\n", "1s - loss: 5.9070 - acc: 0.0342 - val_loss: 6.0739 - val_acc: 0.0000e+00\n", "Epoch 2/128\n", "0s - loss: 5.5468 - acc: 0.0244 - val_loss: 5.9862 - val_acc: 0.0000e+00\n", "Epoch 3/128\n", "0s - loss: 5.5059 - acc: 0.0293 - val_loss: 5.8783 - val_acc: 0.0000e+00\n", "Epoch 4/128\n", "0s - loss: 5.2641 - acc: 0.0269 - val_loss: 5.7378 - val_acc: 0.0000e+00\n", "Epoch 5/128\n", "0s - loss: 5.0044 - acc: 0.0220 - val_loss: 5.5889 - val_acc: 0.0097\n", "Epoch 6/128\n", "0s - loss: 4.7956 - acc: 0.0196 - val_loss: 5.4150 - val_acc: 0.0194\n", "Epoch 7/128\n", "0s - loss: 4.7717 - acc: 0.0293 - val_loss: 5.2195 - val_acc: 0.0194\n", "Epoch 8/128\n", "0s - loss: 4.5822 - acc: 0.0293 - val_loss: 5.0472 - val_acc: 0.0291\n", "Epoch 9/128\n", "0s - loss: 4.4746 - acc: 0.0293 - val_loss: 4.9046 - val_acc: 0.0291\n", "Epoch 10/128\n", "0s - loss: 4.3982 - acc: 0.0513 - val_loss: 4.7775 - val_acc: 0.0388\n", "Epoch 11/128\n", "0s - loss: 4.3942 - acc: 0.0440 - val_loss: 4.6663 - val_acc: 0.0388\n", "Epoch 12/128\n", "0s - loss: 4.1395 - acc: 0.0611 - val_loss: 4.5731 - val_acc: 0.0388\n", "Epoch 13/128\n", "0s - loss: 4.0839 - acc: 0.0416 - val_loss: 4.4729 - val_acc: 0.0485\n", "Epoch 14/128\n", "0s - loss: 4.2564 - acc: 0.0367 - val_loss: 4.3763 - val_acc: 0.0583\n", "Epoch 15/128\n", "0s - loss: 4.0929 - acc: 0.0660 - val_loss: 4.2881 - val_acc: 0.0583\n", "Epoch 16/128\n", "0s - loss: 3.9556 - acc: 0.0440 - val_loss: 4.2074 - val_acc: 0.0583\n", "Epoch 17/128\n", "0s - loss: 4.0760 - acc: 0.0342 - val_loss: 4.1286 - val_acc: 0.0583\n", "Epoch 18/128\n", "0s - loss: 3.9408 - acc: 0.0367 - val_loss: 4.0593 - val_acc: 0.0777\n", "Epoch 19/128\n", "0s - loss: 3.8878 - acc: 0.0587 - val_loss: 3.9933 - val_acc: 0.0777\n", "Epoch 20/128\n", "0s - loss: 3.8631 - acc: 0.0489 - val_loss: 3.9211 - val_acc: 0.0777\n", "Epoch 21/128\n", "0s - loss: 3.7755 - acc: 0.0587 - val_loss: 3.8560 - val_acc: 0.1068\n", "Epoch 22/128\n", "0s - loss: 3.6820 - acc: 0.0611 - val_loss: 3.7960 - val_acc: 0.1068\n", "Epoch 23/128\n", "0s - loss: 3.6805 - acc: 0.0636 - val_loss: 3.7322 - val_acc: 0.1068\n", "Epoch 24/128\n", "0s - loss: 3.6072 - acc: 0.0562 - val_loss: 3.6619 - val_acc: 0.1165\n", "Epoch 25/128\n", "0s - loss: 3.5914 - acc: 0.0611 - val_loss: 3.5933 - val_acc: 0.1165\n", "Epoch 26/128\n", "0s - loss: 3.5474 - acc: 0.0660 - val_loss: 3.5266 - val_acc: 0.1165\n", "Epoch 27/128\n", "0s - loss: 3.6166 - acc: 0.0636 - val_loss: 3.4607 - val_acc: 0.1165\n", "Epoch 28/128\n", "0s - loss: 3.5039 - acc: 0.0709 - val_loss: 3.4030 - val_acc: 0.1165\n", "Epoch 29/128\n", "0s - loss: 3.4022 - acc: 0.0562 - val_loss: 3.3472 - val_acc: 0.1165\n", "Epoch 30/128\n", "0s - loss: 3.3929 - acc: 0.0685 - val_loss: 3.2874 - val_acc: 0.1165\n", "Epoch 31/128\n", "0s - loss: 3.2822 - acc: 0.0758 - val_loss: 3.2226 - val_acc: 0.1165\n", "Epoch 32/128\n", "0s - loss: 3.4340 - acc: 0.0391 - val_loss: 3.1615 - val_acc: 0.1165\n", "Epoch 33/128\n", "0s - loss: 3.2833 - acc: 0.0660 - val_loss: 3.0998 - val_acc: 0.1165\n", "Epoch 34/128\n", "0s - loss: 3.3057 - acc: 0.0611 - val_loss: 3.0442 - val_acc: 0.1165\n", "Epoch 35/128\n", "0s - loss: 3.2296 - acc: 0.0660 - val_loss: 2.9851 - val_acc: 0.1165\n", "Epoch 36/128\n", "0s - loss: 3.1976 - acc: 0.0709 - val_loss: 2.9262 - val_acc: 0.1165\n", "Epoch 37/128\n", "0s - loss: 3.3379 - acc: 0.0416 - val_loss: 2.8677 - val_acc: 0.1165\n", "Epoch 38/128\n", "0s - loss: 3.1349 - acc: 0.0587 - val_loss: 2.8123 - val_acc: 0.1165\n", "Epoch 39/128\n", "0s - loss: 3.2889 - acc: 0.0465 - val_loss: 2.7493 - val_acc: 0.1165\n", "Epoch 40/128\n", "0s - loss: 3.1267 - acc: 0.0440 - val_loss: 2.6958 - val_acc: 0.1165\n", "Epoch 41/128\n", "0s - loss: 3.1133 - acc: 0.0391 - val_loss: 2.6460 - val_acc: 0.1165\n", "Epoch 42/128\n", "0s - loss: 3.0921 - acc: 0.0807 - val_loss: 2.5883 - val_acc: 0.1165\n", "Epoch 43/128\n", "0s - loss: 2.9775 - acc: 0.0489 - val_loss: 2.5306 - val_acc: 0.1165\n", "Epoch 44/128\n", "0s - loss: 3.0426 - acc: 0.0562 - val_loss: 2.4894 - val_acc: 0.1165\n", "Epoch 45/128\n", "0s - loss: 2.9756 - acc: 0.0636 - val_loss: 2.4565 - val_acc: 0.1165\n", "Epoch 46/128\n", "0s - loss: 2.9206 - acc: 0.0538 - val_loss: 2.4081 - val_acc: 0.1165\n", "Epoch 47/128\n", "0s - loss: 2.8931 - acc: 0.0513 - val_loss: 2.3660 - val_acc: 0.1165\n", "Epoch 48/128\n", "0s - loss: 2.8887 - acc: 0.0587 - val_loss: 2.3295 - val_acc: 0.1165\n", "Epoch 49/128\n", "0s - loss: 2.7834 - acc: 0.0562 - val_loss: 2.2978 - val_acc: 0.1165\n", "Epoch 50/128\n", "0s - loss: 2.7840 - acc: 0.0489 - val_loss: 2.2597 - val_acc: 0.1165\n", "Epoch 51/128\n", "0s - loss: 2.7646 - acc: 0.0440 - val_loss: 2.2191 - val_acc: 0.0971\n", "Epoch 52/128\n", "0s - loss: 2.7916 - acc: 0.0391 - val_loss: 2.1742 - val_acc: 0.0874\n", "Epoch 53/128\n", "0s - loss: 2.6324 - acc: 0.0538 - val_loss: 2.1436 - val_acc: 0.0680\n", "Epoch 54/128\n", "0s - loss: 2.6104 - acc: 0.0709 - val_loss: 2.1323 - val_acc: 0.0583\n", "Epoch 55/128\n", "0s - loss: 2.5474 - acc: 0.0465 - val_loss: 2.0941 - val_acc: 0.0485\n", "Epoch 56/128\n", "0s - loss: 2.6980 - acc: 0.0416 - val_loss: 2.0505 - val_acc: 0.0291\n", "Epoch 57/128\n", "0s - loss: 2.5632 - acc: 0.0538 - val_loss: 2.0112 - val_acc: 0.0194\n", "Epoch 58/128\n", "0s - loss: 2.4390 - acc: 0.0342 - val_loss: 1.9608 - val_acc: 0.0000e+00\n", "Epoch 59/128\n", "0s - loss: 2.6240 - acc: 0.0489 - val_loss: 1.9134 - val_acc: 0.0000e+00\n", "Epoch 60/128\n", "0s - loss: 2.6062 - acc: 0.0465 - val_loss: 1.8807 - val_acc: 0.0000e+00\n", "Epoch 61/128\n", "0s - loss: 2.4623 - acc: 0.0318 - val_loss: 1.8648 - val_acc: 0.0000e+00\n", "Epoch 62/128\n", "0s - loss: 2.4274 - acc: 0.0293 - val_loss: 1.8435 - val_acc: 0.0000e+00\n", "Epoch 63/128\n", "0s - loss: 2.3820 - acc: 0.0416 - val_loss: 1.8149 - val_acc: 0.0000e+00\n", "Epoch 64/128\n", "0s - loss: 2.5219 - acc: 0.0293 - val_loss: 1.7766 - val_acc: 0.0000e+00\n", "Epoch 65/128\n", "0s - loss: 2.4784 - acc: 0.0318 - val_loss: 1.7594 - val_acc: 0.0000e+00\n", "Epoch 66/128\n", "0s - loss: 2.3320 - acc: 0.0562 - val_loss: 1.7520 - val_acc: 0.0000e+00\n", "Epoch 67/128\n", "0s - loss: 2.2655 - acc: 0.0269 - val_loss: 1.6908 - val_acc: 0.0000e+00\n", "Epoch 68/128\n", "0s - loss: 2.2435 - acc: 0.0367 - val_loss: 1.6086 - val_acc: 0.0000e+00\n", "Epoch 69/128\n", "0s - loss: 2.3730 - acc: 0.0367 - val_loss: 1.5474 - val_acc: 0.0000e+00\n", "Epoch 70/128\n", "0s - loss: 2.1912 - acc: 0.0293 - val_loss: 1.5112 - val_acc: 0.0000e+00\n", "Epoch 71/128\n", "0s - loss: 2.2566 - acc: 0.0538 - val_loss: 1.4697 - val_acc: 0.0000e+00\n", "Epoch 72/128\n", "0s - loss: 2.0497 - acc: 0.0293 - val_loss: 1.4552 - val_acc: 0.0000e+00\n", "Epoch 73/128\n", "0s - loss: 2.2115 - acc: 0.0367 - val_loss: 1.4480 - val_acc: 0.0000e+00\n", "Epoch 74/128\n", "0s - loss: 1.9978 - acc: 0.0244 - val_loss: 1.4215 - val_acc: 0.0000e+00\n", "Epoch 75/128\n", "0s - loss: 1.9611 - acc: 0.0220 - val_loss: 1.3279 - val_acc: 0.0000e+00\n", "Epoch 76/128\n", "0s - loss: 1.9493 - acc: 0.0244 - val_loss: 1.2173 - val_acc: 0.0000e+00\n", "Epoch 77/128\n", "0s - loss: 2.0401 - acc: 0.0220 - val_loss: 1.1278 - val_acc: 0.0000e+00\n", "Epoch 78/128\n", "0s - loss: 1.9477 - acc: 0.0293 - val_loss: 1.0995 - val_acc: 0.0000e+00\n", "Epoch 79/128\n", "0s - loss: 1.8232 - acc: 0.0342 - val_loss: 1.0629 - val_acc: 0.0000e+00\n", "Epoch 80/128\n", "0s - loss: 1.8441 - acc: 0.0342 - val_loss: 1.0179 - val_acc: 0.0000e+00\n", "Epoch 81/128\n", "0s - loss: 1.7945 - acc: 0.0196 - val_loss: 1.0220 - val_acc: 0.0000e+00\n", "Epoch 82/128\n", "0s - loss: 1.7765 - acc: 0.0196 - val_loss: 1.0123 - val_acc: 0.0000e+00\n", "Epoch 83/128\n", "0s - loss: 1.7779 - acc: 0.0196 - val_loss: 0.9859 - val_acc: 0.0000e+00\n", "Epoch 84/128\n", "0s - loss: 1.8818 - acc: 0.0220 - val_loss: 0.9265 - val_acc: 0.0000e+00\n", "Epoch 85/128\n", "0s - loss: 1.7221 - acc: 0.0269 - val_loss: 0.9135 - val_acc: 0.0000e+00\n", "Epoch 86/128\n", "0s - loss: 1.6196 - acc: 0.0244 - val_loss: 0.8858 - val_acc: 0.0000e+00\n", "Epoch 87/128\n", "0s - loss: 1.7099 - acc: 0.0196 - val_loss: 0.9017 - val_acc: 0.0194\n", "Epoch 88/128\n", "0s - loss: 1.7219 - acc: 0.0220 - val_loss: 0.9613 - val_acc: 0.0194\n", "Epoch 89/128\n", "0s - loss: 1.5476 - acc: 0.0293 - val_loss: 0.9461 - val_acc: 0.0097\n", "Epoch 90/128\n", "0s - loss: 1.5125 - acc: 0.0220 - val_loss: 0.8579 - val_acc: 0.0000e+00\n", "Epoch 91/128\n", "0s - loss: 1.4719 - acc: 0.0293 - val_loss: 0.7834 - val_acc: 0.0097\n", "Epoch 92/128\n", "0s - loss: 1.4103 - acc: 0.0147 - val_loss: 0.7143 - val_acc: 0.0097\n", "Epoch 93/128\n", "0s - loss: 1.6006 - acc: 0.0171 - val_loss: 0.7103 - val_acc: 0.0097\n", "Epoch 94/128\n", "0s - loss: 1.2985 - acc: 0.0122 - val_loss: 0.7105 - val_acc: 0.0097\n", "Epoch 95/128\n", "0s - loss: 1.3594 - acc: 0.0244 - val_loss: 0.6380 - val_acc: 0.0097\n", "Epoch 96/128\n", "0s - loss: 1.3300 - acc: 0.0122 - val_loss: 0.5237 - val_acc: 0.0000e+00\n", "Epoch 97/128\n", "0s - loss: 1.1956 - acc: 0.0147 - val_loss: 0.4397 - val_acc: 0.0000e+00\n", "Epoch 98/128\n", "0s - loss: 1.1126 - acc: 0.0049 - val_loss: 0.3710 - val_acc: 0.0000e+00\n", "Epoch 99/128\n", "0s - loss: 1.1429 - acc: 0.0244 - val_loss: 0.3235 - val_acc: 0.0000e+00\n", "Epoch 100/128\n", "0s - loss: 1.3316 - acc: 0.0244 - val_loss: 0.3533 - val_acc: 0.0000e+00\n", "Epoch 101/128\n", "0s - loss: 1.2698 - acc: 0.0171 - val_loss: 0.3225 - val_acc: 0.0000e+00\n", "Epoch 102/128\n", "0s - loss: 1.0162 - acc: 0.0318 - val_loss: 0.2567 - val_acc: 0.0000e+00\n", "Epoch 103/128\n", "0s - loss: 1.0019 - acc: 0.0244 - val_loss: 0.1909 - val_acc: 0.0000e+00\n", "Epoch 104/128\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "0s - loss: 1.1213 - acc: 0.0073 - val_loss: 0.1690 - val_acc: 0.0000e+00\n", "Epoch 105/128\n", "0s - loss: 1.2172 - acc: 0.0220 - val_loss: 0.1825 - val_acc: 0.0000e+00\n", "Epoch 106/128\n", "0s - loss: 0.9417 - acc: 0.0293 - val_loss: 0.2106 - val_acc: 0.0000e+00\n", "Epoch 107/128\n", "0s - loss: 1.1023 - acc: 0.0098 - val_loss: 0.2005 - val_acc: 0.0097\n", "Epoch 108/128\n", "0s - loss: 0.9184 - acc: 0.0269 - val_loss: 0.1490 - val_acc: 0.0097\n", "Epoch 109/128\n", "0s - loss: 0.9715 - acc: 0.0293 - val_loss: 0.0899 - val_acc: 0.0097\n", "Epoch 110/128\n", "0s - loss: 0.8439 - acc: 0.0220 - val_loss: 0.0525 - val_acc: 0.0097\n", "Epoch 111/128\n", "0s - loss: 0.7072 - acc: 0.0147 - val_loss: 0.0605 - val_acc: 0.0000e+00\n", "Epoch 112/128\n", "0s - loss: 0.6803 - acc: 0.0098 - val_loss: 0.0146 - val_acc: 0.0000e+00\n", "Epoch 113/128\n", "0s - loss: 0.7736 - acc: 0.0171 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 114/128\n", "0s - loss: 0.5061 - acc: 0.0073 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 115/128\n", "0s - loss: 0.7100 - acc: 0.0122 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 116/128\n", "0s - loss: 0.6968 - acc: 0.0196 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 117/128\n", "0s - loss: 0.4926 - acc: 0.0269 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 118/128\n", "0s - loss: 0.5244 - acc: 0.0269 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 119/128\n", "0s - loss: 0.5382 - acc: 0.0196 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 120/128\n", "0s - loss: 0.6631 - acc: 0.0171 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 121/128\n", "0s - loss: 0.5660 - acc: 0.0171 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 122/128\n", "0s - loss: 0.6036 - acc: 0.0269 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 123/128\n", "0s - loss: 0.3026 - acc: 0.0220 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 124/128\n", "0s - loss: 0.3879 - acc: 0.0244 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 125/128\n", "0s - loss: 0.4804 - acc: 0.0318 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 126/128\n", "0s - loss: 0.4000 - acc: 0.0293 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 127/128\n", "0s - loss: 0.3020 - acc: 0.0342 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n", "Epoch 128/128\n", "0s - loss: 0.3045 - acc: 0.0171 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00\n" ] } ], "source": [ "early_stopping = EarlyStopping(monitor='val_loss', min_delta=0.1, patience=32, verbose=1)\n", "callbacks_list = [early_stopping]\n", "\n", "#model training\n", "hist = model.fit(X_train, y_train, batch_size=batch_size, epochs=num_epochs, callbacks=callbacks_list, validation_split=0.2, shuffle=True, verbose=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now make predictions on test data:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "predicting on test data...\n" ] } ], "source": [ "print \"predicting on test data...\"\n", "y_pred = model.predict(X_test)\n", "\n", "mu_pred = y_pred[:,:num_clusters*data_dim]\n", "mu_pred = np.reshape(mu_pred, [-1, num_clusters, data_dim])\n", "sigma_pred = y_pred[:,num_clusters*data_dim : num_clusters*(data_dim+1)] \n", "pi_pred = y_pred[:,num_clusters*(data_dim+1):]\n", "z_pred = np.argmax(pi_pred, axis=-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll evaluate clustering performance by computing the adjusted rand score, normalized mutual information and by comparing true and predicted values for means and standard deviations:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "adjusted rand score: 0.842059401234\n", "normalized MI score: 0.840175516041\n" ] } ], "source": [ "rand_score = adjusted_rand_score(z_test, z_pred)\n", "print \"adjusted rand score: \", rand_score \n", "\n", "nmi_score = normalized_mutual_info_score(z_test, z_pred)\n", "print \"normalized MI score: \", nmi_score " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "true means: \n", "[[ 2 2]\n", " [-2 2]\n", " [-2 -2]\n", " [ 2 -2]]\n", "predicted means: \n", "[[ 2.13656688 -1.97987711]\n", " [-1.47537231 -2.03052163]\n", " [ 1.95446241 2.02965617]\n", " [-1.944049 1.96065593]]\n", "true sigmas: \n", "[[ 0.5 0.5]\n", " [ 1. 1. ]\n", " [ 0.5 0.5]\n", " [ 1. 1. ]]\n", "predicted sigmas: \n", "[ 1.26810288 0.30546659 0.61887544 0.15010625]\n" ] } ], "source": [ "mu_pred_list = []\n", "sigma_pred_list = []\n", "for label in np.unique(z_pred):\n", " z_idx = np.where(z_pred == label)[0]\n", " mu_pred_lbl = np.mean(mu_pred[z_idx,label,:], axis=0)\n", " mu_pred_list.append(mu_pred_lbl)\n", "\n", " sigma_pred_lbl = np.mean(sigma_pred[z_idx,label], axis=0)\n", " sigma_pred_list.append(sigma_pred_lbl)\n", "#end for\n", "\n", "print \"true means: \"\n", "print np.array(mu_true)\n", "\n", "print \"predicted means: \"\n", "print np.array(mu_pred_list)\n", "\n", "print \"true sigmas: \"\n", "print np.array(sigma_true)\n", "\n", "print \"predicted sigmas: \"\n", "print np.array(sigma_pred_list)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice the clustering scores are quite high, the predicted means are also close to the true means, however, the predicted sigmas are slightly off, possibly due to a difference between training and test data." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nb72FrOI1a/Dd+ESsmhq8t29ffE9XEBICxc0ZnD4t/Zrp5Kb6RlgYrrnTp1G+pdHgN5XrGObtjXtS\nq4Wgat5cvtnJ9VGIYoJXrVLRvYmJtC419cbzer2exl73IhkJ4IoKJPLl5GB9/Od36yadCczP3zX9\nPlLfr6DAuJRLDH5uL6POY7Pw3bBhAxUUFNDkyZNvPDd79myKcmSv07rGpElIRFq2DDdB06bY8IcM\nEX//uXMoaZGaztO9O+KBUlqfpZilkJoaxBHF5qpWVYk3uqiuxmccPw6rrHVr89KXDh0Mhf4ch2QY\nqezR2loIO5EY6sraWhp74ICoy5noehLWwoVEvXqZWxX+/mgw8tJLhs5WgYGod/76a0OjjQUL0LJy\n/nxsugsWYNDFf/8hBlxRgfh8QkLdno9rDdfrVEWRmy9dX4iIMJSQ1dSgl7lcGZKPDwZ+CAVeRIR4\nGZS3N2K+paV08soVM8G74tlnKaV3bzPBrNfr6eTWrUiA5LtOpaYaJ33V1iKz3sNDekb0xYvWJd2p\n1fKJa2q1dNYxo85hs/AdNWoUjRo1ypFrqR/cdx8eSvjgA3HBq1Yjezk6GlZn167iLqr27ZVbL+3b\nI+Nx1Spl7+c5cQKacr9+4q9nZcHSj43Futu1kxa+RKKbiWk5ERFq3O4lonVkkgUtZlUQoR6zaVMI\nU70e5+6zz4zfU1aGdpf//ovxjvPmwZoXZonLTYyR4uRJzAD28cFx65JQe/hhjEg0bXIQEYHEs4aE\nhweEi1zFQEGB+ajBuDicn8uXDV4bLy8olUVFRNeu0YyRI4njOJr1888QvM89RynDhxOVllLKoEFU\n4u1NE+fOJb1eTzNGjKAZ/fsjsbFpUxxHqsY5OxvXq1jGtbVdn8LDoUSePSuugEREsASnegT7pZyJ\nlMWr12MkH+++nj0b8V3Tlo/PPYduVZZcTb6+2IRHj4YmvmmTuDtLDKkB3unpaCO5fTvW2aUL+hVb\nimOJ9HE9efKkmeBdQeh0tZJMsqD1ejppqnBwHFz7339v8AbIzUfmO4i1bw+Xta1wHM7B0qWGzmPz\n52NAg9jUqt27YaGnpeE8JSejntqZVQDdumGi1Ny5Bq9A+/a4nhpiI4iOHeF6lvMKFRZCQezVC/9W\nqyGMc3IgDLVaPM6dM1JaZt5/P6lUKvR2HjvWqCvXbcHBtKK2lk5mZtKMkSPxJMfButVqpe+j6mq8\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#generate plots\n", "plt.figure()\n", "plt.scatter(X_test[:,0], X_test[:,1], c=z_pred, cmap=cm.bwr)\n", "plt.scatter(np.array(mu_pred_list)[:,0], np.array(mu_pred_list)[:,1], s=100, marker='x', lw=4.0, color='k')\n", "plt.title('test data')\n", "plt.savefig('./figures/mdn_test_data.png')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The black crosses in the figure above show the predicted means overlayed with test data. You can see visually, the means are close to cluster centers. " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(hist.history['loss'], c='b', lw=2.0, label='train')\n", "plt.plot(hist.history['val_loss'], c='r', lw=2.0, label='val')\n", "plt.title('Mixture Density Network')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Negative Log Likelihood Loss')\n", "plt.legend(loc='upper left')\n", "plt.savefig('./figures/mdn_loss.png')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that both training and validation loss are decreasing with the number of epochs. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### References" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[1] C. Bishop, \"Pattern Recognition and Machine Learning\", 2006 \n", "[2] EdwardLib, \"Mixture Density Networks\", http://edwardlib.org/tutorials/mixture-density-network \n", "[3] F. Chollet, \"Keras: The Python Deep Learning library\", https://keras.io/ \n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 2 }