By encoder-decoder I mean a way not only to translate raw input into (symbols&relations) but backwards too, in order to “make sense” of previously unseen input, by applying “decoding” to (symbols&relations) to generate hypotheses about what new input shows.
Hrmm… do you mean something like this (I’m not sure if you saw this page or not)? Semantic DB
Scroll down to the bottom of that page where there are a couple of examples of the predict-next, and fuzzy-predict-next operators.
The idea behind that page is you have some integer sequences, I chose some simple ones counting, primes, Fibonacci and factorial, and then you learn fragments of those sequences using an integer encoder (I used Gaussians for the encoder). Then after it has learnt all the “if-then machines” you input fragments of an integer sequence and it predicts the next few digits, or fuzzy predicts the next few digits. But it also tells you the name of which sequence it thinks it belongs too.
Let me include the output here. First, the predict-next operator that only returns 100% matches:
sa: predict-next |1 2 3 4 5>
100 % integer sequence: counting pattern: 1 2 3 4 5 next-1: 6
100 % integer sequence: counting pattern: 1 2 3 4 5 next-2: 6 7
100 % integer sequence: counting pattern: 1 2 3 4 5 next-3: 6 7 8
100 % integer sequence: counting pattern: 1 2 3 4 5 next-4: 6 7 8 9
4|results>
sa: predict-next |2 3 5 8>
100 % integer sequence: fibonacci pattern: 2 3 5 8 next-1: 13
100 % integer sequence: fibonacci pattern: 2 3 5 8 next-2: 13 21
100 % integer sequence: fibonacci pattern: 2 3 5 8 next-3: 13 21 34
100 % integer sequence: fibonacci pattern: 2 3 5 8 next-4: 13 21 34 55
4|results>
sa: predict-next |2 6 24>
100 % integer sequence: factorial pattern: 2 6 24 next-1: 120
100 % integer sequence: factorial pattern: 2 6 24 next-2: 120 720
100 % integer sequence: factorial pattern: 2 6 24 next-3: 120 720 5040
100 % integer sequence: factorial pattern: 2 6 24 next-4: 120 720 5040 40320
4|results>
sa: predict-next |2 3 5 7>
100 % integer sequence: primes pattern: 2 3 5 7 next-1: 11
100 % integer sequence: primes pattern: 2 3 5 7 next-2: 11 13
100 % integer sequence: primes pattern: 2 3 5 7 next-3: 11 13 17
100 % integer sequence: primes pattern: 2 3 5 7 next-4: 11 13 17 19
4|results>
sa: predict-next |9 9 9>
|Anomaly, no sequence detected ... >
Now the fuzzy-predict next operator, which gives fuzzy predictions:
sa: fuzzy-predict-next |2 3 5 7 11>
100 % integer sequence: primes pattern: 2 3 5 7 11 next-1: 13
100 % integer sequence: primes pattern: 2 3 5 7 11 next-2: 13 17
100 % integer sequence: primes pattern: 2 3 5 7 11 next-3: 13 17 19
100 % integer sequence: primes pattern: 2 3 5 7 11 next-4: 13 17 19 23
87.1 % integer sequence: fibonacci pattern: 2 3 5 8 13 next-4: 21 34 55 89
87.1 % integer sequence: fibonacci pattern: 2 3 5 8 13 next-3: 21 34 55
87.1 % integer sequence: fibonacci pattern: 2 3 5 8 13 next-2: 21 34
87.1 % integer sequence: fibonacci pattern: 2 3 5 8 13 next-1: 21
72.6 % integer sequence: counting pattern: 2 3 4 5 6 next-4: 7 8 9 10
72.6 % integer sequence: counting pattern: 2 3 4 5 6 next-3: 7 8 9
72.6 % integer sequence: counting pattern: 2 3 4 5 6 next-2: 7 8
72.6 % integer sequence: counting pattern: 2 3 4 5 6 next-1: 7
72.4 % integer sequence: counting pattern: 3 4 5 6 7 next-4: 8 9 10 11
72.4 % integer sequence: counting pattern: 3 4 5 6 7 next-2: 8 9
72.4 % integer sequence: counting pattern: 3 4 5 6 7 next-3: 8 9 10
72.4 % integer sequence: counting pattern: 3 4 5 6 7 next-1: 8
68.3 % integer sequence: counting pattern: 4 5 6 7 8 next-2: 9 10
68.3 % integer sequence: counting pattern: 4 5 6 7 8 next-4: 9 10 11 12
68.3 % integer sequence: counting pattern: 4 5 6 7 8 next-3: 9 10 11
68.3 % integer sequence: counting pattern: 4 5 6 7 8 next-1: 9
63.3 % integer sequence: fibonacci pattern: 1 2 3 5 8 next-3: 13 21 34
63.3 % integer sequence: fibonacci pattern: 1 2 3 5 8 next-2: 13 21
63.3 % integer sequence: fibonacci pattern: 1 2 3 5 8 next-1: 13
63.3 % integer sequence: fibonacci pattern: 1 2 3 5 8 next-4: 13 21 34 55
58.5 % integer sequence: primes pattern: 3 5 7 11 13 next-2: 17 19
58.5 % integer sequence: primes pattern: 3 5 7 11 13 next-1: 17
58.5 % integer sequence: primes pattern: 3 5 7 11 13 next-3: 17 19 23
58.5 % integer sequence: primes pattern: 3 5 7 11 13 next-4: 17 19 23 29
57.3 % integer sequence: counting pattern: 5 6 7 8 9 next-3: 10 11 12
57.3 % integer sequence: counting pattern: 5 6 7 8 9 next-4: 10 11 12 13
57.3 % integer sequence: counting pattern: 5 6 7 8 9 next-2: 10 11
57.3 % integer sequence: counting pattern: 5 6 7 8 9 next-1: 10
55.6 % integer sequence: counting pattern: 1 2 3 4 5 next-2: 6 7
55.6 % integer sequence: counting pattern: 1 2 3 4 5 next-4: 6 7 8 9
55.6 % integer sequence: counting pattern: 1 2 3 4 5 next-1: 6
55.6 % integer sequence: counting pattern: 1 2 3 4 5 next-3: 6 7 8
50.7 % integer sequence: counting pattern: 6 7 8 9 10 next-2: 11 12
50.7 % integer sequence: counting pattern: 6 7 8 9 10 next-3: 11 12 13
50.7 % integer sequence: counting pattern: 6 7 8 9 10 next-1: 11
50.7 % integer sequence: counting pattern: 6 7 8 9 10 next-4: 11 12 13 14
40|results>
sa: fuzzy-predict-next |9 9 9>
83.5 % integer sequence: counting pattern: 8 9 10 next-2: 11 12
83.5 % integer sequence: counting pattern: 8 9 10 next-3: 11 12 13
83.5 % integer sequence: counting pattern: 8 9 10 next-4: 11 12 13 14
83.5 % integer sequence: counting pattern: 8 9 10 next-1: 11
78.5 % integer sequence: counting pattern: 9 10 11 next-2: 12 13
78.5 % integer sequence: counting pattern: 7 8 9 next-3: 10 11 12
78.5 % integer sequence: counting pattern: 9 10 11 next-3: 12 13 14
78.5 % integer sequence: counting pattern: 7 8 9 next-2: 10 11
78.5 % integer sequence: counting pattern: 9 10 11 next-4: 12 13 14 15
78.5 % integer sequence: counting pattern: 9 10 11 next-1: 12
78.5 % integer sequence: counting pattern: 7 8 9 next-4: 10 11 12 13
78.5 % integer sequence: counting pattern: 7 8 9 next-1: 10
60.3 % integer sequence: counting pattern: 10 11 12 next-1: 13
60.3 % integer sequence: counting pattern: 6 7 8 next-2: 9 10
60.3 % integer sequence: counting pattern: 6 7 8 next-4: 9 10 11 12
60.3 % integer sequence: counting pattern: 10 11 12 next-4: 13 14 15 16
60.3 % integer sequence: counting pattern: 10 11 12 next-3: 13 14 15
60.3 % integer sequence: counting pattern: 10 11 12 next-2: 13 14
60.3 % integer sequence: counting pattern: 6 7 8 next-3: 9 10 11
60.3 % integer sequence: counting pattern: 6 7 8 next-1: 9
52.3 % integer sequence: primes pattern: 7 11 13 next-4: 17 19 23 29
52.3 % integer sequence: primes pattern: 5 7 11 next-3: 13 17 19
52.3 % integer sequence: primes pattern: 7 11 13 next-3: 17 19 23
52.3 % integer sequence: primes pattern: 5 7 11 next-4: 13 17 19 23
52.3 % integer sequence: primes pattern: 7 11 13 next-2: 17 19
52.3 % integer sequence: primes pattern: 5 7 11 next-2: 13 17
52.3 % integer sequence: primes pattern: 5 7 11 next-1: 13
52.3 % integer sequence: primes pattern: 7 11 13 next-1: 17
28|results>
One final note, I am a week or two away from an alpha release of a GUI version of the project.
See here (note the most recent code is in the working branch): GitHub - GarryMorrison/SemanticDB4: A graphical user interface for the Semantic DB
And another final thought. I have tried some ideas for MNIST several times. Either SDB is not suitable for MNIST, or I am not smart enough to work out how to apply it!