Rich_Morin

Rich_Morin

Interactive testbed for cortical modeling?

Following up on Notions on AI and Elixir, redux, I’ve been speculating about what an interactive testbed for cortical modeling might look (and act) like.

In Media for Thinking the Unthinkable, Bret Victor discusses and demonstrates how interactive, symbolic, and visual modes can act in concert to aid in thinking. If you’ve never watched this talk, please do so now (I’ll wait…).

Although realistic modeling of the Neocortex isn’t currently (and may never be) practical, a spherical cow model might still be useful as a testbed:

The spherical cow is a humorous metaphor for highly simplified scientific models of complex phenomena.

Details

The human neocortex contains ~200 billion neurons, but only ~150K cortical columns. So, we could model each column as a (BEAM) process. If need be, subsidiary processes could be used to handle finer details.

Although the neocortex isn’t rectangular, we could use rectangular data structures to aggregate overall state. For example, a 400 x 400 tensor could contain data on 160K columns. This data could then be presented visually (e.g., one pixel per column).

Given this visual approach, optical character recognition (OCR) might be a useful test case. Generating test data (e.g., rasterized and/or distorted renderings of fonts) would be easy, making this a good fit for supervised learning.

With appropriate support infrastructure (e.g., for recording and playback), users might be able to explore various data sets, modeling approaches, etc. (And a pony…)

In any case, that’s more than enough speculation for now. As always, helpful comments and suggestions are welcome…

First Post!

polvalente

polvalente

Nx Core Team

Here’s two opposing thoughts that popped in my mind when thinking about process usage with Nx in mind.

  1. On one hand, because there’s no isolation requirement, it would be more natural to just model each cortical column as a plain data structure, without any processes involved. BEAM processes bring with them some overhead when dealing with message processing, meaning that if a given cortical column process needs to communicate with more than a single process, we can’t have concurrency.

  2. On the other hand, EXLA would block the GPU device when dealing with processing anyway, so serialization would happen at some level. So we could use processes to calculate things in a “game tick” fashion, where the whole network is updated at the same time (and thus, in a single or fewer-than-the-default batches).

  3. Processes would also allow for easier distribution of the network over a computing cluster.

  4. I’m also thinking that each column could be it’s own artificial neural network (or similar) computation.

All of this might just be deep learning with extra steps, but the whole idea piqued my interest

Most Liked

GES233

GES233

I followed this from another topic because I did think about some idea similar, but mine is still naive, and the idea is far from being realized because of my current major.

If I remember correctly, a cortical column is a group of neurons, recording from a single column can emerge extremely complex behavior from many layers of neurons. Therefore, I think it would be best to set the modeling level to be more specific, such as a cell or even sections of the cell membrane(soma, axon, dendrites and synapses), in my original idea.

CPU-intensive tasks such as calculating membrane potentials or ion concentrations in next-tick can be left to Julia or Rust. The task related to send pulse to related node or remote node if a neuron in action potential can handle by BEAM well.

The original trigger to give me the idea not some computation-project in elixir like Nx, but rather the following three things from biology view:

  • Only a few of neurons are in activate state
  • The monomers are connected in a mesh structure (I didn’t understand the concept of “graph” in programming when I was in high school)
  • Diversity of monomer morphology(different type of neurons has different type of neuro-transmitters or ion channels)

From this perspective, in my opinion, it’s better to build a generic simulation or emulation platform, the next step is set a level and delve in.

Finally, I’m not a native English speaker, so please correct me if there are any factual or grammatical errors.

Where Next?

Popular in Discussions Top

scouten
I’m looking for a host for the server part of a small (personal) side project that I’m working on. It’s currently written in Node.js and ...
New
jesse
Hi everyone, I hesitated to post this here because I don’t want you to think I’m spamming, but I’ve been working on a Platform-as-a-Serv...
New
AstonJ
I’ve just started the Phoenix part of the utterly brilliant online course by @pragdave. On generating the Phoenix app he uses the --no-ec...
New
MarioFlach
Hello, I want to share a project I’ve been working on for a while: https://github.com/almightycouch/gitgud Background Some time ago I ...
New
lucaong
Hello Elixir and Nerves community, I have been working for a while on an open-source embedded key-value database for Elixir, that I call...
230 14403 124
New
eteeselink
Hi all, In the last days, two things happened: A blog post titled “They might never tell you it’s broken” made the rounds. It’s about ...
New
matthias_toepp
I’d love to hear what people think about Wisp, the new Gleam web framework started by Gleam’s primary creator Louis Pilfold. Gleam, alon...
New

Other popular topics Top

gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New

We're in Beta

About us Mission Statement