{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Neural Networks and 2x2 matrices\n",
    "\n",
    "In this session we will try to approximate a 2-by-2 matrix with a small neural network using $\\varphi=\\text{ReLU}(x)=\\text{max}\\lbrace x,0\\rbrace$ (Rectified linear units, applied component-wise) as nonlinear activation function.\n",
    "\n",
    "A small 16-parameter neural net with ReLU-nonlinearity in the first layer, no nonlinearity in the second one can represent a 2-by-2 matrix exactly.\n",
    "\n",
    "\n",
    "\n",
    "In this exercise we want to employ this net to approximate $A_\\varepsilon$ (direct operator) and $A_\\varepsilon^{-1}$ (inverse operator) for \n",
    "\n",
    "$$A_\\varepsilon = \\begin{bmatrix}\n",
    "    1  &  1 \\\\\n",
    "    1  &  1 + \\varepsilon \\\\\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "and $\\varepsilon = 10^0, 10^{-1}, 10^{-2}, 10^{-3},...$\n",
    "\n",
    "### Exercise\n",
    "**a)** For fixed $\\epsilon > 0$ and $\\sigma > 0$ generate a data set $(x_i, y_i)$ with $x_i \\sim \\mathcal{N}(0, 1)$ and $y_i^\\delta = A_\\varepsilon x_i + \\sigma \\eta_i$, $\\eta_i \\sim \\mathcal{N}(0,1)$ for $i=1,...,10^3$. Create two plots, one containing the vectors $x_i$ and the other the vectors $y_i^\\delta$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "\n",
    "eps = 0.1\n",
    "sigma = 0.01\n",
    "\n",
    "A = np.array([[1, 1], [1, 1+eps]])\n",
    "\n",
    "X = np.random.normal(size=(2, 1000))\n",
    "Y = np.dot(A, X) + sigma * np.random.normal(size=(2, 1000))\n",
    "\n",
    "plt.figure(figsize=(10,5))\n",
    "\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.title('X')\n",
    "plt.scatter(X[0,:], X[1,:])\n",
    "\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.title('Y')\n",
    "plt.scatter(Y[0,:], Y[1,:]);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**b)** For each value of $\\varepsilon$ generate the data set and split it as in the previous exercises into training and validation set. Then train the network with the previously described architecture to approximate $A_\\varepsilon$. Create one plot with all the validation error curves corresponding to the different values of $\\varepsilon$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training for eps=1.0...\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_17 (Dense)             (None, 4)                 8         \n",
      "_________________________________________________________________\n",
      "dense_18 (Dense)             (None, 2)                 8         \n",
      "=================================================================\n",
      "Total params: 16\n",
      "Trainable params: 16\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "Training for eps=0.1...\n",
      "Training for eps=0.01...\n",
      "Training for eps=0.001...\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import scale\n",
    "\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.optimizers import adam\n",
    "\n",
    "\n",
    "sigma = 0.01\n",
    "X = np.random.normal(size=(2, 1000))\n",
    "\n",
    "plt.figure(figsize=(8,5))\n",
    "\n",
    "for i, eps in enumerate([1e0, 1e-1, 1e-2, 1e-3]):\n",
    "    print('Training for eps={}...'.format(eps))\n",
    "    A = np.array([[1, 1], [1, 1 + eps]])\n",
    "    Y = np.dot(A, X) + sigma * np.random.normal(size=(2, 1000))\n",
    "    \n",
    "    # in order to be able to compare results corresponding to y-values with different magnitudes we should scale the data\n",
    "    # this also makes the training faster\n",
    "    # for the method 'scale' the features are the columns so we need to transpose the data\n",
    "    Y = scale(Y.T).T\n",
    "\n",
    "    # the network also interpret features as columns, all the data must be transposed\n",
    "    X_train, X_test, Y_train, Y_test = train_test_split(X.T, Y.T, test_size=0.5)\n",
    "\n",
    "    model = Sequential()\n",
    "    model.add(Dense(input_dim=2, units=4, use_bias=False))\n",
    "    model.add(Dense(units=2, use_bias=False))\n",
    "\n",
    "    model.compile(loss='mse', optimizer=adam(0.001))\n",
    "    \n",
    "    if i == 0:\n",
    "        model.summary()\n",
    "    \n",
    "    h = model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=1000, batch_size=100, verbose=0)\n",
    "    plt.plot(h.history['val_loss'], label=r'$\\varepsilon={}$'.format(eps))\n",
    "    \n",
    "plt.title('Direct Problem (Test error)')\n",
    "plt.yscale('log')\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**c)** Do the same for $A_\\varepsilon^{-1}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training for eps=1.0...\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_9 (Dense)              (None, 4)                 8         \n",
      "_________________________________________________________________\n",
      "dense_10 (Dense)             (None, 2)                 8         \n",
      "=================================================================\n",
      "Total params: 16\n",
      "Trainable params: 16\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "Training for eps=0.1...\n",
      "Training for eps=0.01...\n",
      "Training for eps=0.001...\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import scale\n",
    "\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.optimizers import adam\n",
    "\n",
    "\n",
    "sigma = 0.01\n",
    "X = np.random.normal(size=(2, 1000))\n",
    "\n",
    "plt.figure(figsize=(8,5))\n",
    "\n",
    "for i, eps in enumerate([1e0, 1e-1, 1e-2, 1e-3]):\n",
    "    print('Training for eps={}...'.format(eps))\n",
    "    A = np.array([[1, 1], [1, 1 + eps]])\n",
    "    Y = np.dot(A, X) + sigma * np.random.normal(size=(2, 1000))\n",
    "    \n",
    "    Y = scale(Y.T).T\n",
    "\n",
    "    # !! FOR THIS PART THE ONLY THING WE NEED TO DO IS TO INVERT X AND Y IN THE NEXT LINE\n",
    "    X_train, X_test, Y_train, Y_test = train_test_split(Y.T, X.T, test_size=0.5)\n",
    "\n",
    "    model = Sequential()\n",
    "    model.add(Dense(input_dim=2, units=4, use_bias=False))\n",
    "    model.add(Dense(units=2, use_bias=False))\n",
    "\n",
    "    model.compile(loss='mse', optimizer=adam(0.001))\n",
    "    \n",
    "    if i == 0:\n",
    "        model.summary()\n",
    "    \n",
    "    h = model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=2000, batch_size=100, verbose=0)\n",
    "    plt.plot(h.history['val_loss'], label=r'$\\varepsilon={}$'.format(eps))\n",
    "    \n",
    "plt.title('Inverse Problem (Test error)')\n",
    "plt.yscale('log')\n",
    "plt.legend();"
   ]
  }
 ],
 "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.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}