{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Up and Down the Ladder of Abstraction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "Last week you saw Ivana talk about language processing. Most of her work focuses on the high level.\n", "\n", "Next week Peter will talk to you about complex neuron models.\n", "\n", "Today, I'm going to talk about my work at the top." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fun at the top of the ladder\n", "## Scaling up" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We know how to:\n", "\n", "- Represesent symbols\n", "- Select actions using the Basal Ganglia and Thalamus\n", "- Save symbols in working memory and associative memory\n", "\n", "We used these components to:\n", "\n", "- Answer basic questions\n", "- Follow a sequence of rules\n", "\n", "Now, let's try:\n", "\n", "- Making decisions based on what's in memory" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Given a verb-noun pair from a limited vocabulary, execute the appropriate action.\n", "\n", "- `verb` is `SAY` or `WRITE`\n", "- `noun` is `HELLO` or `GOODBYE`\n", "- `NONE` to indicate execute action" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "vis_sequence = 'SAY HELLO NONE WRITE GOODBYE NONE GOODBYE SAY NONE'.split()\n", "\n", "def input_vision(t):\n", " index = init(t / 0.5) % len(sequence)\n", " return sequence[index]" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import nengo\n", "import nengo.spa as spa" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "D = 64\n", "model = spa.SPA()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# See \"Large-scale cognitive model design using the Nengo neural simulator\" by Sughanda et al. for code\n", "# http://compneuro.uwaterloo.ca/publications/sharma2016.html " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "IPythonViz(model, \"configs/verb_noun_follow.py.cfg\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It gets more complicated with increasingly complicated behaviour. For example, the [task of counting](https://1drv.ms/p/s!Auhg6REoCX4GgWpkZHvmFBIN4FWV) that Spaun does requires [a LOT of lines of code](https://github.com/Seanny123/counting_to_addition/blob/master/counting_only.py)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This also covers other models like:\n", "- N-back memory task [Gosmann et al. 2015](http://compneuro.uwaterloo.ca/publications/gosmann2015.html)\n", "- Stack-like procedure memory [Blouw et al. 2016](http://compneuro.uwaterloo.ca/publications/Blouw2016.html)\n", "- Language search model from last week [Kajic et al. 2017](http://compneuro.uwaterloo.ca/publications/kajic2017.html)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want to integrate multiple complex behaviours, which Spaun actually does, you get an unmanageable amounts of code.\n", "\n", "> \"If someone wants to implement a new task into Spaun requiring a new module, they're better off reimplementing Spaun entirely than trying to edit the code.\" - Xuan Choo, creator of Spaun\n", "\n", "That seems bad. How can fix this?\n", "\n", "- Make the SPA action syntax better. See https://github.com/nengo/nengo_spa.\n", "- Make the design and simulate loop faster with neuromorphic hardware.\n", "- Make SPA actions require less fine-tuning. Sverrir is working on this!\n", "- Make a design language that compiles to SPA. But we don't know how to efficiently describe systems of this scale yet, because so few have been created!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Getting better with practice" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Humans get better at a task if it's repeated. How can we include this in our networks?\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This only works for basic input-output mapping. Further research needed for motor sequence chunking and other complex tasks." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Going back down the ladder\n", "## Matching neurological data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You have to use approximations:\n", "- MEG is basically spikes\n", "- fMRI is basically neurotransmitter use" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Does a Voja-based associative memory match MEG and fMRI data? No." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What does? I'm working on it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Bonus Pro Tips\n", "\n", "Ideas for projects requiring refining and discussion:\n", "https://github.com/ctn-waterloo/modelling_ideas/issues\n", "\n", "StackOverflow for cognitive modelling, psychology and neuroscience, good for getting summary of literature:\n", "https://psychology.stackexchange.com/help/on-topic" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }