Wednesday, December 17, 2008

Artificial Intelligence: An Overview

Artificial Intelligence(AI), many people hear the term and are optimistic, others shiver in fear of an uprising of machines, others still are completely overwhelmed by the knowledge necessary to understand such things.
In this set of articles i will try to provide a background and a small amount of knowledge on AI for a beginner, like myself, to grasp a better understanding of.

As humans had lived on earth for a longer time, technology was created, and eventually we had the creation of the computer. Then as home computing grew larger, the base for AI grew, and research on the subject of AI exploded.

So where are we now? Well, there are currently many implementations of AI. By implementation, i mean there are many different methods one can use to perform artificially intelligent calculations. The main implementations i will be discussing in this series will be Knowledge Bases, Hierarchical Temporal Memories (HTMs), Neural Networks, Evolutionary Algorithms, and Genetic Programs. This is subject to increase as my knowledge on this subject also increases.

Artificial Intelligence is really having a computer solve a problem for you. For instance, any time you use a calculator, you are using AI. Lets say you want to find the slope of a curve y=x2+3x-7 at point x=4. You type the equation into the calculator, and you tell it to find y'(4). It outputs 11, which is your answer. This is a simple example of AI. We have given the calculator knowledge of simple math, and when we provide it a problem, it calculates the value of the answer. Now, most people wouldn't consider this true AI, but in theory this is AI.

I just said that we gave the calculator knowledge of how to do simple math. This demonstrates a fundamental concept of AI. A computer must be given knowledge initially before it can start doing calculations. How would a computer decide to randomly turn on a circuit, then another, then another, to consequently perform a calculation. It cant, so all AI must start with some base of knowledge. Related to the idea of how you must provide knowledge, it the "AI ratio" which is essentially, how much knowledge you provided vs. how much intelligence by the computer is put out. Deep Blue, the chess playing computer, was programmed with thousands of possible scenarios that could arise in a game of chess, and then all it really did was found which scenario to use during each game of chess, so Deep Blue would have a very low AI ratio. Whereas, the Numenta Platform, which is the only HTM platform that currently exists, has a relatively few number of algorithms to provide a extremely large output that includes visual and audio recognition systems, which most would agree are alone very much more complicated then the game of chess. So the Numenta platform would have a relatively high AI ratio.

Now we should discuss the types of problems that AI is used to accomplish. Right now, most of the AI implementations are dealing with mathematical problems such as an equation for the amount of thrust to output for the most efficient landing of the Moon-Lander. This is purely mathematical. You may be thinking about vision recognition systems, but those too fall under mathematical calculations because we can represent the picture as a matrix of values corresponding to the color of each pixel. So since a computer is digital, the real problem is getting information digitalized.

This is the biggest problem why we do not have good systems dealing with language recognition. Currently we have systems that look for specific sets of symbols, namely, the little chatbots used by AIM. They look for a specific word and they respond to it. But do they really understand the word?? The answer is no, they dont. They only see symbols that are in a certain order, they dont associate the symbols h-a-p-p-y with a feeling inside a person telling them that they have done good and are proud of themselves or someone else. To try and get a computer to understand language, we need to be able to teach a computer how to digitalize language, and the meaning of words. Right now there is one AI project that is trying to attempt this. Cyc, a knowledge base system, is trying to teach computers how to understand language. They are digitalizing the information using predicate calculus, and performing proofs to determine the relationship between two objects in the human language. This is one example of a knowledge base system, where they are giving the computer a data value for every word in the English language.

We have learned that one must learn to digitalize all information, and once this is done, computers can in theory do anything with that data.

In conclusion, there are many implementations, each with their own benefits. Different platforms will have different AI ratios. Also, currently most AI programs are dealing with mathematical functions and equations rather then language because of a difficulty in digitalized representation of language. This is a brief background to AI. In further articles, expect more detailed information and examples of specific implementations, and even more specific platforms withing each implementation to be discussed.

Friday, December 12, 2008

From My Cell Phone

Alright. So this is pretty cool! i can now blog from my cell. Haha. Im just emailing my blog really. Lol

Quantum Computers

So, Quantum Computers... what are they? Well to start of with the basics, they are completely different from classical computers. In a classical computers, you have "packets" of electricity representing a bit. Either a 1 or a 0. And then, using fairly simple electronic components, you can perform calculations on those packets of electricity. Now, with a quantum computer, the first thing to point out would be that bits have 4 states: 0, 1, 0+1, and 0-1. I will explain how we get four later on in the article. Another distinguishing factor is that in quantum computers, all calculations are performed, not by electricity, but by protons. Protons, as you know, are one of the three particles that make up an atom. Basically, you have protons inside a contained area and you perform calculations with them. So now, you're wondering about... well, a lot of things. Hopefully I will get around to covering all of them.

