{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "7BO--Svs_K4W"
},
"source": [
"Updated 19/Nov/2021 by Yoshihisa Nitta \n",
"\n",
"# Variational Auto Encoder Training for MNIST dataset with Tensorflow 2 on Google Colab\n",
"\n",
"Train Variational Auto Encoder on MNIST dataset.\n",
"Variational Auto Encoder is a modification of the encoder and loss function for Auto Encoder.\n",
"\n",
"## MNIST データセットに対して Variational Auto Encoder をGoogle Colab 上の Tensorflow 2 で学習する\n",
"\n",
"MNIST データセットに対して変分オートエンコーダを学習させる。\n",
"Variational Auto Encoder とは、AutoEncoder に対して encoder と losss function (損失関数) に変更を加えたものである。"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"executionInfo": {
"elapsed": 362,
"status": "ok",
"timestamp": 1637563720376,
"user": {
"displayName": "Yoshihisa Nitta",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgJLeg9AmjfexROvC3P0wzJdd5AOGY_VOu-nxnh=s64",
"userId": "15888006800030996813"
},
"user_tz": -540
},
"id": "lTI3emtaTY_g"
},
"outputs": [],
"source": [
"#! pip install tensorflow==2.7.0"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 2353,
"status": "ok",
"timestamp": 1637563722727,
"user": {
"displayName": "Yoshihisa Nitta",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgJLeg9AmjfexROvC3P0wzJdd5AOGY_VOu-nxnh=s64",
"userId": "15888006800030996813"
},
"user_tz": -540
},
"id": "7q6c9ybETW0b",
"outputId": "f6c02aec-5fcd-41c3-9860-3dccb614d76a"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.7.0\n"
]
}
],
"source": [
"%tensorflow_version 2.x\n",
"\n",
"import tensorflow as tf\n",
"print(tf.__version__)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MIUEAGSC_wzR"
},
"source": [
"# About Encoder of VariationalAutoEncoder\n",
"\n",
"\n",
"\n",
"With AutoEncoder, eath image is directly mapped to one point in the latent space.\n",
"With VariationalAutoEncoder, each image is mapped to a multivariate normal distribution around a point in latent space.\n",
"\n",
"The covariance matrix is a diagonal matrix because VariationalAutoEncoder considers that there is no correlation between any dimensions of the latent space.\n",
"As a result, the encoder only needs to map each input to the mean vector and the variance vector, and does not have to worry about the correlation between the dimensions.\n",
"Furthermore, when mapped to the logarithm of the variance, any real number in the range($-\\infty$, $\\infty$) can be assigned.\n",
"\n",
"\n",
"## VariationalAutoEncoder の Encoder について\n",
"\n",
"AutoEncoder では、各画像は潜在空間の1点に直接写像される。\n",
"VariationalAutoEncoder では、各画像は潜在空間のある点の周りの多変量正規分布に写像される。\n",
"\n",
"変分オートエンコーダでは、潜在空間のどの次元間にも相関がないとみなすので、共分散行列は対角行列になる。 これにより、エンコーダは各入力を平均ベクトルと分散ベクトルに写像すればよく、次元間の相関を気にする必要はない。 さらに、分散の対数に写像すると (−∞,∞) の範囲のどのような実数でもとれる。"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ytJO1E7Tc1K4"
},
"source": [
"# Covariance Matrix\n",
"\n",
"The variance-covariance matrix is a matrix obtained by extending the concept of variance (an index showing the degree of distribution) to multidimensional random varaible.\n",
"\n",
"## Difinition for 2 random variables\n",
"\n",
"For the random variables $X_1$ and $X_2$, the variance-covariance matrix is define as follows. \n",
"\n",
"$\\Sigma = \n",
"\\left( \\begin{array}{cc}\n",
" \\sigma_1^2 & \\sigma_{12} \\\\\n",
" \\sigma_{12} & \\sigma_2^2 \\\\\n",
"\\end{array} \\right )$\n",
"\n",
"where
\n",
"$\\sigma_1^2 = \\mbox{variance of } X_1 $,
\n",
"$\\sigma_2^2 = \\mbox{variance of } X_2 $,
\n",
"$\\sigma_{12} = \\mbox{covariance of } X_1 \\mbox{ and } X_2$
\n",
"\n",
"$\\Sigma$ is called a variance-covariance matrix because the variances are lined up on the diagonal components and the covariances are lined up on the off-diagonal components.\n",
"\n",
"It is defined in the same way when there are $n$ random variables.\n",
"\n",
"For the random variables $X_1$, $\\cdots$, $X_n$, An $n\\times n$ matrix is called a variance-covariance matris where the $ii$ component is $\\sigma_i^2$, and the $ij$ component ($i\\neq j$) is $\\sigma_{ij}$.\n",
"\n",
"## Example: Find the variance and covariance of 5 data in 2 variables.\n",
"\n",
"Suppose that $(x_i, y_i) = (4,5), (5, 7), (6,6), (7,9), (8,8)$ are given as data.\n",
"\n",
"Mean of $x$ : $\\mu_x = \\displaystyle \\frac{1}{5} (4+5+6+7+8)=6$,
\n",
"Mean of $y$ : $\\mu_y = \\displaystyle \\frac{1}{5}(5 + 7+6+9+8)=7$
\n",
"\n",
"Variance of $x$:
\n",
"$\\sigma_x^2 = \\displaystyle\\frac{1}{5}\\sum_{k=1}^5 (x_i - \\mu_x)^2 \\\\\n",
"\\quad = \\displaystyle \\frac{1}{5} ((4-6)^2+(5-6)^2+(6-6)^2 + (7-6)^2 +(8-6)^2 ) \\\\\n",
"\\quad = \\displaystyle \\frac{1}{5} (2^2 + 1^2 + 0^2 + 1^2 + 2^2) = 2$
\n",
"Variance of $y$
\n",
"$\\sigma_y^2 = \\displaystyle\\frac{1}{5} \\sum_{k=1}^{5} (y_i - \\mu_y)^2 \\\\ \n",
"\\quad = \\displaystyle{1}{5}((5-7)^2 +(7-7)^2 +(6-7)^2 +(9-7)^2 +(8-7)^2 ) \\\\\n",
"\\quad = \\displaystyle \\frac{1}{5} (2^2 + 0^2 + 1^2 + 2^2 + 1^2) = 2$
\n",
"\n",
"Covariance of $x$ and $y$:
\n",
"$\\sigma_{xy} = \\displaystyle \\frac{1}{5} \\sum_{k=1}^5 (x_i - \\mu_x) (y_i - \\mu_y) \\\\ \n",
"\\quad = \\displaystyle \\frac{1}{5} ((4-6)(5-7)+(5-6)(7-7)+(6-6)(6-7)+(7-6)(9-7)+(8-6)(8-7)) \\\\\n",
"\\quad = \\displaystyle \\frac{1}{5}((-2)(-2) + (-1)\\cdot 0 + 0 \\cdot (-1) + 1 \\cdot 2 + 2 \\cdot 1)=\\frac{8}{5}=1.6\n",
"$\n",
"\n",
"Variance and covariance matrix of $x$ and $y$:
\n",
"$\\Sigma = \\left(\n",
"\\begin{array}{cc}\n",
"\\sigma_x^2 & \\sigma_{xy} \\\\ \n",
"\\sigma_{xy} & \\sigma_y^2 \\\\\n",
"\\end{array}\n",
"\\right) = \\left(\n",
"\\begin{array}{cc}\n",
"2 & 1.6 \\\\\n",
"1.6 & 2 \\\\\n",
"\\end{array}\n",
"\\right)$\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4ErC6J5DBSQS"
},
"source": [
"## 分散共分散行列\n",
"\n",
"分散共分散行列とは、分散(散らばり具合を表す指標)の概念を多次元確率変数に拡張して行列としたもの。単に共分散行列と呼ぶこともある。\n",
"\n",
"### 確率変数が2つの場合の定義\n",
"\n",
"確率変数 $X_1$, $X_2$ に対して、分散共分散行列 を\n",
"$\\Sigma = \n",
"\\left( \\begin{array}{cc}\n",
" \\sigma_1^2 & \\sigma_{12} \\\\\n",
" \\sigma_{12} & \\sigma_2^2 \\\\\n",
"\\end{array} \\right )$\n",
"と定義する。\n",
"ただし、
\n",
"$\\sigma_1^2 = X_1 \\mbox{の分散}$,
\n",
"$\\sigma_2^2 = X_2 \\mbox{の分散}$,
\n",
"$\\sigma_{12} = X_1 \\mbox{と} X_2 \\mbox{の共分散}$
\n",
"を表す。対角成分に分散が並び、非対角成分には共分散が並ぶため、分散共分散行列と呼ばれる。\n",
"\n",
"確率変数が $n$ 個の場合も同様に定義される。\n",
"\n",
"確率変数 $X_1$, $\\cdots$, $X_n$ に対して、\n",
"第 $ii$ 成分が $\\sigma_i^2$,
\n",
"第 $ij$ 成分 ($i \\neq j$)が $\\sigma_{ij}$
\n",
"であるような $n\\times n$行列 $\\Sigma$ を\n",
"分散共分散行列と呼ぶ。\n",
"\n",
"### 例題: 2変数の5個のデータの分散と共分散を求めよ。\n",
"データとして\n",
"$(x_i, y_i) = (4, 5), (5, 7), (6, 6), (7,9), (8, 8)$\n",
"が与えられたとする。\n",
"\n",
"$x$の平均 \n",
"$\\mu_x = \\displaystyle\\frac{1}{5} (4 + 5 + 6 + 7 + 8) = 6$,
\n",
"$y$ の平均\n",
"$\\mu_y = \\displaystyle\\frac{1}{5} (5 + 7 + 6 + 9 + 8) = 7$
\n",
"\n",
"$x$ の分散は
\n",
"$\\sigma_x^2 = \\displaystyle\\frac{1}{5}\\sum_{k=1}^5 (x_i - \\mu_x)^2 \\\\\n",
"\\quad = \\displaystyle \\frac{1}{5} ((4-6)^2+(5-6)^2+(6-6)^2 + (7-6)^2 +(8-6)^2 ) \\\\\n",
"\\quad = \\displaystyle \\frac{1}{5} (2^2 + 1^2 + 0^2 + 1^2 + 2^2) = 2$
\n",
"$y$の分散は
\n",
"$\\sigma_y^2 = \\displaystyle\\frac{1}{5} \\sum_{k=1}^{5} (y_i - \\mu_y)^2 \\\\ \n",
"\\quad = \\displaystyle{1}{5}((5-7)^2 +(7-7)^2 +(6-7)^2 +(9-7)^2 +(8-7)^2 ) \\\\\n",
"\\quad = \\displaystyle \\frac{1}{5} (2^2 + 0^2 + 1^2 + 2^2 + 1^2) = 2$
\n",
"\n",
"$x$ と $y$の共分散は
\n",
"$\\sigma_{xy} = \\displaystyle \\frac{1}{5} \\sum_{k=1}^5 (x_i - \\mu_x) (y_i - \\mu_y) \\\\ \n",
"\\quad = \\displaystyle \\frac{1}{5} ((4-6)(5-7)+(5-6)(7-7)+(6-6)(6-7)+(7-6)(9-7)+(8-6)(8-7)) \\\\\n",
"\\quad = \\displaystyle \\frac{1}{5}((-2)(-2) + (-1)\\cdot 0 + 0 \\cdot (-1) + 1 \\cdot 2 + 2 \\cdot 1)=\\frac{8}{5}=1.6\n",
"$\n",
"\n",
"$x$ と $y$ の分散共分散行列は
\n",
"$\\Sigma = \\left(\n",
"\\begin{array}{cc}\n",
"\\sigma_x^2 & \\sigma_{xy} \\\\ \n",
"\\sigma_{xy} & \\sigma_y^2 \\\\\n",
"\\end{array}\n",
"\\right) = \\left(\n",
"\\begin{array}{cc}\n",
"2 & 1.6 \\\\\n",
"1.6 & 2 \\\\\n",
"\\end{array}\n",
"\\right)$"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vOo-GlgLSCYv"
},
"source": [
"# Normal Distribution\n",
"\n",
"Probability density function of one-dimensional normal distribution
\n",
"$\\displaystyle f(x | \\mu, \\sigma^2) = \\frac{1}{\\sqrt{2\\pi\\sigma^2}} e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}}$
\n",
"where mean $\\mu$, variance $\\sigma^2$, standard deviation $\\sigma$.\n",
"\n",
"## 正規分布\n",
"\n",
"平均(mean) $\\mu$, 分散(variance) $\\sigma^2$, 標準偏差(standard deviatioin) $\\sigma$ として1次元の正規分布の確率密度関数
\n",
"$\\displaystyle f(x | \\mu, \\sigma^2) = \\frac{1}{\\sqrt{2\\pi\\sigma^2}} e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}}$"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 374
},
"executionInfo": {
"elapsed": 8,
"status": "ok",
"timestamp": 1637563722727,
"user": {
"displayName": "Yoshihisa Nitta",
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgJLeg9AmjfexROvC3P0wzJdd5AOGY_VOu-nxnh=s64",
"userId": "15888006800030996813"
},
"user_tz": -540
},
"id": "FGuxfvxUJ6hE",
"outputId": "ec1fe04c-45f1-4bf1-9837-4c745b409214"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAeMAAAFlCAYAAADYnoD9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeVxU9f7H8ddhFxUE3NgUFXEXUFzSFsFEM5dKy8yu9ctutt6bdcv2su12u7Znu13NFi3LsnJXzDQtxS01ERVkV0RFXECW8/vj6yAqyAAzc2b5PB8PHsjMmXM+M6Vvvt/zXTRd1xFCCCGEcdyMLkAIIYRwdRLGQgghhMEkjIUQQgiDSRgLIYQQBpMwFkIIIQwmYSyEEEIYzMOoCzdv3lyPiIgw6vJCCCGETSUnJx/Wdb1Fdc8ZFsYRERFs2rTJqMsLIYQQNqVp2oGanpNuaiGEEMJgEsZCCCGEwSSMhRBCCIMZds9YCCEASktLycrKori42OhShLAIHx8fwsLC8PT0NPs1EsZCCENlZWXRtGlTIiIi0DTN6HKEaBBd1ykoKCArK4t27dqZ/TrpphZCGKq4uJigoCAJYuEUNE0jKCiozj09EsZCCMNJEAtnUp//nyWMhRCiGm+++SanTp0yuox6W7JkCZ06dSIyMpJXXnml2mNKSkoYN24ckZGR9OvXj/T0dKvXNXz4cI4dO2b165jDnPefmZlJfHw8Xbt2pVu3brz11ltWqUXCWAghqnGpMC4vL7dxNXVTXl7Offfdx+LFi9m1axdfffUVu3btuui4mTNnEhAQwN69e5kyZQpTp061Wk26rlNRUcGiRYto1qyZ1a5TF+a8fw8PD1577TV27drFhg0bmDFjRrWfZUNJGAshXNrJkye59tpriY6Opnv37sybN4+3336bnJwc4uPjiY+PB6BJkyY8/PDDREdHs379+vPOMWjQIKZMmUJcXBxdunRh48aN3HDDDXTs2JGnnnqq8rjPP/+cvn37EhMTw+TJkytD/Z577iEuLo5u3brx7LPPVh4fERHBs88+S69evejRowe7d+826z398ccfREZG0r59e7y8vLj55pv54YcfLjruhx9+4LbbbgNg7NixrFy5El3XazzvY489xowZMyp/fu6555g+fTonTpxg8ODBlXWarpWenk6nTp2YOHEi3bt3JzMzk4iICA4fPgzAddddR+/evenWrRsfffRR5XmbNGnCk08+SXR0NP379+fgwYMAHDx4kOuvv57o6Giio6P57bffLvm51sac9x8cHEyvXr0AaNq0KV26dCE7O9us89eFjKYWQtiNBx+ErVste86YGHjzzZqfX7JkCSEhIfz8888AFBYW4u/vz+uvv05SUhLNmzcHVGj369eP1157rdrzeHl5sWnTJt566y1Gjx5NcnIygYGBdOjQgSlTpnDo0CHmzZvHunXr8PT05N577+WLL75g4sSJvPTSSwQGBlJeXs7gwYPZvn07PXv2BKB58+Zs3ryZ9957j+nTp/PJJ5+QlJTElClTLqrB19eX3377jezsbMLDwysfDwsL4/fff7/o+KrHeXh44O/vT0FBQeV7vtC4ceN48MEHue+++wD4+uuvWbp0KT4+PixYsAA/Pz8OHz5M//79GTVqFACpqanMnj2b/v37X3S+Tz/9lMDAQE6fPk2fPn0YM2YMQUFBnDx5kv79+/PSSy/x6KOP8vHHH/PUU0/xj3/8g6uuuooFCxZQXl7OiRMn+Ouvv2r8XMeNG0dKSspF133ooYeYOHFind9/eno6W7ZsoV+/ftU+3xASxkK4iLIySEpS39u3h06djK7IPvTo0YOHH36YqVOnMmLECK644opqj3N3d2fMmDE1nscUPj169KBbt24EBwcD0L59ezIzM1m7di3Jycn06dMHgNOnT9OyZUtAhdpHH31EWVkZubm57Nq1qzKMb7jhBgB69+7Nd999B0B8fDxbLf1bixliY2M5dOgQOTk55OfnExAQQHh4OKWlpTzxxBOsWbMGNzc3srOzK1uzbdu2rTaIAd5++20WLFgAqHuzqampBAUF4eXlxYgRIwD1vpcvXw7AqlWr+OyzzwD138Pf3585c+bU+LnOmzfPYu/9xIkTjBkzhjfffBM/Pz+LnddEwlgIFzF5Mnz6qfqzuzts3gxn/723G5dqwVpLVFQUmzdvZtGiRTz11FMMHjyYZ5555qLjfHx8cHd3r/E83t7eALi5uVX+2fRzWVkZuq5z22238e9///u816WlpTF9+nQ2btxIQEAAt99++3nTYkzncnd3p6ysDKDWlnFoaCiZmZmVj2dlZREaGnrR8abjwsLCKCsro7CwkKCgoBrfI8CNN97I/PnzycvLY9y4cQB88cUX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\n",
"text/plain": [
"