Archive for the ‘AI’ Category.

Compress Wikipedia, Win 20,000 Euros

 

Brilliant! The Hutter Prize for Lossless Compression (http://www.hutter1.net/prize.htm) takes as its challenge the task of compressing 100MB of Wikipedia text into the pre-competition best of ~17MB. The idea is that a chunk of Wikipedia text that big has characteristics relevant to compression that go beyond statistical analysis (i.e., “meaning”). The deliverable must be entirely self-contained, but it can be near 17MB in size in order to get in the money, so that’s a lot of space for generative code (there are no restrictions on runtime speed or memory consumption).

Makers of NaturallySpeaking Raising Expectations for Voice Recognition

NaturallySpeaking 9, coming out in August, claims to dramatically reduce the time it takes to model your voice, achieving the best-possible recognition soon after opening the box.

For some people, that best-possible recognition is said to be 99%. Maybe. I’ve probably gone throught the “voice training” process a dozen or more times over the years. Not only have I never achieved 99%, I’ve never achieved anything usable.

There are several factors: one is that “tethered to your computer, wearing a noise-cancelling headset, and watching the dictation in realtime,” is not appealing to me. The second is that when you make a typo you are off by a coupe letters and then you get back on track. When a voice-reco system fails, the error mode is a parlor-game chain of semi-homonyms “wrecks a beach” == “recognize speech”.

I’m ever optimistic, though. As a writer, I’d love to be able to do significant amounts of work using a digital recorder (PDA, smartphone, what-have-you) on the beach. I’ve even thought of trying out those lost-cost (human) transcription services. Maybe I’ll give that a shot this National Novel Writing Month.

Genetic Algorithms Outperform Humans In…

The Language-Action Perspective: AI is Impossible?

With all my AI posts lately, I’m sorry I hadn’t realized that the May 2006 issue of the CACM had a theme on the language-action perspective, a critique by Terry Winograd and Fernando Flores that dates from 1986 whose essential point the CACM summarizes neatly:

[S]killful action always occurs in a context set by conversations, and in the conversations people perform speech acts by they commit to and generate the action. Expert behavior requires an extensive sensitivity to context and an ability to know what to commit to. Computing machines, which are purposely designed to process symbols independent of their context, have no hopes of becoming experts.

It’s a cutting insight and goes, I think, to why expert systems, for instance, initially seem very exciting but, in the real world, generally fail to provide a lot of value. (They’re great for training operators, though!)

AI in 3 Months

Exploring Artificial Intelligence is an exciting prospect for non-professional programming (it’s a quite rare part of professional programming). Rather than criticize others for being On Intelligence) Architecture on Tic-Tac-Toe

