# Difference between revisions of "AI"

(Initial creation) |
(added my contact info!) |
||

(66 intermediate revisions by 36 users not shown) | |||

Line 1: | Line 1: | ||

⚫ | |||

+ | [[Category:Community]] |
||

+ | [[Category:AI]] |
||

+ | == Introduction == |
||

+ | This is the home for the Haskell AI Strike Force! Here we will collect code, problems, papers, ideas, and people for putting together a flexible AI toolkit in Haskell. |
||

+ | |||

+ | == People == |
||

+ | If interested in contributing to or monitoring this project, please put your name, nickname (if applicable - e.g., if you talk on #haskell), and email address so we can keep each other up-to-date. |
||

+ | |||

+ | Yuriy Pitomets (netsu) <pitometsu at gmail> |
||

+ | |||

+ | Mark Wong-VanHaren (marklar) <markwvh at gmail> |
||

+ | |||

+ | Andrew Wagner (chessguy) <wagner dot andrew at gmail> |
||

+ | |||

+ | Bryan Green (shevek) <dbryan dot green at gmail> |
||

+ | |||

+ | Ricardo Herrmann <rherrmann at gmail> |
||

+ | |||

+ | Dan Doel (dolio) <dan dot doel at gmail> |
||

+ | |||

+ | Chung-chieh Shan (ccshan) <ccshan at cs dot rutgers dot edu> |
||

+ | |||

+ | Adam Wyner (Lawman) <adam dot wyner dot info> |
||

+ | |||

+ | Dave Tapley (DukeDave) <dukedave at gmail> |
||

+ | |||

+ | Lloyd Allison <lloyd dot allison at infotech dot monash dot edu dot au> |
||

+ | |||

+ | Jim Geovedi <jim at geovedi dot com> |
||

+ | |||

+ | Paul Berg (Procyon) <procyon at procyondevelopments dot com> |
||

+ | |||

+ | Eric Kow (kowey) <eric dot kow at gmail> [watching on the sidelines] |
||

+ | |||

+ | Charles Blundell <blundellc at gmail> |
||

+ | |||

+ | Mathew Mills (mathewm) <mathewmills (at) gmail (dot) com> |
||

+ | |||

+ | Jason Morton (inverselimit) <jason.morton at gmail> |
||

+ | |||

+ | Jiri Hysek (dvekravy) <xhysek02 at stud dot fit dot vutbr dot cz> [NN, EA] |
||

+ | |||

+ | Shahbaz Chaudhary <shahbazc at gmail> [interested in GP] |
||

+ | |||

+ | Hans van Thiel <hthiel dot char á zonnet tot nl> [automated rule discovery, author of the Emping data mining utility] |
||

+ | |||

+ | Alp Mestanogullari (Alpounet) <alp (at) mestan (dot) fr> [machine learning mainly] |
||

+ | |||

+ | Chris Pettitt (cpettitt) <cpettitt at gmail> |
||

+ | |||

+ | Nathaniel Neitzke (nneitzke) <nightski at gmail> |
||

+ | |||

+ | Ricardo Honorato-Zimmer (_rata_) <rikardo dot horo at gmail dot com> |
||

+ | |||

+ | Raphael Javaux (RaphaelJ) <raphaeljavaux at gmail dot com> |
||

+ | |||

+ | Mahmut Bulut (vertexclique) <mahmutbulut0 at gmail dot com> (ML, natural language processing, swarming intelligence) |
||

+ | |||

+ | Mike Izbicki <mike at izbicki.me> |
||

+ | |||

+ | Chris Taylor (crntaylor) <crntaylor at gmail> |
||

+ | |||

+ | Libor Wagner <wagnelib at cmp dot felk dot cvut dot cz> |
||

+ | |||

+ | Florian Grunert <fgrunert ätt uni-osnabrueck dot de> |
||

+ | |||

+ | Chad Scherrer <chad (dot) scherrer (at) gmail> (Parallel learning algrorithms, L1 regularization, Bayesian inference) |
||

+ | |||

+ | Ant Al'Thor R. <ant (at) theixo (dot) com> (AI Interest & Business) |
||

+ | |||

+ | == Ideas == |
||

+ | |||

+ | * In short, parts of this project can range from established ideas to new syntheses. ccshan: The high level of domain-specific abstraction that Haskell enables is ideal for AI, because AI programs are often "meta": we need to model agents who model the world, and sometimes to model agents who model agents who model the world, etc. In particular, monads are a good way to structure and solve decision processes, [http://conway.rutgers.edu/~ccshan/wiki/cs504/posts/Second_week.html as I've started to explore as part of a course on computational modeling that I'm teaching]. Given that [http://www.cs.yale.edu/homes/hudak-paul/hudak-dir/ACM-WS/position.html Haskell is a good language for modular interpreters and compilers], it would also be nice to create and refactor in Haskell an implementation of a [http://ai.stanford.edu/~shoham/www%20papers/RatProg.pdf rational programming language] like [http://www.eecs.harvard.edu/~avi/ Avi Pfeffer]'s [http://www.eecs.harvard.edu/~avi/IBAL/index.html IBAL] -- not only [http://www.eecs.harvard.edu/~nr/pubs/pmonad-abstract.html is probability distribution a monad], I just realized that [http://ttic.uchicago.edu/~dmcallester/bayes.ps a certain kind of variable elimination] is simply garbage collection in a call-by-need language! |
||

+ | |||

+ | == Things that need a home == |
||

+ | |||

+ | If there are things that should be included in the project, but you're not sure where it should go, place it here! I'll start with: |
||

+ | * http://catenova.org/~awagner/Simplifier (broken link) |
||

+ | **This was given to me by Alfonso Acosta (mentioned recently on haskell-cafe) |
||

+ | |||

+ | *http://catenova.org/~awagner/GPLib (broken link) |
||

+ | **[[GPLib]] is a work in progress by yours truly, hopefully a future framework for genetic algorithms in haskell. |
||

+ | |||

+ | *http://www.haskell.org/haskellwiki/Libraries_and_tools/Linguistics |
||

+ | |||

+ | I've proposed a machine learning library for this year's Google Summer of Code. [http://hackage.haskell.org/trac/summer-of-code/ticket/1127] There has been a few interested (and seemingly well qualified) students, too. I'm not sure if it qualifes as "AI", but if you are interested in this project (as a potential student, mentor, or just...well, interested), please add yourself to the above link, and/or get in touch with me at <ketil at malde dot org>. --[[User:Ketil|Ketil]] 07:46, 26 March 2007 (UTC) |
||

+ | |||

+ | Martin Erwig's probabilistic functional programming (PFP) project, including an implementation of the probability monad: |
||

+ | *http://web.engr.oregonstate.edu/~erwig/pfp/ |
||

+ | |||

+ | Culmination of some recent posts about the probability monad on Random Hacks (including a darcs repository): |
||

+ | *http://www.randomhacks.net/articles/2007/03/03/smart-classification-with-haskell |
||

+ | |||

+ | sigfpe's coverage and highly algebraic view of the probability monad in Haskell: |
||

+ | *http://sigfpe.blogspot.com/2007/02/monads-for-vector-spaces-probability.html |
||

+ | |||

+ | Two links I found today that are interesting: |
||

+ | *http://perception.inf.um.es/darcs/darcsweb.cgi |
||

+ | *http://www-student.cs.york.ac.uk/~cb224/ |
||

+ | |||

+ | Polytypic unification - unification seems particularly useful for AI tasks (at least natural language stuff)... wouldn't be nice to have a generic library that does it for you? |
||

+ | *http://www.cs.chalmers.se/~patrikj/poly/unify/ |
||

+ | |||

+ | Easy-to-use work-in-progress neural network library, by [[User:AlpMestan|Alp Mestan]] and Chaddaï Fouché : |
||

+ | *http://github.com/alpmestan/HNN/tree/master |
||

+ | |||

+ | Implementation of some of the algorithms in Russell and Norvig's "Artificial Intelligence: A Modern Approach", by [[User:Crntaylor|Chris Taylor]]: |
||

+ | *https://github.com/chris-taylor/aima-haskell |
||

+ | |||

+ | == Proposed Module Hierarchy == |
||

⚫ | |||

+ | **AI.Searching |
||

+ | ***AI.Searching.Evolutionary |
||

+ | **AI.Logic |
||

+ | **AI.Planning |
||

+ | ***AI.Planning.Swarm |
||

+ | **AI.Probabilistic |
||

+ | **AI.Learning |
||

+ | ***AI.Learning.Kernel |
||

+ | ***AI.Learning.NeuralNet |
||

+ | **AI.Classification |
||

+ | ***AI.Classification.ExpertSystem |
||

+ | **AI.Communication |
||

+ | |||

+ | ==Proposed sample format for a wiki page on a topic or sub-topic== |
||

+ | |||

+ | '''AI/Logic/Fuzzy''' |
||

+ | |||

+ | The slashes show that [[/Logic | Logic]] is a subpage of [[AI]] and [[/Logic/Fuzzy | Fuzzy]] is a subpage of [[AI/Logic]]. MediaWiki will then generate links back up the chain of pages. (Try the links to see) |
||

+ | |||

+ | *Fuzzy logic is blah blah... |
||

+ | *Sub-topics: |
||

+ | **Trivial fuzzy logic in Haskell |
||

+ | **Type 2 fuzzy logic |
||

+ | *Links to existing literature: |
||

+ | **General |
||

+ | ***My first fuzzy logic book |
||

+ | **Specific to functional programming / Haskell |
||

+ | ***Fun with fuzzy functions |
||

+ | *Typical problems: |
||

+ | **Problem 1: blah blah blah |
||

+ | **Problem 2: blah blah blah |
||

+ | *List of people involved in the area |
||

+ | ** Me |
||

+ | **Someone else |
||

+ | *Body |
||

+ | **List of goals |
||

+ | **Progress being made on them |
||

+ | **Code and documentation. |
||

+ | |||

+ | ==Current sub-pages== |
||

+ | *[[/Logic/Fuzzy]] |
||

+ | *[[/Genetic programming/Evolutionary chess]] |
||

+ | *[[/Genetic programming/GPLib]] |
||

+ | |||

+ | |||

+ | == External links == |
||

+ | |||

+ | * [http://hackage.haskell.org/packages/archive/pkg-list.html#cat:ai Packages at Hackage, marked AI] |
||

+ | * [https://patch-tag.com/r/alpmestan/hasklab/wiki/ HaskLab Wiki] |
||

+ | * [http://projects.haskell.org/cgi-bin/mailman/listinfo/hasklab The HaskLab mailing-list] |
||

+ | * [http://projects.haskell.org/pipermail/hasklab/ The HaskLab Archives] (mailing-list archive) |
||

+ | * [http://okmij.org/ftp/Haskell/#memo-off Preventing memoization in (AI) search problems] |
||

+ | * [http://jpmoresmau.blogspot.com/2010/09/digit-recognition-with-neural-network.html Digit recognition with a neural network. First attempt!] (Blog article) |
||

+ | * [http://jpmoresmau.blogspot.com/2010/09/haskell-neural-network-plugging-space.html Haskell Neural Network: plugging a space leak] (Blog article) |
||

+ | * [http://www.ki.informatik.uni-frankfurt.de/research/HCAR.html Further Reading] |
||

+ | * [https://github.com/smichal/hs-logic hs-logic]; logic programming in Haskell (software on github) |

## Latest revision as of 08:26, 1 December 2018

## Contents

## Introduction

This is the home for the Haskell AI Strike Force! Here we will collect code, problems, papers, ideas, and people for putting together a flexible AI toolkit in Haskell.

## People

If interested in contributing to or monitoring this project, please put your name, nickname (if applicable - e.g., if you talk on #haskell), and email address so we can keep each other up-to-date.

Yuriy Pitomets (netsu) <pitometsu at gmail>

Mark Wong-VanHaren (marklar) <markwvh at gmail>

Andrew Wagner (chessguy) <wagner dot andrew at gmail>

Bryan Green (shevek) <dbryan dot green at gmail>

Ricardo Herrmann <rherrmann at gmail>

Dan Doel (dolio) <dan dot doel at gmail>

Chung-chieh Shan (ccshan) <ccshan at cs dot rutgers dot edu>

Adam Wyner (Lawman) <adam dot wyner dot info>

Dave Tapley (DukeDave) <dukedave at gmail>

Lloyd Allison <lloyd dot allison at infotech dot monash dot edu dot au>

Jim Geovedi <jim at geovedi dot com>

Paul Berg (Procyon) <procyon at procyondevelopments dot com>

Eric Kow (kowey) <eric dot kow at gmail> [watching on the sidelines]

Charles Blundell <blundellc at gmail>

Mathew Mills (mathewm) <mathewmills (at) gmail (dot) com>

Jason Morton (inverselimit) <jason.morton at gmail>

Jiri Hysek (dvekravy) <xhysek02 at stud dot fit dot vutbr dot cz> [NN, EA]

Shahbaz Chaudhary <shahbazc at gmail> [interested in GP]

Hans van Thiel <hthiel dot char á zonnet tot nl> [automated rule discovery, author of the Emping data mining utility]

Alp Mestanogullari (Alpounet) <alp (at) mestan (dot) fr> [machine learning mainly]

Chris Pettitt (cpettitt) <cpettitt at gmail>

Nathaniel Neitzke (nneitzke) <nightski at gmail>

Ricardo Honorato-Zimmer (_rata_) <rikardo dot horo at gmail dot com>

Raphael Javaux (RaphaelJ) <raphaeljavaux at gmail dot com>

Mahmut Bulut (vertexclique) <mahmutbulut0 at gmail dot com> (ML, natural language processing, swarming intelligence)

Mike Izbicki <mike at izbicki.me>

Chris Taylor (crntaylor) <crntaylor at gmail>

Libor Wagner <wagnelib at cmp dot felk dot cvut dot cz>

Florian Grunert <fgrunert ätt uni-osnabrueck dot de>

Chad Scherrer <chad (dot) scherrer (at) gmail> (Parallel learning algrorithms, L1 regularization, Bayesian inference)

Ant Al'Thor R. <ant (at) theixo (dot) com> (AI Interest & Business)

## Ideas

- In short, parts of this project can range from established ideas to new syntheses. ccshan: The high level of domain-specific abstraction that Haskell enables is ideal for AI, because AI programs are often "meta": we need to model agents who model the world, and sometimes to model agents who model agents who model the world, etc. In particular, monads are a good way to structure and solve decision processes, as I've started to explore as part of a course on computational modeling that I'm teaching. Given that Haskell is a good language for modular interpreters and compilers, it would also be nice to create and refactor in Haskell an implementation of a rational programming language like Avi Pfeffer's IBAL -- not only is probability distribution a monad, I just realized that a certain kind of variable elimination is simply garbage collection in a call-by-need language!

## Things that need a home

If there are things that should be included in the project, but you're not sure where it should go, place it here! I'll start with:

- http://catenova.org/~awagner/Simplifier (broken link)
- This was given to me by Alfonso Acosta (mentioned recently on haskell-cafe)

- http://catenova.org/~awagner/GPLib (broken link)
- GPLib is a work in progress by yours truly, hopefully a future framework for genetic algorithms in haskell.

I've proposed a machine learning library for this year's Google Summer of Code. [1] There has been a few interested (and seemingly well qualified) students, too. I'm not sure if it qualifes as "AI", but if you are interested in this project (as a potential student, mentor, or just...well, interested), please add yourself to the above link, and/or get in touch with me at <ketil at malde dot org>. --Ketil 07:46, 26 March 2007 (UTC)

Martin Erwig's probabilistic functional programming (PFP) project, including an implementation of the probability monad:

Culmination of some recent posts about the probability monad on Random Hacks (including a darcs repository):

sigfpe's coverage and highly algebraic view of the probability monad in Haskell:

Two links I found today that are interesting:

Polytypic unification - unification seems particularly useful for AI tasks (at least natural language stuff)... wouldn't be nice to have a generic library that does it for you?

Easy-to-use work-in-progress neural network library, by Alp Mestan and Chaddaï Fouché :

Implementation of some of the algorithms in Russell and Norvig's "Artificial Intelligence: A Modern Approach", by Chris Taylor:

## Proposed Module Hierarchy

- AI
- AI.Searching
- AI.Searching.Evolutionary

- AI.Logic
- AI.Planning
- AI.Planning.Swarm

- AI.Probabilistic
- AI.Learning
- AI.Learning.Kernel
- AI.Learning.NeuralNet

- AI.Classification
- AI.Classification.ExpertSystem

- AI.Communication

- AI.Searching

## Proposed sample format for a wiki page on a topic or sub-topic

**AI/Logic/Fuzzy**

The slashes show that Logic is a subpage of **AI** and Fuzzy is a subpage of AI/Logic. MediaWiki will then generate links back up the chain of pages. (Try the links to see)

- Fuzzy logic is blah blah...
- Sub-topics:
- Trivial fuzzy logic in Haskell
- Type 2 fuzzy logic

- Links to existing literature:
- General
- My first fuzzy logic book

- Specific to functional programming / Haskell
- Fun with fuzzy functions

- General
- Typical problems:
- Problem 1: blah blah blah
- Problem 2: blah blah blah

- List of people involved in the area
- Me
- Someone else

- Body
- List of goals
- Progress being made on them
- Code and documentation.

## Current sub-pages

## External links

- Packages at Hackage, marked AI
- HaskLab Wiki
- The HaskLab mailing-list
- The HaskLab Archives (mailing-list archive)
- Preventing memoization in (AI) search problems
- Digit recognition with a neural network. First attempt! (Blog article)
- Haskell Neural Network: plugging a space leak (Blog article)
- Further Reading
- hs-logic; logic programming in Haskell (software on github)