Monday, June 05, 2006

Call to the Programmer in 2006: Make computers understand people and programming will be easy (or Mental Augmentation)

Computation allows us to remember things we would have forgotten otherwise. It also allows us to share these memories. Computation allows us to create imaginary memories that might exist in the future, might have existed in the past, or could be a good explanation for what is happening right now. How do we make remembering, imagining, and sharing our memories easier?

How do the problems of individuality, society, and competitive evolution relate to easily accessed historical memories, imaginary memories, and the communal sharing of these memories?

Darwin's formal theory of evolution assumes that there are multiple species and that these species have individuals. The ideas of species and individual have been shown to be pretty fuzzy and they are becoming more fuzzy as we lose individuality through the communal sharing of computational power, one of our forms of intelligence. We are quickly losing the idea of species as humans have become the only specimen in their ecological niche; what does it mean to compete against another species, with which you cannot reproduce? The evolution of computation (memories and the thought process itself) has slowly started to move onto the Internet, where a world-language is evolving and computer languages are becoming very simple to learn and use.

Processing power over the next 20 years will not come from major advances in transistor technology, although quantum and biological computation have large promise. The problem of how to program these new types of computation still lies at the feet of the programmers, and I believe that these programmers will provide the computational power gains of the next 20 years--by rethinking computation and programming. Programming the Internet will not be solved by focusing on programming language syntax (e.g. Perl versus C versus Lisp versus Python versus Ruby versus C-sharp-dot-net-with-COM-and-templates). Easily programming the Internet will not be solved by providing more powerful function calls or great libraries of function calls. We need computers to understand humans. We need computers to be able to learn the goals of individual humans. We need computers that try to help. We don't need more computers that wait to be told what to do. We need computers that can tell when we are confused and that can provide additional data or offer mental assistance. We need computers that can infer our mental states. We need computers that know what we believe about the world and what we want out of life--our goals, desires, and beliefs. We need computers that know us as communities and individuals.

Saturday, December 17, 2005

Modularity requires using a hammer to find nails

In an evolving modular system of algorithms there exist new growth algorithms and old decay algorithms. Hammers are used to hammer nails. If it takes you a long time to build a hammer, and you are especially proud of the fact that you built the hammer, then you will look for nails to hammer with your hammer and because you are so excited to use your hammer, your search for nails will be occasionally interspersed with other things that are not nails, and for them your hammer does not work. This process of using hammers to find nails is a necessary part of the process of building modular systems. You do want to avoid the falacy of not constantly learning how to use new hammers, you will be rewarded by the number of already existing modules you can use in a system because if you use those modules (or algorithm packages) that are near you (default on your operating system), your module will not require the installation and loading of other modules, which makes the usage of your module more costly. Therefore, we must learn to use hammers to find nails in order to better learn to evolve modular systems of algorithms.

Friday, December 16, 2005

ToDo List

Have you ever made a todo list? Lists in general are a useful tool for dealing with a linear thought process. Lists that are composed of lists can be used to generate hierarchies, which are also a very useful tool for dealing with a hierarchical thought process; for example, a plan that consists of multiple steps that are each composed of substeps. I like to write computer programs that generate my todo lists. I tell the computer the important data to consider (such as the list of graduate schools to apply to with application due dates). With a little coercing, the computer will give me a sorted list of graduate schools to apply to (all of them happened to be due on December 15th so this program didn't actually do much in practice). I consider this to be programming my mental thought process. It would be interesting to see if programming interfaces could become so efficient and easy to use and learn that we all use this method of planning our large decisions (such as life plans). What keeps life exciting? The people at the center of this system. Government regulation of the types of processing that can be done within a person's own mind will become serious societal concerns if we don't think about these issues incrementally: privacy, security, and freedom for the individual.

Monday, October 03, 2005

The Brain Popper (or Brain Stack)

Imagine an operating system of human processing.

We are nearing a point in brain computer interface technology where in the next few decades we will see cosmetic brain augmentation technology. Today, BCI technology is to the point where we can feed visual and auditory information into the brain; retinal and auditory implants, while not common are becoming more common among the deaf as the camera technology is not yet low power enough to enable full retinal implants (currently requires cameras on glasses). These technologies are evidence of "input" technology, but more recently we have seen a rise in so called "output" technologies; humans are now being implanted with simple controllers that are activated by the motor and premotor cortices, which is to say, one can imagine moving a muscle and a prosthetic limb motor (or a computer mouse cursor) will respond. Currently, in order to read information out of a human brain, we must put a bundle of wires that each basically sense on the order of 10 neurons each, and in order to feed information into the brain, groups of neurons must similarly be stimulated by many wires. This limitation of information flow into and out of the brain has not allowed large portions of the brain to be "read" from or "written" to, but the implications of this ability will definately drive the research in this direction. The Brain Popper is one such implicated application.

The Brain Popper is a device that reads a critically large portion of the processing state of a person's mind state. This includes short term memory that one must "warm up" whenever they approach a new type of task, even if they are adept at this particular task. For example, this type of short term memory would include "riding a bike" or "driving a car" or "flying a kite" or "driving a remote control car" or "sorting bills" or "cooking lasagne" or "watching a TV show" or "reading email" any other task that one can imagine that takes skill and that one "mentally warms up" as they continue to perform the skill -- anything that can be interrupted and that takes some time to get back "into the groove". The idea in computer science terms is this: The Brain Popper keeps a stack of mental states that can be read and written to the working memory of an individual. The Brain Popper in common sense terms allows one to save one's mental state while performing a task, and then perform another task and then "Pop!" return to the first task with the push of a button without "warming up" to the first task again. Long gone is the era of distractions. If you ever get "into the groove" just hit the "Save" button on your Brain Popper and then you just return to that mental state whenever you want by the touch of a button. (In actuality, the Brain Popper only saves short term memory, so any changes in long term memory between saves and restores would not be accounted for, so saved states of mind would probably only work on the order of weeks or would need to be refreshed every week or so depending on how often the long term memory regarding the task changes).

Implications for "group think" and social processing strategies are only on the horizon. Feeding experiences from those on the forefront of human experience (frontlines of battlefields, outer space, old age, young age, or in general any experience that is difficult to communicate through language will also be an exciting brain read/write applcation.

Tuesday, September 06, 2005

Local cost gradient descent

The act of moving toward where we as individuals expect the life of lesser negativity to be. It can be assumed that information is communicated in order to nudge each individual person closer to an evolutionarily useful view of a situation. Information is communicated in order to improve individual survival and reproduction through the use of a distributed information processing social network. Those who could exchange information efficiently in this model were favored and [Q.E.D.] we are efficient information exchanging individuals within a social information process.

Thursday, July 28, 2005

Human Model

Models of humans and human societies will become more popular because they can be communicated at the speed of light to other societies for the informative collaboration within a galaxy, allowing relatively equal human interaction for any star.

Milky Way

Thursday, May 12, 2005

Recurrent Neural Networks

This has just dawned on me and it is exciting for some strange low level (but inspirationally high level but as yet unexplicable) reason: recurrent neural networks can model processes such as the belief propagation algorithm for markov random fields. The weights of recurrent neural nets can probably also be tinkered with in order to train a subnet within the network to learn a feedforward function. I guess this makes sense because it is probably a turing complete system, but this is still exciting to me for some reason. I think I need to play with finite state machines a little more so that I see that this same thing cannot be simplified to just bits and more basic programming ideas.