{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Fisher Score Mixin Example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook demonstrates how to use the ``qinfer.ScoreMixin`` class to develop models that use numerical differentiation to calculate the Fisher information. We test the mixin class with two examples where the Fisher information is known analytically." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Preamble" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "from qinfer import ScoreMixin, SimplePrecessionModel, RandomizedBenchmarkingModel\n", "import numpy as np" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "try:\n", " from mpltools import style\n", " style.use('ggplot')\n", "except:\n", " pass" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Simple Precession Model Test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create two models, one that uses ScoreMixin's numerical ``score`` method, and one that uses ``SimplePrecessionModel``'s analytic ``score`` method. To make the first model, we declare a class that does nothing but inherits from both the ``ScoreMixin`` class and ``SimplePrecessionModel``; note that ``ScoreMixin`` is first, such that its implementation of ``Model.score()`` overrides that of ``SimplePrecessionModel``." ] }, { "cell_type": "code", "collapsed": false, "input": [ "class NumericalSimplePrecessionModel(ScoreMixin, SimplePrecessionModel):\n", " pass\n", "\n", "analytic_model = SimplePrecessionModel()\n", "numerical_model = NumericalSimplePrecessionModel()\n", "\n", "expparams = np.linspace(1, 10, 50)\n", "modelparams = np.linspace(.1,1,50)[:, np.newaxis]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We verify that both models compute the same score by plotting the score for a range of experiment and model parameters. Since this is a single-parameter model, the score is a scalar." ] }, { "cell_type": "code", "collapsed": false, "input": [ "analytic_score = analytic_model.score(np.array([0],dtype=int),modelparams, expparams)[0,0,...]\n", "print analytic_score.shape\n", "numerical_score = numerical_model.score(np.array([0],dtype=int),modelparams, expparams)[0,0,...]\n", "print numerical_score.shape\n", "\n", "plt.subplot(1,2,1)\n", "plt.imshow(analytic_score)\n", "plt.subplot(1,2,2)\n", "plt.imshow(numerical_score)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(50, 50)\n", "(50, 50)\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAQBKpRKTk5ObOt6VK1f44IMPuO+++5oytnOOEydOcPnyZb785S+zZ8+epp3zj3/8Y775zW8yOzub\n/a7Z17tVtFrbrbjO3aLtPOi6Kxcxldrcxj5zc3OcOnWKb33rW/T0NHaC26yxtdZ8//vf58UXX+Tt\nt9/mrbfeasq4r732GqVSiX379uFvkpG62ddbSGnGde4WbedF103xwAcHBxkbG8seX716lcHBwWYM\nnVEqlZiYmGBgYIDx8XFKpdKmjJMkCadOneKRRx7hi1/8YlPHBujt7eXgwYO8//77TRn33XffZWRk\nhNdff504jpmdneWHP/xhU8+5lbRa2828zt2k7bzouike+L333ssnn3zClStXSJKEn/3sZxw6dKgZ\nQ2ccOnSI8+fPA/DKK68wPDy84WN473nxxRfZvXs3X/3qV5s29tTUFDdu3ADSVfs333yTffv2NeWc\nH3/8cV544QWef/55/vzP/5wHH3yQb3/7200Zux1otbabdZ27Tdt50XXTKjHfeOONhlSrP/zDP9y0\nsc6cOcPo6ChTU1MMDAzw9a9/neHh4U1P/3nnnXf47ne/y969e7Pp1RNPPMGnP/3pTR3717/+Nc8/\n/zzOObz3PPLII/zBH/xB01OeRkdHeemll9oz3WoTaZa2W6Vr6G5tt7OupZReEAQhp3TlIqYgCEIn\nIAZcEAQhp4gBFwRByCliwAVBEHKKGHBBEIScIgZcEAQhp4gBFwRByCn/H4wEDErAYlcxAAAAAElF\nTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we verify that both models give the same Fisher information." ] }, { "cell_type": "code", "collapsed": false, "input": [ "analytic_fisher_info = analytic_model.fisher_information(modelparams, expparams)[0,0,...]\n", "numerical_fisher_info = numerical_model.fisher_information(modelparams, expparams)[0,0,...]\n", "\n", "plt.subplot(1,2,1)\n", "plt.imshow(analytic_fisher_info)\n", "plt.subplot(1,2,2)\n", "plt.imshow(numerical_fisher_info)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n1Ojr9vt9u9zubN+O97lXsp2EXPfkl5iG0dl/jWZ5eZlTp07x7LPPsm3btq5c2zRNXn75ZV577TU+\n/vhjPvroo65c97333iOXy7F37178FitSO/1+S0033udeyXZSct2VT+CDg4PMzc01Hl+9epXBwcFu\nXLohl8tx48YNBgYGuH79OrlcriPXcV2XU6dOcejQIR566KGuXhugr6+PgwcP8vnnn3flup9++inT\n09NcvHgRx3EolUq88sorXX3Nt9PtznY33+deynZSct2VT+D3338/ly9f5sqVK7iuy7vvvsvw8HA3\nLt0wPDxMsVgE4Pz584yMjGz6NXzf57XXXmP37t08/vjjXbv2wsICi4uLQO1b+w8//JC9e/d25TU/\n9dRTvPrqq5w5c4Zf//rX7N+/n+eee64r174T3O5sd+t97rVsJyXXXftNzPfff3/FUquf/vSnHbvW\n6dOnmZ2dZWFhgYGBAZ588klGRkY6vvznk08+4eTJk9x3332N/706evQo3//+9zt67f/85z+cOXMG\nz/PwfZ9Dhw7xk5/8pOtLnmZnZ3nrrbfuzOVWHdStbN+uXENvZ/tOzrV+lV5EJKF68ktMEZGtQAVc\nRCShVMBFRBJKBVxEJKFUwEVEEkoFXEQkoVTARUQS6v8A/20C99F9PkkAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Randomized Benchmarking Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To test that we get multiparameter Fisher information calculations correct as well, we compare to the zeroth-order non-interlaced randomized benchmarking model." ] }, { "cell_type": "code", "collapsed": false, "input": [ "class NumericalRandomizedBenchmarkingModel(ScoreMixin, RandomizedBenchmarkingModel):\n", " pass\n", "\n", "analytic_model = RandomizedBenchmarkingModel()\n", "numerical_model = NumericalRandomizedBenchmarkingModel()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now make experiment and parameters to test with." ] }, { "cell_type": "code", "collapsed": false, "input": [ "expparams = np.empty((150,), dtype=analytic_model.expparams_dtype)\n", "expparams['m'] = np.arange(1, 151)\n", "\n", "modelparams = np.empty((500, 3))\n", "modelparams[:, 0] = np.linspace(0.1, 0.999, 500)\n", "modelparams[:, 1] = 0.5\n", "modelparams[:, 2] = 0.5" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 99 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's make sure that the returned Fisher information has the right shape. Note that the Fisher information is a four-index tensor here, with the two indices for the information matrix itself, plus two indices that vary over the input model parameters and experiment parameters." ] }, { "cell_type": "code", "collapsed": false, "input": [ "afi = analytic_model.fisher_information(modelparams, expparams)\n", "assert afi.shape == (3, 3, modelparams.shape[0], expparams.shape[0])\n", "nfi = numerical_model.fisher_information(modelparams, expparams)\n", "assert nfi.shape == (3, 3, modelparams.shape[0], expparams.shape[0])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 100 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We check that each Fisher information matrix has errors that are small compared to the analytic FI alone." ] }, { "cell_type": "code", "collapsed": false, "input": [ "norm(afi - nfi) / norm(afi)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 101, "text": [ "1.662610344524985e-07" ] } ], "prompt_number": 101 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we plot the trace-inverse of each to check that we get the same Cramer-Rao bounds." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def tr_inv(arr):\n", " try:\n", " return trace(inv(arr.reshape(3, 3)))\n", " except LinAlgError:\n", " return float('inf')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 102 }, { "cell_type": "code", "collapsed": false, "input": [ "def crb(fi):\n", " return apply_along_axis(tr_inv, 0, np.sum(fi.reshape((9, modelparams.shape[0], expparams.shape[0])), axis=-1))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 104 }, { "cell_type": "code", "collapsed": false, "input": [ "figure(figsize=(15, 6))\n", "for idx, fi in enumerate([afi, nfi]):\n", " subplot(1,2, 1 + idx)\n", " semilogy(modelparams[:, 0], crb(fi))\n", " ylabel(r'$\\operatorname{Tr}\\left(\\left(\\sum_m F(p, m)\\right)^{-1}\\right)$')\n", " xlabel('$p$')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nfwgTAdEiF122AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 105 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we note that the numerical FI calculations are not much slower than the analytic calculations." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit analytic_model.fisher_information(modelparams, expparams)\n", "%timeit numerical_model.fisher_information(modelparams, expparams)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10 loops, best of 3: 29.7 ms per loop\n", "10 loops, best of 3: 60.9 ms per loop" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 106 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }