{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# SYDE 556/750: Simulating Neurobiological Systems\n",
"\n",
"### Symbols and symbolic-like representations"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Symbols and Symbol-like representation in neurons\n",
"\n",
"- We've seen how to represent vectors in neurons\n",
" - And how to compute functions on those vectors\n",
" - And dynamical systems\n",
"- But how can we do anything like human language?\n",
" - How could we represent the fact that \"the number after 8 is 9\"\n",
" - Or \"dogs chase cats\"\n",
" - Or \"Anne knows that Bill thinks that Charlie likes Dave\"\n",
"- Does the NEF help us at all with this?\n",
" - Or is this just too hard a problem yet?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Traditional Cognitive Science\n",
"\n",
"- Lots of theories that work with structured information like this\n",
"- Pretty much all of them use some representation framework like this:\n",
" - `after(eight, nine)`\n",
" - `chase(dogs, cats)`\n",
" - `knows(Anne, thinks(Bill, likes(Charlie, Dave)))`\n",
"\n",
"- Cognitive models manipulate these sorts of representations\n",
" - mental arithmetic\n",
" - driving a car\n",
" - using a GUI\n",
" - parsing language\n",
" - etc etc\n",
"- Seems to match well to behavioural data, so something like this should be right\n",
"- So how can we do this in neurons?\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- This is a hard problem\n",
"- Jackendoff (2002) posed this as a major problem, identifying four linguistic challenges for cognitive neuroscience\n",
" - The Binding Problem\n",
" - The Problem of 2\n",
" - The Problem of Variables\n",
" - Working Memory vs Long-term memory"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- The Binding Problem\n",
" - Suppose you see a red square and a blue circle\n",
" - How do you keep these ideas separate? How does \"red\" get bound with \"square\", and how is it kept separate from \"blue\" and \"circle\"?\n",
"- The Problem of 2\n",
" - \"The little star's beside the big star\"\n",
" - How do we keep those two uses of \"star\" separate?\n",
"- The Problem of Variables\n",
" - Words seem to have types (nouns, verbs, adjectives, etc, etc)\n",
" - How do you make use of that? \n",
" - E.g. \"blue *NOUN*\" is fine, but \"blue *VERB*\" is not (or is very different)\n",
"- Working memory vs Long-term memory\n",
" - We can both use sentences (working memory) and store them indefinitely (long-term memory)\n",
" - How do these transfer back and forth?\n",
" - What are they in the brain? This seems to require moving from storing something in neural activity to storing it in connection weights\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Possible solutions\n",
"\n",
"1. Oscillations\n",
" - \"red square and blue circle\"\n",
" - Different patterns of activity for RED, SQUARE, BLUE, and CIRCLE\n",
" - Have the patterns for RED and SQUARE happen, then BLUE and CIRCLE, then back to RED and SQUARE\n",
" - More complex structures possible too:\n",
" - E.g. the LISA architecture\n",
" \n",
"\n",
"\n",
"- Problems\n",
" - What controls this oscillation?\n",
" - How is it parsed? (i.e., mapped to sets of oscillators, noise)\n",
" - How do we deal with the exponentional explosion of nodes needed?\n",
" - How to deal with A*B B*C (but not C*A)\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"'2. Implementing Symbol Systems in Neurons\n",
" - Build a general-purpose symbol-binding system\n",
" - Lots of temporary pools of neurons\n",
" - Ways to temporarily associate them with particular concepts\n",
" - Ways to temporarily associate pools together\n",
" - Neural Blackboard Architecture\n",
" \n",
"\n",
"\n",
"- Problems\n",
" - Very particular structure (doesn't seem to match biology)\n",
" - Uses a very large number of neurons (~500 million) to be flexible enough for simple sentences\n",
" - And that's just to represent the sentence, never mind controlling and manipulating it\n",
" \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"'3. Vector operators\n",
" - Paul Smolensky [1990](http://verbs.colorado.edu/~llbecker/papers/Smolensky-TensorProductVariableBinding.pdf) suggests using a mathematical operator called a 'tensor product' to bind vectors together.\n",
" - The idea is that this operator can 'bind' and its inverse 'unbind' these vectors together.\n",
" - It provides an algebraic way of specifying symbolic structures in a vector space.\n",
" - If you can represent vector spaces and operators in neurons (e.g. NEF), then it provides a way of working with symbolic structures in neurons.\n",
"\n",
"\n",
"\n",
"- Problems\n",
" - Every time you bind vectors, the result has $D^2$ as many dimensions.\n",
" - It scales extremely poorly: the dimensionality of a structure representation is the base space to the power of depth, i.e. $D_S = D^{depth+1}$\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### A deeper issue\n",
" - If we're just implementing something like the original symbol system in neurons, then we're reducing the neural aspects to *mere implementational details*.\n",
" - That is, if we had a perfectly good way to implement symbol structures in neurons, then we could take existing cognitive theories based on symbol structures and implement them in neurons.\n",
" - But so what? That would be conceding the point that the neurons don't matter -- you don't *need* neurons to understand cognition. \n",
" - Sure, they're useful for testing some aspects, like what firing patterns should be.\n",
" - But it's more for completeness sake than for a better understanding.\n",
" - (Same as wondering how a neuron gets implemented in terms of atoms or quarks. Not that important for function.)\n",
" - This is why the majority of cognitive scientists don't worry about neurons."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Semantic pointers\n",
"\n",
"- Tensor products are on the right track, if we can solve the scaling problem.\n",
"- 'How to build a brain' exploits a compression operator introduced by Tony Plate for cognitive modeling called 'circular convolution' $\\circledast$ (this operator has been used in signal processing for a long time).\n",
"- In the book, I suggest that neurally realized compressed vector representations are prevalent in the brain, and call such representations 'semantic pointers'.\n",
"- Pointers: because they can be used like computer science pointers to be efficient references to complex representations.\n",
"- Semantic: because (unlike CS pointers), their content is derived (through compression) from semantically related representations.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- This provides something that's similar to the symbolic approach, but much more tied to biology.\n",
" - Most of the same capabilities as the classic symbol systems.\n",
" - But not all.\n",
"- Based on vectors and functions on those vectors.\n",
" - There is a vector for each concept (and maybe 'sub concepts').\n",
" - Build up structures by doing math on those vectors.\n",
" \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- Example\n",
" - \"blue square and red circle\"\n",
" - Can't just do BLUE+SQUARE+RED+CIRCLE.\n",
" - Why?\n",
" - Need some other operation as well.\n",
"- Requirements:\n",
" - Input 2 vectors, get a new vector as output.\n",
" - Reversible (given the output and one of the input vectors, generate the other input vector).\n",
" - Output vector is highly dissimilar to either input vector.\n",
" - Unlike addition, where the output is highly similar.\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- Circular convoluation can act as such a function.\n",
" - (There are many other such functions: XOR, Multiply, etc... collectively this kind of vector space binding to represent structures are sometimes called 'Vector Symbolic Architectures' (Gayler, 2003).)\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- Why circular convolution?\n",
" - Extensively studied (Plate, 1997: Holographic Reduced Representations).\n",
" - Easy to approximately invert (circular correlation).\n",
" \n",
"- Examples:\n",
" - `BLUE` $\\circledast$ `SQUARE + RED` $\\circledast$ `CIRCLE`\n",
" - `DOG` $\\circledast$ `AGENT + CAT` $\\circledast$ `THEME + VERB` $\\circledast$ `CHASE`\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- Unbinding:\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- Can also think of this operator as a compressed outer product\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- Lots of nice properties:\n",
" - Can store complex structures:\n",
" - `after(eight, nine)`\n",
" - `NUMBER` $\\circledast$ `EIGHT + NEXT` $\\circledast$ `NINE`\n",
" - `knows(Anne, thinks(Bill, likes(Charlie, Dave)))`\n",
" - `SUBJ` $\\circledast$ `ANNE + ACT` $\\circledast$ `KNOWS + OBJ` $\\circledast$ `(SUBJ` $\\circledast$ `BILL + ACT` $\\circledast$ `THINKS + OBJ` $\\circledast$ `(SUBJ` $\\circledast$ `CHARLIE + ACT` $\\circledast$ `LIKES + OBJ` $\\circledast$ `DAVE))`\n",
" - But gracefully degrades!\n",
" - As representation gets more complex, the accuracy of breaking it apart decreases.\n",
" - Keeps similarity information.\n",
" - If `RED` is similar to `PINK` then `RED` $\\circledast$ `CIRCLE` is similar to `PINK` $\\circledast$ `CIRCLE`.\n",
" \n",
"- But rather complicated:\n",
" - Seems like a weird operation for neurons to do."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Circular convolution in the NEF\n",
"\n",
"- Or is it?\n",
"- Circular convolution is a whole bunch ($D^2$) of multiplies.\n",
"- Like any convolution, it can also be written as a Fourier transform, an elementwise multiply, and another Fourier transform:\n",
" - i.e. $A \\circledast B = IDFT(DFT(A).DFT(B)))$\n",
"- The discrete fourier transform is just a linear operation, hence a matrix.\n",
"- So that's just $D$ pairwise multiplies.\n",
"- In fact, circular convolution turns out to be *exactly* what the NEF shows neurons are good at (i.e., low order polynomials)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Jackendoff's Challenges\n",
"\n",
"- As pointed out in [Vector Symbolic Architectures Answer Jackendoff's Challenges for Cognitive Neuroscience].(http://arxiv.org/ftp/cs/papers/0412/0412059.pdf)\n",
"- The Binding Problem:\n",
" - There is a lot of \"binding\" (structurally combining items) in linguistics (more than vision) .\n",
" - `RED` $\\circledast$ `CIRCLE + BLUE` $\\circledast$ `TRIANGLE`\n",
" - After it is bound, we can ask \"what color is the circle by doing $\\circledast$ `CIRCLE'`.\n",
" - where `'` is \"inverse\".\n",
" - (`RED` $\\circledast$ `CIRCLE + BLUE` $\\circledast$ `TRIANGLE`) $\\circledast$ `CIRCLE'`\n",
" - = `RED` $\\circledast$ `CIRCLE` $\\circledast$ `CIRCLE' + BLUE` $\\circledast$ `TRIANGLE` $\\circledast$ `CIRCLE'`\n",
" - = `RED + BLUE` $\\circledast$ `TRIANGLE` $\\circledast$ `CIRCLE'`\n",
" - = `RED + noise`\n",
" - $\\approx$ `RED`\n",
" \n",
"- The Problem of 2:\n",
" - How can we distinguish two uses of the same concept in a sentence?\n",
" - \"The little star's beside the big star.\"\n",
" - `OBJ1` $\\circledast$ `(TYPE` $\\circledast$ `STAR + SIZE` $\\circledast$ `LITTLE) + OBJ2` $\\circledast$ `(TYPE` $\\circledast$ `STAR + SIZE` $\\circledast$ `BIG) + BESIDE` $\\circledast$ `OBJ1` $\\circledast$ `OBJ2`\n",
" - Notice that `BESIDE` $\\circledast$ `OBJ1` $\\circledast$ `OBJ2` = `BESIDE` $\\circledast$ `OBJ2` $\\circledast$ `OBJ1`\n",
" - And that we can distinguish the two uses of star.\n",
"- The Problem of Variables:\n",
" - How can we manipulate abstract place holders?\n",
" - `S` = `RED` $\\circledast$ `NOUN`\n",
" - `VAR` = `BALL` $\\circledast$ `NOUN'`\n",
" - `S` $\\circledast$ `VAR` = `RED` $\\circledast$ `BALL`\n",
"- Binding in Working Memory vs Long-term memory:\n",
" - How can we use and manipulate the same structures in both WM and LTM?\n",
" - Vectors are what we work with (activity of neurons).\n",
" - Functions are long-term memory (connection weights).\n",
" - Functions return (and modify) vectors."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Symbol-like manipulation\n",
"\n",
"- Can do a lot of standard symbol operations.\n",
"- Sometimes you have to explicitly bind and unbind to manipulate the data.\n",
"- Less accuracy for more complex structures.\n",
"- *But we can also do more with these representations*\n",
" - Sometimes you don't have to explicitly bind/unbind to manipulate.\n",
" - Can define other vector operations not available for symbols...\n",
"\n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Raven's Progressive Matrices\n",
"\n",
"- An IQ test that's generally considered to be the best at measuring general-purpose \"fluid\" intelligence:\n",
" - Nonverbal (so it's not measuring language skills, and fairly unbiased across cultures, hopefully).\n",
" - Fill in the blank: given eight possible answers, pick one.\n",
" \n",
"\n",
"\n",
"- This is not an actual question on the test:\n",
" - The test is copyrighted.\n",
" - They don't want the test to leak out, since it's been the same set of 60 questions since 1936.\n",
" - But they do look like that.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- How can we model people doing this task?\n",
"- A fair number of different attempts:\n",
" - None neural.\n",
" - Generally use the approach of building in a large set of different types of patterns to look for, and then trying them all in turn.\n",
" - Which seems wrong for a test that's supposed to be about *flexible, fluid* intelligence.\n",
" \n",
"- Does this vector approach offer an alternative?\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- First we need to represent the different patterns as a vector.\n",
" - This is a hard image interpretation problem.\n",
" - Still ongoing work here.\n",
" - So we'll skip it and start with things in vector form.\n",
" \n",
" \n",
" \n",
"- How do we represent a picture?\n",
" - `SHAPE` $\\circledast$ `ARROW + NUMBER` $\\circledast$ `ONE + DIRECTION` $\\circledast$ `UP`\n",
" - Can do variations like this for all the pictures.\n",
" - Fairly standard with most assumptions about how people represent complex scenes.\n",
" - But that part is not being modelled (yet!).\n",
" \n",
"- We have shown that it's possible to build these sorts of representations up directly from visual stimuli.\n",
" - With a very simple vision system that can only recognize a few different shapes.\n",
" - And where items have to be shown sequentially as it has no way of moving its eyes."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Examples in Spaun\n",
"\n",
"- Let's look at a simpler but related example: \n",
" - Binding used for building a list to remember"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUDBAgICAgICAgICAgICAgICAgICAgICAgHBwcHCAgH\nCAgIChALCAgOCQcHDBUMDhERExMTBwsWGBYSGBASExIBBQUFCAcHDQgIDRIMDAwSEhISEhISEhIS\nEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAWgB4AMBIgACEQED\nEQH/xAAcAAEAAgMBAQEAAAAAAAAAAAAABQYEBwgDAgH/xABcEAABAwICAwkJCA4JAgQHAAAAAgME\nAQUGEhETIgcUGCMyM1SU1AgWITFCQ1JTchUkQVFiY3ODNERhcXSCkZKTlaK00dM1gYSho7Kzw/DE\n1VVk0vElpKWxwuPk/8QAGwEBAAMBAQEBAAAAAAAAAAAAAAIDBAUGAQf/xAAtEQEAAgECBQIFAwUA\nAAAAAAAAAgMSAQQFEyIyQhEUISMzQ1IVMYMGQVFTcv/aAAwDAQACEQMRAD8A4yAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3\n9wK8LdPv/Wbd2AcCvC3T7/1m3dgA4BB39wK8LdPv/Wbd2AcCvC3T7/1m3dgA4BB39wK8LdPv/Wbd\n2AcCvC3T7/1m3dgA4BB39wK8LdPv/Wbd2AcCvC3T7/1m3dgA4BB39wK8LdPv/Wbd2AcCvC3T7/1m\n3dgA4BB39wK8LdPv/Wbd2AcCvC3T7/1m3dgA4BB39wK8LdPv/Wbd2AcCvC3T7/1m3dgA4BB39wK8\nLdPv/Wbd2AcCvC3T7/1m3dgA4BB39wK8LdPv/Wbd2AcCvC3T7/1m3dgA4BB39wK8LdPv/Wbd2AcC\nvC3T7/1m3dgA4BB39wK8LdPv/Wbd2AcCvC3T7/1m3dgA4BB39wK8LdPv/Wbd2AcCvC3T7/1m3dgA\n4BB39wK8LdPv/Wbd2AcCvC3T7/1m3dgA4BB39wK8LdPv/Wbd2AwHO5EwcmuhVzv9FfFWRC/7WBwg\n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\nUiRIbaU/BkOa95CKVccZe8++XYpm6KjfG8oS1qbjzpWokVSvJrmUsKe3t9dl1X4wGVaMZWuUjOxM\nYcSrb5ZT+6Xu+TCN7dYV4Vw3G8yfn2DYFLZGqhKKsMqbSnIlrVM6tsgsfYNj3Gzz7S2hqOmZGdZS\nppGryOAaAvthiN7k0dNGm6KTD30heTjNdr5D+vN67hVyrIw3Z3l84qG0lf1GY5x72MbSbG1gp60J\najtval28Z+LXE1++DqvCVkRAt8SCjaTEjNM0A5x7q/ctpIi3zEM6fIlKZZbpa4VF+9oXFJ1/g/vN\n09zo8nvVsP4A0ePdFYbk3LDd0hwmtdJfZyNIzmXuK2V6Bh+0w5TeplMRmmXUegBqbuy7RdLq9h+F\nbbeuchubWTITTm66jwMx3/v03yZG5Jjze2IW7BeMPW6z3R1mi4ciI01x7Oo9clqnRy0bu0TFceVA\numHHVyWIyvf1n1mrbkFS3P8ACF+vuKo+Kb7C9ymrfH1EODn1jjnFSO0AdHa5NPlGvML2qSzMZW60\npKW1ylr6K3vn1BsDUp0J0JGTQB965Oj5XIKJugO76nWy0VqqjL/vqT84zH8wXg8Fw26uZ8uZz0gM\nrOnRlonZKpjLCsCQ+3dK29iVdYLWmCp3nNPqv835xZNSag3bNzy9yrjCveHbjve4REahUWSuu8Xm\nfoPrgKf3LOhq7Yqal+8sSyZLcmXE0e9WInKY1HSPsn9o3r3wOw1JbuDSW0uKyIltV97fX9HNZ7hO\n5bdLfdLniK/SmpF4uDOpyx/sZlr4f3eObmfZQ83kWjM25sLQsDKQ8nQFvJKDYLymMqVAoxLlORHs\niNUjPxXPp48k1t3WZpohDdtbr4nF++ZFPqOYA8t0aRR5hVrY0Vk3JG965fNxJHEvv/oSo91s1SmD\n57e9qyk57a2hjO43n/8AiET4UmybBh9iFmUjM4+5TjZTys8h72lFD7qxxCMJ3VTvhbo21StOK8Pv\nlj1zDlP7icO87ultkj75PpFjvP1Tm1SM+Uzyl4vv8OtW4tHNY5SZGo6hLbrmrpm87lIDIw1hlttu\nrsmlHp0muumO10bb3qPoGuap9wlu96JoSnVU2fFtVJcARqLJFpm4lG14zy73ImzxVNnxbVSXAER3\nvxdOnVftVC8PxK1TXVU2fFoVUlwBGLsUWtNGpT+Q8+96J6qn51SXAEKjDcSlNGSv5x9970T1VPzq\n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\nXi1iZLGgnDuM8V+ABAAAAAAAAAAAAAAAAAea26KpWlfDRXjoaZxZbHbbIZYr/RbjudlXq3vUPm6i\nExlYm7lDeirrlz02V+g58FQKZuorg1sqpK0JU6mjaIik04zffwFV3OrqvVZXV5XMnIIK8Wi/tamH\nJgyZbcVbupdjo1ja/nzCzym3FKpFmJUlHlxngNoy5jTaUu7ObyEI84R9tW+t7w+nyVebNd2zGaX1\nJyMPuKz8pKC7xMSP0y5Le57eQnZPOGB1rnLw3m8XF/LSRkTCqG6qXV9xX45HxMYXCtMu9nPx1mLP\nvdzXtUjbPo5zz0+FN0N0scSyQ9KlUQnMH8JRX6KStj80o0/E86OjNWC4n2FkSjE9wfWpNFavJ5Oc\nso4fOmecHyd0Jrsjcsb05kIdT7MkmIu5tGptKq/m+5IKOxfrszRKta259cS1sxzKy53WlJyfPMno\nJ3zn3sS60iXOFRKWlb9j/K4uQgyF3uTo+w5Ob2CkWzdNlL1i96OKbTsZicY3TGdZqn2VR3FJ00S9\nsFI9J2J32a++oz0ZtWxmdRxf6cs1jltVTpzJqpXxGFFxHGkJyLonKr4FENcvc+NXWsr1KU+SnmwL\nzmQ5s1oUa7Pb1nZmlbLuwsie/OS9RS4UVySnyFc22VJF7lLkZ5sZ1lSV81kA21Lnrq1lrs5TUu6r\ndVst5Wl5VKJ284z4pKltO+gjiTHwVhSbdZSZlyjb3iNLzssu84/7QF23O8JR2bXDblMtuPVb1jyl\nI5bz/j//ABLJ3uQeis/mHvclOopxejQVOXIU5zs5TIFrc3rGTmVqWU+krQ2VnEG6dZ4VFZ5Wsqnx\npjp1lTFiYFhydtct2Un5KyZt2BLUwrOiG0pz03U6yv7QGrZ+6ze7nVTWH7K8rRs77kp4o073Q2E8\nQxLW3db7clSXFSWkbyQvimztNdUMoVXRlSlOauWhw33RW7c7fosi171SzF3znZez8Z73A7B3Mrbb\n2LXCVbYrUWO/HZfQhpGilNe0mpayq7kiapsFlorle5Vv/cWC1AAAAAAAAAAAAAAEbh7mVfhM79+k\nkkRuHuZV+Ezv36SSQAAACMwv9iMewSZGYY+xGPYAkqUNY90uuqMM3KusU2nQzRaqJeXxe+WNOne7\nDrn9eg2dQ1p3SVGa4cma7V6rWwM+u1Or0e6EbpHFA9cWzAAAAAAAAAAAAAAAAAAAAAAo+7hRz3Au\n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\nAAAAAAAAAAAAAf/Z\n",
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import YouTubeVideo\n",
"YouTubeVideo('U_Q6Xjz9QHg', width=720, height=400, loop=1, autoplay=0, playlist='U_Q6Xjz9QHg')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- The memory of the list is built up by using a basal ganglia action selection system to control feeding values into an integrator\n",
" - The thought bubble shows how close the decoded values are to the ideal\n",
" - Notice the forgetting! \n",
" \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- The same system can be used to do a version of the Raven's Matrices task"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUDBAgICAgICAgICAgICAgICAgICAgICAgICAcHBwgI\nCAcIChALBwgOCQcHDBUMDhERExMTBwsWGBYSGBASExIBBQUFCAcIDQgIDRIMDQ0SEhISEhISEhIS\nEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAWgB4AMBIgACEQED\nEQH/xAAcAAEAAgMBAQEAAAAAAAAAAAAABQYEBwgDAgH/xABgEAABAwICAwoGCwkMBwgDAAACAAME\nAQUGEhETIgcUGCEjMjNUlNQIMUJDUlMWJDRBUWFiY3JzkhVxdIGCg5O002SEkZWhoqOys8TR1Rc1\nRLHBwvAldYWkw+Hj8UVV0v/EABwBAQACAwEBAQAAAAAAAAAAAAADBQIEBgcBCP/EADcRAQACAQMB\nBgQCBwkAAAAAAAACAwQBBRIyBhETFCJSITFCUQcjFTRBQ1NjgRYXJDNzgpGSwf/aAAwDAQACEQMR\nAD8A4yREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA\nREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQERE\nBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE\nQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE\nRARd/cCvC3X7/wBpt3cE4FeFuv3/ALTbu4IOAUXf3Arwt1+/9pt3cE4FeFuv3/tNu7gg4BRd/cCv\nC3X7/wBpt3cE4FeFuv3/ALTbu4IOAUXf3Arwt1+/9pt3cE4FeFuv3/tNu7gg4BRd/cCvC3X7/wBp\nt3cE4FeFuv3/ALTbu4IOAUXf3Arwt1+/9pt3cE4FeFuv3/tNu7gg4BRd/cCvC3X7/wBpt3cE4FeF\nuv3/ALTbu4IOAUXf3Arwt1+/9pt3cE4FeFuv3/tNu7gg4BRd/cCvC3X7/wBpt3cE4FeFuv3/ALTb\nu4IOAUXf3Arwt1+/9pt3cE4FeFuv3/tNu7gg4BRd/cCvC3X7/wBpt3cE4FeFuv3/ALTbu4IOAUXf\n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\nvoPMqyyMvxkFa/0i3GJTK17dZ+Ej1cgF6fd6T1GTm+gqRbd02SWsOkRxxsDyGeRTQbprFC1TzBsu\neQLvJ6xaLNkXDFjzB03zHeituV0CTo8nSv4QrLZp4FTNmEiL0VHM4jjyKZXAEhL0lEz94xak+yWp\nEPJHo0F5bIXB4x/ESo15k7yn5gyjrdhRPswkvZjhRXHh9Lo21Um7xMN/WzYzrLgHzSZQbalzzq1x\njlJal3UbqUccrR7RqavuMyq0JG0/m5nM1a8sFYVm3aW3MuEYosRg87LLvSPfSQXbc3wmwzaojcpl\ntx4g1zxEHPde8f8AyqyN4cgU8URmn5C97jV2lOS9FVZ6QbnSTiYQWetYsYePUsj8rQ3/AFlWcSbq\nFng0LWStYQ04xjjrKrxYwJDk7ZynZA/JNS1vwJamK5hhtEXpOjRyv85BqqfuuXu6VJrD9neKlNnf\nMkOTWm/CKwjiGLam7pfbkUlxyRRreQHyTdCXbBZGgrXRQREdNdFPeXDfhHbtzt8iyLWMQGouuzsu\n5+U5BB2DuZW23sWuEVuitRY70Zl8QaHRTlmRJWtVfcuAhsdnEuKtLbApWn72YVoQEREBERAREQER\nEBERBG4e6Evwmd+vSVJKNw90JfhM79ekqSQEREBRmF/cjH0FJqMwv7kY+ggk1rjwjDpTDs2pb2pt\nxfdfub3dH6VbHWrfCgt9JWF7gwTlWc5RNvI45o9vRvRQbSREQeDtctK1+CmlUN/FcgTKmzzv5Fe5\nXML7y1LM6Vz6bittrohby56d7z/txuWRiQq8vPw+9OVxdI+Sv2mL5HyVSbldhakxouQiKSbg5/Nh\nyPEpNXHkqfY4CztHukPX4z6uu6LPbdIB1eX6Cxf9Jtx+a+wqviHpyVffug0kDH1ZZiB08/1H/wBK\n0r2zE4d8oLbH7QbjP62yf9J1x+a+wpKxY+mvVLPl2fkLU9puIyWyOgkIieTaVtwn43F8v2zE4c4Q\n0YZfaDcYfvmxaYwf+SviuL5HyVSTvjYzCh6tzMLOuz5FG1xc1SGMzUPZTkOs5PqX9QqrymP7GlHe\nt5lDv8Ztaw4nedfo2YjlKiug04uL31rPCQ+2qU+JbLpTj0+8qPcaYQn3Qek9jM7Iy8SU8mXfr3vV\nERV7sBUfdt1n3BuWorUXaM001Hx6nXsa/wDocyvCx5kUHmzacpmbMcpD8SDmzc9vAC1lHm5OYtgW\nmePOoQ5f7NauvFldsc8osjoTPPGIejcaU3abwHiPLqwPyEG3LYYnXNXKp2BGjaM2Vta5gTxIB0Ep\nmJPzedIUFzrCjH5hsvyFXMV4WjPc1sWiHyhUhAknWmwRF9LXL0l5ecYDsnzkGqLlAfjEWh8ib9El\nVrtmknkZDM99BbTxe9GNwdVs5QyGqFhq1PhJkPxGHSbI+WPOgt9qbO224YrOrLWB7ZdL1qgrJbq3\n25tgYiUGDtu+rr8ypGDbpl2JxpoRbZDnyC/9BbPwtYY9uYpHjhQR5xF6bnwoIKdueQ6+5zei1+Qe\nx9lVy57nFxES1E5t3T5LoLbKINR23DmImqCGWJqx+eVstuHp2ilJEpsaU8hoFcEQREaxRgOjpDrn\nh867XO4pdEQfixJ1tYepyrYl+JZiIKHeMAlQtbbpTkRz4q6aKuO47udlc1V3jE/H620tvrEnRWn2\nyaeAXG3KZTAx0iaCCDHdpKFv+s1kItKbTpnk0LlLEWFoONMSNtWSDWPbWi1k+bQMjchXvdg3Im7c\nY3OFG35Aae1023G470Xn9QtyWiwwSt0X7kDvOKVGpDIxTdi0eby5tDu9+PjQW6HFBkAbbplbbHKI\n096iyFVYNijOjmo/chIecBXW57H9Osz2LMdYuf8AGtx/boJ5FA+xZjrFz/jW4/t09izHWLn/ABrc\nf26CeRQPsWY6xc/41uP7dPYsx1i5/wAa3H9ugnkUD7FmOsXP+Nbj+3T2LMdYuf8AGtx/boJ5FA+x\nZjrFz/jW4/t09izHWLn/ABrcf26CeX4oL2LMdYuf8a3H9unsWY6xc/41uP7dBmYe6Evwmd+vSVJK\nuQqlAysGRFGItDTpVqZh807/AIqxIP1ERAUZhf3Ix9BSajML+5GPoIJNam8LapUwlcsgaws8HY/8\nQjLbK134Qt3KBh+ZKHV8kUWvKm8Dfu6P49TxoNiIiIMaZzD+8tRz+kc2vLdW3JfML6K0VPxCNHXB\nyFz3VfbHXKfPg80/EOHLSlkzoIvHFOpEJRjzh+hWaoL2Rj6BfbT2Rj6BLofK2fZ5jZC1GYk6cvlK\nGfiCTzL/AJTQOgCsrluKVXX0rlzJ7HD9aKsIW16Q4Tb1F/CCtQYYs0cy7WY3T2lZsIH0iexsvWj9\nhfQe0a5q8pmWFlkJw4QL7oXJRyANZTczMWdpnUgCwq2AKxXIudzK5Idk/pn9f/wXx7Ix9WX21++y\nQfQJaXlJ+1BXrkR+C64Nr7bFbM/91pzc+vQvTmm8mVbjGun+Vctu8ON3dq9Y7AwnHBnz/iavtERV\nLuhERBX8ZYXiXSMUeU3mHRsODTQ4zX4Wi0c5acuu49cYxFvZ0ZTNOMdJauSug0Qc5sYevEavuWWJ\neXk1Limgk3BlvM7Dl7PyFvJfiDRfs2dDKWoliK8XMVSXtmkZ4i9AlvE4TJeNpuv5FFUIzASbjMqO\nrysapkR/MIKvZsNvyXY5zXdWLmtM47XeFc77ZauR2YcOu9mye5Z1rRsRvP0/OrznQhjU0DSr0qSW\nUBqX/XtZWKxQSjsiBnrDpzjr76D2t0NuO0LTQ0FsacVFlIiAiIgIiICIiAiIgIiIPNwaFTRWmmlf\nGsOx2pmGwEdgcrTfEA+gpBEEdOiFp1rNcrtNPv6AP61e0GWLo6eaVOcJeMKrLUdOiFp1rNcrtNPv\n6AP61BIosSDKF2leLKQ1ymBeMKrLQEREBERAReEWQDlMwEJj6Q+Je6AiIg8n2RMagdMwlTQVPhUL\nGeKGWrdIijEXJO18x8y6Sn15PtCY1E6Zhr4xqg9F+qvxXHIZ6t2uaJXiZdrzmfmnf+FVPoP1RmF/\ncjH0FJqMwz7kZ+ggk1q3wngZLDE8X9bq80TNqSZz+7o3WNlbSWq/Cqjm7hW4A2AuFng6BLxf6wjI\nNqIiIMaZ0Z/QquZp/TPfXO/266Zl9Gf0Krmaf0z31zv9uuq7MdVn9P8A15/256KWFKltNVbEzyk7\nsAHrF7+8oC82R16XHkA/ssHzDBT66quUpSk4W+EIwhwW7D3QNr3fnsg82wToi8/rMjXnHNQvHD3u\ndtVm+4QlPXEZzUwG9h0NsOUY17EmP+P3QqTJl61RRRTO6fjT8NbYM9l+rmpdFzUHkP61RGLvE2vL\nc+w8/bW5QOui4Lr2cMoL1xd4m1Nhdej5whHI4VT9Ctb5DWCxnHWEGcAXg5dY9Gid1o6sTyGYetUH\nLw5IOY5JpKy5wdDmco2o/wBh8yrJMb5b2XnTAMnJqw8e32OlhjY/vbf3K/8AWUdb+H3lz9uWf6yi\n6SzFk210EPvLkO0X6z/R3vY79Un/AKj7REXPuwEREBERAREQR99njGjuvlzWw0qiYejGw24Qk2W+\nvbJvOnyi2DcobchomnRoTZ00FRQ0fCccK6c7xD6BHpog+MJRCP249UiIqZWc3m2lZl8NjQaaKeKi\n+0BERAREQEREBERAREQEREBERAREQR8+JWtda1suj8XEdF6wZdHaeLKY84C8YVWWo+dDrUqOt6Bd\nH+A6IJBFiQpdHaeLKY88K+MKrLQFiXEa1ZdpTx1BzQstfiDUm6hcpdol2y6suEVrztsTI4dHy/nl\ntSHKB0BdbLM2Y5hL4lS91+FHCyXU3z1ccYjrxU+cZ9sMf04iqR4N+MzcgtWuc/VicxsMtvhyrjSl\n0p76vFG5pzldIANcus8qiHmCo6DKtSLmlX3l9tR6Zs9akVfezV5i98g6dPvqIfaIiDyfaExqJ0zD\nXxjVQ0d44h0acppilxNO+p+ad/xU8vN5uh0qJU0jWnGg+1G4X9yMfQWI0/WIQtO6SjFstO+PV/NP\nf4rLwz7kZ+ggk1rvwhXowYem1lP73YzRBN3JrMnt6MtiLW3hGW05eHZzDbBSiMotKMgGc3PbLHiF\nBslERBjzeYf0arnKfa39c9oEumdXRk7oy+8tTTOlc+m4uh2C7WHPXR5p+IV3DSlSfuO96BL4OzyN\nHMJXPOOztIul89N5r5q6KFgTAYAWnSyks37sR/TFVzEHTuKMz+T5Sm0xIT05y/anhic/WuNbyz6Y\nrynwzn0EYw6zLz1VqkPvK/7k3+0fmlzPbDcJ7Ntlmdj/ABnWvuzmz05edCmauBhCf6r+ensRuHq/\n5627/B/Av3i+L+BeC/33bx7K3qX9gcL3aqBue4YlsT2TdDKA+Ut108Sr1q56sNPEuz7O9qMjfaPM\nZHWtMTZ6tuh4VPyfSIi6FtCIiAiIgIiICIiAiIgx5T4ttkZ8QiOYlX5tyJ6lHoshvLl6J0dH8qkM\nTygZYrnLLrSbZGvxlX/7Vc2VnWhuhyjxSsPEYbIviTNSpxEXRF955TzTgnTSNaVp8S4vxvJFu5TB\niGTbOudyZD5NTmDt0+fb8rZOE638GZZ+mfyav+Ip/mQdcr9FaRs+7HIdpsNMyPkZ9W4pONu528a5\nZcWZEL5YZ0nROKWnNqt14xbdRUi07qdhlbIXBkS9F09XVWqDc48imZl5twfhE1C22ai/F+oCIiAi\nIgIiICIiCLu1oYldLQvFzhKoVUf7Dofz36d3/FWREFb9h0P579O7/ivpvCMMfFr/ANM6rEqjulY1\nj2WJV92uZ09iOxTxuu/Ag1l4UMliHb2YgG44/cpjQE0bufOyw/vl/ZWuW8YMViSN8MEVydPOzL9W\nqvfJ0y93IpkuualA2CI+Tjrc2A8C1nQSjxxKJBf90yzD21O+o6tGVtZR3U1cZ+hqzn62zsN4ZjOx\nIzrj7spxxlojki87ofr61STmEYZePX/pnVh7lNjmW62sw5joOuNcQ1H3m/gVvVXP5tpXG8Iw6V00\n1/6Z1DwjDrXTy/6Z1WNFiK37Dofz36d3/FPYdD+e/Tu/4qyIgrY4Rh7XTbVMvTOqdisC0AthTKIU\nyjT4l7ogLWvhJuyww5MOE9veSDsEmnc+ryV+6Eb31spax8Jq5Ui4YuL9daOTeu00WhwPb0ZBs5ER\nBjzOjL7y1JMryjn03P8AettyaaQJarlxD1rnJOc9zyFdbPPTTn3vM/xCqsnCnhp3tc4utzp3OHIb\nadc1QNAGwy5G6fllevKXtvR31RfYTebvqi+wrvlD7vO7432whDw/8tScQ+6HFQLtBdKaTrQuERBk\n+bba1EjoJC2Lf4D+uLkH/sLA3g/6hz9CrfTSu2vSHNb4Ot9Xq8NUsEQzZbeGouCOfYIw1bi3FuS/\n7R+a/wCKpO8JG1yD/wBh5XzcpimNJGkCHoucGhcP+JENNez2TCv4up7MaWS3OE5w7lynxW32zaPT\nkcDIeUsldHxV95VzAVnrHbfMg1OvfcqEQOjYbGtGf+Ct1GS9GqUaL0ar8hVa5UKpVeHr+Y9r9D2t\nXSUViqoC3AVHOap9ey/hxVKvAnpP4a81fldb9REXojUEREBERAREQEREBERBiXCEy+GR5tt0edlc\nCh0+ySq2MbdR2hMBAkOCQcbseTvbR8Sua+arCcOTKOvc5wum4q86WaO28wPouv6xef8AoKm6M2Zv\n6GddJafjomn46LT8nr/En/y2PM6+3RydddzWdF8dulkI+WyaiZdydZb1EiK+Tf7oDWLsfj+BYsuG\n07TQ6005T4HAE/6ylhicfrs/7orrIW9VcHCp5a1IqBlH0V6RJJsVzsmTJD5TR6tdh3nc2skvTrbd\nHp8TVN7/AKvoVPuO4JajpXe70uNWvi0k04H2cq2kTSNm3SL5G5lwkl9ces/WFb7Pu+XZumh9iPK+\nVQatKUuvg+Sgp7WnNvfE8GT+qqfctx2+safauuy+Io7yzZtmWnwhYZUpvmE+yXlZSo5Sitto3YbA\n/wAW/RbL54dWuWrnYZjHuiG839MFH+Lx81YMHclsvcSSOePIZeH4QOikM+nxLgjOYbTJZS+nq1IW\n3dFvkOuVp+fs+jJ1jf8A5hXNGw5N0OcGlrm1Q6ndVF+VouP7X4R94Y6cBeH52Jo/V1crL4UUSvu2\nEbfymq6f6yis2bLh9CbS+EnR6LUtk8IHDcnLTfRMkXio6GhXmz4xtcz3NPjPfQdFaM8S6HVDVJz0\nWJF4NyAPmGJfRKirm6PjKPZYlZL1cxlsNNU8458Ci7tfkz73xukYzjWWJV94szhbEdny3XPgXJ2J\nb3OvEwX3cz0hw8gMh5v5lZN2uVxxFcdoSekPnkZa83HaXR25duYQ7QAulTXTSHbeLjy/E16NFva4\n8K4crfn9mrO6U/TUqW5VuMA0Lcq7CLrnPCJTo2/r+srdzbVBpopTRSi9F+rVuvnYkhTGD9REUSYR\nEQEREBERAWsvCYJqmGp2uESazRc1CDWU93Rls1as8KeGcjC1waAybIjg7Y/94RkG00XMvDUwt1C/\n9mt3f04amFuoX/s1u7+g6aXxqx9Fc0cNTC3UL/2a3d/ThqYW6hf+zW7v6PmummvzdK6sfRp/Amrp\n8FP4FzVw08LdQv8A2a3d/Thp4W6hf+y27v6+97DwtPs6V1I+iK/NSHoj9hc18NTC3UL/ANmt3f04\namFuoX/s1u7+nfqy46fZ0pqQ9EfsL7BoR8VKLmjhqYW6hf8As1u7+nDUwt1C/wDZrd39fNfj8NX3\nTTTR0vq6fAmrp8C5o4aeFuoX/s1u7+nDTwt1C/8AZrd39ReDX9tH3vdMZKL6XMvDUwt1C/8AZrd3\n9OGphbqF/wCzW7v6k0000+Q6aRcy8NTC3UL/ANmt3f04amFuoX/s1u7+vo6aRcy8NTC3UL/2a3d/\nThqYW6hf+zW7v6DppFzLw1MLdQv/AGa3d/ThqYW6hf8As1u7+g6aRcy8NTC3UL/2a3d/ThqYW6hf\n+zW7v6DppFzLw1MLdQv/AGa3d/ThqYW6hf8As1u7+g6aRcy8NTC3UL/2a3d/ThqYW6hf+zW7v6Dp\npFzLw1MLdQv/AGa3d/ThqYW6hf8As1u7+g6aRcy8NTC3UL/2a3d/ThqYW6hf+zW7v6DppFzLw1ML\ndQv/AGa3d/ThqYW6hf8As1u7+g6aRcy8NTC3UL/2a3d/ThqYW6hf+zW7v6DppFzLw1MLdQv/AGa3\nd/ThqYW6hf8As1u7+g6TfYA6aDASp8BDpULc8G2uRTloMY/zeT+qtDcNTC3UL/2a3d/ThqYW6hf+\nzW7v6DZV43D7K9p1QvRa199k9Cpd18HgxEt6XPN8h+NWtf02vUTw08LdQv8A2a3d/Tho4W6hf+zW\n7/MFLC2yHRqjnXCfVoirruKX5muwEaSP7nd7wqbdsGXBipC9b3hEf3NrG1sfhpYX6hf+zW7/ADBf\nJ+GbhUqaK26/l9+Jbf8AMFZ17zdp1/mNbyMPpaZlW1jzsZvN8oFjfcSLzqNav6Brbtz8K3A8mmV+\ny3hynxwLZ39UvEG7ZufyqVq3acQRzrzdSxbmm6f+eUv6U0n0ysr/AN5Ouen8x+7nWG5U6Y3Ej3O5\nQhyZzJqY8pnG2DJxzGxCdcp4tvNQs1wPk9bI9QtS2bdmiwpAyYoTBcHm8kz+3VyjeExGfnQXbgzK\npEiO68mokdmpuO6nL/tEn0lHZuF1U+rxCFGtvz/LdW7k25yxZGc5ctNcHlnvR+aa+AVsKi5mHw0c\nL9Qv/Zrd/mCcNLC/UL/2W3f5gqmyc7Zc5NquuMPTF00i5l4amFuoX/s1u7+nDUwt1C/9mt3f1gzd\nNIuZeGphbqF/7Nbu/pw1MLdQv/Zrd39B00i5l4amFuoX/s1u7+nDUwt1C/8AZrd39B00i5l4amFu\noX/s1u7+nDUwt1C/9mt3f0HTSLmXhqYW6hf+zW7v6cNTC3UL/wBmt3f0HTS1Z4UgPFhe4DHza7PB\ny5f+8Iy1xw1MLdQv/Zrd39VTdU8K7D10tMmDHtt4ceeo3QRkDDjNVyu5q11zL71fe9Wg4sREQERE\nBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE\nQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE\nRAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE\nREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA\nREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQERE\nBERAREQEREBERB//2Q==\n",
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import YouTubeVideo\n",
"YouTubeVideo('Q_LRvnwnYp8', width=720, height=400, loop=1, autoplay=0, playlist='Q_LRvnwnYp8')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"- `S1 = ONE` $\\circledast$ `P1`\n",
"- `S2 = ONE` $\\circledast$ `P1 + ONE` $\\circledast$ `P2`\n",
"- `S3 = ONE` $\\circledast$ `P1 + ONE` $\\circledast$ `P2 + ONE` $\\circledast$ `P3`\n",
"- `S4 = FOUR` $\\circledast$ `P1`\n",
"- `S5 = FOUR` $\\circledast$ `P1 + FOUR` $\\circledast$ `P2`\n",
"- `S6 = FOUR` $\\circledast$ `P1 + FOUR` $\\circledast$ `P2 + FOUR` $\\circledast$ `P3`\n",
"- `S7 = FIVE` $\\circledast$ `P1`\n",
"- `S8 = FIVE` $\\circledast$ `P1 + FIVE` $\\circledast$ `P2`\n",
"\n",
"- what is `S9`?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"How does Spaun make a guess at the end?\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- Let's figure out what the transformation is\n",
"- `T1 = S2` $\\circledast$ `S1'`\n",
"- `T2 = S3` $\\circledast$ `S2'`\n",
"- `T3 = S5` $\\circledast$ `S4'`\n",
"- `T4 = S6` $\\circledast$ `S5'`\n",
"- `T5 = S8` $\\circledast$ `S7'`\n",
"\n",
"- `T = (T1 + T2 + T3 + T4 + T5)/5`\n",
"- `S9 = S8` $\\circledast$ `T`\n",
"\n",
"- `S9 = FIVE` $\\circledast$ `P1 + FIVE` $\\circledast$ `P2 + FIVE` $\\circledast$ `P3`\n",
"\n",
"- This becomes a novel way of manipulating structured information\n",
" - Exploiting the fact that it is a vector underneath\n",
" - [A spiking neural model applied to the study of human performance and cognitive decline on Raven's Advanced Progressive Matrices](http://www.sciencedirect.com/science/article/pii/S0160289613001542)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Using Nengo\n",
"- How can we use Nengo to perform these kinds of operations?\n",
"- There's a 'SPA' module you can import, and it lets you do all kinds of symbol-like manipulations (and other cognitive processing).\n",
"- Let's try answering simple questions about the bindings in a representation.\n",
"- I just stole this from the 'Question answering' example in Nengo."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"%pylab inline\n",
"\n",
"import nengo\n",
"import nengo_spa as spa"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# Number of dimensions for the Semantic Pointers\n",
"dimensions = 32\n",
"\n",
"model = spa.Network(label=\"Simple question answering\")\n",
"\n",
"with model:\n",
" colour_in = spa.Transcode(colour_input, output_vocab=dimensions)\n",
" shape_in = spa.Transcode(shape_input, output_vocab=dimensions)\n",
" cue = spa.Transcode(cue_input, output_vocab=dimensions) \n",
" \n",
" conv = spa.State(dimensions)\n",
" out = spa.State(dimensions)\n",
"\n",
" # Connect the buffers\n",
" colour_in * shape_in >> conv\n",
" conv * ~cue >> out "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"The input will switch every 0.5 seconds between `RED` and `BLUE`. In the same way the shape input switches between `CIRCLE` and `SQUARE`. Thus, the network will bind alternatingly `RED * CIRCLE` and `BLUE * SQUARE` for 0.5 seconds each.\n",
"\n",
"The cue for deconvolving bound semantic pointers cycles through `CIRCLE`, `RED`, `SQUARE`, and `BLUE` within one second. \n"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"def colour_input(t):\n",
" if (t // 0.5) % 2 == 0:\n",
" return 'RED'\n",
" else:\n",
" return 'BLUE'\n",
"\n",
"def shape_input(t):\n",
" if (t // 0.5) % 2 == 0:\n",
" return 'CIRCLE'\n",
" else:\n",
" return 'SQUARE'\n",
"\n",
"def cue_input(t):\n",
" sequence = ['0', 'CIRCLE', 'RED', '0', 'SQUARE', 'BLUE'] \n",
" idx = int((t // (1. / len(sequence))) % len(sequence))\n",
" return sequence[idx]\n"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"with model:\n",
" model.config[nengo.Probe].synapse = nengo.Lowpass(0.03)\n",
" p_colour_in = nengo.Probe(colour_in.output)\n",
" p_shape_in = nengo.Probe(shape_in.output)\n",
" p_cue = nengo.Probe(cue.output)\n",
" p_conv = nengo.Probe(conv.output)\n",
" p_out = nengo.Probe(out.output)\n"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/celiasmi/Documents/nengo/nengo_gui/nengo_gui/jupyter.py:69: ConfigReuseWarning: Reusing config. Only the most recent visualization will update the config.\n",
" \"Reusing config. Only the most recent visualization will \"\n"
]
},
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vdom.v1+json": {
"attributes": {
"id": "0a930841-0fbe-4d94-807e-5c3ec79725d3"
},
"children": [
{
"attributes": {
"allowfullscreen": "allowfullscreen",
"class": "cell",
"frameborder": "0",
"height": "600",
"src": "./nengo/57018/?token=6e1acb17dd66b34efb36cea4328c9daa1ee517b7875e7d1c",
"style": {
"border": "1px solid #eee",
"boxSizing": "border-box"
},
"width": "100%"
},
"tagName": "iframe"
}
],
"tagName": "div"
},
"text/html": [
"\n",
"