Monday, October 5, 2009

Thoughts, ideas, and progress

Finally figured out a way to do something I wanted to do in VB.net. So now my rudimentary mouse/keyboard control is working. Nothing fantastic at the moment. Still a lot of work to go.

Leads me to think about a whole lot of different things though. I've been wondering how to teach a computer anything. With enough effort, I could write everything I ever wanted into the program, but that is more effort than it is worth. It is much more worthwhile in my opinion to code the program so it learns how to do things on its own. Ahh... into the wonderful realm of artificial intelligence. So I've come up with an idea. Tell me what you think.

I've realized that much of human life is very routine. Very little thought is actually required to perform most of what we do. We can sleep walk through the day without making a single complex decision. At my job, I find that a computer program, or perhaps a robot, could probably do my job better. It could be just as personal, if not more so than me. My job sucks anyways.

With life being so incredibly routine, then I have to wonder how I could write a program to get a computer to perform every single action that I perform. It's all fairly simple. Most are just a combination of known actions performed in a set sequence to accomplish a specific task. In other words, I perform a few different actions in the right order to complete the necessary task. Showering, shaving, driving, navigating, eating... it's all the same thing every single day.

Now how do I get a computer to do this? I'm working with two different ideas. The first is post-action analysis of random action selection. Did that make any sense? I suppose not. Let me explain it to you. Normally, an artificial intelligence decides what it is going to do before it ever does anything. Take the master chess computers. It maps out a list of possible actions, and compares those actions to a table to see which action will perform the best based on pre-programmed knowledge. Eventually, be it from exhaustive examination or the timer running out, the computer makes a decision. Humans don't learn that way, or at least they don't in their early years. We do not examine every possible consequence of every single action before we ever make a decision. We make a decision, and evaluate the effects of the decision afterwards.

So that's the basic idea. My idea is to randomly select from a list of possible actions, perform that action, and then continue doing so until the computer either gives up because it did not randomly select the right answer in enough attempts, or it succeeds. Now it may take a few dozen attempts, but you will come up with a correct answer.

If you run that last algorithm enough times, you will come up with the most efficient answer, based on the number of moves. You then equate that list of moves to producing that result. Now that is the easy part. Here's the hard part.

Create a goal-based system, with the purpose of building a list of actions that produce successful results. Start with simple actions that are easy to perform, and then perform them many times. Once the computer has decided that this action produces the proper result, you give it a slightly harder goal, and do it all over again.

See where this is getting difficult? Though the actions we perform on a daily basis are horribly routine, we spent years learning to perform those actions in those specific ways to get the proper results. We as humans have refined our techniques in ways that we barely understand and don't even remember doing.

Now imagine trying to teach someone. Not just any someone, but a newborn baby. Because that is essentially what we are dealing with. Teaching a two day old baby is completely out of the question. So what do we teach it? We initially teach the baby motor skills. Somewhere afterwards, a light goes off in the babies head and off they go, charging down the hall as fast as their chubby legs and horrible balance will take them.

So here I have two problems. How in the world do I code a goal based system in VB.net? Secondly, how do I turn the subject matter into tiny bite sized pieces so a computer will eventually learn to perform the actions I want it to. In effect, how do I teach it to learn?

Saturday, August 29, 2009

Creation is fun

Creation is a wonderful thing. Especially when you are in the midst of creating something that is both mind numbingly simple and complex at the same time. While playing World of Warcraft, I realized just how repetitive most of life can be. Very little is put into complex decision making in most of our actions. It's something that a machine or a program could do just as well as the average human can.

Now the idea of this is quite simple: write a program that can replicate simple series of instructions. In essence, do a lot of the stuff we do. Seems very simple. I just ran into a lot of problems in actually building the thing. I actually think I've got a decent hang on the idea of how to build much of this, but it requires quite a few different subsections and complex parts. One of those parts is an input automation section. Faking computer input is more complex than it seems, but the SendInput() function does all this quite well, assuming I'm filling in all the correct sections. Hopefully, in the next few days I can test the dll I'm building purely for mouse/keyboard control out and start integrating that into the rest of the program. One complex problem down, a dozen more to go.

Luckily, I have ideas on how to do the rest of it. Ideas, mind you. Some revolutionary, some mathematical, and some quite simple. It's just a matter of figuring out whether my ideas are capable of bearing fruit, and in the end will do what I want it to do.

The only problem I truly face is one that has bogged down people for years. Although much of our actions are very simple, the reasoning behind those actions is not. We learn a vast amount of information in our formative years, far beyond what any computer has ever been capable of producing. Question is, can I get a computer to learn the way a child does? Now there is the million dollar question.

Saturday, August 8, 2009

On government

I was thinking about this a little while back. A slight examination into the nature of government, concerning the how's, why's, and what-nots. So I decided to do a little research, and it leads me to believe that United States is not a constitutional democracy. I'm more inclined to believe it is something akin to a plutocratic oligarchy.

A plutocratic government is a government composed of the wealthy class.
(http://en.wikipedia.org/wiki/Government)

An oligarchy is a government ruled by a small group of people who share similar interests or family relations (ibid). Seems this is more accurate than the definition of constitutional democracy. That is, a government composed of representatives who are voted into power by the citizens.

More on this thought later, or after I get off work.

Friday, August 7, 2009

Vagaries and randomness

I suppose I should write something gigantic and vacant to declare the creation and importance of this. I think I just did.

Perhaps I will add more after I get off work.