# AI

### From HaskellWiki

(Added Adam Wyner) |
(→External links: Added a link to hs-logic) |
||

(45 intermediate revisions by 26 users not shown) | |||

Line 1: | Line 1: | ||

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

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

== Introduction == |
== 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. |
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. |
||

Line 5: | Line 6: | ||

== People == |
== 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. |
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. |
||

+ | |||

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

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

Line 18: | Line 21: | ||

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

− | == Ideas == |
+ | Allan Erskine (thedatabase) <allan dot erskine at gmail> |

− | This is where we need to start. Please put your ideas here for how to structure the contents of this toolkit/wiki-page(s). I've ripped and wiki-fied the table of contents of the main sections of Russell and Norvig's classic "Artificial Intelligence: A Modern Approach", for inspiration. One way of structuring things would be to turn various section names of this into links to new pages. If we do this, we should agree on the format for each new page to link to: e.g., each page could have a list of papers, links to code, a general discussion area, and a list of benchmark problems for that particular topic. Comments, please! |
+ | 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> |
||

+ | |||

+ | == 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! |
* 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! |
||

Line 31: | Line 34: | ||

*http://catenova.org/~awagner/GPLib |
*http://catenova.org/~awagner/GPLib |
||

− | **This is a work in progress by yours truly, hopefully a future framework for genetic algorithms in haskell |
+ | **[[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 |
*http://www.haskell.org/haskellwiki/Libraries_and_tools/Linguistics |
||

− | == Table of Contents for AI: A Modern Approach == |
+ | 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) |

− | *Part I: Artificial Intelligence |
+ | |

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

− | ***1.1. What is AI? ... 1 |
+ | *http://web.engr.oregonstate.edu/~erwig/pfp/ |

− | ***1.2. The Foundations of Artificial Intelligence ... 5 |
+ | |

− | ***1.3. The History of Artificial Intelligence ... 16 |
+ | Culmination of some recent posts about the probability monad on Random Hacks (including a darcs repository): |

− | ***1.4. The State of the Art ... 27 |
+ | *http://www.randomhacks.net/articles/2007/03/03/smart-classification-with-haskell |

− | ***1.5. Summary ... 28 |
+ | |

− | **2. Intelligent Agents ... 32 |
+ | sigfpe's coverage and highly algebraic view of the probability monad in Haskell: |

− | ***2.1. Agents and Environments ... 32 |
+ | *http://sigfpe.blogspot.com/2007/02/monads-for-vector-spaces-probability.html |

− | ***2.2. Good Behavior: The Concept of Rationality ... 34 |
+ | |

− | ***2.3. The Nature of Environments ... 38 |
+ | Two links I found today that are interesting: |

− | ***2.4. The Structure of Agents ... 44 |
+ | *http://perception.inf.um.es/darcs/darcsweb.cgi |

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

− | **3. Solving Problems by Searching ... 59 |
+ | |

− | ***3.1. Problem-Solving Agents ... 59 |
+ | 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? |

− | ***3.2. Example Problems ... 64 |
+ | *http://www.cs.chalmers.se/~patrikj/poly/unify/ |

− | ***3.3. Searching for Solutions ... 69 |
+ | |

− | ***3.4. Uninformed Search Strategies ... 73 |
+ | Easy-to-use work-in-progress neural network library, by [[User:AlpMestan|Alp Mestan]] and Chaddaï Fouché : |

− | ***3.5. Avoiding Repeated States ... 81 |
+ | *http://github.com/alpmestan/HNN/tree/master |

− | ***3.6. Searching with Partial Information ... 83 |
+ | |

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

− | **4. Informed Search and Exploration ... 94 |
+ | *https://github.com/chris-taylor/aima-haskell |

− | ***4.1. Informed (Heuristic) Search Strategies ... 94 |
+ | |

− | ***4.2. Heuristic Functions ... 105 |
+ | == Proposed Module Hierarchy == |

− | ***4.3. Local Search Algorithms and Optimization Problems ... 110 |
+ | *AI |

− | ***4.4. Local Search in Continuous Spaces ... 119 |
+ | **AI.Searching |

− | ***4.5. Online Search Agents and Unknown Environments ... 122 |
+ | ***AI.Searching.Evolutionary |

− | ***4.6. Summary ... 129 |
+ | **AI.Logic |

− | **5. Constraint Satisfaction Problems ... 137 |
+ | **AI.Planning |

− | ***5.1. Constraint Satisfaction Problems ... 137 |
+ | ***AI.Planning.Swarm |

− | ***5.2. Backtracking Search for CSPs ... 141 |
+ | **AI.Probabilistic |

− | ***5.3. Local Search for Constraint Satisfaction Problems ... 150 |
+ | **AI.Learning |

− | ***5.4. The Structure of Problems ... 151 |
+ | ***AI.Learning.Kernel |

− | ***5.5. Summary ... 155 |
+ | ***AI.Learning.NeuralNet |

− | **6. Adversarial Search ... 161 |
+ | **AI.Classification |

− | ***6.1. Games ... 161 |
+ | ***AI.Classification.ExpertSystem |

− | ***6.2. Optimal Decisions in Games ... 162 |
+ | **AI.Communication |

− | ***6.3. Alpha-Beta Pruning ... 167 |
+ | |

− | ***6.4. Imperfect, Real-Time Decisions ... 171 |
+ | ==Proposed sample format for a wiki page on a topic or sub-topic== |

− | ***6.5. Games That Include an Element of Chance ... 175 |
+ | |

− | ***6.6. State-of-the-Art Game Programs ... 180 |
+ | '''AI/Logic/Fuzzy''' |

− | ***6.7. Discussion ... 183 |
+ | |

− | ***6.8. Summary ... 185 |
+ | 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) |

