# Thought as a Graph

I’ve been reflecting on my thought processes for quite a while now. The conclusions I’ve come to are interesting, I think.

In the 1970’s and 1980’s, according to Wikipedia, conceptual graphs were being discovered and developed. A conceptual graph is simply a graph where the nodes represent concepts and the edges represent connections between them. This strikes me as an intuitive and elegant representation of knowledge. It certainly meshes well with the introspection I’ve been doing. We can also apply this to neural networks. Neural networks can be viewed as a directed graph where the nodes represent the aggregation of concepts and the edges represent the strength and direction of the relationship between two aggregates. While I’m not an expert in neural networks or concept graphs by any means, that these two ideas mesh so well on an intuitive level leads me to believe that I’m on the right track.

My own thought processes seem to echo these ideas as well. When I find myself solving a problem my approach is straightforward. First I identify the desired solution. Second I take stock of my starting position. These solutions and starting positions are simply a set of nodes in my personal concept graph I keep in my head. In fact the solution and the starting point each get their own individual concept with connections to their constituent concepts. Having identified the two relevant concepts in the problem the next step is to find a solution. This is done by means of finding a path between the two nodes. The way this manifests externally is via a period of intense information gathering. It’s not uncommon to see me flicking through files or websites like mad when debugging a code problem. Eventually I end up with a flash of insight as the starting and solution nodes connect and I am able to see how they relate to each other.

I’m curious as to whether or not this is a correct model. It certainly *seems* to apply to my consciousness. I can’t say for certain if it applies to others. I can say that I’ve been unable to come up with a psychological process that I couldn’t fit into this framework. That neural networks can be viewed as a variation on this idea also leads me to believe that I am on the correct path. To work towards the end of determining if this is correct I’ve decided to try encoding this model in a computer program. Of course, if it is a correct model then I’m essentially working on creating an artificial general intelligence. That’s both exciting and terrifying to think about.

My initial efforts do seem promising. One of the observations I’ve had so far is that this model will need to be taught just like you might teach a child. You must start from the fundamentals and progress using the building blocks you’ve already taught. If this is accurate it could have a number of implications. It could make it easier for teachers to practice their teaching methods so they can communicate ideas more efficiently. We could snapshot a graph like this at various stages, essentially snapshotting something like a mind as it progresses through the developmental stages. Programming one of these programs would become akin to teaching, except it would have perfect memory.

In my next post I’ll go into some more of the technical details about the program I have written so far. Including some of the known hurdles and technical challenges.