Naturally Speaking 8 ), the underlying processing is still realtime (and, last time I checked, single threaded). This is foolish! I would love to take a crack at processor- and database/Internet-intensive voice recognition. For instance, rank every word-pair alternate via their Google distance (the # of Google returns for the word pair); use WordNet to create alternate parse trees from alternates; apply multiple noise filters to the input to see if the recognition changes; use the database of prior recognition for a dictionary, etc.

Note that I’m not talking about the actual transformation of a sound file into a text alternate — leave that to the existing, pretty easy-to-use APIs. I’m talking about primarily about intense post-processing (and, for the application of filters to the .WAV file, pre-).

For a short project, the focus would have to be very tight. There are two holy grails for this type of voice recognition: voicemail and in-car dictation. My idea would be the recognition of one- to two-sentence task-oriented utterances: “Pick up bacon at the store,” and “Call Bob back.” 

Generating Narratives

My hunch on consciousness is that it is a semi-continuous narrative whose form is generated by relatively hard-coded rules that interact with a “grammar organ” and whose subject is focused by subliminal processes controlling attention and intention. Obviously, I’m hand-waving huge problems relating to these subliminal aspects, but I think that between WordNet, Wikipedia, and Google, there’s a real potential for generating complex narratives, even while punting on the underlying intention. In other words, I think that you could at least win the Loebner Prize…

An Evolvable DSL For Poker AI

The program GS2 is favored to win the AAAI Computer Poker Competition in a few days. GS2 apparently dynamically develops its strategy based on game theory. An evolvable DSL that described poker strategies would be fascinating.

Evolving Teams for Fantasy/Rotisserrie Leagues

One of the nice things about fantasy baseball/football/etc. is that you have a task that’s driven essentually by statistics and chance, so you have a good chance at creating a system that could reliably beat poor human players. The task here would be to create a Learning Classifier System from which you could extract “good” rules.

Autonomous Blimpbot

Robotics are the new personal computers. If I had the soldering skillz, I’d love to create a self-directing robotic blimp: start with a remote-controlled blimp with a mounted camera, hack a digital controller (“miracle happens here” for me, but for other people, I’m sure it’s do-able), and go forth.

Evolving a Path-Finding Algorithm

Rick Strom has a nice page showing how he used genetic programming to create a path-finding algorithm. This is real genetic programming, which differs from a genetic algorithm in that GP evolves an actual behavior tree of (potentially) arbitrary size, while a GA evolves the optimal parameters for a complex but pre-existing function.

GP is generally less accessible than GA programming and virtually all GP code is implemented in LISP. Strom’s code is in C++ and thus may be appealing to a broader audience.  

Active Record as a Rule Engine

Snap! Ayende Rahein has shown how Active Record can be used to implement a rules engine. I’d had some thoughts about backward-chaining and LINQ lately as part of a forthcoming post, it’s nice to see some groundwork laid.

BTW, this is via Sam Gentile, whose blog is very high quality and who’s looking to increase his subscriber base. Definitely subscribe if you’re looking for high-end advice on agile techniques for advanced .NET development.

Apologies to the “Made in Express” Finalists

In an earlier post, I was thoughtlessly harsh about the finalists in Microsoft’s “Made in Express” contest. It’s come to my attention that at least several of the contestants felt insulted by the post. To them I apologize: I wish them nothing but the best and envy them their enthusiasm and involvement with such ambitious projects.

An Old Neural Net Programmer on Jeff Hawkins’ Model of Intelligence

An Old Neural Net Programmer on Jeff Hawkins’ Model of Intelligence

Monday, May 29, 2006

7:07 AM



>

 

 

 

 

There’s one big issue with the simplest possible 3-layer artificial neural network:

 



>

 

Created with Microsoft Office OneNote 2007 (Beta)
One place for all your information

Download: An Old Neural Net Programmer on.one

AI for Poker

AI for Poker

Sunday, May 28, 2006

9:28 PM

Daniel Crenna, one of the finalists in the “Made in Express” contest, felt I went too far in dismissing the entrants when I said their projects were unrealistically ambitious.  One of his co-finalists is a professor of robotics, Daniel is confident of his approach, etc. Okay. Why someone capable of writing, in a month or two, a realtime 3-D vision system in C# from scratch is looking to win a $10,000 prize is beyond me, but bully for them for doing it.

 

Crenna is developing a domain-specific (visual) language for poker robots. He says that he doesn’t intend to “advance the state of the art (not in this competition, anyway), but I will do my best to make what is currently available more accessible,” with a drag-and-drop interface. This is a worthy goal and not in the same realm of ambition that the 3-D vision system is. I think that it still lies in the realm of “if you can do this, you shouldn’t be giving it up for a $10K prize,” but that’s his business, not mine.

 

Modeling poker is a fascinating problem. I have just subscribed to Crenna’s blog and look forward to reading on his progress: I hope he’ll forgive me kibbutzing.

 

The thing about Poker, and Texas Hold-Em in particular, and Tournament Texas Hold-Em in double-particular, is that it brings the forefront the problem of modeling intentionality. First-order intentionality is when you look at your cards and say “I believe I have a strong hand,” (and therefore, I will play). That’s easy. The great thing about Texas Hold-Em is that while there’s variability in what cards will come up, the variability in what cards you have is very small and the importance of first-order intentionality is minimal.

 

A “poker intelligence” based on first-order intentionality would have a table of starting hands that are “likely to win” and bet on, say, A-7 or better, fold anything else. After that, it would be driven by pot odds. It would ignore other players betting patterns and would be very easy to beat.

 

Second-order intentionality is (he played and, therefore,) “I think he has a strong hand,” and would be necessary for any non-trivial poker intelligence. So, for instance, if the other player opened, the poker intelligence might “put him” on an A-7 or better and compare the pot odds against various predictions of what the other player might do. Obviously, people play differently, but you should get some results if you had a parameterized model (“Aggressive player,” “Passive player,” etc.).

 

Poker betting signals third-order intentionality: (I bet aggressively out of position so) “I think he thinks I have a strong hand.” And even the lamest poker player understands bluffing “I think (if I bluff) he will think that I think I have a strong hand.” To call a bluff requires a decision about fourth-order intentionality: “He thinks I think he thinks I have a good hand,” and, just to take things to what is generally considered the human limit, tournament texas hold ‘em happens so fast that you have to model your opponent’s model for dealing with bluffing: fifth-order intentionality.

 

By the time you get to fifth-order intentionality, you’re verging on comic territory — “Only a fool would put poison in the cup in front of him!” I don’t think that fifth-order intentionality is necessary for a non-trivial poker intelligence, but I do assert that third-order intentionality is necessary, since that’s the level at which bluffing takes place.

 

Another possibility is to collapse the model into statistics: model your opponent as “10% of the time, he’s betting over his card’s true odds (aka bluffing),” but putting such a parameter to an opponent’s play is very difficult since it is difficult to get enough data about your opponent’s real situation versus the evolving pot odds. Again, especially in tournament hold ‘em.

 

 

Created with Microsoft Office OneNote 2007 (Beta)
One place for all your information

Download: AI for Poker.one