− | *Part III: Knowledge and reasoning |
+ | |

− | **7. Logical Agents ... 194 |
+ | *Fuzzy logic is blah blah... |

− | ***7.1. Knowledge-Based Agents ... 195 |
+ | *Sub-topics: |

− | ***7.2. The Wumpus World ... 197 |
+ | **Trivial fuzzy logic in Haskell |

− | ***7.3. Logic ... 200 |
+ | **Type 2 fuzzy logic |

− | ***7.4. Propositional Logic: A Very Simple Logic ... 204 |
+ | *Links to existing literature: |

− | ***7.5. Reasoning Patterns in Propositional Logic ... 211 |
+ | **General |

− | ***7.6. Effective propositional inference ... 220 |
+ | ***My first fuzzy logic book |

− | ***7.7. Agents Based on Propositional Logic ... 225 |
+ | **Specific to functional programming / Haskell |

− | ***7.8. Summary ... 232 |
+ | ***Fun with fuzzy functions |

− | **8. First-Order Logic ... 240 |
+ | *Typical problems: |

− | ***8.1. Representation Revisited ... 240 |
+ | **Problem 1: blah blah blah |

− | ***8.2. Syntax and Semantics of First-Order Logic ... 245 |
+ | **Problem 2: blah blah blah |

− | ***8.3. Using First-Order Logic ... 253 |
+ | *List of people involved in the area |

− | ***8.4. Knowledge Engineering in First-Order Logic ... 260 |
+ | ** Me |

− | ***8.5. Summary ... 266 |
+ | **Someone else |

− | **9. Inference in First-Order Logic ... 272 |
+ | *Body |

− | ***9.1. Propositional vs. First-Order Inference ... 272 |
+ | **List of goals |

− | ***9.2. Unification and Lifting ... 275 |
+ | **Progress being made on them |

− | ***9.3. Forward Chaining ... 280 |
+ | **Code and documentation. |

− | ***9.4. Backward Chaining ... 287 |
+ | |

− | ***9.5. Resolution ... 295 |
+ | ==Current sub-pages== |

− | ***9.6. Summary ... 310 |
+ | *[[/Logic/Fuzzy]] |

− | **10. Knowledge Representation ... 320 |
+ | *[[/Genetic programming/Evolutionary chess]] |

− | ***10.1. Ontological Engineering ... 320 |
+ | *[[/Genetic programming/GPLib]] |

− | ***10.2. Categories and Objects ... 322 |
+ | |

− | ***10.3. Actions, Situations, and Events ... 328 |
+ | |

− | ***10.4. Mental Events and Mental Objects ... 341 |
+ | == External links == |

− | ***10.5. The Internet Shopping World ... 344 |
||

− | ***10.6. Reasoning Systems for Categories ... 349 |
||

− | ***10.7. Reasoning with Default Information ... 354 |
||

− | ***10.8. Truth Maintenance Systems ... 360 |
||

− | ***10.9. Summary ... 362 |
||

− | *Part IV: Planning |
||

− | **11. Planning ... 375 |
||

− | ***11.1. The Planning Problem ... 375 |
||

− | ***11.2. Planning with State-Space Search ... 382 |
||

− | ***11.3. Partial-Order Planning ... 387 |
||

− | ***11.4. Planning Graphs ... 395 |
||

− | ***11.5. Planning with Propositional Logic ... 402 |
||

− | ***11.6. Analysis of Planning Approaches ... 407 |
||

− | ***11.7. Summary ... 408 |
||

− | **12. Planning and Acting in the Real World ... 417 |
||

− | ***12.1. Time, Schedules, and Resources ... 417 |
||

− | ***12.2. Hierarchical Task Network Planning ... 422 |
||

