The dual SOM idea is good, but it turns out that the data just makes the SOM difficult to optimize. I’m not sure if I will be able to calculate a new second SOM fast enough to recalculate one for each dream.
Here is the memory field and U-Matrix for the primary (75×75) pixel SOM:
Here is the corresponding secondary (30×30 unit) SOM (trained over 15,000 iterations using linear decreasing functions):
Notice the organization of this second SOM (trained only on the images stored by the first SOM) gives an impression of the structure of the memory that is very similar to the SOM trained on the whole data-set using linearly decreasing functions.
So it appears this dual-SOM method gives static data-set quality results from a continuous feed of new data. The next question is how to train the SOM over 15,000 iterations (or perhaps more) in under 1min. An approach is to store a concatenated histogram for each image stored by the first SOM, and train the second SOM directly on those hists. These hists could be stored as numpy buffers, and dumped directly from python into ann_som.
Another question is the dreaming. Now there are two SOMs, one that is highly organized, the other more like a staging area or very rough organization. Do dreams only propagate through the second SOM, or both? One SOM would provide a highly abstract free-association, where the second would be more concrete. Perhaps associations propagating through these two SOMs simultaneously could correspond to Gabora’s associative and analytical modes of thought.