Lets take a step backward for a second, what is a quantum computer anyway? Well quantum interactions describe, essentially, the universe. Einstein tried to quantify all interaction within our universe under physical laws. His theory works on a larger scale, meaning interactions between humans, and planets, and galaxies, but to truly be the theory of everything in the universe, it needs to explain interactions between single atoms, and elementary particles as well. These small scale interactions are quantum systems. This does not mean that quantum systems only work on small scales, because if you can define what happens on a small scaly, you are understanding each and every interaction in the universe, it would make sense that you can see what the universe on a bigger scale is doing as well... I know I am not the best at explaining, so ask questions if necessary, and please correct if any information is wrong. So you say okay, i know what quantum means, why does that qualify our need for quantum computers? Well, classic computers do calculations based on standard physics, which can, but have an extremely difficult time emulating quantum systems. While quantum systems can easily emulate quantum systems, as well as standard physical systems. This is just like a square and a rectangle.... a square is a rectangle, but a rectangle isn't a square. Now I bet you're saying, why don't we just use quantum computers? This is because even though they can emulate everything, standard calculations are extremely difficult, because every algorithm used, needs to be written individually. So, 1+1 would be different from 8+2. A completely different algorithm would have to be used. Now, going back again, how are bits established, and how are bit operations performed? Bits are dealing with the rotation of the proton, this is where i am not sure of myself, because i studied quantum computers half a year ago. If i remember correctly though, the sensors can detect rotation of the proton along two axis, meaning a positive or negative spin, along 2 axis gives us four options. To change the state of a bit, high intensity lasers are beamed at the proton, and the energy from this light changes its spin.

This is where we really step into extremely conceptual stuff that makes even the greatest of physicists get a headache. If you were in a performing calculations, on paper, to determine the spin of a proton to keep it in a stable state, you would calculate that it is spinning forward..... and backward. You would go back and check your calculations, but everything would be correct. This is because it HAS to spin in both directions. But what is interesting is that any sensor trying to measure the spin will only provide one answer, and it is random which answer you will get (well, not random, but we will get to that later). You may be questioning why you are learning quantum physics, when in reality you are hear to learn about quantum computers. Well just bear with me because i promise this all ties in together. An example:

You have a block of wood, inside a vacuum, and for the sake of the example, this wood has no electrons or protons to add a small electrical charge to the air. So the wood is centered in the box, and in the wood, you have two holes that run parallel through the wood. The idea is that if you fire two electrons through the holes at the same time, their would be interference because they have electrical charge. And if you fired them 1 million times you would knowtice a patter, that there were certain spots they would NEVER hit.

You can see a small pattern starting to build



Now if you did the same thing, but only with one electron, through one hole (chosen randomly), you would expect no interference, but in reality it is still there.



Single electron shot, after time, you would start to see the same pattern.



You would see the same interference pattern. And that is because the electron is traveling through both holes and interfering with itself. Hard to understand, but take my word for it... now we say well, we want to know which hole it is really going through, since it can only truly be going through one. So we put a detector next to one of the holes. As soon as you do this, the interference pattern goes away, because you have quantified which hole it is going through, so it has to pick one. It cannot openly defy the laws of physics.

Now we get back to how this works with quantum computers. I stated that the single electron takes both paths through the wood. Imagine if you told it a task, like, at the end of one of the tunnels, its blocked, the other is opened up, and you ask it to tell you which is opened up, it can be fired once, travel through both at the same time and give you an answer where a classical computer would have to be fired two times. Now begin to imaging that we have 3 billion holes, and tell me, how much faster if a quantum computer going to be. Basically, if you haven't figured it out, a quantum computer always gets the right answer on the first try.

That is the basis of my knowledge, and I can tell you that is just skimming what else is known about quantum computers. I gained this knowledge through the book Programming the Universe by Seth Lloyde. I would highly recommend that book. Its an easy read, and once you start, you really don't want to stop reading it! Sadly, we are no where near close to having good quantum computers, and in our lifetimes, I can almost assure you that quantum computers will not be available to the average person. I doubt that they will even surpass our current classical computers in computing power in our lives. Hopefully i am wrong, but that is my opinion. Thanks for reading, and please comment!

First Post

This blog will be about pretty much anything that i find interesting and want to share with the world! Mostly about technology and such, but i may throw some other stuff in there too.