− | ***12.3. Planning and Acting in Nondeterministic Domains ... 430 |
||

− | ***12.4. Conditional Planning ... 433 |
||

− | ***12.5. Execution Monitoring and Replanning ... 441 |
||

− | ***12.6. Continuous Planning ... 445 |
||

− | ***12.7. MultiAgent Planning ... 449 |
||

− | ***12.8. Summary ... 454 |
||

− | *Part V: Uncertain knowledge and reasoning |
||

− | **13. Uncertainty ... 462 |
||

− | ***13.1. Acting under Uncertainty ... 462 |
||

− | ***13.2. Basic Probability Notation ... 466 |
||

− | ***13.3. The Axioms of Probability ... 471 |
||

− | ***13.4. Inference Using Full Joint Distributions ... 475 |
||

− | ***13.5. Independence ... 477 |
||

− | ***13.6. Bayes' Rule and Its Use ... 479 |
||

− | ***13.7. The Wumpus World Revisited ... 483 |
||

− | ***13.8. Summary ... 486 |
||

− | **14. Probabilistic Reasoning ... 492 |
||

− | ***14.1. Representing Knowledge in an Uncertain Domain ... 492 |
||

− | ***14.2. The Semantics of Bayesian Networks ... 495 |
||

− | ***14.3. Efficient Representation of Conditional Distributions ... 500 |
||

− | ***14.4. Exact Inference in Bayesian Networks ... 504 |
||

− | ***14.5. Approximate Inference in Bayesian Networks ... 511 |
||

− | ***14.6. Extending Probability to First-Order Representations ... 519 |
||

− | ***14.7. Other Approaches to Uncertain Reasoning ... 523 |
||

− | ***14.8. Summary ... 528 |
||

− | **15. Probabilistic Reasoning over Time ... 537 |
||

− | ***15.1. Time and Uncertainty ... 537 |
||

− | ***15.2. Inference in Temporal Models ... 541 |
||

− | ***15.3. Hidden Markov Models ... 549 |
||

− | ***15.4. Kalman Filters ... 551 |
||

− | ***15.5. Dynamic Bayesian Networks ... 559 |
||

− | ***15.6. Speech Recognition ... 568 |
||

− | ***15.7. Summary ... 578 |
||

− | **16. Making Simple Decisions ... 584 |
||

− | ***16.1. Combining Beliefs and Desires under Uncertainty ... 584 |
||

− | ***16.2. The Basis of Utility Theory ... 586 |
||

− | ***16.3. Utility Functions ... 589 |
||

− | ***16.4. Multiattribute Utility Functions ... 593 |
||

− | ***16.5. Decision Networks ... 597 |
||

− | ***16.6. The Value of Information ... 600 |
||

− | ***16.7. Decision-Theoretic Expert Systems ... 604 |
||

− | ***16.8. Summary ... 607 |
||

− | **17. Making Complex Decisions ... 613 |
||

− | ***17.1. Sequential Decision Problems ... 613 |
||

− | ***17.2. Value Iteration ... 618 |
||

− | ***17.3. Policy Iteration ... 624 |
||

− | ***17.4. Partially observable MDPs ... 625 |
||

− | ***17.5. Decision-Theoretic Agents ... 629 |
||

− | ***17.6. Decisions with Multiple Agents: Game Theory ... 631 |
||

− | ***17.7. Mechanism Design ... 640 |
||

− | ***17.8. Summary ... 643 |
||

− | *Part VI: Learning |
||

− | **18. Learning from Observations ... 649 |
||

− | ***18.1. Forms of Learning ... 649 |
||

− | ***18.2. Inductive Learning ... 651 |
||

− | ***18.3. Learning Decision Trees ... 653 |
||

− | ***18.4. Ensemble Learning ... 664 |
||

− | ***18.5. Why Learning Works: Computational Learning Theory ... 668 |
||

− | ***18.6. Summary ... 673 |
||

− | **19. Knowledge in Learning ... 678 |
||

− | ***19.1. A Logical Formulation of Learning ... 678 |
||

− | ***19.2. Knowledge in Learning ... 686 |
||

− | ***19.3. Explanation-Based Learning ... 690 |
||

− | ***19.4. Learning Using Relevance Information ... 694 |
||

− | ***19.5. Inductive Logic Programming ... 697 |
||

− | ***19.6. Summary ... 707 |
||

− | **20. Statistical Learning Methods ... 712 |
||

− | ***20.1. Statistical Learning ... 712 |
||

− | ***20.2. Learning with Complete Data ... 716 |
||

− | ***20.3. Learning with Hidden Variables: The EM Algorithm ... 724 |
||

− | ***20.4. Instance-Based Learning ... 733 |
||

− | ***20.5. Neural Networks ... 736 |
||

− | ***20.6. Kernel Machines ... 749 |
||

