Raw File
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The committee machine"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Requirements:\n",
    "- Python3\n",
    "- Scipy, numpy, matplotlib, skmonaco\n",
    "\n",
    "To install and upgrade the packages: (pip3 install --upgrade numpy scipy matplotlib scikit-monaco)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Import modules and Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "code_folding": []
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import sys\n",
    "sys.path.append('Python/')\n",
    "\n",
    "from main import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# AMP and State Evolution"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let $K\\geq 1 \\in \\mathbb{N}$ the number of hidden units, $X \\in \\mathbb{R}^{M \\times N}$ the matrix containing $M$ samples of size $N$, $W \\in \\mathbb{R}^{N \\times K}$ the matrix of weights and $Y \\in \\mathbb{R}^M$ the output of the network given by:\n",
    "\n",
    "\\begin{equation}\n",
    "Y_\\mu = {\\rm{sign}}\\Big[\\sum_{l=1}^K {\\rm{sign}} \\Big( \\sum_{i=1}^N X_{\\mu i}  W_{i l} \\Big) \\Big]\\, . \\label{model:com}\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Parameters"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- $K=2$ : number of hidden units fixed in this demo\n",
    "- N $\\in$ [1000-10000] : size of each sample\n",
    "- PW_choice = {binary,gaussian} : weights distribution\n",
    "- alpha $\\in [0.0-5.0]$ : $\\alpha=\\frac{M}{N}$\n",
    "- verbose = {True,False} : to print intermediate results\n",
    "- initialization_mode = {'load_backup','committee_symmetry',' '} : 'load_backup' to initialize close to the solution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "N = 10000\n",
    "PW_choice = 'binary'\n",
    "alpha = 1.8\n",
    "verbose = False\n",
    "initialization_mode='load_backup'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## State Evolution"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The state evolution of the AMP algorithm is its assymptotic and averaged behaviour in the limit $ N\\to \\infty$. The corresponding control parameters $q$ (overlap) and $R$ are given by the set of saddle point equations:\n",
    "\\begin{equation}\n",
    "\\label{main:StateEvolution}\n",
    "q^{t+1} = 2 \\frac{\\partial \\psi_{P0} }{\\partial\n",
    "          R}(R^t) \\, , \\hspace{1cm}\n",
    "R^{t+1} = 2 \\alpha \\frac{\\partial \\Psi_{Pout\n",
    "          } }{\\partial q}(q^t;\\rho)\\, .\n",
    "\\end{equation}\n",
    "(See the article for the expressions of $\\Psi_{Pout}$ and $\\psi_{P0}$). We implemented a solver of the previous iterative equations: "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Run SE "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Start initialization\n",
      "Succeeded to load old objects :  Nearest alpha= 1.8\n",
      "Successful initialization \n",
      "\n",
      "K= 2 PW= binary alpha= 1.8 channel= sign-sign\n",
      "Start SE: Tue Jun 12 11:33:37 2018\n",
      "Final overlap q_SE=\n",
      "[0.45837986 0.24337973]\n",
      "[0.24337973 0.45837986]\n",
      "End SE\n"
     ]
    }
   ],
   "source": [
    "obj_SE = run_SE(PW_choice=PW_choice,alpha=alpha,verbose=verbose,initialization_mode=initialization_mode)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Approximate Message Passing"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We provide an implementation of the AMP algorithm trained on $M= \\alpha N$ examples (See the article for the corresponding equations)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Run AMP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Start initialization\n",
      "Successful initialization \n",
      "\n",
      "K= 2 PW= binary alpha= 1.8\n",
      "Start AMP: Tue Jun 12 11:34:58 2018\n",
      "Final overlap: q_AMP=\n",
      "[0.46022775 0.25018657]\n",
      "[0.25018657 0.46238632]\n",
      "End AMP\n"
     ]
    }
   ],
   "source": [
    "obj_AMP = run_AMP(PW_choice=PW_choice,N=N,alpha=alpha,verbose=verbose)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## AMP vs SE"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Plot the evolution of $q_{AMP}^t$ and $q_{SE}^t$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1129119b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_q(obj_AMP,obj_SE)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The fixed point of the algorithm corresponds to the critical point of the state evolution free entropy and we thus compare in the figure above the elements of the overlap matrix $q^t$ coming from AMP and SE as a function of time $t$. (for the committee machine with two hidden units ($K=2$) at $\\alpha$).\n",
    "\n",
    "The full lines represent the AMP overlap matrix, for a single realization instance of size $N$. The dashed lines show the assymptotic and averaged behaviour of the algorithm in the limit N $\\to \\infty$. \n",
    "\n",
    "As illustrated, the overlap matrix of the AMP algorithm converges well towards its state evolution overlap. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generalization error"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We then compute the generalization error of the state evolution prediction and compare it to the algothimic error averaged over N_samples_gen_error$=10000$ samples:\n",
    "\n",
    "\\begin{align}\n",
    " \\epsilon_g(\\alpha) = \\frac{1}{2} \\mathbb{E} \\left[\\left(\\mathbb{E}_{W|Y,X} \\big[ \\varphi_{\\rm out}(X_{\\rm new}  W)|Y,X\\big] - \\varphi_{\\rm out}(X_{\\rm new} W^*)\\right)^2\\right]\n",
    "\\end{align}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 1. Compute SE generalization error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generalization Error= 0.13473849999999998\n"
     ]
    }
   ],
   "source": [
    "gen_error_SE = run_gen_error_SE(obj_SE)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 2. AMP generalization error (over N_samples_gen_error new samples)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Start Gen Error\n",
      "0.0 %\n",
      "10.0 %\n",
      "20.0 %\n",
      "30.0 %\n",
      "40.0 %\n",
      "50.0 %\n",
      "60.0 %\n",
      "70.0 %\n",
      "80.0 %\n",
      "90.0 %\n",
      "End Gen Error\n",
      "Generalization Error = 0.1360656334235032\n"
     ]
    }
   ],
   "source": [
    "## Compute the corresponding Generalization Error\n",
    "N_samples_gen_error = 10000\n",
    "tab_gen_AMP = run_gen_error_AMP(obj_AMP,PW_choice,N,alpha,N_samples_gen_error)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiUAAAINCAYAAADhkg+wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt8XHWd//H3t7f0CmnaWrlJmYCAQJU0XUVckN0ELyu6\nrkn7+OnP1UVIrD8fiAu/RuSiy7KWRBT14bKmiBdY1gdtEHAXWTepCyz8HiJNyqVQQDJQCi30kk5b\n2ubS5PP7Y85M55qcmcxkTqev5+Mxj2S+5/Y9Z86Z8znf2zgzEwAAQKlNKnUGAAAAJIISAAAQEAQl\nAAAgEAhKAABAIEwpdQYw8ZxzNZKqJMnMukqcHQAAJB1FQYlzrlJSk6TlXlLY+/ukmbV589RIqjWz\n1SXI4oTwjkOzpGWKHoMlKdN7JXWYWUsJspcmaPk52jnnuiX9pZlFxphvpaR6SXVe0hIz6/Gx/kpJ\nr0iqlNQjqSv22XvrXC6pxpu9S1JiPiq9v2uPtGvYOdek6PHq85IiktrNLOyca008/30cB0kKJUyP\nmNncomX+KOLdI5bn833knGuQtNR7GztXW8a6llLWkfrZ90hab2bNGeatk9SZkNRWrO9R7/yt9vJV\npYTrNmdmVvYvSQ2SdktaKakyZVqlpLWKXsSdkppKnd8JOiatkrozpPcq+mU4UfmoGWP6hOaH1+if\nlSTL5RrxzrPdfj9DRR8cuiX1jjJPt6TdWaZVetdxb+q1HtSX9/2zMkN6u/edlfFYjHYcEuZZGf2a\nL945UerjN4GfU0Mu53LKsq2S6lLSQt5nGMpjfWN+9t58Rb+nefsWSngfuwZ353MNln2bEi+yXKvo\n012bpUSlZhYxs0Z5J00p8lgiuzIlmlm1ZYi6i2jUbZUgP8guJKlDY3xmGaxWNNjwq0/pT/6p0zPy\nrud6RZ/W1uWwzZLwnp4rzSutTeSd90vlVbXmw1tvj1cCVQxlf20651qdc2u9t1nPvVGWr5HSq8rN\nLCzpckXvPQXnlV60WBFLDb3zt9PbF0lJ16AUvffmpKyDEq/4qlVSo41ddHz5BGQJ6UKlzgB8iyj6\n9F7jnMvlc2uX4l9gWXlf3oVq47RG0XzWjDlnaTVr9C/uQnwvtat411nZX79m1mJmjWbWodGD5Wzq\nFC25y7TuHh2uiikYLyBZ7+O+N171qcFWgjWS6nINiMs6KFH0YuzxTqZReSUoR1Q99JHOu3DyfgrE\nxHHO1ZlZl/cFFFEOT8jeU1SPj2VqE5+4xil2E6gt0PqKJaTD7QvSeN9L68e5jfUqwnXG9ZuTjOe+\nF9wX6pyPrXOiAhJJWuac68wyrdv7m9M1WLZBifdUFpJ0Tw6LZTu4RwXnXMg5V+OVMBVzO5XehdMe\nhPzAl8Qb5xrlVh0jRT/rnJ+axqHa+xv03mV+grVRr5NU3jUTf/ou9M3J7/WLuA5FS+06M5z/rSpg\n9Y33uYQnKCCRogFVtsA0tq85VXmVc++bWJ2W7y8lM+vIVtzrtU2JFd1VS9plh3vthHS4sex6M6v3\nTg4p+sEsVbRuL2NEnMO6uxQtzo2tuz6h7i7Wc2FZwqqXSGrN4emzXdGixh4l9MpxzpmiJ1+Hkosh\nmxVt4DQ3YV4/eWhS9JiEJYUS6mul5OOUMT8J22rQ4QuiUorXoSfOM67PZizj/exy+Xz97HOu6/O5\nj5VKLrZul9TknKvJ4ctvjbfcMmUokfQCzzW55i2ThHOww+/n6pxrVbQhY0jRfb08sYTV+5xjN482\nM2vxjnWdDn/pVnn/LzX/PQ9WSer2ejU1Zsqvn5LeFGlP36MUsScp8PXrm7fdaxQ9p2PnWm8x20NM\nFIv2oGpW9Px/xTl3uXevaVW0PUZBAufY91qh1ueHmaV9LyeI9TTK7XwoZqvcUr4ULToyFaAFvqIl\nKKktp9uV0gpb0ZtBt6IXbWVCeoOy9xbwu+5Ob/1N3vs6b/8SWz2vTFmmUtEW0HUZtrtSmXvfpPXK\nUYbW/4p+8ZmkhtT15pCH9kx5GCs/Ccc6dVtZW7Pn89kU8Lzw89n5mcf3PvtZXw772ZAhzVcvBEVv\naIl5yvh5K6GHwGjzJUzPdj3FjsfaPPYzdq6m9YRJ2G4oYd60bXjnV07b9pYx77XbO4fSjnmG5TL2\nwPDymVevmEJfvz63WaPow07qtdSbeP6knieleHnHPK/egN41uDvhc86751LqZ59wDo378yjgsbJ8\njlXZVt/o8FNkPg2T4rwnJFl69Nki72kxIe1JeU8pKdvtklSZWgqT47pjDaLWJywz17ynEu+prTmx\nAaIdbieTS/FgUq8c7wkmUzFtp6JPoolPk4XKQ9b8eNtpUvTmkFQq4h2LdmVuOJjTZzOWQn52fubJ\nY5/9bNOvTMWzufaokbI0kvXOsVx7NVR6vSISX+2Klt5dbtEedTnxzos1OjyWUaqehONXmynPFn2y\n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\nRx55JCnt1ltvtSuuuCIp7emnn056/+d//uf2wAMPpO3Xj370o6T3kyZNsvvuu8/+4z/+w7773e+a\nJPvbv/1bW716ddJ8X/va1+LBU+zV29trd955Z/z95z73Obvuuuvs8ccfN0l20UUXmST71re+FT82\nnZ2d8UDPzKyvr8+++tWv2gc/+EF74YUXbGRkxM4666yk7Vx77bX27LPPpu3L3r17kwL5888/3zZu\n3Bhf98jIiG3dujXpM0F5ICgJ6IugZOJ9+9vfTvpi/Lu/+zvr7u62//2//7dJsrvvvjttmf3791tD\nQ4Nt2LDBTj311KwByAc/+EG766677IknnhhXHnfu3Glvv/22vfzyy+NaT7kYGRmxcDgc/3/fvn12\n9dVXpx17STZr1iz76U9/mjRt4cKFNjQ0ZD//+c+TSg4S57n++uvTPs/YufJP//RPdvfdd9u6deuS\npp999tn22muv2Uc+8hG74IILbGhoKCnPsUBn586d9p3vfMeuvvpqu+2222zv3r329NNPJ92Qn3/+\nefv6179uV111lT3zzDNJ+79582Z77LHH7Kc//ant3bvXGhoa7PXXX7cNGzbY4OBg1uN26NAhW716\nte3bt8+Gh4dtZGTEHn30Ufve975X9Bv9oUOHbGBgwCKRiI2MjNiBAwfsq1/9alKpTmpJ0Lve9S57\n6623bHBw0I4//vikaW+99ZaNjIzYJz/5SXv/+99vr732WnyfYoaGhsYskQya4eFh27Ztm/3gBz+w\nv/qrv7LOzs74Z7pnz574A0rifr766qu2Zs0a27RpU+ADts2bN9v06dPtS1/6kn3rW9+yFStW2C23\n3EJQEtQXQUnx3X///SbJ7r//fjMz+1//63/Fv+jyNTAwYOFwOL6ehx56yK688krbt2/fuPM7NDSU\ndnPcvHnzuNd7pBoZGYmXKiSWOPzFX/xF/P8rrrgiKSAwO/xln3rsdu/ebb/+9a9tYGDALrvssnip\nxB//+Me0G+H3vvc9W7x4cfz9sccemzT9lVdeGff+bdu2zV566aVxr+dIMjQ0ZL29vWZmtm/fPnvh\nhRds//798RtsapXSZz/7WXvjjTfs97//fdq1cccdd9j+/fvtU5/6VFL6Zz7zGdu6davV19fbhRde\naL29vbZz5860vBw6dChepbdjxw4755xzkqpnzaLn0tVXX2333nuv3XHHHfEAeSzXXHONXXbZZbZt\n2zYzM3v88cftzjvvtEsuucQk2Z133ml79uxJ26ef/OQntn379nhJWEVFRTxwNrOkec844wz7p3/6\nJztw4ED8nB8cHLSRkREbGBjIqdR127Ztdv/999vg4KD993//t/3mN7+xt956y3p7e23Xrl1jLv+L\nX/wi/nAnyS6++GJ7880300qbP/KRjxCUBPVFUFJ82Uo1Euvz8xW7+Ast8Yab+oo9Hd1888322muv\nFXzbQdHd3W2PPfZY0r4/9NBD8f/PPffcom27v78/fiMZGhqKt7H49a9/Hf+8g/6EeqTbs2eP7dmz\nJylt//79ds8991hjY6P99V//tc2bN89eeOEF27VrV9J5MmPGDFuxYoU9+uijGa+f3t5e+9KXvmTn\nnHNOvJTNzOxv//Zv4/MtXrzYjj/+eBsYGEhbx8UXX2wjIyO2ZcsWu+SSS+wb3/iG3XTTTbZ69Wob\nGhqyTZs2Jc1/xRVX2PDwsC1cuDAp3TlnIyMj9s///M/23ve+11atWmVf/vKX7cc//rFt2bLFrrvu\nOjvllFPstNNOM0l23nnn2cjISPwmf91119n06dOtsrIyfs6m5vWkk06y3bt3W319fTzthBNOsJkz\nZ8aPr1dyEX8dOHDAvvzlL6eta/v27bZv3z778z//c/vsZz9r73nPe+zaa6+1zs5OMzO78MILk+Y/\n88wz7a233jKzaGDX29trW7dutVdffZWgJKgvgpLi6Ovrs+7ubuvv708ryo89cQfdtm3b7MCBA7Zk\nyZKkvM+aNctuvPHG+PtyuTm++eab9uEPf9h27dplv/jFL+KBR2w/q6ur7cUXX7Qf/vCHtm/fvgnf\n79GqSVB6u3btskOHDsXfj4yM2ODgoD311FPxdj5nnHGG9fX1JVXjSbKKigozM2tvb7fGxkb7/Oc/\nb6effrpdeuml1tfXZ3fffbeddtpp9u1vf9u++c1v2tVXX21mZq2trUnrmT17tt19993W1dVl73nP\ne0yS/eM//qP96le/sv3799t3v/tdu/LKK+3f//3fbc+ePQVp0P7222/bpk2bzMwsEonYN77xjXh+\nvvKVr9jll19ug4ODdvvtt5sUbeMU+055+eWXbffu3Un78IUvfMHMouf7v/7rv9rHP/5xq6iosIaG\nBnvggQds48aNduGFFyYFWGeccYb913/9V06lMqUISlx0uxhNbW2tMWhW4Tnnkt6//vrrmjNnjo49\n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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x112911780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_gen_error(obj_AMP,tab_gen_AMP,gen_error_SE)"
   ]
  }
 ],
 "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.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
back to top