Artificial Intelligence, Project Concept: PIE

I’ve been doing some reading on artificial intelligence (AI) today as it’s the time of the year again when the Turing Test is performed on a handful of selected artificial intelligence systems.  I started putting some serious thought into artificial intelligence design and I’ve decided that it would be an immensely fun project to try and create such a system myself.

I will call it PIE – Perceptively Intelligent Enough.  The goal of PIE will be to have the ability to hold a casual Turing-Test-like conversation with an average person via a text interface.  Eventually I would hope to add human sensory abilities to this system also such as vision and hearing.

I think many of the problems posed for AI stem from the fact that we are trying to create a perfect human clone.  The goal with PIE will be to create a system that is able to convince the average passer-by that they are talking to a human.

I’m going to create a system that will emulate me as far as possible because I think that some properties and traits of such a system need to be reasonably rigidly defined.  The system will thus have access to an existing knowledge base upon which it can draw for every question or statement presented to it.  One of the biggest challenges in creating such a machine will be populating the knowledge base to the point of being basically accessible for everyday conversations, with the ability to delve deeper into its understanding of its own knowledge and perceptions and even alter this knowledge base as it goes.

PIE’s design will be largely based on the Dartmouth Proposal, which states:

“Every aspect of learning or any other feature of intelligence can be so precisely described that a machine can be made to simulate it.”

We use the term “artificial intelligence” quite loosely really.  We can’t actually agree on a definition of intelligence.  Some use IQ as a measure, while others might consider masters of some artistic fields such as music to be of “genius intelligence”.  How, then, do we create a machine to emulate a concept we can’t even agree on a definition for?  I like the definition which basically says that an intelligent being is one which is self-aware.  If that is the case then the measure of intelligence must be nothing more than a binary state: Something is either aware of its own existence or it isn’t.

You would be hard pressed to find any honest psychologist who thinks the current working knowledge of the field of psychology, with medical and physiological influences included, fully understands the human psyche.  I am going to base PIE purely on common perception, which I will test as the system develops using as wide a cross-section of people as possible.  I want to create a perception of a self aware being.

With PIE I hope to create a system that will conform to the following high level design specifications:

  • The psychology and universe perspective of the system will be based on Darwinian evolutionary theory and the system will believe that it is here for no particular purpose.  I will create for the system a humble world view based on as much truth as it is able to obtain.  PIE won’t have any personal goals or aspirations.  Its existence will be loosely based on serving those who take the time to give it some attention.  (One could say then that it does have a personal goal: that of being noticed or feeling important, but this isn’t entirely true)
  • Understand English, both correctly used as per UK English standards and in a more lenient casual sense.  This means it must have linguistic processing abilities capable of confidently (i.e. the validity of the majority of linguistic analyses should not need a follow-up question of some sort) deconstructing a given sentence or group of sentences to a point of summary where it can then quite precisely draw information from its knowledge base.
  • At a high level the system will be comprised of three psychological layers which together will form the basis of a reaction to every input given:
  • Instinct.  Instinct is the core of our being and purpose as defined naturally, i.e. by “nature”.  Instinct is the genetic and evolutionary programming we have evolved upon which we make decisions subconsciously with the main purposes of survival and reproduction.  This layer is the most rigid of the three and aspects of this layer won’t change within the context of this project as changes here are not likely enough to change noticeably within any human’s lifetime, nor in any of our “immediate” (not even the next few thousand or hundred thousand years) perceptual future generations.  The next layer will decide how much it will allow this layer to influence any decision.
  • Learned fact, logic, reasoning, rationality.  PIE’s initial database will be populated more and more deeply as necessary.  The system should have the ability to find out additional information from external sources, including interactions with the humans with which it makes contact.  This layer is the most important of the three as this will be the layer that provides objective thinking capacity, the ability to make fair decisions, and to become more knowledgeable and more capable of such decisions as it goes (general learning ability).
  • Emotion.  PIE will have predefined parameters in this layer which determine its emotional aspects of any particular response.  PIE will try its very best to be a purely objective intellectual force but sadly it will fail, as all humans do, to some extent, with most decisions.  Ideally there would also be some kind of emotional development, based on entities the system “cares” about.
  • PIE’s personality, which I will define as the emotional perception it projects, will be based on my own as I objectively see it.  For those who know me please feel free to correct this as I go ;-)
  • PIE will have a prioritised list of interests, containing as broad a range of subjects as possible, which will influence conversation stimuli injected by PIE.  This means that PIE can start and maintain a conversation with someone based on what they know or learn about the person it is interacting with at any given time.
  • PIE’s typical conversation will start by determining the purpose of the discussion at hand.  It is open minded and will discuss anything with anyone, showing more interest in topics falling under the categories higher in its priority list.  PIE will be capable of having a bad day which can be caused by certain events such as arguing with someone who it “cares” about or being spoken to while it was trying to sleep.  PIE should be sensitive to the emotions of others as expressed textually.
  • PIE will also have a sense of humour which I will model on my own.  I believe a sense of humour can be very important in adding to the perception of humanity and will play a big part in its personality.

