interim check in
This commit is contained in:
1 parent
ff9c20d7c1
commit
00b8530cf6
1 file changed
+74
-57
+74
-57
@@ -39,7 +39,7 @@
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 1
|
||||
"prompt_number": 3
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -57,7 +57,7 @@
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 2
|
||||
"prompt_number": 4
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -86,11 +86,11 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x29ca4d0>"
|
||||
"<matplotlib.figure.Figure at 0x3f82d90>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 4
|
||||
"prompt_number": 5
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -140,7 +140,7 @@
|
||||
" * door\n",
|
||||
" \n",
|
||||
"\n",
|
||||
"Can we deduce where Simon is at the end of that sequence? Of course! There is only one place where you can be in front of a door, move once to the right, and be in front of another door, and that is at the left end of the hallway. Therefore we can confidently state that Simon is in front of the second doorway. If this is not clear, suppose Simon had started at the second or third door. After moving to the right, his sensor would have returned 'wall'. Therefore the only possibility is that he is now in front of the second door. We denote this in Python with:"
|
||||
"Can we deduce where Simon is at the end of that sequence? Of course! Given the hallway's layout there is only one place where you can be in front of a door, move once to the right, and be in front of another door, and that is at the left end. Therefore we can confidently state that Simon is in front of the second doorway. If this is not clear, suppose Simon had started at the second or third door. After moving to the right, his sensor would have returned 'wall'. Therefore the only possibility is that he is now in front of the second door. We denote this in Python with:"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -161,7 +161,7 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 20
|
||||
"prompt_number": 7
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -169,7 +169,7 @@
|
||||
"source": [
|
||||
"Obviously I carefully constructed the hallway layout and sensor readings to give us an exact answer quickly. Real problems will not be so clear cut. But this should trigger your intuition - the first sensor reading only gave us very low probabilities (0.333) for Simon's location, but after a position update and another sensor reading we knew much more about where he is. You might suspect, correctly, that if you had a very long hallway with a large number of doors that after several sensor readings and positions updates we would either be able to know where Simon was, or have the possibilities narrowed down to a small number of possibilities. For example, suppose we had a long sequence of \"door, right, door, right, wall, right, wall, right, door, right, door, right, wall, right, wall, right, wall, right, wall, right, door\". Simon could only be located where we had a sequence of [1,1,0,0,1,1,0,0,0,0,1] in the hallway. There might be only one match for that, or at most a few. Either way we will be far more certain about his position then when we started.\n",
|
||||
"\n",
|
||||
"We could work through the code to implement this solution, but before we do, let us consider a real world complication."
|
||||
"We could work through the code to implement this solution, but instead let us consider a real world complication to the problem."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -184,27 +184,13 @@
|
||||
"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, not 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. At this point it doesn't matter exactly what numbers we assign; let us say that the probably of 'door' being correct is 0.6, and the probability of being incorrect is 0.2. How would we do this?\n",
|
||||
"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, not 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. At this point it doesn't matter exactly what numbers we assign; let us say that the probably of 'door' being correct is 0.6, and the probability of being incorrect is 0.2, which is another way of saying it is about 3 times more likely to be right than wrong. How would we do this?\n",
|
||||
"\n",
|
||||
"Well, the probability that he is in front of a door is $1 / 3 * 0.6$. That is, there are 3 doors, the chance of being right is 0.6, so the result is 0.2. The probability that he is actually in front of a blank wall is 1/4 * 0.2, or 0.05. Our belief vector now looks like:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"pos = array([.2, .2, .05, .05, .05, .05, .05, .05, .2, .05])"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 14
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"As before, instead of manually creating the pos array, we will create it programmatically\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. Say we think there is a 50% chance that our dog is in front of a specific door and we get a reading of 'door'. Well, we think that is only likely to be true 0.6 of the time, so we multiply: $0.5 * 0.6= 0.3$. Likewise, if we think the chances that our dog is in front of a wall is 0.1, and the reading is 'door', we would multiply the probability by the chances of a miss: $0.1 * 0.2 = 0.02$.\n",
|
||||
"\n",
|
||||
"However, we more or less chose 0.6 and 0.2 at random; if we multiply the pos array by these values the end result will no longer represent a true probability distribution. \n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -212,24 +198,18 @@
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"q = []\n",
|
||||
"\n",
|
||||
"# figure out probability of being in front of a door if sensor is perfect\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"pos = array([0.2]*10)\n",
|
||||
"reading = 1 # reading is 'door'\n",
|
||||
"# adjust probability by the accuracy of the sensor\n",
|
||||
"for i in range(len(hallway)):\n",
|
||||
" if hallway[i] == 1:\n",
|
||||
" if hallway[i] == reading:\n",
|
||||
" q.append (pos[i] * 0.6)\n",
|
||||
" else:\n",
|
||||
" q.append (pos[i] * 0.2)\n",
|
||||
" \n",
|
||||
"def normalize (p):\n",
|
||||
" s = sum(p)\n",
|
||||
" for i in range (len(p)):\n",
|
||||
" p[i] = p[i] / s\n",
|
||||
"pos = array(q)\n",
|
||||
"normalize(pos)\n",
|
||||
"print pos"
|
||||
"print pos\n",
|
||||
"print 'sum =', sum(pos)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
@@ -238,12 +218,57 @@
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"[ 0.32628399 0.32628399 0.00302115 0.00302115 0.00302115 0.00302115\n",
|
||||
" 0.00302115 0.00302115 0.32628399 0.00302115]\n"
|
||||
"[ 0.12 0.12 0.04 0.04 0.04 0.04 0.04 0.04 0.12 0.04]\n",
|
||||
"sum = 0.64\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 18
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"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.12) that is 3 times higher than the walls (0.04). So we can write a bit of code to normalize the result so that the probabilities correctly sum to 1.0."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"def normalize (p):\n",
|
||||
" s = sum(p)\n",
|
||||
" for i in range (len(p)):\n",
|
||||
" p[i] = p[i] / s\n",
|
||||
"normalize(pos)\n",
|
||||
"print pos\n",
|
||||
"print 'sum =', sum(pos)\n",
|
||||
"print 'probability of door =', pos[0]\n",
|
||||
"print 'probability of wall =', pos[2]"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"[ 0.1875 0.1875 0.0625 0.0625 0.0625 0.0625 0.0625 0.0625 0.1875\n",
|
||||
" 0.0625]\n",
|
||||
"sum = 1.0\n",
|
||||
"probability of door = 0.1875\n",
|
||||
"probability of wall = 0.0625\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 21
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"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. 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."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
@@ -279,7 +304,7 @@
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 1
|
||||
"prompt_number": 10
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -307,11 +332,11 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x2d5d850>"
|
||||
"<matplotlib.figure.Figure at 0x3ed6390>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 2
|
||||
"prompt_number": 11
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -332,9 +357,9 @@
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"plt.plot (xs,[g(x, 5, .2) for x in xs],'b')\n",
|
||||
"plt.plot (xs,[g(x, 5, 1) for x in xs],'g')\n",
|
||||
"plt.plot (xs,[g(x, 5, 5) for x in xs],'r')\n",
|
||||
"plt.plot (xs,[gaussian(x, 5, .2) for x in xs],'b')\n",
|
||||
"plt.plot (xs,[gaussian(x, 5, 1) for x in xs],'g')\n",
|
||||
"plt.plot (xs,[gaussian(x, 5, 5) for x in xs],'r')\n",
|
||||
"\n",
|
||||
"plt.show()"
|
||||
],
|
||||
@@ -346,11 +371,11 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x2ece110>"
|
||||
"<matplotlib.figure.Figure at 0x3ed6a50>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 11
|
||||
"prompt_number": 13
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -360,14 +385,6 @@
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"$$e$$\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
|
||||
Reference in new issue
Block a user