Friday 5:10 p.m.–5:40 p.m.
How to build a brain with Python
- Audience level:
Simulating the human brain is often the subject of science fiction, but how close are we really? In this talk, I'll survey cutting edge research projects that use Python to simulate the brain, focusing on Nengo, which was used to build Spaun, the largest functional brain simulation to date.
The brain is the most impressive computational device that we know about, and yet is just a collection of simple computational devices called neurons. Its power comes in the sheer number of neurons, and the even sheerer number of connections between neurons. Historically, trying to simulate the brain meant trying to simulate an individual neuron accurately. Early simulation programs were implemented in C or C++, with custom scripting languages. I will show how Python bindings to these programs have made them significantly easier to use. I will also show more flexible tools for low-level simulation written entirely in Python, which have made brain simulation even easier -- it's possible to simulate thousands of complex neurons on a typical desktop computer! However, this is quite far off from the human scale of >100 billion neurons. How can we ever hope to reach this scale? Some research groups have created specific hardware to simulate neurons. These are called "neuromorphic" computing devices, and the creators of these chips have also turned to Python as a way to program their chips to run brain simulations. At the University of Waterloo, we have been working on a new approach to scaling up brain simulations, and a new Python package to support that approach. Instead of focusing on biologically accurate neurons, we focus on how to connect neurons together such that they can compute interesting functions. Functions that we've implemented so far include recognizing digits in images, controlling a simulated arm, gambling, and solving a simple test of cognitive ability. I'll show how Python allows us to quickly simulate brain models that carry out these functions. I will also discuss how Python allows us to use those biologically accurate neurons, and even to take advantage of neuromorphic hardware, by only changing a few lines of code.