Artificial Intelligence

 

Primary goal: To attain immortality by coding up an AI with all my thoughts, beliefs and values to be me after I die.

Secondary goal: To set myself up as world emporer using an army of robots, colonise space and have an awesome DVD collection.

Tertiary goal: To aid humanity... using an army of robots.

 

Plan of Attack

  1. Make a fish.
  2. Make a smart fish.
  3. Make a dog.
  4. Make many dogs.
  5. Make a robot army.
  6. Conquer the world.

 

Step one: Make a fish. Make a very simple 2-D world with replenishing food. The fish needs to move and eat to live. The AI (a fish) will have basic sensors and a way of moving. This is a simple but first good step. The AI learns passage of time, motives, controlling stuff (in this case, its tail and mouth), remembering stuff.

 

Step two: Make a smart fish but still in the same simple 2-D world. The fish will need to be able to make higher level abstractions of the world. It should be able to construct any concept that a human can. Enrich its world a bit with objects, goals and maybe a need to make and use higher-level concepts. Perhaps explore the idea of giving the fish commands and hints so that it understands interaction and language.

 

Step three: Enhance the world. Make it 3-D and introduce physics. Give the fish brain a dog's body with legs, mouth (i.e. grabber) and more sensors. Perhaps experiment with other bodies, such as those with wheels and arms.

 

Step four: Make many dogs. The AI needs to learn to interact with others of its own kind to achieve goals, perhaps even developing its own language.

 

Step five: Actually build a physical body. Get it to wash dishes, fetch newspapers, do my housework.

 

Step six: Sell them. Become insanely rich. Enslave humanity and then eat cake and watch DVDs.

 

Simple Read-World Uses

 

An AI would be easiest to make if it could be self-funded.

 

Ideas for selling an AI:
  • Traffic optimisation systems (watch approaching cars, pre-empt traffic lights).
  • Other optimisation systems, e.g. power stations, production...
  • Self-driving anythings - cars, trains, automated flying vehicles, mini automated courier bots, ...
  • Spam filters.
  • Programming aids.
  • Code optimisation?
  • Driving tracters (e.g. ploughing), planting, harvesting.
  • Factory work - production-line stuff.
  • Defence forces, e.g. automated recon.
  • Cleaning (e.g. Roomba).

 

Implementing AI

 

Like a brain

 

An AI would have a similar structure to a human brain:

  • visual, auditory, sensory memory (i.e. 1ms - 1s duration before knowledge is GCed), like device driver buffers.
  • working memory...? 7 items, kind of like a computer's bank of registers.
  • short-term memory (1s - 100s before knowledge is GCed), like a computer's main RAM.
  • long-term memory, like a computer's hard disk.
  • other parts of brain - hippocampus, cerebellum, lobes etc... look up these on wikipedia.
  • sleep - i.e. long-term GC, combining recent experiences to search for new ideas.

http://en.wikipedia.org/wiki/List_of_regions_in_the_human_brain

 

 

Statements and thoughts

 

  • "thoughts" are encoded as logical statements.
  • "Thinking" involves using an evolutionary algorithm to separate useful thoughts from useless thoughts and create conclusions from thoughts.

 

Multi-valued logic could be used. Each "thought" is a statement that has a certain amount of truth associated with it. Aspects of truth of a particular statement include level of truth (0.0 -> 1.0), certainty of truth (0.0 -> 1.0), usefulness (0.0 -> 1.0).

 

The level of truth is the amount of truth that can be applied to a statement. For example, referring to a chair, the statement "this is a chair" is likely to be quite near 1.0, whereas while referring to a tree stump, the level of truth would be lower. This concept of level of truth may or may not lead to a valid logical system; usually examples refer to a particular object's classification rather than to complex logical expressions. In such a case, the level of truth refers to the likelihood of something belonging in a particular set.

 

The certainty of truth of a particular statement is the error margin present. If a statement has been made with no accepted facts to base it on, the certainty would be zero. If a statement can be verified using accepted facts, then the certainty of truth would be higher.

 

The level of truth and certainty of truth can form two dimensions and can be plotted as a line on a graph having level and certainty of truth on its axis.

 

Alternatively, probabilities could be used, with confidence intervals (e.g. P(x) = 0.7 +/- 0.2).

 