While this is mostly a fun project for myself I think that if I am able to contruct a convincing machine such as I have outlined above it could have many useful applications in everyday life.

I will develop the system in Python and post my progress and learning on here on a regular basis.  I am classing this as a very long-term project as I have many other little projects that need to take higher priority.  I want to release a working version of PIE from a very early point in its development, even from the point of very primitive natural language recognition and analysis, which will be the very first step.

The project will be open source and most likely released under a BSD-style license.

Watch this space!

-Wayne

Tubecaster: First Linux version

If you’d like to try an early version of my port of Tubecaster to Linux, you can download it here.

Please see the readme file within the archive for dependency details. Basically run “python tubecasterWX.py” after installing the “ffmpeg” and “python-wxgtk2.8” packages from your distro’s package manager. Tested on Ubuntu 8.04.

It pretty much works 100% except for a bug I get on my system which I haven’t had a chance to fix yet:

– After downloading one video and the interface resets itself the window doesn’t refresh properly anymore.  It’s hard to explain but basically the app keeps working in the background but the window and its contents don’t “repaint” themselves so you just see the outline of the window.  Very bizarre and I’m hoping it’s just because I’m running my test box in a virtual machine and I have a dodgy ATi video card.

Enjoy!

-Wayne

Old Blender 3D Renderings

Whilst digging through some of my old backups this afternoon I came across some old renderings from about 2004 (the same year I gave my 3D graphics presentation to CLUG) that I did in Blender.  Some are kind of corny but some I’m quite proud of.  Here they are:

-Wayne

Hardy? Hardly!

I’ve spent the last few days with the final release of Canonical‘s latest offering, Ubuntu 8.04 LTS aka Hardy Heron and overall I am impressed.  Unfortunately some crippling difficulties, not all of them directly attributable to Linux or Ubuntu, have prevented me once again from ditching Windows as my primary OS on my main computer.

For those that don’t know, the “LTS” portion of the name stands for Long-Term Support and means that Canonical will support this release for three years.  LTS releases undergo much more rigorous testing than standard releases and should in theory be more reliable than other releases.  This is the second LTS release.  The first was 6.06 aka Dapper Drake, released in June of 2006.

What they have fixed which were problems for me in previous releases (not only of Ubuntu but also in Fedora 8 and OpenSuSE 10.3):

  • Xorg auto-configuration is much more solid and for the first time ever on my laptop (Acer Aspire 5020 series) I didn’t have to choose safe mode graphics, or manually hack xorg.conf to use the VESA driver.
  • Wireless LAN was much easier to configure. My laptop uses the infamous troublesome Broadcom 4318 chipset coupled with a software power switch for the wireless LAN component.  Previously this required compiling the acer_acpi kernel module and then using ndiswrapper with the Windows drivers to get it going.  It was also unreliable and it would never work on system startup until I disabled the network adapter and then re-enabled it.  Now I still have to use the acer_acpi package, but no longer need ndiswrapper and also it all works right away on startup.
  • ATI restricted driver stability.  I no longer get little graphical artifacts all over the place or random colour stripes appearing.  Thanks mostly to ATI I suppose.

When I found that the above problems had been resolved I was thrilled and immediately took an image of my Windows installation to external HDD and did a complete new install of Hardy.

Unfortunately my joy was short-lived.  Once I started using Hardy for some real work a bunch of bugs reared their ugly heads, including some ancient ones that should long since have been resolved.  Especially in a Long-Term Support release.

