Renamed variables, expanded Bayesian coverage.
Trying to get the language of the book consistatn and more formal, otherwise it is too hard to go from this to the literature. Also, I need a bit more proof, so the formalism is useful.
This commit is contained in:
1 parent
baab280e8d
commit
01f2527f29
1 file changed
+229
-172
+229
-172
@@ -269,11 +269,11 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The Kalman filter belongs to a family of filters called *Bayesian filters*. Most textbook treatments of the Kalman filter present the Bayesian formula, perhaps shows how it factors into the Kalman filter equations, but mostly keeps the discussion at a very abstract level. \n",
|
||||
"The Kalman filter belongs to a family of filters called **Bayesian filters**. Most textbook treatments of the Kalman filter present the Bayesian formula, perhaps shows how it factors into the Kalman filter equations, but mostly keeps the discussion at a very abstract level. \n",
|
||||
"\n",
|
||||
"That approach requires a fairly sophisticated understanding of several fields of mathematics, and it still leaves much of the work of understanding and forming an intuitive grasp of the situation in the hands of the reader.\n",
|
||||
"\n",
|
||||
"I will use a different way to develop the topic, to which I owe the work of Dieter Fox and Sebastian Thrun a great debt. It depends on building an intuition on how Bayesian statistics work by tracking an object through a hallway - they use a robot, I use a dog (I like dogs). The first published example of this that I can find seems to be Fox 1999 [1], with a fuller example in Fox 2003 [2]. Sebastian Thrun also uses this formulation in his excellent Coursera course Artificial Intelligence for Robotics [3]. In fact, if you like watching videos, I highly recommend pausing reading this book in favor of first few lessons of that course, and then come back to this book for a deeper dive into the topic.\n",
|
||||
"I will use a different way to develop the topic, to which I owe the work of Dieter Fox and Sebastian Thrun a great debt. It depends on building an intuition on how Bayesian statistics work by tracking an object through a hallway - they use a robot, I use a dog. I like dogs, and they are less predictable than robots which imposes interesting difficulties for filtering. The first published example of this that I can find seems to be Fox 1999 [1], with a fuller example in Fox 2003 [2]. Sebastian Thrun also uses this formulation in his excellent Coursera course Artificial Intelligence for Robotics [3]. In fact, if you like watching videos, I highly recommend pausing reading this book in favor of first few lessons of that course, and then come back to this book for a deeper dive into the topic.\n",
|
||||
"\n",
|
||||
"Let's now use a simple thought experiment, much like we did with the g-h filter, to see how we might reason about the use of probabilities for filtering and tracking."
|
||||
]
|
||||
@@ -289,11 +289,11 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Let us begin with a simple problem. We have a dog friendly workspace, and so people bring their dogs to work. However, occasionally the dogs wander out of your office and down the halls. We want to be able to track them. So during a hackathon somebody created a little sonar sensor to attach to the dog's collar. It emits a signal, listens for the echo, and based on how quickly an echo comes back we can tell whether the dog is in front of an open doorway or not. It also senses when the dog walks, and reports in which direction the dog has moved. It connects to our network via wifi and sends an update once a second.\n",
|
||||
"Let's begin with a simple problem. We have a dog friendly workspace, and so people bring their dogs to work. Occasionally the dogs wander out of offices and down the halls. We want to be able to track them. So during a hackathon somebody created a little sonar sensor to attach to the dog's collar. It emits a signal, listens for the echo, and based on how quickly an echo comes back we can tell whether the dog is in front of an open doorway or not. It also senses when the dog walks, and reports in which direction the dog has moved. It connects to our network via wifi and sends an update once a second.\n",
|
||||
"\n",
|
||||
"I want to track my dog Simon, so I attach the device to his collar and then fire up Python, ready to try to write code to track him through the building. At first blush this may appear impossible. If I start listening to the sensor of Simon's collar I might read 'door', 'hall', 'hall', and so on. How can I use that information to determine where Simon is?\n",
|
||||
"I want to track my dog Simon, so I attach the device to his collar and then fire up Python, ready to write code to track him through the building. At first blush this may appear impossible. If I start listening to the sensor of Simon's collar I might read 'door', 'hall', 'hall', and so on. How can I use that information to determine where Simon is?\n",
|
||||
"\n",
|
||||
"To keep the problem small, we will assume that there are only 10 positions in a single hallway to consider, which we will number 0 to 9, where 1 is to the right of 0, 2 is to the right of 1, and so on. For reasons that will be clear later, we will also assume that the hallway is circular or rectangular. If you move right from position 9, you will be at position 0. \n",
|
||||
"To keep the problem small enough to plot easily we will assume that there are only 10 positions in a single hallway to consider, which we will number 0 to 9, where 1 is to the right of 0, 2 is to the right of 1, and so on. For reasons that will be clear later, we will also assume that the hallway is circular or rectangular. If you move right from position 9, you will be at position 0. \n",
|
||||
"\n",
|
||||
"When I begin listening to the sensor I have no reason to believe that Simon is at any particular position in the hallway. He is equally likely to be in any position. Their are 10 positions, so the probability that he is in any given position is 1/10. \n",
|
||||
"\n",
|
||||
@@ -306,18 +306,33 @@
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"array([ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1])"
|
||||
]
|
||||
},
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"\n",
|
||||
"pos_belief = np.array([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])"
|
||||
"belief = np.array([1/10]*10)\n",
|
||||
"belief"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"In Bayesian statistics this is called our *prior*, for reasons that won't yet be clear. It basically means the probability prior to incorporating measurements or other information. More completely, this is the *prior probability distribution*, but that is a mouthful and so it is normally shorted to *prior*. A *probability distribution* is just a collection of all possible probabilities for an event. Probability distributions always have to sum to 1 because *something* had to happen; the distribution just lists all the different *somethings* and the probability of each. \n",
|
||||
"In Bayesian statistics this is called our **prior**. It basically means the probability prior to incorporating measurements or other information. More completely, this is called the **prior probability distribution**, but that is a mouthful and so it is normally shorted to *prior*. A **probability distribution** is just a collection of all possible probabilities for an event. Probability distributions always to sum to 1 because *something* had to happen; the distribution just lists all the different *somethings* and the probability of each.\n",
|
||||
"\n",
|
||||
"I'm sure you've used probabilities before - as in \"the probability of rain today is 30%\". The last paragraph sounds like more of that. But Bayesian statistics was a revolution in probability because it treats the probability as a *belief* about a single event. Let's take an example. I know if I flip a fair coin a infinitely many times 50% of the flips will be heads and 50% tails. That is standard probability, not Bayesian, and is called **frequentist statistics** to distinguish it from Bayes. Now, let's say I flip the coin one more time. Which way do I believe it landed? Frequentist probablility has nothing to say about that; it will merely state that 50% of coin flips land as heads. Bayes treats this as a belief about a single event - the strength of my belief that *this specific* coin flip is heads is 50%.\n",
|
||||
"\n",
|
||||
"There are more differences, but for now recognize that Bayesian statistics reasons about our belief about a single event, whereas frequentists reason about collections of events. In this rest of this chapter, and most of the book, when I talk about the probability of something I am referring to the probability that some specific thing is true. When I do that I'm taking the Bayesian approach.\n",
|
||||
"\n",
|
||||
"Now let's create a map of the hallway in another list. Suppose there are first two doors close together, and then another door quite a bit further down the hallway. We will use 1 to denote a door, and 0 to denote a wall:"
|
||||
]
|
||||
@@ -351,7 +366,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x6ebc630>"
|
||||
"<matplotlib.figure.Figure at 0x6f1a898>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -362,18 +377,18 @@
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import book_plots as bp\n",
|
||||
"\n",
|
||||
"pos_belief = np.array([1./3, 1./3, 0, 0, 0, 0, 0, 0, 1./3, 0])\n",
|
||||
"belief = np.array([1./3, 1./3, 0, 0, 0, 0, 0, 0, 1./3, 0])\n",
|
||||
"set_figsize(y=2)\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We call this a <i>multimodal</i> distribution because we have multiple beliefs about the position of our dog. Of course we are not saying that we think he is simultaneously in three different locations, merely that so far we have narrowed down our knowledge in his position to be one of these three locations. \n",
|
||||
"We call this a <i>multimodal</i> distribution because we have multiple beliefs about the position of our dog. Of course we are not saying that we think he is simultaneously in three different locations, merely that so far we have narrowed down our knowledge in his position to be one of these three locations. My (Bayesian) belief is that there is a 33.3% chance of being at door 0, 33.3% at door 1, and a 33.3% chance of being at door 8. \n",
|
||||
"\n",
|
||||
"I hand coded the `pos_belief` array in the code above. How would we implement this in code? Well, hallway represents each door as a 1, and wall as 0, so we will multiply the hallway variable by the percentage, like so;"
|
||||
"I hand coded the `belief` array in the code above. How would we implement this in code? Well, hallway represents each door as a 1, and wall as 0, so we will multiply the hallway variable by the percentage, like so;"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -392,9 +407,9 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pos_belief = hallway * (1/3)\n",
|
||||
"pbelief = hallway * (1/3)\n",
|
||||
"np.set_printoptions(precision=3)\n",
|
||||
"print(pos_belief)"
|
||||
"print(pbelief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -434,8 +449,8 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pos_belief = np.array([0., 1., 0., 0., 0., 0., 0., 0., 0., 0.])\n",
|
||||
"print(pos_belief)"
|
||||
"belief = np.array([0., 1., 0., 0., 0., 0., 0., 0., 0., 0.])\n",
|
||||
"print(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -458,15 +473,15 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Unfortunately I have yet to come across a perfect sensor. Perhaps the sensor would not detect a door if Simon sat in front of it while scratching himself, or it might report there is a door if he is facing towards the wall instead of down the hallway. So in practice when I get a report 'door' I cannot assign 1/3 as the probability for each door. I have to assign something less than 1/3 to each door, and then assign a small probability to each blank wall position. \n",
|
||||
"Perfect sensors are rare. Perhaps the sensor would not detect a door if Simon sat in front of it while scratching himself, or it might report there is a door if he is facing towards the wall instead of down the hallway. So in practice when I get a report 'door' I cannot assign 1/3 as the probability for each door. I have to assign something less than 1/3 to each door, and then assign a small probability to each blank wall position. \n",
|
||||
"\n",
|
||||
"At this point it doesn't matter exactly what numbers we assign; let us say that the probability of the sensor being right is 3 times more likely to be right than wrong. How would we do this?\n",
|
||||
"\n",
|
||||
"At first this may seem like an insurmountable problem. If the sensor is noisy it casts doubt on every piece of data. How can we conclude anything if we are always unsure?\n",
|
||||
"\n",
|
||||
"The key, as with the problem above, is probabilities. We are already comfortable with assigning a probabilistic belief about the location of the dog; now we just have to incorporate the additional uncertainty caused by the sensor noise. Lets say we get a reading of 'door'. We already said that the sensor is three times as likely to be correct as incorrect, so we should scale the probability distribution by 3 where ever there is a door. If we do that the result will no longer be a probability distribution, but we will learn how to correct that in a moment.\n",
|
||||
"The answer, as with the problem above, is probabilities. We are already comfortable assigning a probabilistic belief about the location of the dog; now we just have to incorporate the additional uncertainty caused by the sensor noise. Lets say we get a reading of 'door'. We already said that the sensor is three times as likely to be correct as incorrect, so we should scale the probability distribution by 3 where there is a door. If we do that the result will no longer be a probability distribution, but we will learn how to correct that in a moment.\n",
|
||||
"\n",
|
||||
"Let's look at that in Python code. Here I use the variable `z` to denote the measurement as that is the customary choice in the literature. "
|
||||
"Let's look at that in Python code. Here I use the variable `z` to denote the measurement as that is the customary choice in the literature (`y` is also commonly used). "
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -481,15 +496,15 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[ 0.6 0.6 0.2 0.2 0.2 0.2 0.2 0.2 0.6 0.2]\n",
|
||||
"sum = 3.2\n"
|
||||
"[ 0.3 0.3 0.1 0.1 0.1 0.1 0.1 0.1 0.3 0.1]\n",
|
||||
"sum = 1.6\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAACeCAYAAAD5RibQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGaFJREFUeJzt3X9Q1HXix/EX4K+liMlDCAUFysNUJGXjYqV0bmjntM68\nKUm7s0A7D65M5bzxKG66ErXyhjs1wa4c5OosvKnxmuQccPxBHDRJsJ2ZehZ3ZgO7nZ6heaEnfL5/\n9G2nbZEf+tHPAs/HjDPw/rzfy2vfs8WLDx8+G2QYhiEAAAAAly3Y6gAAAABAf0G5BgAAAExCuQYA\nAABMQrkGAAAATEK5BgAAAExCuQYAAABMQrkGAAAATNJtua6urtasWbMUExOj4OBglZWVdfugBw4c\n0LRp0xQaGqqYmBitXLnSlLAAAABAIOu2XJ89e1aTJk3SunXrZLPZFBQU1OX806dP684771R0dLTq\n6+u1bt06rV27VkVFRaaFBgAAAAJRUG/eoTEsLEwbN27Ugw8+eNE5JSUlys/Pl8fj0dChQyVJq1at\nUklJiT799NPLTwwAAAAEKNOvua6rq9Ptt9/uLdaS5HQ61dzcrGPHjpn95QAAAICAMcjsB3S73Ro9\nerTPWFRUlPfYmDFjvOOtra1mf3kAAADgqgkPD/f53PQz191dkw0AAAD0V6aX6xtuuEFut9tnzOPx\neI8BAAAA/ZXpl4WkpaVpxYoVOnfunPe666qqKo0aNcrnkpBv+/YpdbPV19dLkux2+xX9On0Je+KP\nPfHHnvhjT/yxJ/7YE3/siT/2xFdf2Y+uLm3u0a34XC6XXC6XOjo6dOzYMblcLh0/flySlJ+fr4yM\nDO/8Bx54QKGhocrKytLBgwf1xhtv6Nlnn1VeXp4JTwUAAAAIXN2W6/3792vKlCmaMmWK2tra9OST\nT2rKlCl68sknJX31R4pNTU3e+dddd52qqqrU3Nwsu92uxYsXa/ny5Vq2bNmVexYAAABAAOj2spDp\n06ero6PjosdLS0v9xiZOnKh9+/ZdXjIAAACgjzH9DxoBAACAgYpyDQAAAJiEcg0AAACYhHINAAAA\nmIRyDQAAAJiEcg0AAACYhHINAAAAmIRyDQAAAJiEcg0AAACYhHINAAAAmIRyDQAAAJiEcg0AAACY\nhHINAAAAmKRH5bq4uFjx8fGy2Wyy2+2qqanpcn5FRYVuu+02XXfddRoxYoRmz56to0ePmhIYAAAA\nCFTdluvy8nItXbpUBQUFcrlccjgcmjFjho4fP97p/I8++kizZ8/W9OnT5XK5tGvXLrW1tWnmzJmm\nhwcAAAACSbfluqioSNnZ2Vq4cKESExO1fv16RUdHq6SkpNP5LpdLHR0dWrNmjRISEpScnKwVK1bo\n448/1n/+8x/TnwAAAAAQKLos1+fPn1dDQ4OcTqfPuNPpVG1tbadrpk6dqmuvvVYvvvii2tvbdebM\nGW3ZskWpqakaPny4eckBAACAABNkGIZxsYPNzc2KiYlRdXW10tPTveNPP/20tm7dqsOHD3e6rra2\nVrNnz9apU6fU0dGhyZMn669//atGjBjhM6+1tdX7MddkAwAAoC8YO3as9+Pw8HCfY6bfLaSpqUmz\nZ89Wdna26uvrtXfvXoWFhSkzM1Nd9HgAAACgzxvU1cGIiAiFhITI4/H4jHs8HkVHR3e65oUXXlBs\nbKyeffZZ79grr7yi2NhY1dXVyeFwdLrObrf3Nnuv1NfXX5Wv05ewJ/7YE3/siT/2xB974o898cee\n+GNPfPWV/fjm1Rff1uWZ6yFDhiglJUWVlZU+41VVVRctyYZhKDjY92G//ryjo6NHgQEAAIC+qNvL\nQvLy8rRlyxZt3rxZhw4d0pIlS+R2u5WTkyNJys/PV0ZGhnf+rFmz1NDQoJUrV+ro0aNqaGhQdna2\nRo8erZSUlCv3TAAAAACLdXlZiCRlZmbq5MmTKiwsVEtLi5KSklRRUaHY2FhJktvtVlNTk3d+enq6\nysvL9cwzz+i5555TaGio0tLStHPnTtlstiv3TAAAAACLdVuuJSk3N1e5ubmdHistLfUbu++++3Tf\nffddXjIAAACgjzH9biEAAADAQEW5BgAAAExCuQYAAABMQrkGAAAATEK5BgAAAExCuQYAAABMQrkG\nAAAATEK5BgAAAExCuQYAAABMQrkGAAAATEK5BgAAAExCuQYAAABMQrkGAAAATNKjcl1cXKz4+HjZ\nbDbZ7XbV1NR0u+b3v/+9xo0bp2HDhmnkyJHKz8+/7LAAAABAIBvU3YTy8nItXbpUJSUlSk9P18aN\nGzVjxgx9+OGHio2N7XRNXl6eduzYod/+9rdKSkpSa2urWlpaTA8PAAAABJJuy3VRUZGys7O1cOFC\nSdL69eu1c+dOlZSUaPXq1X7zjxw5oueff14HDhxQYmKidzw5OdnE2AAAAEDg6fKykPPnz6uhoUFO\np9Nn3Ol0qra2ttM1f/nLX5SQkKCKigolJCQoPj5eWVlZ+ve//21eagAAACAABRmGYVzsYHNzs2Ji\nYlRdXa309HTv+NNPP62tW7fq8OHDfmtycnJUVlamW265RWvXrpUkLV++XJJUV1enoKAg79zW1lbv\nx0ePHr38ZwMAAABcYWPHjvV+HB4e7nOs28tCequjo0Pnzp3Tyy+/rJtuukmS9PLLLysxMVH19fW6\n9dZbO13372GRZkexXMTgDgWdOdHrdUZYhE78r3/eyOVS9wQAgKuF78O4HF2W64iICIWEhMjj8fiM\nezweRUdHd7omOjpagwYN8hZrSbrpppsUEhKiTz755KLl+vHGc73NHvA23BGh9MS4Xq+rOXZKj7/b\nP1/4l7onV0t9fb0kyW63W5wkcLAn/tgTf+yJP/bEX1/ZE74PW6evvEa+efXFt3X5Y9mQIUOUkpKi\nyspKn/Gqqio5HI5O16Snp+vChQtqamryjjU1Nam9vV1jxozpTW4AAACgT+n2dx55eXnasmWLNm/e\nrEOHDmnJkiVyu93KycmRJOXn5ysjI8M7PyMjQ1OmTNGCBQvkcrnU2NioBQsW6Lbbbgv4n0IAAACA\ny9HtNdeZmZk6efKkCgsL1dLSoqSkJFVUVHjvce12u33OUgcFBemtt97SY489pjvuuEM2m01Op1NF\nRUVX7lkAAAAAAaBHf9CYm5ur3NzcTo+Vlpb6jd1www3atm3b5SUDAAAA+pj++aewAAAAgAUo1wAA\nAIBJKNcAAACASSjXAAAAgEko1wAAAIBJKNcAAACASSjXAAAAgEko1wAAAIBJKNcAAACASSjXAAAA\ngEko1wAAAIBJKNcAAACASSjXAAAAgEl6VK6Li4sVHx8vm80mu92umpqaHj340aNHFRYWprCwsMsK\nCQAAAPQF3Zbr8vJyLV26VAUFBXK5XHI4HJoxY4aOHz/e5brz589r7ty5mjZtmoKCgkwLDAAAAASq\nbst1UVGRsrOztXDhQiUmJmr9+vWKjo5WSUlJl+tWrFihW265RXPmzJFhGKYFBgAAAAJVl+X6/Pnz\namhokNPp9Bl3Op2qra296LodO3Zox44d2rBhA8UaAAAAA8agrg6eOHFC7e3tioqK8hmPjIyU2+3u\ndE1zc7MWLVqk7du3KzQ01LykfdCZM2dUX/9x79cNi7wCaQLDpe7J1VZfX291hIDDnvhjT/yxJ/7Y\nE3+Bvid8H7ZeoL9Gxo4de9Fjpt8tZP78+crNzdWtt95q9kMDAAAAAa3LM9cREREKCQmRx+PxGfd4\nPIqOju50zZ49e1RdXa2nnnpKkmQYhjo6OjR48GCVlJTo4YcfNil64AsLC5N94uher6s5dkrSOfMD\nBYBL3ZOr5euflO12u8VJAgd74o898cee+GNP/PWVPeH7sHX6ymuktbX1ose6LNdDhgxRSkqKKisr\nde+993rHq6qqNGfOnE7XfPDBBz6fb9++XatWrdL+/fs1cuTI3uQGAAAA+pQuy7Uk5eXlaf78+UpN\nTZXD4dCmTZvkdruVk5MjScrPz9f+/fu1a9cuSdL48eN91r/77rsKDg72GwcAAAD6m27LdWZmpk6e\nPKnCwkK1tLQoKSlJFRUVio2NlSS53W41NTV1+Rjc5xoAAAADQbflWpJyc3OVm5vb6bHS0tIu12Zl\nZSkrK6vXwQAAAIC+xvS7hQAAAAADFeUaAAAAMAnlGgAAADAJ5RoAAAAwCeUaAAAAMAnlGgAAADAJ\n5RoAAAAwCeUaAAAAMAnlGgAAADAJ5RoAAAAwCeUaAAAAMAnlGgAAADAJ5RoAAAAwSY/LdXFxseLj\n42Wz2WS321VTU3PRuXv37tU999yjkSNH6pprrlFycrJKS0tNCQwAAAAEqh6V6/Lyci1dulQFBQVy\nuVxyOByaMWOGjh8/3un8uro6JScn6/XXX9fBgweVm5urRYsW6dVXXzU1PAAAABBIBvVkUlFRkbKz\ns7Vw4UJJ0vr167Vz506VlJRo9erVfvPz8/N9Ps/JydGePXv0+uuva968eSbEBgAAAAJPt2euz58/\nr4aGBjmdTp9xp9Op2traHn+h1tZWDR8+vPcJAQAAgD6i2zPXJ06cUHt7u6KionzGIyMj5Xa7e/RF\n3nrrLe3evbtXZbw/OHPmjOrrP+79umGRVyBNYLjUPbna6uvrrY4QcNgTf+yJP/bEH3viL9D3hO/D\n1gv018jYsWMveqxHl4Vcjr/97W/68Y9/rA0bNshut1/pL4d+ygiL0In/9c+b20QM7lDQmRO9WtOf\n90NiT77tUvZDYk86w574Y0/QE7xOeq7bch0REaGQkBB5PB6fcY/Ho+jo6C7X1tTU6K677tLKlSv1\ns5/97PKS9kFhYWGyTxzd63U1x05JOmd+oABwOXvy+Lv983+QG+6IUHpiXK/W9Of9kLine truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x6f35a90>"
|
||||
"<matplotlib.figure.Figure at 0x6ff9518>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -502,20 +517,20 @@
|
||||
" if val == z:\n",
|
||||
" belief[i] *= correct_scale\n",
|
||||
"\n",
|
||||
"pos_belief = np.array([0.2] * 10)\n",
|
||||
"belief = np.array([0.1] * 10)\n",
|
||||
"reading = 1 # 1 is 'door'\n",
|
||||
"update(hallway, pos_belief, z=1, correct_scale=3.)\n",
|
||||
"update(hallway, belief, z=1, correct_scale=3.)\n",
|
||||
"\n",
|
||||
"print(pos_belief)\n",
|
||||
"print('sum =', sum(pos_belief))\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"print(belief)\n",
|
||||
"print('sum =', sum(belief))\n",
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We can see that this is not a probability distribution because it does not sum to 1.0. But we can see that the code is doing mostly the right thing - the doors are assigned a number (0.6) that is 3 times higher than the walls (0.2). So we can write a bit of code to normalize the result so that the probabilities correctly sum to 1.0. Normalization is done by dividing each element by the sum of all elements in the list. If this is not clear you should spend a few minutes proving it to yourself algebraically.\n",
|
||||
"We can see that this is not a probability distribution because it does not sum to 1.0. But we can see that the code is doing mostly the right thing - the doors are assigned a number (0.3) that is 3 times higher than the walls (0.1). All we need to do is normalize the result so that the probabilities correctly sum to 1.0. Normalization is done by dividing each element by the sum of all elements in the list. \n",
|
||||
"\n",
|
||||
"Also, it is a bit odd to be talking about \"3 times as likely to be right as wrong\". We are working in probabilities, so let's specify the probability of the sensor being correct, and computing the scale factor from that."
|
||||
]
|
||||
@@ -541,7 +556,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x6faf550>"
|
||||
"<matplotlib.figure.Figure at 0x7748390>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -549,9 +564,10 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def normalize(prob_dist):\n",
|
||||
" \"\"\" Normalize probability distribution\"\"\"\n",
|
||||
" prob_dist /= sum(prob_dist) \n",
|
||||
"def normalize(distribution):\n",
|
||||
" assert distribution.dtype.kind == 'f'\n",
|
||||
" \"\"\" Normalize a probability distribution so it sums to 1.0\"\"\"\n",
|
||||
" distribution /= sum(distribution.astype(float)) \n",
|
||||
"\n",
|
||||
"def update(map_, belief, z, prob_correct):\n",
|
||||
" scale = prob_correct / (1. - prob_correct)\n",
|
||||
@@ -560,13 +576,13 @@
|
||||
" belief[i] *= scale\n",
|
||||
" normalize(belief)\n",
|
||||
"\n",
|
||||
"pos_belief = np.array([0.2] * 10)\n",
|
||||
"update(hallway, pos_belief, 1, prob_correct=.75)\n",
|
||||
"belief = np.array([0.1] * 10)\n",
|
||||
"update(hallway, belief, 1, prob_correct=.75)\n",
|
||||
"\n",
|
||||
"print('sum =', sum(pos_belief))\n",
|
||||
"print('probability of door =', pos_belief[0])\n",
|
||||
"print('probability of wall =', pos_belief[2])\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"print('sum =', sum(belief))\n",
|
||||
"print('probability of door =', belief[0])\n",
|
||||
"print('probability of wall =', belief[2])\n",
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -575,7 +591,13 @@
|
||||
"source": [
|
||||
" We can see from the output that the sum is now 1.0, and that the probability of a door vs wall is still three times larger. The result also fits our intuition that the probability of a door must be less than 0.333, and that the probability of a wall must be greater than 0.0. Finally, it should fit our intuition that we have not yet been given any information that would allow us to distinguish between any given door or wall position, so all door positions should have the same value, and the same should be true for wall positions.\n",
|
||||
" \n",
|
||||
"This result is called the *posterior*, which is short for *posterior probability distribution*. All this means is a probability distribution that has incorporated the measurement information. Most of the Bayesian and Kalmaning filtering literature uses these terms, so you will have to get used to them. To review, the *prior* is the probability distribution before including the measurement's information, and the *posterier* is the distribution after the measurement has been incorporated. "
|
||||
"This result is called the **posterior**, which is short for **posterior probability distribution**. All this means is a probability distribution *after* incorporating the measurement information (posterior means 'after' in this context). Most of the Bayesian and Kalman filtering literature uses these terms, so you will have to get used to them. \n",
|
||||
"\n",
|
||||
"$$ \\mathtt{posterior} = \\frac{\\mathtt{prior}\\times \\mathtt{evidence}}{\\mathtt{normalization}}$$ \n",
|
||||
"\n",
|
||||
"It is very important to learn and internalize these terms as most of the literature uses them exclusively. You will be unable to read it if these terms aren't crystal clear to you. To review, the *prior* is the probability distribution before including the measurement's information, and the *posterior* is the distribution after the measurement has been incorporated. \n",
|
||||
"\n",
|
||||
"In this chapter I will keep slipping these terms in so you get used to them. I will usually put then in parenthesis to remind you of the proper term."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -593,7 +615,7 @@
|
||||
"\n",
|
||||
"Unfortunately, the answer is no. Even if the sensor readings perfectly match an extremely complicated hallway map we could not say that we are 100% sure that the dog is in a specific position - there is, after all, the possibility that every sensor reading was wrong! Naturally, in a more typical situation most sensor readings will be correct, and we might be close to 100% sure of our answer, but never 100% sure. This may seem complicated, but lets just go ahead and program the math, which as we have seen is quite simple.\n",
|
||||
"\n",
|
||||
"First let's deal with the simple case - assume the movement sensor is perfect, and it reports that the dog has moved one space to the right. How would we alter our `pos_belief` array?\n",
|
||||
"First let's deal with the simple case - assume the movement sensor is perfect, and it reports that the dog has moved one space to the right. How would we alter our `belief` array?\n",
|
||||
"\n",
|
||||
"I hope after a moment's thought it is clear that we should just shift all the values one space to the right. If we previously thought there was a 50% chance of Simon being at position 3, then after the move to the right we should believe that there is a 50% chance he is at position 4. So let's implement that. Recall that the hallway is circular, so we will use modulo arithmetic to perform the shift correctly."
|
||||
]
|
||||
@@ -617,7 +639,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x6fa6048>"
|
||||
"<matplotlib.figure.Figure at 0x76c2748>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -625,30 +647,34 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def perfect_predict(pos_belief, move):\n",
|
||||
"def perfect_predict(belief, move):\n",
|
||||
" \"\"\" move the position by 'move' spaces, where positive is to the right, \n",
|
||||
" and negative is to the left\n",
|
||||
" \"\"\"\n",
|
||||
" n = len(pos_belief)\n",
|
||||
" n = len(belief)\n",
|
||||
" result = np.zeros(n)\n",
|
||||
" for i in range(n):\n",
|
||||
" result[i] = pos_belief[(i-move) % n]\n",
|
||||
" pos_belief[:] = result # copy back to original array\n",
|
||||
" result[i] = belief[(i-move) % n]\n",
|
||||
" belief[:] = result # copy back to original array\n",
|
||||
" \n",
|
||||
"pos_belief = np.array([.35, .1, .2, .3, 0, 0, 0, 0, 0, .05])\n",
|
||||
"print('belief before predict =', pos_belief)\n",
|
||||
"bp.bar_plot(pos_belief, title='Before prediction')\n",
|
||||
"belief = np.array([.35, .1, .2, .3, 0, 0, 0, 0, 0, .05])\n",
|
||||
"print('belief before predict =', belief)\n",
|
||||
"bp.bar_plot(belief, title='Before prediction')\n",
|
||||
"\n",
|
||||
"perfect_predict(pos_belief, 1)\n",
|
||||
"print('belief after predict =', pos_belief)\n",
|
||||
"bp.bar_plot(pos_belief, title='After prediction')"
|
||||
"perfect_predict(belief, 1)\n",
|
||||
"print('belief after predict =', belief)\n",
|
||||
"bp.bar_plot(belief, title='After prediction')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We can see that we correctly shifted all values one position to the right, wrapping from the end of the array back to the beginning."
|
||||
"We can see that we correctly shifted all values one position to the right, wrapping from the end of the array back to the beginning.\n",
|
||||
"\n",
|
||||
"You will often see this referred to as the state **evolution**, which is short for **time evolution** [7]. This term refers to how the state of the system changes over time. For filters, this time is usually discrete. For our dog tracking, the system state is the position of the dog, so the state evolution is just the position after a discrete amount of time has passed. I haven't defined 'state' or 'system' yet, but I hope it is clear in context. The **system** is what we are trying to model or filter, and the state is it's current configuration or value. Except in simulations we rarely know the actual state, so we say our filters produce the **estimated state** of the system. In practice this often just gets referred to as the state, so be careful to understand if the reference is to the state of the filter (which is the estimated state), or the state of the system (which is the actual state).\n",
|
||||
"\n",
|
||||
"More terminology - this prediction becomes our new *prior*. Time has moved forward and we made a prediction without benefit of knowing the measurements. "
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -662,7 +688,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We want to solve real world problems, and we have already stated that all sensors have noise. Therefore the code above must be wrong since it assumes perfect measurements. What if the sensor reported that our dog moved one space, but he actually moved two spaces, or zero? Once again this may initially sound like an insurmountable problem, but let's just model it in math. Since this is just an example, we will create a pretty simple noise model for the sensor - later in the book we will handle far more sophisticated errors.\n",
|
||||
"We want to solve real world problems, and we have already stated that all sensors have noise. Therefore the code above must be wrong since it assumes we have perfect measurements. What if the sensor reported that our dog moved one space, but he actually moved two spaces, or zero? Once again this may initially sound like an insurmountable problem, but let's just model it in math. Since this is just an example, we will create a pretty simple noise model for the sensor - later in the book we will handle far more sophisticated errors.\n",
|
||||
"\n",
|
||||
"We will say that when the sensor sends a movement update, it is 80% likely to be right, and it is 10% likely to overshoot one position to the right, and 10% likely to undershoot to the left. That is, if we say the movement was 4 (meaning 4 spaces to the right), the dog is 80% likely to have moved 4 spaces to the right, 10% to have moved 3 spaces, and 10% to have moved 5 spaces.\n",
|
||||
"\n",
|
||||
@@ -687,7 +713,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x6f9fa58>"
|
||||
"<matplotlib.figure.Figure at 0x77ea2e8>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -695,20 +721,20 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def predict(pos_belief, move, p_correct, p_under, p_over):\n",
|
||||
" n = len(pos_belief)\n",
|
||||
"def predict(belief, move, p_correct, p_under, p_over):\n",
|
||||
" n = len(belief)\n",
|
||||
" result = np.zeros(n)\n",
|
||||
" for i in range(n):\n",
|
||||
" result[i] = (\n",
|
||||
" pos_belief[(i-move) % n] * p_correct +\n",
|
||||
" pos_belief[(i-move-1) % n] * p_over +\n",
|
||||
" pos_belief[(i-move+1) % n] * p_under) \n",
|
||||
" pos_belief[:] = result\n",
|
||||
" belief[(i-move) % n] * p_correct +\n",
|
||||
" belief[(i-move-1) % n] * p_over +\n",
|
||||
" belief[(i-move+1) % n] * p_under) \n",
|
||||
" belief[:] = result\n",
|
||||
"\n",
|
||||
"pos_belief = np.array([0., 0., 0., 1., 0., 0., 0., 0., 0., 0.])\n",
|
||||
"predict(pos_belief, 2, .8, .1, .1)\n",
|
||||
"print(pos_belief)\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"belief = np.array([0., 0., 0., 1., 0., 0., 0., 0., 0., 0.])\n",
|
||||
"predict(belief, move=2, p_correct=.8, p_under=.1, p_over=.1)\n",
|
||||
"print(belief)\n",
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -737,7 +763,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x75f5908>"
|
||||
"<matplotlib.figure.Figure at 0x77d08d0>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -745,10 +771,10 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pos_belief = np.array([0, 0, .4, .6, 0, 0, 0, 0, 0, 0])\n",
|
||||
"predict(pos_belief, 2, .8, .1, .1)\n",
|
||||
"print(pos_belief)\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"belief = np.array([0, 0, .4, .6, 0, 0, 0, 0, 0, 0])\n",
|
||||
"predict(belief, move=2, p_correct=.8, p_under=.1, p_over=.1)\n",
|
||||
"print(belief)\n",
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -771,7 +797,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x46ef7f0>"
|
||||
"<matplotlib.figure.Figure at 0x778f8d0>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -779,14 +805,14 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"This is not a coincidence, or the result of a carefully chosen example - it is always true of the predict step. This is inevitable; if our sensor is noisy we will lose a bit of information on every prediction. Suppose we were to perform the prediction an infinite number of times - what would the result be? If we lose information on every step, we must eventually end up with no information at all, and our probabilities will be equally distributed across the `pos_belief` array. Let's try this with 500 iterations."
|
||||
"This is not a coincidence, or the result of a carefully chosen example - it is always true of the evolution (predict step). This is inevitable; if our sensor is noisy we will lose a bit of information on every prediction. Suppose we were to perform the prediction an infinite number of times - what would the result be? If we lose information on every step, we must eventually end up with no information at all, and our probabilities will be equally distributed across the `belief` array. Let's try this with 500 iterations."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -807,7 +833,7 @@
|
||||
"data": {
|
||||
"image/png": "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\n02fc6XSqtra20zV//vOflZCQoIqKCiUkJCg+Pl5ZWVn6z3/+Y17VAAAAQAAKMgzDuNzB5uZmxcTE\nqLq6Wunp6d7xlStXatu2bTp69KjfmpycHJWVlemuu+7SunXrJEnLly+XJNXV1SkoKMg7t7W11fu6\nsbHxyj8NAAAAcJWNGjXK+zoiIsLnWLfbQnqro6ND58+f19atW3X77bdLkrZu3arExETV19dr4sSJ\nZp8SAAAACAhdhuthw4YpJCREHo/HZ9zj8SgqKqrTNVFRUQoNDfUGa0m6/fbbFRISoo8//viy4dpu\nt/e29l6pr6+/JufpS+iJP3rij574oyf+6Ik/euKPnvijJ776Sj8u3X3xdV3uuR44cKBSUlJUWVnp\nM15VVSWHw9HpmvT0dF28eFFNTU3esaamJrW3t2vkyJG9qRsAAADoU7q9z3VeXp62bNmizZs368iR\nI1qyZIncbrdycnIkSfn5+crIyPDOz8jI0IQJE7RgwQK5XC4dPHhQCxYs0KRJkwL+pxAAAADgSnS7\n5zozM1OnTp1SYWGhWlpalJSUpIqKCu89rt1ut89V6qCgIL399tt64okndM8998hms8npdKqoqOjq\nfQoAAAAgAPToFxpzc3OVm5vb6bHS0lK/sVtuuUXbt2+/ssoAAACAPqZHjz8HAAAA0D3CNQAAAGAS\nwjUAAABgEsI1AAAAYBLCNQAAAGASwjUAAABgEsI1AAAAYBLCNQAAAGASwjUAAABgEsI1AAAAYBLC\nNQAAAGASwjUAAABgEsI1AAAAYJIehevi4mLFx8fLZrPJbrerpqamR2/e2Nio8PBwhYeHX1GRAAAA\nQF/QbbguLy/X0qVLVVBQIJfLJYfDoWnTpunEiRNdrrtw4YLmzp2rKVOmKCgoyLSCAQAAgEDVbbgu\nKipSdna2Fi5cqMTERG3YsEFRUVEqKSnpct2KFSt01113afbs2TIMw7SCAQAAgEDVZbi+cOGCGhoa\n5HQ6fcadTqdqa2svu27nzp3auXOnNm7cSLAGAABAvxHa1cGTJ0+qvb1dkZGRPuPDhw+X2+3udE1z\nc7MWLVqkHTt2KCwsrMeF1NfX93julbhW5+lL6Ik/euKPnvijJ/7oiT964o+e+KMnvgK9H6NGjbrs\nMdPvFjJ//nzl5uZq4sSJZr81AAAAENC6vHI9bNgwhYSEyOPx+Ix7PB5FRUV1umbv3r2qrq7WM888\nI0kyDEMdHR0aMGCASkpK9Oijj3a6zm63f5P6e+yrn4Cu9nn6Enrij574oyf+6Ik/euKPnvijJ/7o\nia++0o/W1tbLHusyXA8cOFApKSmqrKzUzJkzveNVVVWaPXt2p2s++OADn6937Nih1atX68CBA4qO\nju5N3QAAAECf0mW4lqS8vDzNnz9fqampcjgcevHFF+V2u5WTkyNJys/P14EDB7R7925J0pgxY3zW\n/+1vf1NwcLDfOAAAAHC96TZcZ2Zm6tSpUyosLFRLS4uSkpJUUVGh2NhYSZLb7VZTU1OX78F9rgEA\nANAfdBuuJSk3N1e5ubmdHistLe1ybVZWlrKysnpdGAAAANDXmH63EAAAAKC/IlwDAAAAJiFcAwAA\nACYhXAMAAAAmIVwDAAAAJiFcAwAAACYhXAMAAAAmIVwDAAAAJiFcAwAAACYhXAMAAAAmIVwDAAAA\nJiFcAwAAACYhXAMAAAAm6XG4Li4uVnx8vGw2m+x2u2pqai47d9++fXrwwQcVHR2tG264QcnJySot\nLTWlYAAAACBQ9Shcl5eXa+nSpSooKJDL5ZLD4dC0adN04sSJTufX1dUpOTlZb7zxhg4fPqzc3Fwt\nWrRIr732mqnFAwAAAIEktCeTioqKlJ2drYULF0qSNmzYoF27dqmkpERr1qzxm5+fn+/zdU5Ojvbu\n3as33nhD8+bNM6FsAAAAIPB0e+X6woULamhokNPp9Bl3Op2qra3t8YlaW1s1dOjQ3lcIAAAA9BFB\nhmEYXU1obm5WTEyMqqurlZ6e7h1fuXKltm3bpqNHj3Z7krfffls//OEPVVtbK7vd7h1vbW31vm5s\nbPwm9QMAAADX1KhRo7yvIyIifI5d9buF/PWvf9WPfvQjbdy40SdYAwAAANebbvdcDxs2TCEhIfJ4\nPD7jHo9HUVFRXa6tqanR/fffr1WrVumnP/1pl3OvdvCur6+/JufpS+iJP3rij574oyf+6Ik/euKP\nnvijJ776Sj8u3X3xdd1euR44cKBSUlJUWVnpM15VVSWHw3HZddXV1brvvvv0zDPP6IknnuhFuQAA\nAEDf1KO7heTl5Wn+/PlKTU2Vw+HQiy++KLfbrZycHElf3h3kwIED2r17t6Qv73N9//336/HHH9e8\nefPkdrslSSEhIbr55puv0kcBAAAArNWjcJ2ZmalTp06psLBQLS0tSkpKUkVFhWJjYLine truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x76376a0>"
|
||||
"<matplotlib.figure.Figure at 0x787e748>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -815,11 +841,11 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pos_belief = np.array([1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n",
|
||||
"belief = np.array([1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n",
|
||||
"for i in range(500):\n",
|
||||
" predict(pos_belief, 1, .8, .1, .1)\n",
|
||||
"print(pos_belief)\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
" predict(belief, move=1, p_correct=.8, p_under=.1, p_over=.1)\n",
|
||||
"print(belief)\n",
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -844,13 +870,13 @@
|
||||
"source": [
|
||||
"## Generalizing with Convolution\n",
|
||||
"\n",
|
||||
"In the code above we made the assumption that the movement could only be in error by one position. In any real problem it will almost always be possible for the error to be two, three, or more positions. \n",
|
||||
"In the code above we made the assumption that the movement error is only one position. In any real problem it will almost always be possible for the error to be two, three, or more positions. \n",
|
||||
"\n",
|
||||
"This is easily solved with *convolution*. Convolution is the mathematical technique we use to modify one function with another function. In our case we are modifying our probability distribution with the error function that represents the probability of a movement error. In fact, the implementation of `predict()` is a convolution, though we did not call it that. Formally, convolution is defined as\n",
|
||||
"This is easily solved with **convolution**. Convolution is the mathematical technique we use to modify one function with another function. In our case we are modifying our probability distribution with the error function that represents the probability of a movement error. In fact, the implementation of `predict()` is a convolution, though we did not call it that. Formally, convolution is defined as\n",
|
||||
"\n",
|
||||
"$$ (f \\ast g) (t) = \\int_0^t \\!f(\\tau) \\, g(t-\\tau) \\, \\mathrm{d}\\tau$$\n",
|
||||
"\n",
|
||||
"where $f\\ast g$ is the notation for convolving f by g.\n",
|
||||
"where $f\\ast g$ is the notation for convolving f by g. It does not mean multiply.\n",
|
||||
"\n",
|
||||
"Integrals are for continuous functions, but we are using discrete functions, so we just replace the integral with a summation, and the parenthesis with array brackets.\n",
|
||||
"\n",
|
||||
@@ -858,7 +884,7 @@
|
||||
"\n",
|
||||
"If you look at that equation and compare it to the `predict()` function you can see that they are doing the same thing. \n",
|
||||
"\n",
|
||||
"I would love to go on and on about convolution, but we have a filter to implement. Khan Academy [4] has a good mathematical introduction to convolution, and Wikipedia has some excellent animations of convolutions [5]. But the general idea is already clear to you. You slide across an array, multiplying the neighbors of the current cell with the values of a second array. This second array is called the *kernel*. In our example above we used .8 for the probability of moving to the correct location, .1 for undershooting, and .1 for overshooting. We make a kernel of this with the array `[0.1, 0.8, 0.1]`. So all we need to do is write a loop that goes over each element of our array, multiplying by the kernel, and summing the results."
|
||||
"I would love to go on and on about convolution, but we have a filter to implement. Khan Academy [4] has a good mathematical introduction to convolution, and Wikipedia has some excellent animations of convolutions [5]. But the general idea is already clear to you. You slide across an array, multiplying the neighbors of the current cell with the values of a second array. This second array is called the **kernel**. In our example above we used .8 for the probability of moving to the correct location, .1 for undershooting, and .1 for overshooting. We make a kernel of this with the array `[0.1, 0.8, 0.1]`. So all we need to do is write a loop that goes over each element of our array, multiplying by the kernel, and summing the results. To emphasize that the belief is a probability distribution I have named the belief `distribution`."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -869,8 +895,8 @@
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def predict(prob_dist, offset, kernel):\n",
|
||||
" N = len(prob_dist)\n",
|
||||
"def predict(distribution, offset, kernel):\n",
|
||||
" N = len(distribution)\n",
|
||||
" kN = len(kernel)\n",
|
||||
" width = int((kN - 1) / 2)\n",
|
||||
"\n",
|
||||
@@ -878,8 +904,8 @@
|
||||
" for i in range(N):\n",
|
||||
" for k in range (kN):\n",
|
||||
" index = (i + (width-k) - offset) % N\n",
|
||||
" result[i] += prob_dist[index] * kernel[k]\n",
|
||||
" prob_dist[:] = result[:] # update belief"
|
||||
" result[i] += distribution[index] * kernel[k]\n",
|
||||
" distribution[:] = result[:] # update belief"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -909,7 +935,7 @@
|
||||
],
|
||||
"source": [
|
||||
"belief = np.array([.05, .05, .05, .05, .55, .05, .05, .05, .05, .05])\n",
|
||||
"predict(belief, 1, [.1, .8, .1])\n",
|
||||
"predict(belief, offset=1, kernel=[.1, .8, .1])\n",
|
||||
"belief"
|
||||
]
|
||||
},
|
||||
@@ -942,7 +968,7 @@
|
||||
],
|
||||
"source": [
|
||||
"belief = np.array([.05, .05, .05, .05, .55, .05, .05, .05, .05, .05])\n",
|
||||
"predict(belief, 3, [.1, .8, .1])\n",
|
||||
"predict(belief, offset=3, kernel=[.1, .8, .1])\n",
|
||||
"belief"
|
||||
]
|
||||
},
|
||||
@@ -956,7 +982,37 @@
|
||||
"\n",
|
||||
" [.02, .1, .2, .36, .2, .1, .02]\n",
|
||||
" \n",
|
||||
"You probably will never be able to compute exact probabilities for the kernel of a real problem. It is usually enough to be approximately right. What you *must* do is ensure that the terms of the kernel sum to 1. The kernel expresses the probability of any given move, and the sum of any probability distribution must be 1."
|
||||
"But maybe an overshoot is very likely, and and undershoot is impossible. That kernel might be\n",
|
||||
"\n",
|
||||
" [.0, .0, .5, .3, .2]\n",
|
||||
" \n",
|
||||
"You probably will never be able to compute exact probabilities for the kernel of a real problem. It is usually enough to be approximately right. What you *must* do is ensure that the terms of the kernel sum to 1. The kernel expresses the probability of any given move, and the sum of any probability distribution must be 1.\n",
|
||||
"\n",
|
||||
"An easy way to do this is to make each term *proportionally* correct and then normalize it to sum to 1."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"array([ 0.083, 0.167, 0.5 , 0.167, 0.083])"
|
||||
]
|
||||
},
|
||||
"execution_count": 17,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"kernel = np.array([1, 2, 6, 2, 1], dtype=float)\n",
|
||||
"normalize(kernel)\n",
|
||||
"kernel"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -981,7 +1037,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"execution_count": 18,
|
||||
"metadata": {
|
||||
"collapsed": false,
|
||||
"scrolled": true
|
||||
@@ -997,14 +1053,14 @@
|
||||
],
|
||||
"source": [
|
||||
"hallway = np.array([1, 1, 0, 0, 0, 0, 0, 0, 1, 0])\n",
|
||||
"pos_belief = np.array([.1] * 10)\n",
|
||||
"update(hallway, pos_belief, z=1, prob_correct=.75)\n",
|
||||
"print(pos_belief)"
|
||||
"belief = np.array([.1] * 10)\n",
|
||||
"update(hallway, belief, z=1, prob_correct=.75)\n",
|
||||
"print(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 18,
|
||||
"execution_count": 19,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1020,7 +1076,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x6faf198>"
|
||||
"<matplotlib.figure.Figure at 0x77346d8>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1029,9 +1085,9 @@
|
||||
],
|
||||
"source": [
|
||||
"kernel = (.1, .8, .1)\n",
|
||||
"predict(pos_belief, 1, kernel)\n",
|
||||
"print(pos_belief)\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"predict(belief, 1, kernel)\n",
|
||||
"print(belief)\n",
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1043,7 +1099,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"execution_count": 20,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1059,7 +1115,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x6ed9240>"
|
||||
"<matplotlib.figure.Figure at 0x7972c88>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1067,9 +1123,9 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"update(hallway, pos_belief, z=1, prob_correct=.75)\n",
|
||||
"print(pos_belief)\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"update(hallway, belief, z=1, prob_correct=.75)\n",
|
||||
"print(belief)\n",
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1081,7 +1137,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 20,
|
||||
"execution_count": 21,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1090,7 +1146,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x764f400>"
|
||||
"<matplotlib.figure.Figure at 0x78e0240>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1098,9 +1154,9 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"predict(pos_belief, 1, kernel)\n",
|
||||
"update(hallway, pos_belief, z=0, prob_correct=.75)\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"predict(belief, 1, kernel)\n",
|
||||
"update(hallway, belief, z=0, prob_correct=.75)\n",
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1112,7 +1168,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 21,
|
||||
"execution_count": 22,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1121,7 +1177,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x7521ac8>"
|
||||
"<matplotlib.figure.Figure at 0x7726c50>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1129,9 +1185,9 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"predict(pos_belief, 1, kernel)\n",
|
||||
"update(hallway, pos_belief, z=0, prob_correct=.75)\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"predict(belief, 1, kernel)\n",
|
||||
"update(hallway, belief, z=0, prob_correct=.75)\n",
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1145,7 +1201,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 22,
|
||||
"execution_count": 23,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1154,7 +1210,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x76bd160>"
|
||||
"<matplotlib.figure.Figure at 0x78fa518>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1219,7 +1275,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 23,
|
||||
"execution_count": 24,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1235,7 +1291,7 @@
|
||||
"data": {
|
||||
"image/png": "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\ndDp9xp1Op+rr67vc589//rOSkpJUVVWlpKQkJSYmKicnR//5z3/MqxoAAAAIQEGGYRiX2tjS0qK4\nuDjV1tYqMzPTO/7kk09q27ZtOnz4sN8+eXl5qqio0C233KL169dLklauXClJamhoUFBQkHduW1ub\n9+OjR49e/rsBAAAArrBx48Z5P46IiPDZ1uOykL7q7OzUuXPn9NJLL+nGG2+UJL300ktKTk5WY2Oj\nbr31VrMPCQAAAASEbsN1ZGSkQkJC5PF4fMY9Ho9iYmK63CcmJkahoaHeYC1JN954o0JCQvTxxx9f\nMlzb7fa+1t4njY2N/XKcgYSe+KMn/uiJP3rij574oyf+6Ik/euJroPTjq6svvq7bNdfDhw9XWlqa\nqqurfcZramrkcDi63CczM1MXLlxQc3Ozd6y5uVkdHR0aO3ZsX+oGAAAABpQe73NdUFCgrVu3asuW\nLTp06JCWLVsmt9utvLw8SVJhYaGysrK887OysjRlyhQtWrRILpdL+/fv16JFizR16tSA/ykEAAAA\nuBw9rrnOzs7WyZMnVVxcrNbWVqWkpKiqqsp7j2u32+1zlTooKEhvvvmmHnnkEd1+++2y2WxyOp0q\nKSm5cu8CAAAACAC9+oPG/Px85efnd7mtvLzcb+z666/X9u3bL68yAAAAYIDp1ePPAQAAAPSMcA0A\nAACYhHANAAAAmIRwDQAAAJiEcA0AAACYhHANAAAAmIRwDQAAAJiEcA0AAACYhHANAAAAmIRwDQAA\nAJiEcA0AAACYhHANAAAAmIRwDQAAAJikV+G6tLRUiYmJstlsstvtqqur69WLHz16VOHh4QoPD7+s\nIgEAAICBoMdwXVlZqeXLl6uoqEgul0sOh0MzZ87U8ePHu93v/Pnzmj9/vqZPn66goCDTCgYAAAAC\nVY/huqSkRLm5uVq8eLGSk5O1ceNGxcTEqKysrNv9Vq1apVtuuUXz5s2TYRimFQwAAAAEqm7D9fnz\n59XU1CSn0+kz7nQ6VV9ff8n9du7cqZ07d2rTpk0EawAAAAwZod1tPHHihDo6OhQdHe0zHhUVJbfb\n3eU+LS0tWrJkiXbs2KGwsLBeF9LY2NjruZejv44zkNATf/TEHz3xR0/80RN/9MQfPfFHT3wFej/G\njRt3yW2m3y1k4cKFys/P16233mr2SwMAAAABrdsr15GRkQoJCZHH4/EZ93g8iomJ6XKfPXv2qLa2\nVk888YQkyTAMdXZ2atiwYSorK9ODDz7Y5X52u/2b1N9rF38CutLHGUjoiT964o+e+KMn/uiJP3ri\nj574oye+Bko/2traLrmt23A9fPhwpaWlqbq6WnPmzPGO19TUaN68eV3u88EHH/h8vmPHDq1Zs0b7\n9u1TbGxsX+oGAAAABpRuw7UkFRQUaOHChUpPT5fD4dBzzz0nt9utvLw8SVJhYaH27dunt956S5I0\nYcIEn/3/9re/KTg42G8cAAAAGGx6DNfZ2dk6efKkiouL1draqpSUFFVVVSk+Pl6S5Ha71dzc3O1r\ncJ9rAAAADAU9hmtJys/PV35+fpfbysvLu903JydHOTk5fS4MAAAAGGhMv1sIAAAAMFQRrgEAAACT\nEK4BAAAAkxCuAQAAAJMQrgEAAACTEK4BAAAAkxCuAQAAAJMQrgEAAACTEK4BAAAAkxCuAQAAAJMQ\nrgEAAACTEK4BAAAAkxCuAQAAAJP0OlyXlpYqMTFRNptNdrtddXV1l5y7d+9e3XPPPYqNjdVVV12l\n1NRUlZeXm1IwAAAAEKh6Fa4rKyu1fPlyFRUVyeVyyeFwaObMmTp+/HiX8xsaGpSamqrXXntNBw8e\nVH5+vpYsWaJXXnnF1OIBAACAQBLam0klJSXKzc3V4sWLJUkbN27Url27VFZWprVr1/rNLyws9Pk8\nLy9Pe/bs0WuvvaYFCxZ0eYy6Y6f6WnufnBkZ1S/H+arYq0KVFBneb8cDgK9qPnFGLWcv9Mux+vsc\ny/kVQKDqMVyfP39eTU1N+sUvfuEz7nQ6VV9f3+sDtbW1acyYMZfcvrT2RK9f6/Kc66fjSJtuj1RS\nZL8dDgB8tJy90I/n1ov65xzL+RVAoOoxXJ84cUIdHR2Kjo72GY+KipLb7e7VQd58803t3r27T2F8\nMDhz5owaG/9pdRk9amxstLqEgENP/NETf4Hek4tXkwejgXJ+lQL/68QK9MQfPfEV6P0YN27cJbdd\n8buF/PWvf9UPf/hDbdq0SXa7/UofDgAAALBMj1euIyMjFRISIo/H4zPu8XgUExPT7b51dXW66667\ntHr1av3kJz+5vEoHoPDwcNknXXopjNUu/lTIDz3/Hz3xR0/8DZSefLn+uf+WwvWnQD+/SgPn66Q/\n0RN/9MTXQOlHW1vbJbf1eOV6+PDhSktLU3V1tc94TU2NHA7HJferra3VnXfeqSeeeLine truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x74b97b8>"
|
||||
"<matplotlib.figure.Figure at 0x6f831d0>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1245,14 +1301,14 @@
|
||||
"source": [
|
||||
"hallway = [1, 0, 1, 0, 0, 1, 0, 1, 0, 0]\n",
|
||||
"kernel = (.1, .8, .1)\n",
|
||||
"pos_belief = np.array([.1] * 10)\n",
|
||||
"belief = np.array([.1] * 10)\n",
|
||||
"measurements = [1, 0, 1, 0, 0]\n",
|
||||
"\n",
|
||||
"for m in measurements:\n",
|
||||
" update(hallway, pos_belief, z=m, prob_correct=.75)\n",
|
||||
" predict(pos_belief, 1, kernel)\n",
|
||||
"bp.bar_plot(pos_belief)\n",
|
||||
"print(pos_belief)"
|
||||
" update(hallway, belief, z=m, prob_correct=.75)\n",
|
||||
" predict(belief, 1, kernel)\n",
|
||||
"bp.bar_plot(belief)\n",
|
||||
"print(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1264,7 +1320,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 24,
|
||||
"execution_count": 25,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1273,7 +1329,7 @@
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAACeCAYAAAD5RibQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGbBJREFUeJzt3X9QVXX+x/EXYOqliMk1CIQEzMVUIuXGxpXK2aE7a7Xm\nbknargXaGmyZyrrjUjRtilq5w6Ym2JaDbK2FOzVuk6wDjRqx0CyEtzVTl5Zds4F7W11Dc0NHOPtH\n3+6320V+5IFzgedjxpnL53zOPe/7Hr3z4vi5nxtkGIYhAAAAABct2OoCAAAAgKGCcA0AAACYhHAN\nAAAAmIRwDQAAAJiEcA0AAACYhHANAAAAmIRwDQAAAJikx3BdXV2t2bNnKyYmRsHBwSorK+vxSQ8c\nOKBbbrlFoaGhiomJ0erVq00pFgAAAAhkPYbrM2fO6LrrrtOGDRtks9kUFBTU7fxTp07p1ltvVVRU\nlBoaGrRhwwatX79eRUVFphUNAAAABKKgvnxDY1hYmDZv3qz77rvvgnNKSkqUn58vj8ejUaNGSZLW\nrFmjkpISffLJJxdfMQAAABCgTF9zXVdXp5tuuskbrCXJ6XSqpaVFR48eNftyAAAAQMAYYfYTut1u\nXX311T5jkZGR3mPjx4/3jre1tZl9eQAAAGDAhIeH+/xs+p3rntZkAwAAAEOV6eH6qquuktvt9hnz\neDzeYwAAAMBQZfqykLS0NK1cuVJnz571rruuqqrSuHHjfJaEfNM3b6mbraGhQZJkt9v79TqDCT3x\nR0/80RN/9MQfPfFHT/zRE3/0xNdg6Ud3S5t7tRWfy+WSy+VSZ2enjh49KpfLpWPHjkmS8vPzlZGR\n4Z1/7733KjQ0VFlZWTp48KBef/11Pf3008rLyzPhpQAAAACBq8dwXV9fr+nTp2v69Olqb2/XE088\noenTp+uJJ56Q9OWHFJubm73zL7/8clVVVamlpUV2u11LlizRihUrtHz58v57FQAAAEAA6HFZyMyZ\nM9XZ2XnB46WlpX5jU6dO1dtvv31xlQEAAACDjOkfaAQAAACGK8I1AAAAYBLCNQAAAGASwjUAAABg\nEsI1AAAAYBLCNQAAAGASwjUAAABgEsI1AAAAYBLCNQAAAGASwjUAAABgEsI1AAAAYBLCNQAAAGAS\nwjUAAABgkl6F6+LiYsXHx8tms8lut6umpqbb+RUVFbrxxht1+eWX68orr9ScOXPU1NRkSsEAAABA\noOoxXJeXl2vZsmUqKCiQy+WSw+HQrFmzdOzYsS7nf/TRR5ozZ45mzpwpl8ult956S+3t7brttttM\nLx4AAAAIJD2G66KiImVnZ2vRokVKTEzUxo0bFRUVpZKSki7nu1wudXZ2at26dUpISFBycrJWrlyp\nf/zjH/rPf/5j+gsAAAAAAkW34frcuXNqbGyU0+n0GXc6naqtre3ynBkzZuiyyy7TCy+8oI6ODp0+\nfVrbtm1TamqqxowZY17lAAAAQIAJMgzDuNDBlpYWxcTEqLq6Wunp6d7xVatWafv27Tp8+HCX59XW\n1mrOnDk6efKkOjs7NW3aNP35z3/WlVde6TOvra3N+5g12QAAABgMJk6c6H0cHh7uc8z03UKam5s1\nZ84cZWdnq6GhQfv27VNYWJgyMzPVTY4HAAAABr0R3R0cO3asQkJC5PF4fMY9Ho+ioqK6POf5559X\nbGysnn76ae/Yyy+/rNjYWNXV1cnhcHR5nt1u72vtfdLQ0DAg1xlM6Ik/euKPnvijJ/7oiT964o+e\n+KMnvgZLP76++uKbur1zPXLkSKWkpKiystJnvKqq6oIh2TAMBQf7Pu1XP3d2dvaqYAAAAGAw6nFZ\nSF5enrZt26atW7fq0KFDWrp0qdxut3JyciRJ+fn5ysjI8M6fPXu2GhsbtXr1ajU1NamxsVHZ2dm6\n+uqrlZKS0n+vBAAAALBYt8tCJCkzM1MnTpxQYWGhWltblZSUpIqKCsXGxkqS3G63mpubvfPT09NV\nXl6up556Ss8884xCQ0OVlpam3bt3y2az9d8rAQAAACzWY7iWpNzcXOXm5nZ5rLS01G/s7rvv1t13\n331xlQEAAACDjOm7hQAAAADDFeEaAAAAMAnhGgAAADAJ4RoAAAAwCeEaAAAAMAnhGgAAADAJ4RoA\nAAAwCeEaAAAAMAnhGgAAADAJ4RoAAAAwCeEaAAAAMAnhGgAAADAJ4RoAAAAwSa/CdXFxseLj42Wz\n2WS321VTU9PjOc8++6wmTZqk0aNHKzo6Wvn5+RddLAAAABDIRvQ0oby8XMuWLVNJSYnS09O1efNm\nzZo1Sx9++KFiY2O7PCcvL0+7du3Sb37zGyUlJamtrU2tra2mFw8AAAAEkh7DdVFRkbKzs7Vo0SJJ\n0saNG7V7926VlJRo7dq1fvOPHDmi5557TgcOHFBiYqJ3PDk52cSyAQAAgMDT7bKQc+fOqbGxUU6n\n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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x76b9f98>"
|
||||
"<matplotlib.figure.Figure at 0x7804ac8>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1281,9 +1337,9 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"update(hallway, pos_belief, z=m, prob_correct=.75)\n",
|
||||
"predict(pos_belief, 1, kernel)\n",
|
||||
"bp.bar_plot(pos_belief)"
|
||||
"update(hallway, belief, z=m, prob_correct=.75)\n",
|
||||
"predict(belief, 1, kernel)\n",
|
||||
"bp.bar_plot(belief)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1295,7 +1351,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 25,
|
||||
"execution_count": 26,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1304,7 +1360,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x7746cc0>"
|
||||
"<matplotlib.figure.Figure at 0x7701908>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1316,10 +1372,10 @@
|
||||
" measurements = [0, 1, 0, 1, 0, 0]\n",
|
||||
"\n",
|
||||
" for i, m in enumerate(measurements):\n",
|
||||
" update(hallway, pos_belief, z=m, prob_correct=.75)\n",
|
||||
" predict(pos_belief, 1, kernel)\n",
|
||||
" update(hallway, belief, z=m, prob_correct=.75)\n",
|
||||
" predict(belief, 1, kernel)\n",
|
||||
" plt.subplot(3, 2, i+1)\n",
|
||||
" bp.bar_plot(pos_belief, title='step{}'.format(i+1))"
|
||||
" bp.bar_plot(belief, title='step{}'.format(i+1))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1355,7 +1411,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 26,
|
||||
"execution_count": 27,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1364,7 +1420,7 @@
|
||||
"data": {
|
||||
"image/png": "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\ndDp9xp1Op+rr67vc589//rOSkpJUVVWlpKQkJSYmKicnR//5z3/MqxoAAAAIQEGGYRiX2tjS0qK4\nuDjV1tYqMzPTO/7kk09q27ZtOnz4sN8+eXl5qqio0C233KL169dLklauXClJamhoUFBQkHduW1ub\n9+OjR49e/rsBAAAArrBx48Z5P46IiPDZ1uOykL7q7OzUuXPn9NJLL+nGG2+UJL300ktKTk5WY2Oj\nbr31VrMPCQAAAASEbsN1ZGSkQkJC5PF4fMY9Ho9iYmK63CcmJkahoaHeYC1JN954o0JCQvTxxx9f\nMlzb7fa+1t4njY2N/XKcgYSe+KMn/uiJP3rij574oyf+6Ik/euJroPTjq6svvq7bNdfDhw9XWlqa\nqqurfcZramrkcDi63CczM1MXLlxQc3Ozd6y5uVkdHR0aO3ZsX+oGAAAABpQe73NdUFCgrVu3asuW\nLTp06JCWLVsmt9utvLw8SVJhYaGysrK887OysjRlyhQtWrRILpdL+/fv16JFizR16tSA/ykEAAAA\nuBw9rrnOzs7WyZMnVVxcrNbWVqWkpKiqqsp7j2u32+1zlTooKEhvvvmmHnnkEd1+++2y2WxyOp0q\nKSm5cu8CAAAACAC9+oPG/Px85efnd7mtvLzcb+z666/X9u3bL68yAAAAYIDp1ePPAQAAAPSMcA0A\nAACYhHANAAAAmIRwDQAAAJiEcA0AAACYhHANAAAAmIRwDQAAAJiEcA0AAACYhHANAAAAmIRwDQAA\nAJiEcA0AAACYhHANAAAAmIRwDQAAAJikV+G6tLRUiYmJstlsstvtqqur69WLHz16VOHh4QoPD7+s\nIgEAAICBoMdwXVlZqeXLl6uoqEgul0sOh0MzZ87U8ePHu93v/Pnzmj9/vqZPn66goCDTCgYAAAAC\nVY/huqSkRLm5uVq8eLGSk5O1ceNGxcTEqKysrNv9Vq1apVtuuUXz5s2TYRimFQwAAAAEqm7D9fnz\n59XU1CSn0+kz7nQ6VV9ff8n9du7cqZ07d2rTpk0EawAAAAwZod1tPHHihDo6OhQdHe0zHhUVJbfb\n3eU+LS0tWrJkiXbs2KGwsLBeF9LY2NjruZejv44zkNATf/TEHz3xR0/80RN/9MQfPfFHT3wFej/G\njRt3yW2m3y1k4cKFys/P16233mr2SwMAAAABrdsr15GRkQoJCZHH4/EZ93g8iomJ6XKfPXv2qLa2\nVk888YQkyTAMdXZ2atiwYSorK9ODDz7Y5X52u/2b1N9rF38CutLHGUjoiT964o+e+KMn/uiJP3ri\nj574oye+Bko/2traLrmt23A9fPhwpaWlqbq6WnPmzPGO19TUaN68eV3u88EHH/h8vmPHDq1Zs0b7\n9u1TbGxsX+oGAAAABpRuw7UkFRQUaOHChUpPT5fD4dBzzz0nt9utvLw8SVJhYaH27dunt956S5I0\nYcIEn/3/9re/KTg42G8cAAAAGGx6DNfZ2dk6efKkiouL1draqpSUFFVVVSk+Pl6S5Ha71dzc3O1r\ncJ9rAAAADAU9hmtJys/PV35+fpfbysvLu903JydHOTk5fS4MAAAAGGhMv1sIAAAAMFQRrgEAAACT\nEK4BAAAAkxCuAQAAAJMQrgEAAACTEK4BAAAAkxCuAQAAAJMQrgEAAACTEK4BAAAAkxCuAQAAAJMQ\nrgEAAACTEK4BAAAAkxCuAQAAAJP0OlyXlpYqMTFRNptNdrtddXV1l5y7d+9e3XPPPYqNjdVVV12l\n1NRUlZeXm1IwAAAAEKh6Fa4rKyu1fPlyFRUVyeVyyeFwaObMmTp+/HiX8xsaGpSamqrXXntNBw8e\nVH5+vpYsWaJXXnnF1OIBAACAQBLam0klJSXKzc3V4sWLJUkbN27Url27VFZWprVr1/rNLyws9Pk8\nLy9Pe/bs0WuvvaYFCxZ0eYy6Y6f6WnufnBkZ1S/H+arYq0KVFBneb8cDgK9qPnFGLWcv9Mux+vsc\ny/kVQKDqMVyfP39eTU1N+sUvfuEz7nQ6VV9f3+sDtbW1acyYMZfcvrT2RK9f6/Kc66fjSJtuj1RS\nZL8dDgB8tJy90I/n1ov65xzL+RVAoOoxXJ84cUIdHR2Kjo72GY+KipLb7e7VQd58803t3r27T2F8\nMDhz5owaG/9pdRk9amxstLqEgENP/NETf4Hek4tXkwejgXJ+lQL/68QK9MQfPfEV6P0YN27cJbdd\n8buF/PWvf9UPf/hDbdq0SXa7/UofDgAAALBMj1euIyMjFRISIo/H4zPu8XgUExPT7b51dXW66667\ntHr1av3kJz+5vEoHoPDwcNknXXopjNUu/lTIDz3/Hz3xR0/8DZSefLn+uf+WwvWnQD+/SgPn66Q/\n0RN/9MTXQOlHW1vbJbf1eOV6+PDhSktLU3V1tc94TU2NHA7HJferra3VnXfeqSeeeLine truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x7638f28>"
|
||||
"<matplotlib.figure.Figure at 0x6f1a908>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1372,9 +1428,9 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pos_belief = [0.2245871, 0.06288015, 0.06109133, 0.0581008, 0.09334062, \n",
|
||||
" 0.2245871, 0.06288015, 0.06109133, 0.0581008, 0.09334062]\n",
|
||||
"bp.bar_plot(pos_belief) "
|
||||
"belief = [0.2245871, 0.06288015, 0.06109133, 0.0581008, 0.09334062, \n",
|
||||
" 0.2245871, 0.06288015, 0.06109133, 0.0581008, 0.09334062]\n",
|
||||
"bp.bar_plot(belief) "
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1412,7 +1468,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 27,
|
||||
"execution_count": 28,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1466,7 +1522,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 28,
|
||||
"execution_count": 29,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1476,9 +1532,9 @@
|
||||
" move_distance, do_print=True):\n",
|
||||
" track = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])\n",
|
||||
"\n",
|
||||
" pos_belief = np.array([0.01] * 10)\n",
|
||||
" pos_belief[0] = .9\n",
|
||||
" normalize(pos_belief)\n",
|
||||
" belief = np.array([0.01] * 10)\n",
|
||||
" belief[0] = .9\n",
|
||||
" normalize(belief)\n",
|
||||
" \n",
|
||||
" robot = Train(track, kernel, sensor_accuracy)\n",
|
||||
" for i in range(iterations):\n",
|
||||
@@ -1489,26 +1545,26 @@
|
||||
" i, robot.pos, m, track[robot.pos]))\n",
|
||||
"\n",
|
||||
"\n",
|
||||
" update(track, pos_belief, m, sensor_accuracy)\n",
|
||||
" update(track, belief, m, sensor_accuracy)\n",
|
||||
" if do_print:\n",
|
||||
" print(' update ', pos_belief)\n",
|
||||
" ind = np.argmax(pos_belief)\n",
|
||||
" print(' update ', belief)\n",
|
||||
" ind = np.argmax(belief)\n",
|
||||
" if do_print:\n",
|
||||
" print(' predicted position is {} with confidence {:.4}%:'.format(\n",
|
||||
" ind, pos_belief[ind]*100))\n",
|
||||
" ind, belief[ind]*100))\n",
|
||||
" \n",
|
||||
" if i < iterations - 1:\n",
|
||||
" predict(pos_belief, move_distance, kernel) \n",
|
||||
" predict(belief, move_distance, kernel) \n",
|
||||
" if do_print:\n",
|
||||
" print(' predict', pos_belief)\n",
|
||||
" print(' predict', belief)\n",
|
||||
"\n",
|
||||
" bp.bar_plot(pos_belief)\n",
|
||||
" bp.bar_plot(belief)\n",
|
||||
" if do_print:\n",
|
||||
" print()\n",
|
||||
" print('final position is', robot.pos)\n",
|
||||
" i = np.argmax(pos_belief)\n",
|
||||
" i = np.argmax(belief)\n",
|
||||
" print('predicted position is {} with confidence {:.4}%:'.format(\n",
|
||||
" i, pos_belief[i]*100))"
|
||||
" i, belief[i]*100))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1520,7 +1576,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 29,
|
||||
"execution_count": 30,
|
||||
"metadata": {
|
||||
"collapsed": false,
|
||||
"scrolled": false
|
||||
@@ -1554,7 +1610,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x77c3c50>"
|
||||
"<matplotlib.figure.Figure at 0x7ab9cc0>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1579,7 +1635,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 30,
|
||||
"execution_count": 31,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1612,7 +1668,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x77d9550>"
|
||||
"<matplotlib.figure.Figure at 0x7731128>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1636,7 +1692,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 31,
|
||||
"execution_count": 32,
|
||||
"metadata": {
|
||||
"collapsed": false,
|
||||
"scrolled": false
|
||||
@@ -1646,7 +1702,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x6f14e10>"
|
||||
"<matplotlib.figure.Figure at 0x7972860>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1681,7 +1737,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We developed the math in this chapter merely by reasoning about the information we have at each moment. In the process we discovered *Bayes Theorem*. We will go into the specifics of the math of Bayes theorem later in the book. For now we will take a more intuitive approach. Recall from the preface that Bayes theorem tells us how to compute the probability of an event given previous information. That is exactly what we have been doing in this chapter. With luck our code should match the Bayes Theorem equation! \n",
|
||||
"We developed the math in this chapter merely by reasoning about the information we have at each moment. In the process we discovered **Bayes Theorem**. We will go into the specifics of the math of Bayes theorem later in the book. For now we will take a more intuitive approach. Recall from the preface that Bayes theorem tells us how to compute the probability of an event given previous information. That is exactly what we have been doing in this chapter. With luck our code should match the Bayes Theorem equation! \n",
|
||||
"\n",
|
||||
"Bayes theorem is written as\n",
|
||||
"\n",
|
||||
@@ -1689,9 +1745,9 @@
|
||||
"\n",
|
||||
"If you are not familiar with this notation, let's review. $P(A)$ means the probability of event $A$. If $A$ is the event of a fair coin landing heads, then $P(A) = 0.5$.\n",
|
||||
"\n",
|
||||
"$P(A|B)$ is called a *conditional probability*. That is, it represents the probability of $A$ happening *if* $B$ happened. For example, it is more likely to rain today if it also rained yesterday because rain systems tend to last more than one day. We'd write the probability of it raining today given that it rained yesterday as $P(rain_{today}|rain_{yesterday})$.\n",
|
||||
"$P(A|B)$ is called a **conditional probability**. That is, it represents the probability of $A$ happening *if* $B$ happened. For example, it is more likely to rain today if it also rained yesterday because rain systems tend to last more than one day. We'd write the probability of it raining today given that it rained yesterday as $P(rain_{today}|rain_{yesterday})$.\n",
|
||||
"\n",
|
||||
"In Bayesian statistics $P(A)$ is called the *prior*, and $P(A|B)$ is called the *posterior*. To see why, let's rewrite the equation in terms of our problem. We will use $x_i$ for the position at *i*, and $Z$ for the measurement. Hence, we want to know $P(x_i|Z)$, that is, the probability of the dog being at $x_i$ given the measurement $Z$. \n",
|
||||
"In Bayesian statistics $P(A)$ is called the **prior**, and $P(A|B)$ is called the **posterior**. To see why, let's rewrite the equation in terms of our problem. We will use $x_i$ for the position at *i*, and $Z$ for the measurement. Hence, we want to know $P(x_i|Z)$, that is, the probability of the dog being at $x_i$ given the measurement $Z$. \n",
|
||||
"\n",
|
||||
"So, let's plug that into the equation and solve it.\n",
|
||||
"\n",
|
||||
@@ -1706,14 +1762,13 @@
|
||||
" else:\n",
|
||||
" belief[i] *= 1.\n",
|
||||
"\n",
|
||||
"I added the `else` here, which has no mathematical effect, to point out that every element in $x$ (called `belief` in the code) is multiplied by a probability. You may object that I am multiplying by a scale factor, which I am, but this scale factor is derived from the probability of the measurement being correct vs the probability being incorrect. An alternative and equivalent implementation would be\n",
|
||||
"I added the `else` here, which has no mathematical effect, to point out that every element in $x$ (called `belief` in the code) is multiplied by a probability. You may object that I am multiplying by a scale factor, which I am, but this scale factor is derived from the probability of the measurement being correct vs the probability being incorrect.\n",
|
||||
"\n",
|
||||
" if val == z:\n",
|
||||
" belief[i] *= prob_correct\n",
|
||||
" else:\n",
|
||||
" belief[i] *= prob_incorrect\n",
|
||||
"The last term to consider is the denominator $P(Z)$. This is the probability of getting the measurement $Z$ without taking the location into account. We compute that by taking the sum of $x$, or `sum(belief)` in the code. That is how we compute the normalization! So, the `update()` function is doing nothing more than computing Bayes theorem. Recall this equation from earlier in the chapter:\n",
|
||||
"\n",
|
||||
"The last term to consider is the denominator $P(Z)$. This is the probability of getting the measurement $Z$ without taking the location into account. We compute that by taking the sum of $x$, or `sum(belief)` in the code. That is how we compute the normalization! So, the `update()` function is doing nothing more than computing Bayes theorem. I could have just given you Bayes theorem and then written a function, but I doubt that would have been illuminating unless you already know Bayesian statistics. Instead, we figured out what to do just by reasoning about the situation, and so of course the resulting code ended up implementing Bayes theorem. Students spend a lot of time struggling to understand this theorem; I hope you found it relatively straightforward."
|
||||
"$$ \\mathtt{posterior} = \\frac{\\mathtt{prior}\\times \\mathtt{evidence}}{\\mathtt{normalization}}$$ \n",
|
||||
"\n",
|
||||
"That is just the Bayes theorem written in words instead of mathematical symbols. I could have just given you Bayes theorem and then written a function, but I doubt that would have been illuminating unless you already know Bayesian statistics. Instead, we figured out what to do just by reasoning about the situation, and so of course the resulting code ended up implementing Bayes theorem. Students spend a lot of time struggling to understand this theorem; I hope you found it relatively straightforward."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1724,7 +1779,7 @@
|
||||
"source": [
|
||||
"## Total Probability Theorem\n",
|
||||
"\n",
|
||||
"We know now the formal mathematics behind the `update()` function; what about the `predict()` function? `predict()` implements the *total probability theorem*. Let's recall what `predict()` computed. It computed the probability of being at any given position given the probability of all the possible movement events. Let's express that as an equation. The probability of being at any position at time t can be written as $P(X_i^t)$. We computed that as the sum of the prior at time t-1 $P(X_i^{t-1})$ multiplied by the probability of moving from cell $x_j$ to $x_i$. That is\n",
|
||||
"We know now the formal mathematics behind the `update()` function; what about the `predict()` function? `predict()` implements the **total probability theorem**. Let's recall what `predict()` computed. It computed the probability of being at any given position given the probability of all the possible movement events. Let's express that as an equation. The probability of being at any position $i$ at time $t$ can be written as $P(X_i^t)$. We computed that as the sum of the prior at time $t$-1 $P(X_i^{t-1})$ multiplied by the probability of moving from cell $x_j$ to $x_i$. That is\n",
|
||||
"\n",
|
||||
"$$P(X_i^t) = \\sum_j P(X_i^{t-1}) P(x_i | x_j)$$\n",
|
||||
"\n",
|
||||
@@ -1747,7 +1802,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The code is very small, but the result is huge! We have implemented a form of a Bayesian filter. We have learned how to start with no information and derive information from noisy sensors. Even though the sensors in this chapter are very noisy (most sensors are more than 80% accurate, for example) we quickly converge on the most likely position for our dog. We have learned how the predict step always degrades our knowledge, but the addition of another measurement, even when it might have noise in it, improves our knowledge, allowing us to converge on the most likely result.\n",
|
||||
"The code is very short, but the result is huge! We have implemented a form of a Bayesian filter. We have learned how to start with no information and derive information from noisy sensors. Even though the sensors in this chapter are very noisy (most sensors are more than 80% accurate, for example) we quickly converge on the most likely position for our dog. We have learned how the predict step always degrades our knowledge, but the addition of another measurement, even when it might have noise in it, improves our knowledge, allowing us to converge on the most likely result.\n",
|
||||
"\n",
|
||||
"If you followed the math carefully you will realize that all of this math is exact. The bar charts that we are displaying are not an *estimate* or *guess* - they are mathematically exact results that exactly represent our knowledge. The knowledge is probabilistic, to be sure, but it is exact, and correct.\n",
|
||||
"\n",
|
||||
@@ -1798,7 +1853,9 @@
|
||||
"\n",
|
||||
"* [6] Wikipedia. \"Law of total probability\"\n",
|
||||
" http://en.wikipedia.org/wiki/Law_of_total_probability\n",
|
||||
" "
|
||||
" \n",
|
||||
"* [7] Wikipedia. \"Time Evolution\"\n",
|
||||
"https://en.wikipedia.org/wiki/Time_evolution"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -1818,7 +1875,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.4.1"
|
||||
"version": "3.4.3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
Reference in new issue
Block a user