The AI forms a database of statements. Each statement has metadata about it such as it's level of truth, certainty etc. These form the beliefs of the AI. Other metadata associated with each statement will include links to other relevant statements (for searching), how that statement was derived and when.

 

Metadata about a statement could include:

  • What the source of that statement is (deduction from a list of other statements, direct observation, heresay from a person at a particular time).
  • When that statement was derived.
  • The truth value and certainty of that truth of that statement. Would this be a probability distribution?
  • The usefulness and certainty of usefulness of that statement.
  • Links to other statements that would be good for considering next to solve a particular problem (i.e. adding search heuristics to statements).

 

Metadata about a statement would be stored in other statements that can also be reasoned about.

 

Deduction

 

Examples of deduction include:

  • If it walks, talks and looks like a duck, then it's a duck. Or a bird.
  • If I do this, that happens (i.e. discovering cause/effect).
  • If this happens after that, then this probably causes that.
  • If I think in this manner or search down this tree of knowledge, I'm more likely to find an answer.

 

Classification

 

The AI will need to do classification. Many statements would be of a the form a(x)^b(x)^c(x)->d(x), where a, b, c and d are properties of x. An example of this statement is "if it walks like a duck, talks like a duck and looks like a duck, then it's a duck". The classification algorithm looks for patterns and similarities between experiences to be able to re-use knowledge and apply aspects of one experience to another. TODO: how is this classification algorithm going to work?

 

Reflection

 

Reflection is important. The AI must not only be able to work with direct statements, but also use the same algorithms it uses to draw conclusions from statements to work with metadata about those statements. The AI must be able to reason about it's own thinking processes, thoughts and thought patterns.

 

Usefulness

 

An evolutionary algorithm being applied to logical statements must have some heuristic for determining the usefulness of a statement. Each statement would have metadata about it's usefulness. Usefulnes would again have level of usefulness and certainty of that usefulness - i.e. how useful a given statement is, and how certain I am of that "usefulness value" I've assigned to that statement. One method of determining usefulness to increase the usefulness of a statement every time it is successfully used to attain an end goal (and thus a reward). Useless statements are pruned and forgotten. New statements are also made and evaluated (with usefulness set to 0.5?).

 

The AI should be persistent. It's memory is retained indefinitely and it applies knowledge learned from past experience to its current situation.

 

Actions

 

Doing things: evaluating certain special statements will cause the AI to perform that action. The AI should evolve the level of usefulness on statements to make the evaluation algorithm only evaluate these statements when the AI has chosen to do so. Initially, the AI will look like a spasming duck, but will eventually evolve rules that give it some volition and control over what it does.

 

It would be good if the AI could also be manually coded in a way that also made it a logic-based programming language.

 

Training tasks for an AI

 

  • Sort this list.
  • Write code to sort this list.
  • Write an AI that can sort this list better than you can.
  • Find this element in a list.
  • Play naughts and crosses against me or another instance of yourself.
  • Play chess with me or another instance of yourself.
  • Goals in a 2-D playfield. The AI has several things it can do: move N / S / E / W, pick up something, drop something. Tasks include picking up a ball and putting it in a box, stacking things, making a line of objects.
  • Follow my English instructions. I provide English instructions telling the AI what to do, the AI can work out what these instructions mean to achieve its current goal.
  • Talk to me: repeat what I say (teaches passage of time).

 

Drawing conclusions

 

The AI needs to be able to draw conclusions. Examples include:

  • This technique that I've created (...) achieves this goal (...) with effectivity n.
  • Generalisation / induction: Every object I've seen with property y had property x, so every object with property y has property x (with probability n).
  • Standard logical techniques: direct proof, proof by contradiction, etc.
  • Creation of new concepts. Each concept is a logical statement. Statements contain objects (which can be other concepts) and properties of objects. This means that new objects and properties can also be created.
  • Unification, learning about persistence of objects. If object a and object b are very similar, then maybe they're the same object.
  • Temporal reasoning. Properties of objects may have different values for different values of time.

 

Example: sort this list: [ a d e b c ].

Objects: ListItem, List, Movement

Properties:

    position(ListItem, position),

    timeOf(Movement, time),

    before(Movement, Movement, bool),

    size(List, size),

    sorted(List, bool),

    greaterThan(ListItem, ListItem, bool),

 

Actions:

    swapPositions(Item, Item, ..time?..).

 

The AI would start by making random theories:

