The Collaborative Human Interpreter, or CHI, is based on a group of people tackling small problems in their combined goal to help solve a bigger one. (The same approach is being successfully used by the Wikipedia, the task being to write an encyclopedia. 20 Questions uses a related approach to "AI". The methodology of distributed computing is also related.) The CHI will make best use of a global real-time brain to emerge.
CHI would need a centralized Collaboration Controller, or CC, which handles the input and output mechanisms, as well as understands a script in CHI language to run. Every single problem in CHI is however being solved decentralized. The script doesn't need to know this in detail, as it will rely on software handling the collaboration (sending and receiving messages).
What CHI needs to work is a large group of people online at the same time, with a median of say, 100,000. Every individual of this group commits a certain amount of time everyday to help CHI by renting his individual capacity. There could be monetary rewards in the sense that people pay to use CHI, and what's being paid is equally distributed among CHI helpers.
A CHI program is broken up into a variety of private and public sub-tasks to be interpreted. A private sub-task can be automatically calculated by the CC (like a math calculation, "What is 1 + 2?"). The public sub-tasks cannot be calculated by the CC (like "Does this image contain a lot of red?"), and must be calculated against the CHI. These sub-tasks may not breach privacy.
Public sub-tasks are answered by CHI helpers who are exposed to questions in a web browser. They may click a yes or no, click on a part of an image, type in some text, or select from a multitude of choices (these input mechanisms can all be handled by [X]HTML forms).
There may be dynamic setting handling security in terms of valid answers; a basic configuration of 3 would be enough (only if 3 selected CHI helpers answer the same, will the answer be considered valid).
Each CHI snippet exposes itself as web service. The CC machine thus is a web server. It can be fed its input, and it gives REST output. These are the syntax details of the centralized CC mechanism. The actual intelligence lies in the collaborative, decentralized approach of CHI.
Here are some lines of CHI, as this best illustrates the idea. This is a simple program solving a math calculation:
function getMathAnswer(string mathQuestion) person mathExpert = findExpert("math") string mathAnswer = mathExpert.ask(mathQuestion) return mathAnswer endfunction
First, the program would receive the "mathQuestion" via someone accessing the CC web service. The CC would then find a person "mathExpert". It would be doing so by asking people – the 100,000 given helpers – if they're an expert at math. The CC would stop as soon as it finds 2 experts (this is the security setting to pragmatically rule out invalid answers). Once the "mathExperts" are found, they will be asked the question. If they do not know the answer, the program will try again. (It depends on the configuration how often it will do so before returning an empty answer, also a possibility.)
Here's another CHI example, this one is a subfunction (it will be called inside the program, not via a web service). It simply gets the time difference between two dates:
subfunction getHowLongAgo(time oldTime) time currentTime = cc.getTime() person mathBeginner = findBeginner("math") time howLongago = person.ask _ ("How long ago?", currentTime, oldTime) return howLongago endsubfunction
A math calculation, or date comparison, mostly can be handled by normal computer languages already. So let's take a look at a more complex problem, of comparing two images and seeing if they are alike:
function getImagesAreAlike(image image1, image image2) group anyone = find() boolean alikeAnswer = anyone.ask _ ("Are these two images alike?", _ image1, image2) return alikeAnswer endfunction
While this function returns a very definite answer – a boolean yes or no – it does calculate its result in a very fuzzy way, by asking the whole group (it depends on the configuration how many are actually asked, 100 may be enough). If this problem needed to be solved in a traditional programming language, large parts of the code would just be defining "alike", which stays intentionally undefined in CHI. The question asked is a human one, and the answer is a human one, albeit a collaborative human one. In this way, CHI makes true use of a global brain.
Another CHI snippet tries to answer natural language question posed to a search engine:
function getAnswer(string question) group anyone = find() array categories = cc.getAvailableSkills() string category = anyone.ask ("What category is this question?", _ question, categories) person expert = findExpert(category) string answer = expert.ask(question) return answer endfunction
This CHI snippet tags web pages with 5 meta-keywords. Note only if several people choose the same keyword will it be used:
function getTags(url webpage) for number i = 1 to 5 string tag = "" while tag != "" person anyone1 = find() person anyone2 = find() string tag1 = anyone1.ask _ ("What keywords fits?", webpage) string tag2 = anyone2.ask _ ("What keywords fits?", webpage) if tag1 == tag2 tag = tag1 endif loop next endfunction
So CHI is the programming language to query the global brain.
What does CHI need to come alive? It needs both the large group of people willing to donate some of their time helping CHI, as it needs someone who writes the CC. Right now, it needs people to analyze the idea, reject or optimize it, and then spread it. I know the blogspace is a kind of CHI, a global brain, doing this well already.
Related: CHI Image Sorting.
Update: Half a year later, Amazon implements this.
>> More posts