06-May-18 HHR

I have read again through the source code of the GNG-U (Growing Neural Gas with Utility) algorithm of Bernd Fritzke, as I am (probably) using it as a basis to render a video for the upcoming Anemone Actiniaria "minute concert". Using it for reconstructing moving image is interesting, but also yields a performance constraint, as with 8K nodes, each frame takes around three seconds to calculate (before applying processing to the pixels). I saw a few things that could be optimised in the code, but also the reading "re-presented" the workings of the algorithm to me again. It is quite compact, and I'm thinking of reimplementing it, so I can start changing some of its behaviour.


When I read this line again:

// Accumulate utility
curr1st.utility += (nextBestDist - bestSqrDist);


… it occurred to me that an essential aspect to the algorithmic that we have not clearly identified yet is the interface between humans, in the sense of program code being artifacts written by someone and read by someone else (we have recently discussed the potential of "open source" being a fallacy if nobody can actually read and make sense of somebody else's code). Perhaps not as "exegesis" or hermeneutic undertaking, but while preserving the constructivist stance. – Here is some translation of the concept of "utility" into a simple operationalisation; it could be different, but both the "concept" and the operationalisation are (only losely coupled) points of departure.

Growing Neural Gas:

May 2018

meta: true
date: 180506
author: HHR
keywords: [blog, development, neural gas, algorithm, video, image, nodes, code, implementation, open source, interface, algorithmic]
project: Anemone Actiniaria