The human brain is the most complex object created by evolution in the known universe. Yet, how much of this complexity is devoted to exclusively carrying out its algorithmic capabilities and how much of it has been inherited from biological paths of evolution in order to work properly in its physical environment?
What if the information processing properties of the brain could be reduced to a few simple columnar rules replicated throughout the neocortex?
In this research project I seek for those principles by means of the elaboration of computational models inspired in the neocortex. On the one hand, the simpler the rules, the more repetitions of such rules are needed in order to get interesting -human like- behaviours -such as perception invariance. The mammalian brain -with its possible combinatorial states going beyond the number of atoms in the known universe- gives us categorical clues in favor of such a position. On the other hand, the more repetitions of those simple rules, the more computational resources are needed to implement the models.
I approached this endeavour trying to replicate human early language acquisition capabilities. I started with human early acquisition of phonotactic rules, specific to a particular language. I implemented a neurocomputational model whose biological inspiration -at the cortical level- allowed me to test neurophysiological hypotheses incorporated in the algorithms. With the desired number of layers, this model abstracted phonological features in a completely unsupervised fashion.
In a posterior work I tested the computational hypotheses previously used for phonetics, but this time, for the acquisition of grammatical features of words inside a sentence context by means of semantic clustering and sequential analysis inside the sentences.
The algorithms in our hierarchical cortical memory (HCM) are C++14 compliant, they are composed by a set of classes interrelated by inheritance and composition. The classes in the algorithms are parallelized by means of OpenMP -for the classes located at the bottom of the inheritance hierarchy- and MPI -for the classes at the top of the inheritance hierarchy. This implementation has the capacity of storing its outputs in Matlab and Octave file formats and it is suitable for the use of parallel I/O file systems.
This project received High Performance Computing (HPC) mentoring from Silvio Rizzi (HPC assistant at ALCF) and George K. Thiruvathukal (Professor of Computer Science, Loyola University Chicago). I have been provided with an Argonne Leadership Computing Facility Allocation whose project name is neurophon and all the code is allocated in a GitLab repository at Argonne. It is also allocated on GitHub. By means of Argonne staff assistance, we performed strong and weak scaling tests in Cooley nodes which returned encouraging results in terms of multi-threading (OpenMP), multi-processing (MPI) and as an hybrid implementation (MPI-OpenMP).