{ "metadata": { "name": "", "signature": "sha256:ca3af9bc01cdfee36202602fad143f12b52995ce6c2747f6da91fd547b60c8bb" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Precise multiplications with the NEF\n", "\n", "*Jan Gosmann*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Abstract\n", "\n", "This report discusses how to implement the multiplication of two numbers in the NEF with a high accuracy. The main improvement will be achieved by using diagonal encoders instead of randomly distributed encoders. In the selection of the evaluation points a trade-off is found as they cannot give a uniform distribution when projected to the encoders while being limited to the input domain. That leads to an alternative multiplication network architecture improving the accuracy further." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import nengo\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.ticker import MaxNLocator\n", "from scipy.stats import mannwhitneyu\n", "\n", "%matplotlib inline" ], "language": "python", "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "javascript": [ "\n", " require([\"widgets/js/widget\", \"widgets/js/manager\"],\n", " function(widget, manager) {\n", " if (typeof widget.DOMWidgetView == 'undefined') {\n", " widget = IPython;\n", " }\n", " if (typeof manager.WidgetManager == 'undefined') {\n", " manager = IPython;\n", " }\n", "\n", " var NengoProgressBar = widget.DOMWidgetView.extend({\n", " render: function() {\n", " // $el is the DOM of the widget\n", " this.$el.css({width: '100%', marginBottom: '0.5em'});\n", " this.$el.html([\n", " '
',\n", " '
',\n", " '0%',\n", " '
',\n", " '
',\n", " ' ',\n", " '
',\n", " '
'].join(''));\n", " },\n", "\n", " update: function() {\n", " this.$el.css({width: '100%', marginBottom: '0.5em'});\n", " var progress = 100 * this.model.get('progress');\n", " var text = this.model.get('text');\n", " this.$el.find('div.pb-bar').width(progress.toString() + '%');\n", " this.$el.find('div.pb-text').text(text);\n", " },\n", " });\n", "\n", " manager.WidgetManager.register_widget_view(\n", " 'NengoProgressBar', NengoProgressBar);\n", " });" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A benchmark\n", "\n", "To compare different methods of multiplication we will first define a benchmark used throughout this report. We assume that the product of two independent scalars in the range $[-1, 1]$ has to be calculated. This is a reasonable default assumption as $[-1, 1]$ is the default representational range used in the NEF and without additional information there is no reason to assume any correlation of the input values. If, however, the distribution of inputs violates this assumption (e.g. they fall into a unit circle instead of a unit square), the results in this report might not hold.\n", "\n", "For the benchmark the whole range from $[-1, 1]$ should be covered for both values. Also, a number of combinations of different values should occur. Both values should be continuous over time because dicontinuities will introduce errors not related to the calculation of the product itself. A class of functions fulfilling these conditions is known as space-filling curves. A specific and well-known instance of such a function is the Hilbert curve. Here we define a Python class for precomputing the Hilbert curve $H_n(u), [0, 1] \\rightarrow [0, 1]^2$ with a given number of iterations $n$. For $n \\rightarrow \\infty$ this curve will fill the complete two-dimensional input space. The start and end point of the curve are $H_n(0) = (0, 0)^{\\top}$ and $H_n(1) = (1, 0)^{\\top}$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "class HilbertCurve(object):\n", " # Implementation based on http://en.wikipedia.org/w/index.php?title=Hilbert_curve&oldid=633637210\n", " \n", " def __init__(self, n):\n", " self.n = n\n", " self.n_corners = (2 ** n) ** 2\n", " self.corners = np.zeros((self.n_corners, 2))\n", " self.steps = np.arange(self.n_corners)\n", " \n", " steps = np.arange(self.n_corners)\n", " for s in 2 ** np.arange(n):\n", " r = np.empty_like(self.corners, dtype='int')\n", " r[:, 0] = 1 & (steps // 2)\n", " r[:, 1] = 1 & (steps ^ r[:, 0])\n", " self._rot(s, r)\n", " self.corners += s * r\n", " steps //= 4\n", " \n", " self.corners /= (2 ** n) - 1\n", " \n", " def _rot(self, s, r):\n", " swap = r[:, 1] == 0\n", " flip = np.all(r == np.array([1, 0]), axis=1)\n", " \n", " self.corners[flip] = (s - 1 - self.corners[flip])\n", " self.corners[swap] = self.corners[swap, ::-1]\n", " \n", " def __call__(self, u):\n", " step = np.asarray(u * len(self.steps))\n", " return np.vstack((\n", " np.interp(step, self.steps, self.corners[:, 0]),\n", " np.interp(step, self.steps, self.corners[:, 1]))).T" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next code cell defines some benchmarking parameters. The `duration` should not be too low. Otherwise the main contribution to the measured error will be the time lag of the neural implementation instead of the error in the representation. However, increasing the duration will also increase simulation times." ] }, { "cell_type": "code", "collapsed": false, "input": [ "master_seed = 1298 # Seed for generation of individual seeds for trials\n", "n_trials = 50 # Number of trials\n", "hc = HilbertCurve(n=4) # Increase n to cover the input space more densly\n", "dt = 0.001 # Simulation time step (seconds)\n", "duration = 5. # Simulation duration (seconds)\n", "wait_duration = 0.5 # Duration (seconds) to wait in the beginning to have stable representation of the initial values.\n", "\n", "def gen_seeds(size):\n", " return np.random.RandomState(master_seed).randint(nengo.utils.numpy.maxint, size=size)\n", "\n", "seeds = gen_seeds(n_trials) # Random number generator seeds for reproducibility" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Hilbert curve will be in the range of $[0, 1]^2$, but the actual input will be in $[-1, 1]^2$. Thus, some scaling has to be applied. Also, $u$ has to be scaled to the duration of a trial." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def stimulus_fn(t):\n", " return np.squeeze(hc(t / duration).T * 2 - 1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is what the input and desired output look like:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "ts = np.linspace(0, duration, duration / dt)\n", "inp = stimulus_fn(ts)\n", "\n", "plt.figure(figsize=(8, 3))\n", "\n", "plt.subplot(1, 2, 1, aspect='equal')\n", "plt.plot(*inp)\n", "plt.title(\"Bechmark input\")\n", "plt.xlabel(\"$x_1$\")\n", "plt.ylabel(\"$x_2$\")\n", "plt.xlim(-1.1, 1.1)\n", "plt.ylim(-1.1, 1.1)\n", "\n", "plt.subplot(1, 2, 2)\n", "plt.plot(ts, np.prod(inp, axis=0))\n", "plt.title(\"Desired output\")\n", "plt.xlabel(\"t [s]\")\n", "plt.ylabel(\"y\");" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use this input to feed it into the product network under test. From the decoded output and an ensemble calculating the same product in direct mode the root mean square error (RMSER) is computed as a performance indicator." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from nengo.utils.numpy import rmse\n", "\n", "class Benchmark(object):\n", " def __init__(self, seed, create_mult_network, test_config, synapse=None, n_neurons=150, n_eval_points=1000):\n", " self.n_neurons = n_neurons\n", " self.n_eval_points = n_eval_points\n", " self.seed = seed\n", "\n", " model = nengo.Network(seed=seed)\n", " with model:\n", " model.config[nengo.Probe].synapse = synapse\n", " model.config[nengo.Connection].synapse = synapse\n", " \n", " stimulus = nengo.Node(output=lambda t: stimulus_fn(max(0., t - wait_duration)), size_out=2)\n", " \n", " with test_config:\n", " self.probe_test = create_mult_network(self.n_neurons, self.n_eval_points, stimulus)\n", " \n", " ens_direct = nengo.Ensemble(1, dimensions=2, neuron_type=nengo.Direct())\n", " result_direct = nengo.Node(size_in=1)\n", " nengo.Connection(stimulus, ens_direct)\n", " nengo.Connection(ens_direct, result_direct, function=lambda x: x[0] * x[1], synapse=None)\n", " self.probe_direct = nengo.Probe(result_direct)\n", " \n", " self.sim = nengo.Simulator(model)\n", " self.sim.run(duration + wait_duration, progress_bar=False)\n", " \n", " self.trange = self.sim.trange()[self.sim.trange() > wait_duration] - wait_duration\n", " self.output_test = self.sim.data[self.probe_test][self.sim.trange() > wait_duration]\n", " self.output_direct = self.sim.data[self.probe_direct][self.sim.trange() > wait_duration]\n", "\n", " def rmse(self):\n", " return rmse(self.output_test, self.output_direct)\n", " \n", " def plot(self):\n", " ax = plt.gca()\n", " ax.plot(self.trange, self.output_test, label=\"Test\")\n", " ax.plot(self.trange, self.output_direct, label=\"Direct\")\n", " ax.legend(loc='best')\n", " ax.set_xlabel(\"t [s]\")\n", " ax.set_ylabel(\"y\")\n", " ax.set_xlim(0., 1.)\n", " ax.set_ylim(-1.1, 1.1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "def repeated_benchmark(*args, **kwargs):\n", " rmses = np.empty(len(seeds))\n", " with nengo.utils.progress.ProgressTracker(len(seeds), True) as progress:\n", " for i, s in enumerate(seeds):\n", " b = Benchmark(s, *args, **kwargs)\n", " rmses[i] = b.rmse()\n", " if i == 0:\n", " b.plot()\n", " progress.step()\n", " print \"mean RMSE:\", np.mean(rmses)\n", " print \"median RMSE:\", np.median(rmses)\n", " print \"standard deviation of RMSE:\", np.std(rmses)\n", " return rmses" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Naive implementation\n", "\n", "To start out we will use a single ensemble and we will directly decode the multiplication result from it. Note that a radius of $\\sqrt{2}$ is used to ensure all possible input values fall into the representational range of the ensemble." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def naive_multiplication(n_neurons, n_eval_points, stimulus):\n", " # Note that we set the radius to sqrt(2.) to make sure all possible input values\n", " # are within the representational range of the ensemble. (Both multiplicands\n", " # could be 1, giving a distance of sqrt(1\u00b2+1\u00b2) to the origin.)\n", " ens = nengo.Ensemble(n_neurons, dimensions=2, radius=np.sqrt(2.), n_eval_points=n_eval_points)\n", " result = nengo.Node(size_in=1)\n", " nengo.Connection(stimulus, ens)\n", " nengo.Connection(ens, result, function=lambda x: x[0] * x[1], synapse=None)\n", " return nengo.Probe(result)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To obtain first benchmark results LIF rate neurons will be used. This allows us to solely look at the representational error without considering the spiking noise. Because this means overall less noise in the network, the decoder solver regularization is reduced to 0.01. Also, all synapses are set to `None` to remove any filtering and time lag.\n", "\n", "With this configuration we obtain a baseline error with the naive implementation." ] }, { "cell_type": "code", "collapsed": false, "input": [ "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "config[nengo.Ensemble].neuron_type = nengo.LIFRate()\n", "config[nengo.Connection].solver = nengo.solvers.LstsqL2(reg=0.01)\n", "\n", "rmse_naive = repeated_benchmark(naive_multiplication, config)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mean RMSE: 0.0131866845469\n", "median RMSE: 0.0132555941685\n", "standard deviation of RMSE: 0.00147545718196\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nDRER8ez/Afebx3tbw6V7AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use the following function to compare different results:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def compare(before, after):\n", " print \"Improvement by {0:.0f}% (p < {1:.3f}).\".format(\n", " (1. - np.mean(after) / np.mean(before)) * 100.,\n", " np.ceil(1000. * 2. * mannwhitneyu(before, after)[1]) / 1000.)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Encoders\n", "\n", "The largest reduction in error is obtained by using diagonal encoders. To see why this is the case we analytically derive the error in different directions of the input space.\n", "\n", "Assume that the multiplicands are given as a vector $\\vec x = (x_1, x_2)^{\\top}$. Then the result of the product can be rewritten in polar coordinates:\n", "\n", "$$x_1 x_2 = r^2 \\cos \\varphi \\sin \\varphi$$\n", "\n", "Furthermore, we assume a special neuron model in the derivations to simplify the math For every input on its encoder $\\vec e = (e_1, e_2)^{\\top}, |\\vec e| = 1$ its activity is a perfect product, but the input current proportional to $\\vec e \\cdot \\vec x$ is rectified:\n", "\n", "$$ a(\\vec x) = G(\\vec e \\cdot \\vec x) = e_1 [\\vec e \\cdot \\vec x]_+ e_2 [\\vec e \\cdot \\vec x]_+ $$\n", "\n", "Such a neuron can be approximated by with an ensemble LIF neurons and thus the following derivation also holds for LIF neurons.\n", "\n", "With $\\psi$ as the polar coordinate of the encoder $\\vec e$ this can be rewritten as\n", "\n", "$$ a(\\vec x) = r^2 \\cos \\psi \\sin \\psi [\\cos(\\psi - \\varphi)]_+^2 $$\n", "\n", "This allows to write down the error for multiplications with multiplicands aligned along $\\varphi$. As we are using polar coordinates an additional $r$ appears in the integral.\n", "\n", "$$ E^2(\\varphi) = \\int_0^{r(\\phi)} (x_1 x_2 - \\sum_i a_i(\\vec x))^2\\ r\\ \\mathrm{d}r \\\\\n", " = \\int_0^{r(\\phi)} (r^2 \\cos \\varphi \\sin \\varphi - r^2 \\sum_i \\cos \\psi_i \\sin \\psi_i [\\cos(\\psi_i - \\varphi)]_+^2)^2\\ r\\ \\mathrm{d}r \\\\\n", " = \\frac{r^6(\\varphi)}{6} (\\cos \\varphi \\sin \\varphi - \\sum_i \\cos \\psi_i \\sin \\psi_i [\\cos(\\psi_i - \\varphi)]_+^2)^2$$\n", " \n", "In this equation $r(\\varphi)$ is the \u201cradius\u201d of the multiplication input space for a given $\\varphi$. For the square input space of $[-1, 1]^2$ used here, $r(\\varphi)$ is given by\n", "\n", "$$ r(\\varphi) = \\frac{1}{\\cos([(\\varphi + \\frac{\\pi}{4})\\mod \\frac{\\pi}{2}] - \\frac{\\pi}{4})} \\mathrm{.} $$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def radius(phi):\n", " return 1. / np.cos((phi + np.pi / 4.) % (np.pi / 2.) - np.pi / 4.)\n", "\n", "phis = np.linspace(0., 2. * np.pi, 100)\n", "ax = plt.subplot(1, 1, 1, polar=True)\n", "ax.plot(phis, radius(phis))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nQmCC\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "def mult_err(phi, encoders=[]):\n", " if len(encoders) > 0:\n", " cos_sin_psi = np.cos(encoders) * np.sin(encoders)\n", " diff = np.maximum(0., np.cos(np.subtract.outer(encoders, phi)))\n", " neuron_outputs = cos_sin_psi[:, np.newaxis] * diff ** 2.\n", " else:\n", " neuron_outputs = np.zeros((0, np.asarray(phi).size))\n", " return radius(phi) ** 6. / 6. * (np.cos(phi) * np.sin(phi) - np.sum(neuron_outputs, axis=0)) ** 2." ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Without any neurons we get the following distribution of the error:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "phis = np.linspace(0., 2. * np.pi, 100)\n", "ax = plt.subplot(1, 1, 1, polar=True)\n", "ax.plot(phis, mult_err(phis))\n", "ax.set_rmax(0.35)\n", "ax.yaxis.set_major_locator(MaxNLocator(3))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we see the maxima of the error are aligned with the diagonals. By adding neurons with each diagonal as an encoder one after another the error gets reduced to zero:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "encoders = [np.pi / 4., 3. / 4. * np.pi, 5. / 4. * np.pi, 7. / 4. * np.pi]\n", "\n", "plt.figure(figsize=(20, 8))\n", "for i in range(1, len(encoders) + 1):\n", " ax = plt.subplot(1, len(encoders) + 1, i + 1, polar=True)\n", " ax.plot(phis, mult_err(phis, encoders=encoders[:i]))\n", " ax.set_rmax(0.35)\n", " ax.yaxis.set_major_locator(MaxNLocator(3))\n", " ax.set_title(\"{0} encoders\".format(i))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using encoders with a different alignment will give worse results as the maximal possible reduction in error is less than for the diagonal directions. With those diagonal encoders instead fo random encoders in the benchmark we obtain a substantial reduction of the error." ] }, { "cell_type": "code", "collapsed": false, "input": [ "diag_encoders = nengo.dists.Choice(np.array([[1, 1], [1, -1], [-1, -1], [-1, 1]]) / np.sqrt(2.))\n", "\n", "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "config[nengo.Ensemble].neuron_type = nengo.LIFRate()\n", "config[nengo.Connection].solver = nengo.solvers.LstsqL2(reg=0.01)\n", "config[nengo.Ensemble].encoders = diag_encoders\n", "\n", "rmse_diag_encoders = repeated_benchmark(naive_multiplication, config)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mean RMSE: 0.0053812936708\n", "median RMSE: 0.00535873543816\n", "standard deviation of RMSE: 0.000906316208863\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nNERExLH/B7uDZQGFpQ9rAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "compare(rmse_naive, rmse_diag_encoders)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Improvement by 59% (p < 0.001).\n" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluation points" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The evaluation points are sampled from a circle with radius $r$ per default. As we assumed independent inputs we set $r = \\sqrt{2}$ to have values up to $\\vec x = (1, 1)^{\\top}$ in range. This, however, will produce a number of evaluation points outside the allowed input range. Here is a visualization with the range of possible inputs as the red square and the area from which the evaluation points are chosen as blue cirle." ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.subplot(1, 1, 1, aspect='equal')\n", "plt.gca().add_artist(plt.Circle([0, 0], radius=np.sqrt(2), fill=False, color='b'))\n", "plt.gca().add_artist(plt.Rectangle([-1, -1], 2, 2, fill=False, color='r'))\n", "plt.xlabel(\"$x_1$\")\n", "plt.ylabel(\"$x_2$\")\n", "plt.xlim(-1.5, 1.5)\n", "plt.ylim(-1.5, 1.5);\n", "plt.title(\"Input domain and sampling shape\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In theory we can achieve a more accurate product by sampling the evaluation points from the square of actual possible inputs instead of \u201cwasting\u201d some in an irrelevant area.\n", "\n", "Note that the Nengo scales the evaluation points with the ensemble radius. Because of that, it is necessary to divide the range by the radius." ] }, { "cell_type": "code", "collapsed": false, "input": [ "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "config[nengo.Ensemble].neuron_type = nengo.LIFRate()\n", "config[nengo.Connection].solver = nengo.solvers.LstsqL2(reg=0.01)\n", "config[nengo.Ensemble].eval_points = nengo.dists.Uniform(-1 / np.sqrt(2.), 1 / np.sqrt(2.))\n", "\n", "rmse_square = repeated_benchmark(naive_multiplication, config)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mean RMSE: 0.0137222112603\n", "median RMSE: 0.013483329981\n", "standard deviation of RMSE: 0.00168910500221\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "compare(rmse_naive, rmse_square)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Improvement by -4% (p < 0.211).\n" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, this change of evaluation points has no significant effect.\n", "\n", "Surprisingly, picking evaluation points from the square performs worse if it is done together with the diagonal encoders." ] }, { "cell_type": "code", "collapsed": false, "input": [ "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "config[nengo.Ensemble].neuron_type = nengo.LIFRate()\n", "config[nengo.Connection].solver = nengo.solvers.LstsqL2(reg=0.01)\n", "config[nengo.Ensemble].encoders = diag_encoders\n", "config[nengo.Ensemble].eval_points = nengo.dists.Uniform(-1 / np.sqrt(2.), 1 / np.sqrt(2.))\n", "\n", "rmse_square_diag_encoders = repeated_benchmark(naive_multiplication, config)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mean RMSE: 0.00734397454231\n", "median RMSE: 0.00701522040061\n", "standard deviation of RMSE: 0.00173103578512\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n41J8s+QU9ec/z9slB9K5nuc7pj/qUpa2OZfw9oJ2jFw10ePrl7RPoSHphjGG3pW7Mut4X44dS/69\nyHbuP8tnJ1pS9Z5HGRI+mqw9gqn9cR+27D7KJTcOTxGxM4oXvqhLjZKVGVq/sftWlIhBHe7l5Uvf\n0Wb2u/RfdvPepkXiptCQdKX5YzXJmussrYYtTfYyGo8bSDG/J5nVNoxD/b+nc8GFrNq6h3tGF+e2\nxg3pMnwd7rg/ZvVh3ckffIFprw1N/YUn0eRhxXnd/wd6LBpM86+6Otrb2n8gmsfDhuLf+XZe+2S0\nB6qUhFyMvOieoZGttT7/iPkYIjE+/P5z63r9MXv4cNLn/f3APms657DL1u69Ydpf5/+ybb4aYF2d\n8tm6/SenQqX/6vL5NOvfvrDddfRoqi43JaKirH1/+CEb0KiqzdejrF2/b2uc7S5etPbVlrusf5OK\nNn/XR2zvqQutf/vCtvawoR6uWP6x9s991r9rNuv/TmF7R+P+dvKMozY6+r9thiyeYmO/O5P2fZvU\nGdLiQ6Eh17oSdcVm6x5ia3dYnuR5S/dsYEu8FZZgm7lrfrWm4+121tKDyS3xP6Yv/82aTrnsmHm/\npsryUtu+fdG2TNNR1q9zTtti0jAbFR11ddqRI9E25IXxNrBbLttr6UAbGRVprbX2h9/2WP+2xWyd\nEX28VfZN6+LFaJvtzaq24ru97PSVq+1jQxpbv7DbbM6m9eyoeSttdHS0nbPhB+vX6XaFhsg/Bi0b\nY12NnrYHk/C9Pv/XddZ0yGs3/Xkm0bYvf9rNZmz0nD17NjrRtgk5fPovm6FjEdvkgy9StBxPGD19\nu83Q4iGbp+Pjdt2OPfaXLYdtlqbP2dzvlrLrD264of2yXw5aV+sS9vmPutjo6//NFbd5pf8km6VD\naXvpyuWr7x07d9zW/WiIdbUtZrN3uc8GhuWxtbssTlZoaBAmSZcuR10mZ69ivBA5k4nv3zii3fWs\nteTtXImyGV5mwXvNE21/KfISt3cvS5VbujKt2yvJqjEyOpIi7z6N/5Gy7Bw9ED8f6GE8czaKZ/sN\n5MfooWD9eTJHE75p/+5/hpm9VviaYzw1uTIVgx9jSbsP3H69yc1u5aZDPPJ5aWbWXETNCmVumH7m\nbDSNey/l6DEIH1sZl0sj94lc1XXOCIbOXsq5sbPx90+47YBZ39Dth8781XsD2bI4uyXbrF/W8MLX\n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\n", "text": [ "" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "compare(rmse_diag_encoders, rmse_square_diag_encoders)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Improvement by -36% (p < 0.001).\n" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Evaluation points get projected\n", "\n", "To understand this one has to realize that the evaluation points get projected onto the encoders. When we look at the distribution of projected evaluation points we see a difference comparing the square and circle as sampling shape. Evaluation points from the circle give a flatter distribution and more points project to the positive and negative end of the encoding vector." ] }, { "cell_type": "code", "collapsed": false, "input": [ "n_samples = 10000\n", "seed = 23987\n", "ep1 = nengo.dists.UniformHypersphere().sample(n_samples, 2, rng=np.random.RandomState(seed)) * np.sqrt(2.)\n", "ep2 = nengo.dists.Uniform(-1, 1).sample(n_samples, 2, rng=np.random.RandomState(seed))\n", "encoder = np.array([1, 1]) / np.sqrt(2.)\n", "\n", "n_bins = 50\n", "plt.hist(np.dot(ep1, encoder), alpha=0.5, bins=n_bins, label='circle')\n", "plt.hist(np.dot(ep2, encoder), alpha=0.5, bins=n_bins, label='square')\n", "plt.legend(loc='best');\n", "plt.title(\"Projected evaluation points\");" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\ne3369OlcddVVAGzatInTTjuNgw8+mJEjR/Lxj398j/nnc7kcX/rSl5g6dSr77bcfK1eu5Pnnn+ek\nk07iwAMP5KijjurVGS4d6M0s01544QW+//3v8+STT/L666+zePFiJkyYwJw5c1i5ciUvv/wyDzzw\nAPPnz++w1i1p9/aIYMaMGaxatYpVq1axzz778LnPfW6P/W+99VZuuOEGtmzZwoEHHshJJ53EBRdc\nwIYNG7jjjju4+OKLee6556p67rs40JtZpg0ePJi33nqLZ599lu3btzN+/Hje9a53cdddd/HFL36R\nuro6xo4dy6WXXtrp7Ju7to8cOZKzzjqLYcOGMXz4cK688koeeeSR3ftJYvr06Rx99NEMGjSI+++/\nn4kTJzJt2jQGDRrE5MmT+cQnPtFrtXq30Vu/0tHNPd+Ys2IOP/xw5s2bR319Pc8++yynnHIK1157\nLa+++uoeTTXjx48vO8+tW7dy2WWX8cADD7Bp0yYAtmzZQkTsrvUX5v3KK6/w+OOPc8ABB+xO27Fj\nBxdeeGFPT68sDvTWr3R0c68/3Jiz2jjvvPM477zzeOONN7jooou44oorGD16NKtWreLoo48GYNWq\nVXscs++++7J169bd66+99tru4H3ttdfy4osv0tDQwMEHH8yyZcs47rjj9gj0hc1A48eP58QTT2Tx\n4to8h8mB3jLPDwUZ2F588UWampqYOnUqe++9N8OGDSMiOPvss7n66qs5/vjj2bJlC9/97nf3CM6T\nJ0/mtttu42tf+xpLlizh0UcfZcqUKUBSe99nn30YMWIEGzduLDrZWGEz0GmnncasWbO49dZbOeec\ncwBYtmwZ+++/P0cddVSVPwEHehsASv0KWDB7AdNnTm+X7i+AyqkbVlfVX1p1wzp/luBbb73F7Nmz\nee655xgyZAhTp07lRz/6ESNGjOCzn/0sEydOZMyYMUyfPp1vf/vbu4/79re/zbRp0/j+97/PmWee\nyVlnnbV728yZM/nUpz7FQQcdxJgxY7j88stZtGjRHu9b+KUxfPhwFi9ezOWXX87ll19Oa2srkydP\n5rrrrqvAp9A5B3obsLZpm58KVWV94QvzmGOO4fHHHy+6bf78+buX2877/r73vY9nnnmm6HGjR4/m\n4Ycf3iPtM5/5zO7lttsAjjzySH7+85+XW+yKcq8bM7OMc6A3M0vVcvRqNTnQm5mRjGZt2/MmKxzo\n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\n", "text": [ "" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Both sampling shapes, but more so the square, give more weight to values projecting to smaller magnitudes. Thus, the approximation of the function will be better in the area where it is flattest and gives the least contribution to the overall error. This leads to the hypothesis that a a distribution of evaluation points that projects to a uniform distribution could be best. A diamond shaped sampling region would be achieve this uniform distribution in the projection." ] }, { "cell_type": "code", "collapsed": false, "input": [ "class DiamondDist(nengo.dists.Distribution):\n", " def sample(self, n, d, rng=np.random):\n", " uniform = nengo.dists.Uniform(-2., 2.)\n", " samples = np.empty((n, d))\n", " for i in range(n):\n", " samples[i] = uniform.sample(1, d)\n", " while np.sum(np.abs(samples[i])) > 2.:\n", " samples[i] = uniform.sample(1, d)\n", " return samples" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "samples = DiamondDist().sample(500, 2, rng=np.random.RandomState(seed))\n", "\n", "plt.subplot(1, 1, 1, aspect='equal')\n", "plt.gca().add_artist(plt.Rectangle([-1, -1], 2, 2, fill=False, color='r'))\n", "plt.xlabel(\"$x_1$\")\n", "plt.ylabel(\"$x_2$\")\n", "plt.title(\"Points sampled from a diamond\")\n", "plt.xlim(-2., 2.)\n", "plt.ylim(-2., 2.);\n", "plt.scatter(samples[:, 0], samples[:, 1], marker='+')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "n_samples = 10000\n", "ep = DiamondDist().sample(n_samples, 2, rng=np.random.RandomState(seed))\n", "encoder = np.array([1, 1]) / np.sqrt(2.)\n", "\n", "n_bins = 50\n", "plt.hist(np.dot(ep, encoder), alpha=0.5, bins=n_bins)\n", "plt.title(\"Projected evaluation points\");" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "config[nengo.Ensemble].neuron_type = nengo.LIFRate()\n", "config[nengo.Connection].solver = nengo.solvers.LstsqL2(reg=0.01)\n", "config[nengo.Ensemble].encoders = diag_encoders\n", "config[nengo.Ensemble].eval_points = DiamondDist()\n", "\n", "rmse_diamond_diag_encoders = repeated_benchmark(naive_multiplication, config)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mean RMSE: 0.019287935708\n", "median RMSE: 0.0192496543946\n", "standard deviation of RMSE: 0.00229384534606\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "compare(rmse_diag_encoders, rmse_diamond_diag_encoders)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Improvement by -258% (p < 0.001).\n" ] } ], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The diamond shape is not any better. Even though it gives a flat distribution in the projection, a lot of evaluation points fall outside of the input domain. As long as we use diagonal encoders there will be a trade off between a flat distribution in the projection and having all evaluation points in the input domain. This is because we have two orthogonal encoder directions. An evaluation point within the input domain at the end of one encoder will be project close to 0 on the other encoder." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## An alternative network\n", "\n", "As it is not possible to eliminate that trade off in a single ensemble we have to split it up into two. Each ensemble will be one dimensional and will represent one encoder direction. Given the input $\\vec x$ and encoders $\\vec e_1, \\vec e_2$ on the diagonal the multiplication can be rewritten in the following way:\n", "\n", "$$x_1 x_2 = \\frac{1}{4}(x_1^2 + 2 x_1 x_2 + x_2^2) - \\frac{1}{4}(x_1^2 - 2 x_1 x_2 + x_2^2) \\\\\n", "= \\frac{1}{4}(x_1 + x_2)^2 - \\frac{1}{4}(x_1 - x_2)^2 \\\\\n", "= \\frac{1}{4}((1, 1)^{\\top} \\cdot \\vec x)^2 - \\frac{1}{4}((1, -1)^{\\top} \\cdot \\vec x)^2 \\\\\n", "= \\frac{1}{2}[(\\vec e_1 \\cdot \\vec x)^2 - (\\vec e_2 \\cdot \\vec x)^2]$$\n", "\n", "Here is the corresponding Nengo implementation:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def two_ens_multiplication(n_neurons, n_eval_points, stimulus):\n", " ens1 = nengo.Ensemble(n_neurons // 2, dimensions=1, radius=np.sqrt(2.), n_eval_points=n_eval_points)\n", " ens2 = nengo.Ensemble(n_neurons // 2, dimensions=1, radius=np.sqrt(2.), n_eval_points=n_eval_points)\n", " nengo.Connection(stimulus, ens1, transform=np.array([[1, 1]]) / np.sqrt(2.))\n", " nengo.Connection(stimulus, ens2, transform=np.array([[1, -1]]) / np.sqrt(2.))\n", " result = nengo.Node(size_in=1)\n", " nengo.Connection(ens1, result, transform=0.5, function=np.square, synapse=None)\n", " nengo.Connection(ens2, result, transform=-0.5, function=np.square, synapse=None)\n", " return nengo.Probe(result)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The number of evaluation points $Q$ is not split into half to keep the number of elements in the matrices when solving for decoders the same. Those matrices are a $N \\times Q$ activity matrix and a $N \\times d$ target matrix wherein $N$ is the number of neurons and $d$ the number of dimensions. In the naive network this means we have one $N \\times Q$ and one $N \\times 2$ matrix. In the alternative network it is two matrices with $\\frac{N}{2} \\times Q$ elements and two matrices with $N \\times 1$ element. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "config[nengo.Ensemble].neuron_type = nengo.LIFRate()\n", "config[nengo.Connection].solver = nengo.solvers.LstsqL2(reg=0.01)\n", "\n", "rmse_two_ens = repeated_benchmark(two_ens_multiplication, config)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mean RMSE: 0.00525503429933\n", "median RMSE: 0.00504524950694\n", "standard deviation of RMSE: 0.000769015149906\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nPBlkxQ/uEgAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "compare(rmse_diag_encoders, rmse_two_ens)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Improvement by 2% (p < 0.344).\n" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The p-value is too high to reject the null hypothesis (no change in error). However, it is easy to increase the number of trials to see if we can get a clearer result." ] }, { "cell_type": "code", "collapsed": false, "input": [ "seeds = gen_seeds(300)\n", "\n", "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "config[nengo.Ensemble].neuron_type = nengo.LIFRate()\n", "config[nengo.Connection].solver = nengo.solvers.LstsqL2(reg=0.01)\n", "config[nengo.Ensemble].encoders = diag_encoders\n", "\n", "rmse_diag_encoders2 = repeated_benchmark(naive_multiplication, config)\n", "\n", "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "config[nengo.Ensemble].neuron_type = nengo.LIFRate()\n", "config[nengo.Connection].solver = nengo.solvers.LstsqL2(reg=0.01)\n", "\n", "rmse_two_ens2 = repeated_benchmark(two_ens_multiplication, config)\n", "\n", "seeds = gen_seeds(n_trials) # Reset number of trials" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mean RMSE: 0.00540763793025\n", "median RMSE: 0.00534008366937\n", "standard deviation of RMSE: 0.000848175504177\n", "mean RMSE:" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 0.00514186445731\n", "median RMSE: 0.00507345171245\n", "standard deviation of RMSE: 0.000648266251299\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "compare(rmse_diag_encoders2, rmse_two_ens2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Improvement by 5% (p < 0.001).\n" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the large sample size we can indeed find an improvement, though only a small one." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using spiking neurons\n", "\n", "So far the improvements have only been shown for rate neurons without any filtering. Here we will use spiking neurons and a commonly used exponential decaying synapse with a time constant of 5ms." ] }, { "cell_type": "code", "collapsed": false, "input": [ "synapse = nengo.Lowpass(0.005)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "rmse_naive_spiking = repeated_benchmark(naive_multiplication, config, synapse=synapse)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mean RMSE: 0.0700950596452\n", "median RMSE: 0.069612157843\n", "standard deviation of RMSE: 0.00749646471521\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\naqzmH+dkwF694Msv7cdWkA4JsTvPK1b0v5BTmpM14MMfoX8vlpVqz8KRk3hkiN2Bu3evPdpIKfh2\n3Q7o8SzU/wZWPwDzp5laxtkkqPQ7Ua2WcPLaB6H0f3wSezNUGkZCQjNq14arrvL86N697fvea8Cn\nZ/16U6to0sT83uPjTWA7G58Mrd+H6LGwvQu8vdlkJsjIyZrwwUrTr3ZXE/htKH/9exWcV5ut+yOg\n0hkofoKGF+8nqtYuuGAXR2ruhvBtUGYvbBwEU9dT6uIybNtmhmtnlFQyS7TWQfsBugB/AtuAMQH2\nmZT6/EagZYB9tBD+TJig9enT5v6gQVrfeqv93DPPaD1pktbmX13rMmXM7b592fvM9u3N+/z6q/3e\noDWh5/TEqbEaUjy2P/SQuZ01K3ufm1OSk7XessX/c/v2aR0drfXkyXb5H3/c3JYta24TE7X+6iuz\n/w8/mG3ffKN1x45aX3ed1zHx/lHJmtZTNffX1Ay/VNP+eU31tbp2/VN698GTmgsW68hbBmgerqDL\ndH9KU/y4x+tr1za3mzenbqv4h64x9FHN/TV044mtNW0maSJiA36+9XrQOiVF66uu0vrNNz2PwcGD\n5ha0btbM3K9fX5vfa8P/ae5ophl2habqrxq0jorK4Ds7fsz7aE257Tr06qc0Qzpp7mqsy4yrpbmz\niWb4ZbrCHb10swfv11w6UTfo9qWm8kZds865tPeIjja/gxYtMv5dp547M3fezuwLcuoHCAW2A3WA\ncOA3oLHXPtcDC1PvtwXWBHivjI+OEAFY/2zNm5vb2NjsvV+7duZ9fv/d96QwZIjvtldesU+sBcXM\nmXb5V640t+XKpZ5RHFat8tzm75j4/QlJ1NRbqOkyWnN7c83jJTSPl9TcerkObf+qpvgJXa+e7+vO\nP9/cJiTY2xo00BqVpN/4+lsd1v8mzSNlNP17ahrO04QkeLy+dGn7/s8/a4+LicWLtV692tz/9FMT\nJK7vfViv3LVS17zpeXNSv725psF8jwsDf+W0ft5/X+vixe3HHTva95980r5vXYiA+fsaPNi+7xFs\n0LpzZ/e/x6wEjQybp5RS9wIfaa3TmR6TJW2A7VrrnamfMxvoDjhTmnUDZqRGhbVKqbJKqcpa6xzI\n9ymEYc10btTIdN5mt5nIasIp7mc11pkzfbdVrmxuO3bM3ufmJSvBoblmM/wNwfWeseyvuWT8eNi2\n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\ndQyUSwYAwwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "config[nengo.Ensemble].encoders = diag_encoders\n", "rmse_diag_encoders_spiking = repeated_benchmark(naive_multiplication, config, synapse=synapse)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mean RMSE: 0.0481133982306\n", "median RMSE: 0.0477134127208\n", "standard deviation of RMSE: 0.0047371435676\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nJkFDCCGEY/8PxWdscAFpyIUAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "config = nengo.Config(nengo.Connection, nengo.Ensemble)\n", "rmse_two_ens_spiking = repeated_benchmark(two_ens_multiplication, config, synapse=synapse)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "mean RMSE: 0.0444385504631\n", "median RMSE: 0.0445897354704\n", "standard deviation of RMSE: 0.00399430632672\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nWBljAl0BqCFwCFgDdBWRrV7HtAD6i0gLY8x9wAcicl8c15KbfQ+lVNp37pzNBZRK1FMn7Xr/fTsN\nhrsodehQ2/LvVh97xhhEJEE1a07qNHIB7UTEZ6gsEYkxxrSK55ybEpEoY0x/YCG2JdXnIrLVGPOk\na/+nIjLfGNPCGLMTuAA8mtjPU0qlfcHBng6Vt5PnnvNdr1TJ1pv4w01zGmmB5jSUUirhEpPT0B7h\nSimlHNOgoZRSyjENGkoppRzToKGUUsoxDRpKKaUc06ChlFLKMQ0aSimlHNOgoZRSyjENGkoppRzT\noKGUUsoxDRpKKaUc06ChlFLKMQ0aSimlHNOgoZRSyjENGkoppRzToKGUUsoxDRpKKaUc06ChlFLK\nMQ0aSimlHNOgoZRSyjENGkoppRzToKGUUsoxDRpKKaUc06ChlFLKMQ0aSimlHNOgoZRSyjENGkop\npRzToKGUUsoxDRpKKaUc06ChlFLKMQ0aSimlHNOgoZRSyjENGkoppRzToKGUUsoxDRpKKaUc06Ch\nlFLKMQ0aSimlHNOgoZRSyjENGkoppRzToKGUUsoxDRpKKaUc06ChlFLKsUB/fKgxJhcwDSgO7AE6\niUhEHMftAc4C0cBVEamZgslUSil1DX/lNAYDi0WkDPCLaz0uAoSJSBUNGEop5X/+Chqtgcmu5cnA\nQzc41iR/cpRSSjnhr6CRX0SOupaPAvnjOU6An40xa40xj6dM0pRSSsUn2eo0jDGLgQJx7BrqvSIi\nYoyReC5TR0QOG2PyAouNMdtEZFlcB44YMSJ2OSwsjLCwsESlWyml0qvw8HDCw8Nv6RpGJL7ndfIx\nxmzD1lUcMcYUBJaISLmbnDMcOC8iY+PYJ/74HkoplZYZYxCRBFUB+Kt4ajbQ07XcE/jh2gOMMVmN\nMcGu5WxAE2BziqVQKaXUdfyV08gFTAeK4dXk1hhTCJgoIi2NMXcAM12nBAL/JyKj4rme5jSUUiqB\nEpPT8EvQSGoaNJRSKuHSUvGUUkqpNEiDhlJKKcc0aCillHJMg4ZSSinHNGgopZRyTIOGUkopxzRo\nKKWUckyDhlJKKcc0aCillHJMg4ZSSinHNGgopZRyTIOGUkopxzRoKKWUckyDhlJKKcc0aCillHJM\ng4ZSSinHNGgopZRyTIOGUkopxzRoKKWUckyDhlJKKcc0aCillHJMg4ZSSinHNGgopZRyTIOGUkop\nxzRoKKWUckyDhlJKKcc0aCillHJMg4ZSSinHNGgopZRyTIOGUkopxzRoKKWUckyDhlJKKcc0aCil\nlHJMg4ZSSinHNGgopZRyTIOGUkopxzRoKKWUckyDhlJKKcc0aCillHJMg4ZSSinHNGgopZRyzC9B\nwxjT0RizxRgTbYypeoPjmhljthljdhhjBqVkGpVSSl3PXzmNzUBbYGl8BxhjMgDjgWZABaCrMaZ8\nyiRPKaVUXAL98aEisg3AGHOjw2oCO0Vkj+vYb4E2wNbkTp9SSqm4peY6jcLAfq/1A65tSiml/CTZ\nchrGmMVAgTh2vSIicxxcQpI4SUoppW5RsgUNEWl8i5c4CBT1Wi+KzW3EacSIEbHLYWFhhIWF3eLH\nK6VU+hIeHk54ePgtXcOI+O8HvTFmCfCiiKyLY18g8A/QEDgErAG6ish1dRrGGPHn91BKqbTIGIOI\n3LBy+Vr+anLb1hizH7gPmGeM+cm1vZAxZh6AiEQB/YGFwN/AtLgChlJKqZTj15xGUtGchlJKJVya\nyWkopZRKmzRoKKWUckyDRjpzqy0j0hO9Fx56Lzz0XtwaDRrpjP5BeOi98NB74aH34tZo0FBKKeWY\nBg2llFKOpZsmt/5Og1JKpUUJbXKbLoKGUkqplKHFU0oppRzToKGUUsqxNBM0nEz9aowZ59q/0RhT\nJaXTmFJudi+MMd1c92CTMWaFMaaSP9KZEpxOCWyMqWGMiTLGtEvJ9KUkh38jYcaYDcaYv4wx4Smc\nxBTj4G8khzFmjjHmT9e96OWHZCY7Y8wXxpijxpjNNzgmYc9NEUn1LyADsBMoAQQBfwLlrzmmBTDf\ntXwvsNrf6fbjvagF5HAtN7ud74XXcb8Cc4H2/k63H/9f5AS2AEVc63n8nW4/3otXgFHu+wCcBAL9\nnfZkuBf1gCrA5nj2J/i5mVZyGrFTv4rIVcA99au31sBkABH5HchpjMmfsslMETe9FyKySkTOuFZ/\nB4qkcBpTipP/FwDPAN8Bx1MycSnMyb14GPheRA4AiMiJFE5jSnFyL2KAENdyCHBS7Mja6YqILANO\n3+CQBD8300rQcDL1a1zHpMeHZUKnwe0DzE/WFPnPTe+FMaYw9oExwbUpvTYXdPL/4k4glzFmiTFm\nrTHmkRRLXcpyci/GAxWMMYeAjcDAFEpbapPg52ayzdyXxJz+oV/b3jg9PiAcfydjTH2gN1An+ZLj\nV07uxQfAYBERY4zh+v8j6YWTexEEVMVObJYVWGWMWS0iO5I1ZSnPyb1oBqwXkfrGmFLAYmNMZRE5\nl8xpS40S9NxMK0HDydSv1x5TxLUtvXE0Da6r8nsi0ExEbpQ9Tcuc3ItqwLc2XpAHaG6MuSois1Mm\niSnGyb3YD5wQkYvARWPMUqAykN6ChpN70QsYBSAiu4wx/wJlgbUpkcBUJMHPzbRSPLUWuNMYU8IY\nkxHoDFz7Rz8b6AFgjLkPiBCRoymbzBRx03thjCkGzAS6i8hOP6Qxpdz0XojIHSJSUkRKYus1nk6H\nAQOc/Y38CNQ1xmQwxmTFVnz+ncLpTAlO7sU+oBGAqwy/LLA7RVOZOiT4uZkmchoiEmWMcU/9mgH4\nXES2GmOedO3/VETmG2NaGGN2AheAR/2Y5GTj5F4ArwGhwATXL+yrIlLTX2lOLg7vxW3B4d/INmPM\nAmATtiJ4ooiku6Dh8P/FG8BXxphN2OKZl0XklN8SnUyMMd8ADwB5XFNsD8cWUyb6uanDiCillHIs\nrRRPKaWUSgU0aCillHJMg4ZSSinHNGgopZRyTIOGUkopxzRoKKWUckyDhlJKKcc0aCiVCK75GJ6O\nZ18JY8xFY8z6m1zj/4wxJ40x7ZMnlUolPQ0aSiVOKND3Bvt3ikjVG11ARLphh3HQHrYqzdCgoVTi\njAZKuWbBe+dGBxpjshlj5rlmidtsjOl07SHJl0ylklaaGHtKqVRoEFBRRJxMK9wMOCgiLQGMMSE3\nOV6pVEtzGkolTkJyB5uAxsaY0caYuiJyNrkSpVRy06ChVDJzTXJUBdgMvGmMGebnJCmVaFo8pVTi\nnAOCnRxojCkInBaR/zPGnMFOwatUmqRBQ6lEEJGTxpgVxpjNwHwRGXSDw+8G3jXGxABXgDib6iqV\nFmjQUCqRXE1mnRy3CFgUz25tOaXSFK3TUCrpRQE5nHTuA+oBF1MkVUolAZ25TymllGOa01BKKeWY\nBg2llFKOadBQSinlmAYNpZRSjmnQUEop5dj/A03Vb8tii0XqAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "print \"naive vs. diagonal encoders:\"\n", "compare(rmse_naive_spiking, rmse_diag_encoders_spiking)\n", "print \"diagonal encoders vs. alternative network:\"\n", "compare(rmse_diag_encoders_spiking, rmse_two_ens_spiking)\n", "print \"naive vs. alternative network:\"\n", "compare(rmse_naive_spiking, rmse_two_ens_spiking)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "naive vs. diagonal encoders:\n", "Improvement by 31% (p < 0.001).\n", "diagonal encoders vs. alternative network:\n", "Improvement by 8% (p < 0.001).\n", "naive vs. alternative network:\n", "Improvement by 37% (p < 0.001).\n" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the spiking neurons the improvement of the diagonal encoders is less pronounced, but still large. The alternative network performs clearly better for spiking neurons." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "\n", "The accuracy of a multiplication implemented in the NEF could be improved by 37% overall compared to the naive implementation. By considering the distribution of the error it was first derived that diagonal encoders are optimal. This insight could be used to construct an alternative more accurate multiplication network." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Acknowlegdements\n", "\n", "I thank Sam Fok for helpful comments on early versions of this report and Terry Stewart for statistical advice." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Appendix\n", "\n", "This IPython notebook is based on [Nengo 2.0.0](https://github.com/nengo/nengo/releases/tag/v2.0.0). Further version information:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import matplotlib\n", "import scipy\n", "import sys\n", "\n", "print \"Python\", sys.version\n", "print \"Nengo\", nengo.version.version\n", "print \"NumPy\", np.version.version\n", "print \"SciPy\", scipy.version.version\n", "print \"Matplotlib\", matplotlib.__version__" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Python 2.7.9 (default, Jan 19 2015, 15:29:26) \n", "[GCC 4.9.1 20140903 (prerelease)]\n", "Nengo 2.0.0\n", "NumPy 1.9.1\n", "SciPy 0.15.1\n", "Matplotlib 1.4.2\n" ] } ], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 38 } ], "metadata": {} } ] }