You may be wondering what TFNN is – it stands for Temporal Frame Neural Network, an artificial intelligence project of mine to accurately simulate the biological brain. Sadly, I haven’t worked on it in a few years for a number of reasons – reasons that were good at the time (and I wouldn’t change, the whole learning experience thing), but ones that aren’t so important now.
What the Heck Happened?
Jumping off topic a bit, but relevant to why I’m starting back up again, I realized a few weeks ago that I’m not really happy with the way my life is going. I mean, don’t get me wrong, overall things are great and I’m doing okay, but there is definitely something off. There are a few reasons, but one of the biggies was I was always doing things I felt obligated to do and never did things for fun anymore. I was always taking on a project to advance somehow, and never did it for the art or to enjoy it. I was always working hard, but honestly not really wanting the outcome, so it would never really go anywhere. I’m not a business man – I don’t like or want to play the game (There’s another article in here about not always turning your hobbies into something you get paid for, but that’s for another day). There’s nothing wrong with being a business man mind you – I’m just not one.
So I made the decision to just stop worrying about “succeeding” in these classic ways that are good for some people, but not for me. I learned something big from Shredz64 – I will never make any money off the project, but I had an incredible amount of fun doing it, and I have made so many connections with people because of it – it’s just amazing. I want to keep doing that all the time – I want to make things – not worry about marketing or selling them – I just want to create and share. I’ll save the rest of my thoughts for another post, but the bottom line is, I’ve already started working a ton more on my projects and I’ve been much happier because of it.
Back to Virtual DNA
SO, that being said, I recently made a 10 hour drive to and from Toronto, and it gave me a lot of time to think. Some of that thought was dedicated to the TFNN project. While the “neurophysiology” of the TFNN works great on a neuron and connection level, the overall issue remains in how those synaptic connections are made. Their configuration. Biology has a great thing going for it with DNA that controls neural development – during the neurulation phase when the neuroectoderm forms a lot of things happen, but at the end of the day through migration, axon paths and some other tricks, neurons are placed into their proper locations and form appropriate connections. Regardless of the nature vs nurture argument, there is definitely prewiring that is done. It’s the reason why a cat will never develop the ability to speak Romanian and why rabbits breathe without being trained to do so – it’s millions and millions of years of neurological evolution packed into a double helix.
Therein lies the problem – I have the materials with TFNN, but no blueprint I can use to construct something. I can make very small and specific networks, or very large, random ones, but neither of those will accomplish the goal of creating animal intelligence. So a blueprint is needed. Life has DNA, but what does TFNN have?
Use Real DNA?
My first idea to conquer this issue (as outlined on the project page) was to use some of the sequence databases that are available online – there are a couple species that have a very full nucleotide sequence documentation available. I won’t even bother mentioning all the reasons why this was never going to work, because the biggest reason is, I’m not a molecular geneticist, and while I have a good understanding of how DNA works, I don’t come close to having enough understanding to use DNA sequencing information to form a TFNN. It’s another project that I would love to start one day to build my understanding of the process, but not right now.
Let the Turing Machine Do What it Does Best
What I decided on the car ride was instead of using real DNA, it would be more realistic (relatively speaking) to create a virtual (accelerated) environment where evolution could take place and form virtual DNA. The TFNN already has rudimentary functionality for building neural networks from a list of instructions, so this is doable. Here’s the very lofty plan:
- Flesh out the matrix class inside of TFNN to construct neural networks as defined by encoded, segmented bit sequences. This will be some work but I have a good idea of how to accomplish it. There are already class members that control size, synaptic density, geography, and even connection specific formation within the neural matrix – the bit sequence needs to drive these member functions. The purpose of something encoded like a bit sequence as opposed to human readable scripts is to allow for easy engineering of mutation capabilities necessary for evolution
- Find a lightweight, open source graphics/physics engine. There are a few of them out there for games – it doesn’t need to look good or even come close to being the most advanced one available, it just needs to support a number of attributes common to our world such as mass, gravity, displacement, etc. The key is lightweight as possible, we don’t want to eat up CPU maintaining the world, we need all the cycles we can get for TFNN processing
- Engineer a method of recharging a lego NXT robot (Bit, my little LEGO robot will be the subject in these experiments) that can be initiated and completed by the robot itself. There are a number of ways to accomplish this, something tactile is preferred to force movement. Something like a magnetic connector with DC current. It would also need to produce a distinct stimulus to indicate it was a source of “nourishment” so to speak, such as producing an audible tone at a specific frequency .
- Create a VDNA (virtual DNA, easier to type) sequence to form a neural network that dictates motor control to guide robot to its “feeding station”. It doesn’t need to have any logic outside of a straight path for the source. I’ve created simple neural networks like these before and it is doable.
- Within the physics engine, model an environment that very simply and basically models a real world environment. The goal is by no means to have every possible physical scenario that could exist in the real world, its to offer enough obstacles and stimulus that evolution can take place, while using obstacles that are common to the environment the robot will operate in. Also include feeding stations
- Build an engine to generate instances of TFNNs using VDNA sequences and process them. Connect them to virtual robots modeled after the NXT lego robot and place them in the virtual world. Also include functionality to take the VDNA of a specific instance and spawn a new instance of the virtual robot. We could do this asexually or start with a neural configuration that drives two robots to touch in a manner that shares VDNA for virtual reproduction – I haven’t decided on this one yet. Regardless, new VDNA is subject to random mutation or corruption in the bit sequence
- Build in parameters that cause death in the virtual robots as well as prevent premature reproduction – most importantly that reproduction doesn’t take place if nourishment isn’t obtained.
- Run this simulation until results are obtained
- Take VDNA from successful virtual robot, generate instance of TFNN, connect to Bit and watch the fun
I can’t complain about being bored, that’s for sure – I will post here as I go. It may lead nowhere, but I’m extremely interested to see the results – even if it completely fails, it will still be fun science.
Eh… how much time would this take till “results are obtained”?
http://www.stellaralchemy.com/lee/vce3d_related_projects.html
Links to a number of similar projects, esp the Golem Project, which basically decided that mere CPU power isn’t enough to explore the complexities.
Hyq – absolutely no clue on how long before results are obtained, evolution of the TFNN’s VDNA is the heart of the experiment, it might take anywhere from days to years to never. But I
would suspect it would give good data to see how effective my method of encoding neuralation driving DNA would be.
Hey Seth – thanks for those links, I checked out a few of them, including the Golem Project one. Very interesting stuff, I love seeing these different projects that deal with virtual e
volution. It will be interesting to see how the results differ just dealing with neural network evolution starting from a basic design.