Efficient Encoding Example
To make this more concrete, consider the example shown below (from the DeepMind dSprites dataset). An input is a single image from the gif consisting of 4096 individual colour values. The goal in this case would be to output the exact same colours after having squeezed that information through the bottleneck in the centre.
We can see that this is possible if the middle values come to encode information such as type of shape, size of shape, orientation of shape, and position of shape. If I told you that the shape was a square, along with its size, location, and rotation, then it should be possible to recreate the image. The bottom half of the network learns to encode the high level information. The top half of the network has the job of reconstructing the image. While in practice there are many challenges with getting such an encoding, it can theoretically be done. The low level information of many individual colour values has been converted into high level information such as type of shape and location.
Not only is it possible to build a system with a moving up in hierarchy, but it is an active and fruitful research area in current machine learning.
Considering Components of the System
This time, I'll switch the order and discuss the ability to reference components of the system first. Remember that again, the loop in question is between an agent, its actions, and its observations from the environment. For it to count as a strange loop, the system must contain encodings that are about the possibilities for action which are then used in determining the course of action. This way the high-level understanding can reference itself and also feeds back into the low level system (via interaction with the environment), closing the loop.
There are many proponents of the view that our experience of the world (and under my account, therefore also our underlying model) is built up from the possibilities we have for interaction, as opposed to inherent properties of the world itself.2 I won't repeat their arguments here. Instead, I present an interactive experiment that may help demonstrate this view, and also argue that just as it applies to us, it applies to AI systems learning to interact with their environment.
I am currently working on an AI system that learns to predict its environment by interacting with it. One early result is that it is much more efficient to learn the results of interactions than the properties of the environment itself. The way the system learns about the world is deeply rooted in the ways it can interact with it. It is easier to build a model of the interactions (and how the change the environment) than to build one of how the environment changes by itself.
To following experiment will (hopefully) demonstrate this [now updated version with extra features added in my follow-up post]. You should see a grid of randomly changing colours. However, there is some element of the grid that is not purely random. At first, it should be tricky to see anything but random noise. You may think you notice patterns in the randomness, but (hopefully) it will hard to be sure if any are real. By using the 'wasd' keys ('w' = UP, 'a' = LEFT, 's' = DOWN, 'd' = RIGHT) you can control the non-random part of the pattern. Hopefully, by interacting in this way, it will be much easier to decode the non-random component of what is mostly just randomly changing colours.
So, look for a short while to see if you can spot the non-random component. Then start using the controls ('wasd') and hopefully it will become clearer. After you've played around with this for a bit continue to the next paragraph.
[Do not read on until you have tried the demo.] The non-random component is a single black pixel. You can control its movement with the 'wasd' keys, and it will move in straight lines with occasionally turns if you do not control it. If everything went as planned, it should be easy to see it when it's being controlled, but harder otherwise. Perhaps this seems obvious, but then the point is made.
Perhaps you noticed another element of the pattern? There is also a white pixel that moves identically to the black one. You can control it with 'ijkl'. If this experiment went exactly as planned then you didn't notice it until now because your interactions did not have any effect on it.
Obviously, this is a very unscientific demonstration that does not control for potentially influencing variables. Its explanation also relied on extensive use of the word 'hopefully'. However, hopefully it helped get the point across. It's much easier to notice patterns in data that are based on interaction. My theory is that when we build systems based on interaction with their environments, then any high level representations they learn will naturally be the action-based type needed for strange loops.