goodMove( move(before(a, d, false), ...), 0.5).

goodMove( move(size(l, N),sorted(...), 0.5).

...etc...

 

These theories would be manipulated using an evolutionary algorithm. The swapPositions() action would be randomly evaluated. When swapPostitions() is evaluated, the List is changed. When a reward is gained (when the "orderedness" of the list increases), it reenforces the steps of evaluation that it made to achieve that state.

 

The AI would also add its own predicates and theories. In this way, it can define new concepts for itself.

 

Random thoughts.

 

The AI could iterate over the scientific method - make hypothesis, gather evidence, draw conclusions. It would use statistics to determine probabilities of hypothesii being true.

 

I need to master Prolog.

 

What is needed is a "Turing Complete" sort of system for knowledge representation. A knowledge representation system is "Gulik complete" if it can represent anything that humans could express, and be able to be worked with (by rewriting terms) to potentially produce the same conclusions that humans would. Substitute "intelligent being" for humans if you want. How would you express this concept in more detail? How would you prove it?

 

Reading material

 

http://en.wikipedia.org/wiki/Dempster-Shafer_theory

http://en.wikipedia.org/wiki/Epistemology

http://en.wikipedia.org/wiki/Bayes%27_rule

http://en.wikipedia.org/wiki/Bayesian_inference

 

http://nars.wang.googlepages.com/gti-summary

Cédrick Béler is porting NARS to Squeak: http://blog.summer.squeak.org/2008/05/opennars-port-to-squeak-using-seaside.html

Wang's Ph.D thesis on NARS has the most info, and valuable references to other research. Start reading at page 100 (chapter 6), then go back for theoretical explanations.

 

 

Artificial general intelligence Research Institute: http://www.agiri.org/wiki/Main_Page

Singularity Institute: http://www.singinst.org/

An afternoon's light reading: http://www.yudkowsky.net/bayes/bayes.html

 

 

http://www.opencog.org/wiki/Main_Page [opencog.org]

http://www.agiri.org/OpenCog_AGI-08.pdf [agiri.org]

http://justingibbs.com/how-to-make-singularity-bearable-in-its-infancy [justingibbs.com]

http://www.innergybv.biz/blog/?p=175 [innergybv.biz]

http://ieet.org/index.php/IEET/more/goertzel20080620/#When:22:49:00Z [ieet.org]

http://xlaurent.blogspot.com/2008/06/opensim-for-opencog.html [blogspot.com]

There's a number of GSoC projects for OpenCog currently underway also:

http://code.google.com/soc/2008/siai/about.html [google.com]

 

http://aima.cs.berkeley.edu/ai.html - more links than I could ever imagine.

 

 

(Comment from somebody on Slashdot:)

I think the Deep Belief Networks of Hinton et al are way ahead of Numenta.. in that they are real science with measurable results that has been reproduced by multiple implementations. The 2006 paper that started it all and Hinton's presentation on google video:

http://www.gatsby.ucl.ac.uk/~ywteh/research/ebm/nc2006.pdf [ucl.ac.uk]

http://video.google.com.au/videoplay?docid=228784531481853811 [google.com.au]

A formal analysis:

http://www.cs.utoronto.ca/~ilya/pubs/2007/inf_deep_net_utml.pdf [utoronto.ca]

Application to natural language processing:

http://www.cs.swarthmore.edu/~meeden/cs81/s08/DahlLaTouche.pdf [swarthmore.edu]

http://www.machinelearning.org/proceedings/icml2007/papers/425.pdf [machinelearning.org]

Reproducing Hinton and extension to and evaluation in other domains:

http://www.machinelearning.org/proceedings/icml2007/papers/331.pdf [machinelearning.org]

Use in Computer animation of facial expressions:

http://aclab.ca/users/josh/downloads/pubs/23_Susskind_Hinton_Movellan_Anderson.pdf [aclab.ca]

Most impressive:

http://www.cs.utoronto.ca/~ilya/pubs/2007/aistats_multilayered.pdf [utoronto.ca]

A C++ implementation (although it has much Python love):

http://plearn.berlios.de/ [berlios.de]

So yeah, there's some pretty good demonstrations of how powerful DBNs are.. Numenta is lagging behind.


Page Information

  • 2 weeks ago [history]
  • View page source
  • You're not logged in
  • No tags yet learn more

Wiki Information

Recent PBwiki Blog Posts