How robots think?
We have all seen robots in science fictional movies, where they have the ability to fight wars, be independent leaders, create new machines, and in fact behave more intelligent and stronger than humans. But why aren’t we hearing about such robots in the news or witnessing one of them before our eyes? Because, such level of intelligence is impossible to attain, in the current technological trend. All that we have created are, the robots that blindly listen to a set of commands and does specific tasks in factories; at times being directly controlled by a human. The more “intelligent” robots among the ones we have developed identify their masters, obstacles or definite vector lines correctly and provide a definite response to them.
These are all that our current day scientists have: A bunch of machines that automatize certain tasks traditionally known to have been taken care of by humans alone. Investigating on the question, “why can’t we create a robot that thinks like us?” Shows that the major limitation we have is designing a system that comprehends the huge amount of distorted and random information given to it as input. While we walk across a roadway, we observe many complex objects and navigate through without any trouble. It is almost impossible to gain such accuracy in an artificially intelligent machine. It would require months of dedicated time to create a machine that even does half of what we do while walking on the road. Robots think using decision making trees that have a definite response programmed for a particular situation they are provided with (and there are many other methods researchers use for this purpose). It is impossible to program all the possible situations to a robot, as it would take forever. So scientists use algorithms that learn (learning algorithms). These learning algorithms modify their response to certain situations presented to them so slightly each time, to make their response more adaptive and accurate. This is a one-sentence description to what learning algorithms are. But there is an intensive ongoing research on the field of artificial intelligence, so this makes it clear that such a brief description for learning algorithms is not enough, even for an article that targets common men.
So to talk about how robots think, we need to have a brief view on how learning algorithms work. There are many kinds of learning algorithms. These algorithms map immediate situations to the required or optimal response. Usually, such algorithms have methods for evaluating how well their response have worked (or how close was their response to the unknown and the hypothetical “perfect” response). This kind of function, that judges how well the response worked will be easier to create, rather than forming the response itself. Depending on how accurate the response was, the algorithm changes itself to make its response more accurate. It is quite complicated to think of an algorithm that alters itself. Practically, the algorithm just alters a value or a set of values that tune into how the program must respond to the situations. Now, this might seem more promising to be realized practically. Most of the times, the problem is not just how to choose the best response, but how to gain the information regarding the situation from the environment, without letting the white noise to influence the decision. It could be an image or a video footage or a soundtrack. Information directly grasped from the environment contains a huge amount of random errors; the same scenery photographed twice will never look the same (on a precise scale. Not for us humans, for computers that try match the two images head-on).
To understand this better, let’s see an example of a learning system. Let’s say that you want to develop a really good user interface for an Android application. And you have become so creative, that you want different people of different age groups to have different UI for the same application. Having five UIs, you have to make the system learn which UI most suits a particular user. So the information you get (and you need) is the age of the user, the user’s gender and the user’s location. Of course, you can prompt the user to give away more information, to make your program’s judgement more accurate. But to maintain simplicity, let’s just assume that each user is prompted to provide only these three pieces of information.
In this case, the “situation” is the set of information comprising of the age, gender and the location of the user. The “response” is the solution to the question which UI must be assigned to a user. When the user signs in, the information regarding the age, gender and location are obtained from him. Now, the system uses frequency of usage and the opt-out frequency (the value measuring how many of the new users the company lost moments or days after they started using the application) to measure how well the UI influences the user to keep using the application. But, if a person stops using an application it could be for any reason. It could be because he didn’t want the application anymore or he had installed the wrong application for his purpose. At the same time, the information entered by the user (his age, gender and location) could also be wrong, as not all human are truthful.
So how will the system manage such anomalies in the accuracy of the information provided? And how will the system learn which UI is best suitable for a particular person? These are the problems handled by a learning algorithm. Ones who are familiar with learning algorithms might have heard the terms “Neural network” and “Genetic algorithm” quite often. Computer science is a very new subject and it’s still in its early stages of development (though we have many fancy devices in the market). So we have to use the knowledge from other subjects, which have been developed by a human for several centuries to improvise this branch of study. So whenever possible, computer science learns by looking around. Just look at the ants and observe their marvellous coordination as a colony, to do the same with programs. Just look at birds and observe how they fly, or how selfish they behave while sharing their work while flying to design an intelligent computer program that imitates them. This is more like how Kung-fu was founded by looking at how snakes and the monkeys fight!
The same way, the Genetic algorithm was developed by looking at how species develop new features after many generations due to genetic mutation to adapt themselves to their environment. And neural network algorithm was developed as an attempt to design a system that more or less imitates how our brain works (though it is argued that it does not exactly resemble the functioning of our brain).
So to define the system, $f_u$ is taken as the usage frequency and $f_{out}$ is taken as the opt-out frequency. We have 3 parameters, the location, the user’s gender, and the user’s age. So the information provided by the user is a point in a three dimensional graph with each axis having a specific domain. Gender can only have two values, while age can range from zero to about one hundred and the location can be an integer value indexing each of the possible locations to it (like, each number is assigned a country, or state or city). It is more preferable to have the nearby regions, in the list of locations to have values that are closer to each other assigned to them.
The gender, age and location are plotted in X, Y and Z axis respectively. Let’s divide the X axis into two major parts; and let’s further divide Y into five parts (each part having a particular age range; for example the first range being the age group from 0 to 12 and the second range being from 13 to 19 and so on) and also the Z axis into five parts. So on the whole we have $5\times 5 \times 2 = 50$ unit squares. If each of these 50 unit squares have a set of 5 values, with each of these values showing the weight of the connectivity of that particular region to each of the five possible UIs. By altering these values we alter the probability of assigning a particular UI to a user.
Thereby, each region is mapped to each of the UIs. At any point in time, $w = \frac{kf_u}{k_{out}}$. So each time the user with a particular UI comes to use the application the mapping between the, region which the information he provided falls under, to the UI he uses gets strengthened. Each time someone uninstalls the application, the connectivity in the region under which the information he provided comes under (in the graph) is weakened. So if a new user starts using the application, our algorithm will know exactly what user interface to give him. So these weight values just act as probability weights in choosing a UI. For example, let’s assume that the information $i$ provided by a user falls under the region $r_i$. There are five values in the region $r_i$ each expressing the weight value of the connection to each of the five UIs. Let these five values be represented as $w_1, w_2, …, w_5$. $p_w(1) = \frac{w_1}{\sum {w_j}}, p_w(2) = \frac{w_1}{\sum {w_j}}, …$ and so on; where, $p_w(1)$ is the probability of choosing the first UI.
We have now seen how a learning algorithm can be used to make a choice out of five given choices. But in case of robots, the choices they would have to make will not be as simple as these. But fundamentally, this is how the computer takes decisions. It tunes its values based on what it observers and in turn, behaves accordingly.
People may say that it is impossible to achieve human-level intelligence in a computer, but we can’t know that for sure. Who knows, there might be a super-intelligent robot waiting for us in the near future!
copyright (c) 2016 K Sreram, all rights reserved.
copyright (c) 2016 K Sreram, all rights reserved.