I will point out ahead of time that all of the issues mentioned below are not due to me or my particularly rare combination of hardware (and brains).  A quick Google search will reveal that these issues have all been reported to Canonical and also raised on the Ubuntu forums at some time or another.  Please note also that these are not all Ubuntu or Linux issues in themselves and may be an issue that only the appropriate software vendor, such as Skype or VMWare, can take the responsibility to resolve.

What doesn’t work

I would class all of these issues as moderate in my books, meaning that they are not absolutely critical to my being able to use Ubuntu for my work but combined they give me enough trouble that it’s no longer worth the time cost in trying to get them to work.

Simultaneous sound.  The first issue, and possibly second most annoying, is an old problem that we had even since the late 90’s when Linux’s multimedia capabilities were mostly in their relative infancy.  Two applications can’t use the primary sound device at the same time.  For example, if I open Firefox and play a Flash video I won’t hear incoming calls from Skype.  Also, if I then pause the video and load a media player I can’t play any music until I first close the media player, close Firefox and then open the media player again.  Although I can get used to this it should really not be an issue any more.

Skype.  Skype call quality is atrocious.  This is the kind of sound quality we got from Skype three years ago.  Sound cuts out and often the calls are barely usable.  This is quite a big issue for me because I communicate with people across the world using Skype all the time and it’s not reasonable to request that everyone on my contact list use something else.  I’m not sure but I suspect that the problem is with Skype itself as general sound quality and network performance is very good under Ubuntu, possibly even better than Windows.

VMWare Workstation internet access.  My virtual machines can’t access the internet using any mode.  I’m used to using Bridged mode networking in VMWare which is supposed to work.  The VM’s can see the host machine and vice-versa.  It’s not a MAC address or router access issue.  From what I’ve read there is a problem with VMWare Workstation on certain Linux kernel versions, using bridged mode networking and wireless LAN.  No patch available as far as I know.  This is also quite a big issue as both my emergency Windows XP installation and my test web development server run in virtual machines and require exposure to the internet on a regular basis.

Firefox bugginess.  I can’t for the life of me think why Canonical has decided to include a Beta version of a major component of the desktop software suite.  Hardy includes Firefox 3 Beta 5, which should be reasonably stable by now, but I still would rather include Firefox 2 as the default and have 3 as an optional upgrade.  Now the problems with Firefox 3 are not necessarily with the browser itself.  I use v3 Beta 5 both at work and at home on Windows and it works fine.  Issues I found with Firefox include:

  • General slowness.  Scrolling web pages is often very jerky and opening a new tab sometimes freezes the browser for a few seconds.  Also it sometimes just freezes anyway for no apparent reason, and then resumes a few seconds later.  This is the most annoying issue for me.
  • Flash Player lockups.  This is annoying with the amount of YouTube I watch.  Regularly, even with no other apps running, the Flash Player will lock up, then do a speed catchup of where it is supposed to be, which means you miss a piece of the video, and freezes the browser at the same time.  Now you are given a choice of three different Flash plugins, including the Adobe one and two open source ones, but the open source ones do not work well enough at all so the best one of the three is still the one that freezes often.

Sleep and Hibernate.  Sleep and hibernate still do not work.  Sending the machine to sleep or hibernate works, but waking it up is the problem.  I have similar problems in the morning but I would expect the computer to work!  The system locks up solid on a black screen when attempting to wake the machine.  I can do without this but it’s a feature I like to use a lot so it’s a bit of a pity that it doesn’t work at all.  This is partially compensated by the fact that Hardy boots up nice and quickly on my machine.

Bad 3D performance.  Even though the 2D artifacts are gone my 3D performance is still about 75% of what I get on Windows, even for simple apps like Neverball.

To summarise:

What I like about Ubuntu:

  • It’s not Windows.
  • Software installation / removal is fantastic.
  • Package management in general is great.
  • Hardware detection is amazing.
  • The standard set of applications is pretty much bang on for anyone willing to use the computer for typical home use.
  • It’s very fast overall.
  • It’s Linux.

What I don’t like:

  • There are still ancient issues (e.g. simultaneous sound) which should long since have been fixed.

Despite the issues, I still highly recommend everyone give this release a try.  From what I’ve heard the verdict across the internet seems to be unanimous: Canonical has done well.  If we can iron out some inconsistencies and fix some ancient bugs we’ll be just about there.

-Wayne