Ask Slashdot: DIY Computational Neuroscience?
An anonymous reader writes "Over the last couple years, I have taught myself the basic concepts behind Computational Neuroscience, mainly from the book by Abbott and Dayan. I am not currently affiliated with any academic Neuroscience program. I would like to take a DIY approach and work on some real world problems of Computational Neuroscience. My questions: (1) What are some interesting computational neuroscience simulation problems that an individual with a workstation class PC can work on? (2) Is it easy for a non-academic to get the required data? (3) I am familiar with (but not used extensively) simulators like Neuron, Genesis etc. Other than these and Matlab, what other software should I get? (4) Where online or offline, can I network with other DIY Computational Neuroscience enthusiasts? My own interest is in simulation of Epileptogenic neural networks, music cognition networks, and perhaps a bit more ambitiously, to create a simulation on which the various Models of Consciousness can be comparatively tested."
It's open source, and integrates with Python and the whole SciPy suite. I'm not a neuroscientist, but I work in one's lab. I haven't used the software extensively, but it's installed on a Linux VM wasiting for some love while we work on other things. http://www.nest-initiative.org/
Those people who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)
It sounds like the "professional" is sick of his job.
Good start, now go do some formal study and get a degree. There's too great a risk, with self-taught people, for them to only expose themselves to the ideas that are appealing to them. Academic fields recognise this; you're not going to be ready to contribute to the cutting edge unless you put your ideas in the field up for reshaping by people who know more than you do, and that's a good thing.
For every problem, there is at least one solution that is simple, neat, and wrong.
Ignore the naysayers. Do what you love. As for programming, professionals have created more security nightmares than amateurs.
Model of Consciousness seems a bit ambitious. Something easy to measure and readily available is how to hit a baseball. A fastball is moving faster than your eyes can track it, so you have to create an internal model of where it's going and swing a mechanical system (your arm and the bat) at the right time and place to knock it into the stands. It would be interesting to determine what inputs the brain uses and model the control system.
The point of running all the simulations is to aid in the understanding of how neural circuits compute; they aren't all that useful outside a theoretical framework. Computational neuroscience heavily uses concepts from dynamical systems, statistical inference, information theory etc. If you want to figure out new ideas about how neural circuits compute or represent information, then some exposure to these topics is essential. On the other hand, if you simply want to play around with and/or tweak models built by others, good programming/debugging skills should suffice. The network simulators are basically tools that allow you test out theoretical models of computing (which inevitably result from framing the question in the mathematical/physical language).
Playing with these models can be a lot of fun, but don't expect to find some fundamental principle if you don't know what you are looking for -- i.e. w/o a theory.
I gotta agree with this.
You can do a lot on your own, and I personally don't see any reason why not to (unlikely a poster above, hey, if you write shitty code, I just won't use it - and it's not like there aren't plenty of neuroscientists writing shitty code because being a theorist doesn't make you a programmer.) But getting more exposure to other people's ideas and pointers to resources is going to do you a world of good. And you don't need much of a background if you have computer skills - people love volunteers.
I'd start looking at Itzekevich, and some of the more complex single neuron systems. (Partly because if you don't understand these, you're unlikely to understand a lot of the reasons why simpler neuron models with a lot more neurons are often a lot less useful than people want them to be.)
Have to run and teach a class, will try to get back to this later.
It's very noble to want to learn and to further educate yourself. But for the sake of the professionals in the field, I do encourage you to engage in your study and practice of this field in private.
I have a better idea. Completely ignore the above, terrible advise. While there is considerable value in doing your own work privately for a time, you need to communicate with others, if you want to improve your game. That means not just dumping code or whatever on the internet, but actually reading and listening to who else is already doing this sort of stuff. Keep in mind that most of your communication should be input - learning from others.
Months or years later, a disaster of some sort happens (a security breach, data loss, and so on), and a professional gets dragged in to try to solve the problems. This wastes the professional's time, which is often very expensive. It also angers them, because it's a problem that would have been unavoidable had the amateurs just kept to themselves.
Sounds like the "pro's" time isn't being wasted, if he's getting paid. And if you or anyone actually are "angry" over something this trivial, maybe you ought to find a different line of work.
So unless you're aiming to become a professional in this field, rather than just an amateur or a hobbyist
The only difference between a professional and an amateur/hobbyist is that the professional gets paid and tends to be a bit more knowledgeable. And that's the source of this friction between professional and amateur. The amateur is doing some of the professional's work for far cheaper. It's screwing with the professional's business model Keep that in mind when you read of professionals complaining about the amateurs.
Not affiliated at all with Coursera, but I noticed this free course the other day. Starts in January.
All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
I am not familiar with this particular academic community, but generally it is not easy for an academic to get data. The most useful resource is probably the co-operation of those who have gathered the data, and in order to get that you have to find out who they are. The inclination to be helpful varies immensely across disciplines and people within disciplines, but all you lose by trying to make contact is possible embarassment. Step 2 in the list below will give you a tag to use when introducing yourself, which may make you feel less awkward and therefore may improve co-operation.
I suggest 3 steps, in increasing cost, that are likely to help:
Mike O'Donnell http://people.cs.uchicago.edu/~odonnell/
I research hard AI. In my view thinking through and tackling example problems is the best way to explore a topic. If you require your system to mirror our current understanding of neuroscience, then you're essentially researching the algorithms of the brain.
If you're specifically looking into epilepsy and related, consider checking out William Calvin's website. He's an experimental neuroscientist from University of Washington, who wrote many books that explain the neurological foundations of the brain in readable form with good detail.
(1) What are some interesting computational neuroscience simulation problems
Pretty much anything AI falls under that category. Go over to Kaggle.com and check out some of their competitions, including their past competitions. Check out the Google AI lab and see what they're doing, and check out recent publications to see what people are trying to solve. Ask yourself: Are humans better than the computer, and can it be done better?
Here's a video of a system that uses neuron simulation (of a sort) to recognize hand-written digits. A hand-written digits dataset is in the UCI archive below.
(2) Is it easy for a non-academic to get the required data?
Generally, yes. UCI has a repository of machine-learning datasets. The researchers supporting Kaggle competitions frequently release their data.
I've found that researchers are generally approachable, and will give away copies of their data (I have 4 datasets from researchers). As a personal anecdote, last week a researcher from this very forum sent me his dataset of Mars altitude images - I'm trying to come up with an algorithm to recognize craters.
(3) I am familiar with (but not used extensively) simulators like Neuron, Genesis etc. Other than these and Matlab, what other software should I get?
In my view, pick a computer language that has a wide support network of libraries, and code things from scratch.Something like Perl or R. At some point you will want to break open the box and see what's actually happening inside, and familiarity with the system (having constructed it) is key. You will want to insert trace statements, print out intermediate results, and so on. Most of the pre-built systems don't have what you will ultimately want, and building simulation objects isn't terribly hard.
(4) Where online or offline, can I network with other DIY Computational Neuroscience enthusiasts?
Please let me know if you find any (by posting a response).
I've found that most AI enthusiasts are really "big data" enthusiasts, and most of them are all about business rather than AI. The IRC AI chatrooms are all but dead, and most of what is there are students asking for help with their homework. (Although to be fair, the lurkers there know everything about AI and can answer questions and make suggestions if you're stuck.)
The NEAI meetup in Cambridge is mostly spectators - people who want to find out about AI or how to use AI ("how can I use AI to improve the performance of my financial company?"). I hear there's an AI meetup out on the West coast that's pretty good.
See if there's a meetup in your area for something related, or start one and see if anyone shows up.
I have a recent PhD in neural computation, though from a functional cognitive and language modeling perspective, and not a neuroanotomical modeling perspective -- so it may be a different area than you're interested in. From a high-level perspective, neural computation has moved a lot in terms of scale in the past two decades (simulations can have millions of nodes), and it has moved a lot in terms of modeling the processes of individual neurons and neurochemistry. Very high-level functional mapping work has also moved a good deal with fMRI, EEG, and MEG becoming relatively inexpensive and very common techniques in cognitive experiments. One area that, in my opinion, has moved very little in the past 20 years is the ability for neural networks to learn non-trivial domain-general representations and processes, and to generalize from those representations and processes to novel (untrained) instances. In the late 80s, after connectionism had made return with Rummelhart and McClelland's popularization of the backpropagation algorithm and demonstration of its utility in a number of tasks earlier in the decade, a good deal of the literature demonstrated very basic limitations and failures of these systems to generalize to untrained instances, or to move away from toy problems. Fodor and Pylyshyn's "Connectionism and Cognitive Architecture" is a classic paper from that era, and Pinker wrote a lot language-specific criticisms as well. Stefan Frank has the most recent long-standing research program in this area that I'm aware of, and his earlier papers have good literature reviews that can further help guide ones background reading. There have been some limited demonstrations of systematicity with different architectures (like echo state networks), and comparatively little work on storing representations and processes simultaneously in a network, but so far these are long-standing and fundamental issues that need revitalization. When convincing demonstrations do arise, they'll likely not need more than a desktop to run, as it will be demonstrations in learning algorithms and architectures, not scale. For non-neural folks, classical neural network architectures are essentially very good at pattern matching and classification (e.g. being trained on handwriting, and trying to classify each letter as one of a set of known letters (A-Z) that it's seen many hundreds of instances of before), or things that involve a large set of specific rules (if X then Y). They're much less good at things that involve domain-general computation, that involve learning both representations and processes and storing them in the same system (i.e. let's read this paragraph and summarize it, or answer a question, or let's write a sentence describing a simple scene that I'm seeing). That's not to say that you couldn't make a neural system that did this -- you could sit down and hard-code an architecture that looked something like a von-neumann CPU architecture and program it to play chess or be a word processor, if you really wanted, but the idea is developing a learning algorithm that, by virtue of exposure to the world, will craft the architecture as such. The idea being that, after years of exposure, the world will progressively "program" the computational/representational substrate that is the brain to recognize objects, concepts, words, put them together into simple event representations, and do simple reasoning with them, much like an infant. I hope that helps. Of course all of this is written by someone interested in developmental knowledge representation and language processing, so it may be a completely different question than you'd wanted answered. best wishes.
So how about some examples, then? There are "so many cases", after all, so you should have no problem giving us 10 or 20 of the most convincing examples.
It would be more convincing if you limited them to contributions to well-established fields, as well. There's nothing impressive about basic discoveries made in the infancy of a new field of study, when EVERYBODY involved is essentially an amateur.
Richard Feynman is one of the few people to have decoded/translated a Mayan heiroglyphic codex.
He did this as an amateur without anything close to a related degree.
This kid discovered a new dinosaur,
Just google "high school student makes scientific discovery" or "college student makes scientific discovery" for a big list.
So where was that 'pro' when it was time to analyse the software for suitability? Either not there or too busy being all angsty and professional.
That would be nice if all applied to "professional" meaning someone paid and "amateurs" as people not paid for their work. But it only really applies if you redefine it or pull some no true Scotsman stuff, and define professional as being those that create high quality stuff and amateurs as those that take shortcuts or fall short of high standards for whatever reason. Then you are stuck with something quite trite, "Keep it to yourself if it fails the arbitrary/ill-defined/conflicting standards of other random people on the internet."
I would suggest professionals decide not to use the code from well-meaning but undertrained amateurs then. I mean the only way it would impact them is if the code is taken up and used. Outside of that, they are getting paid to do something specific and doing what you are hired to do was as far as I know, a hallmark of professionalism.
To amplify the above comment, as a neuroscientist with a computational background: don't try to go it alone.
There are a few reasons for this:
1) Research in the field is done by groups because the main problem in generating an 'interesting simulation problem' is carefully defining a scope and a target. That's really hard to do, and generally involves careful discussions between people with different knowledge bases and priorities. If you can't give a clear and succinct answer to the question "How, if successful, will this research advance the field?" to somebody like Larry Abbott, you aren't working on a 'real world problem.'
2) The state of the field is generally about 2 years ahead of the published literature. Unless you have collaborators who routinely attend talks and meetings, and know what people in your area(s) of interest are doing, it's very easy to wind up on the wrong track.
3) Modeling is only useful if it leads to experimental predictions that can be tested, and so needs to be part of an ongoing collaborative interaction between people collecting data, people analyzing it, and people modeling it. Without the entire loop in place, it's difficult to make useful contributions. Also related: outside of things like gene arrays, and a few other standardized approaches, most data in the field is collected by bespoke setups, so even understanding how to parse a data set requires interaction with the people who collected it.
So to answer the original questions:
(1) There are so many that it's impossible to specify. Very little computational neuroscience these days requires more than a workstation. You need to get into a collaboration to reduce the scope of the question for it to be answerable.
(2) It's probably easier than you think, but again it requires collaboration with somebody who's in industry or academia (the latter is probably easier). There are several people I know who informally collaborate doing neural modeling or data analysis with established labs. There are plenty of researchers who welcome informal collaboration, as long as it's competent.
(3) It really depends on who you wind up collaborating with, and the type of question. Neuron and Genesis are compartmental modelling simulators, which you'll only use if you wind up working with people on the molecular end of the spectrum (ie. figuring out intracellular processes). Most systems level work is done using Matlab (some Mathematica and Python as well).
(4) Get involved with non-DIYers. Find a lab to collaborate with! Go to SFN next year, and/or ICCNS/ICANNS/CoSyne/etc (see for example: http://www.frontiersin.org/events/Computational_Neuroscience). Go to posters and talk with people. If you see something interesting, ask if they'd be interested in collaboration.. or ask them your question (1). It'll probably take multiple attempts to find the right group, but there are a ton of groups out there.
Finally, I'd just like to emphasize that working on 'real world' problems in neuroscience (computational or not) is a time consuming endeavor. If you don't think you'll be able to devote several hundred hours a year at the least, it'll be hard for you to find tractable problems.