− | ***20.7. Case Study: Handwritten Digit Recognition ... 752 |
||

− | ***20.8. Summary ... 754 |
||

− | **21. Reinforcement Learning ... 763 |
||

− | ***21.1. Introduction ... 763 |
||

− | ***21.2. Passive Reinforcement Learning ... 765 |
||

− | ***21.3. Active Reinforcement Learning ... 771 |
||

− | ***21.4. Generalization in Reinforcement Learning ... 777 |
||

− | ***21.5. Policy Search ... 781 |
||

− | ***21.6. Summary ... 784 |
||

− | *Part VII: Communicating, perceiving, and acting |
||

− | **22. Communication ... 790 |
||

− | ***22.1. Communication as Action ... 790 |
||

− | ***22.2. A Formal Grammar for a Fragment of English ... 795 |
||

− | ***22.3. Syntactic Analysis (Parsing) ... 798 |
||

− | ***22.4. Augmented Grammars ... 806 |
||

− | ***22.5. Semantic Interpretation ... 810 |
||

− | ***22.6. Ambiguity and Disambiguation ... 818 |
||

− | ***22.7. Discourse Understanding ... 821 |
||

− | ***22.8. Grammar Induction ... 824 |
||

− | ***22.9. Summary ... 826 |
||

− | **23. Probabilistic Language Processing ... 834 |
||

− | ***23.1. Probabilistic Language Models ... 834 |
||

− | ***23.2. Information Retrieval ... 840 |
||

− | ***23.3. Information Extraction ... 848 |
||

− | ***23.4. Machine Translation ... 850 |
||

− | ***23.5. Summary ... 857 |
||

− | **24. Perception ... 863 |
||

− | ***24.1. Introduction ... 863 |
||

− | ***24.2. Image Formation ... 865 |
||

− | ***24.3. Early Image Processing Operations ... 869 |
||

− | ***24.4. Extracting Three-Dimensional Information ... 873 |
||

− | ***24.5. Object Recognition ... 885 |
||

− | ***24.6. Using Vision for Manipulation and Navigation ... 892 |
||

− | ***24.7. Summary ... 894 |
||

− | **25. Robotics ... 901 |
||

− | ***25.1. Introduction ... 901 |
||

− | ***25.2. Robot Hardware ... 903 |
||

− | ***25.3. Robotic Perception ... 907 |
||

− | ***25.4. Planning to Move ... 916 |
||

− | ***25.5. Planning uncertain movements ... 923 |
||

− | ***25.6. Moving ... 926 |
||

− | ***25.7. Robotic Software Architectures ... 932 |
||

− | ***25.8. Application Domains ... 935 |
||

− | ***25.9. Summary ... 938 |
||

− | *Part VIII: Conclusions |
||

− | **26. Philosophical Foundations ... 947 |
||

− | ***26.1. Weak AI: Can Machines Act Intelligently? ... 947 |
||

− | ***26.2. Strong AI: Can Machines Really Think? ... 952 |
||

− | ***26.3. The Ethics and Risks of Developing Artificial Intelligence ... 960 |
||

− | ***26.4. Summary ... 964 |
||

− | **27. AI: Present and Future ... 968 |
||

− | ***27.1. Agent Components ... 968 |
||

− | ***27.2. Agent Architectures ... 970 |
||

− | ***27.3. Are We Going in the Right Direction? ... 972 |
||

− | ***27.4. What if AI Does Succeed? ... 974 |
||

− | *A. Mathematical background ... 977 |
||

− | **A.1. Complexity Analysis and O() Notation ... 977 |
||

− | **A.2. Vectors, Matrices, and Linear Algebra ... 979 |
||

− | **A.3. Probability Distributions ... 981 |
||

− | *B. Notes on Languages and Algorithms ... 984 |
||

− | **B.1. Defining Languages with Backus-Naur Form (BNF) ... 984 |
||

− | **B.2. Describing Algorithms with Pseudocode ... 985 |
||

− | **B.3. Online Help ... 985 |
||

− | AI: A Modern Approach by Stuart Russell and Peter Norvig Modified: Dec 14, 2002 |
+ | * [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://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) |

## Revision as of 09:06, 21 September 2012

## Contents |

## 1 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.

## 2 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.

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>

Allan Erskine (thedatabase) <allan dot erskine at gmail>

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>

## 3 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!

## 4 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
- This was given to me by Alfonso Acosta (mentioned recently on haskell-cafe)

- http://catenova.org/~awagner/GPLib
- 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:

## 5 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

## 6 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.

## 7 Current sub-pages

## 8 External links

- Packages at Hackage, marked AI
- HaskLab Wiki
- The HaskLab mailing-list
- The HaskLab Archives (mailing-list archive)
- 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)