artificially artificially intelligent intelligent haskell
play

Artificially Artificially Intelligent Intelligent Haskell Haskell - PowerPoint PPT Presentation

Artificially Artificially Intelligent Intelligent Haskell Haskell Overview About Aetion What we do, and how we do it H o w F P h a s ( a n d h a s n t ) h e l p e d About Aetion Approach to AI based on


  1. Artificially Artificially Intelligent Intelligent Haskell Haskell

  2. Overview  About Aetion  What we do, and how we do it  H o w F P h a s ( a n d h a s n ’ t ) h e l p e d

  3. About Aetion  Approach to AI based on widening regions of confidence based on explanatory necessity  Most useful in domains with many overlapping possibilities or sparse data  Currently supported by DoD contracts

  4. The Challenges  Frequent Changes  Problem domains change  New domains  Changing approaches to existing domains  Want to minimize code impact of changes

  5. The First Solution  Minimize work on things not directly relevant to current applications  Fill in the gaps later.

  6. The First Solution  Minimize work on But: things not directly  No general pattern for relevant to current extension applications  Most problems  Fill in the gaps later. required non-localized changes.

  7. The Second Solution  Find an abstraction and stick with it!  Blueprint for Second-system Effect  How did we make it work anyway?

  8. F P ’ s c o n t r i b u t i o n s  The types are cool  The code is short  The ideas are good

  9. The Types are Cool  Find many bugs before they happen  Separating effectful and non-effectful code  BUT: extensible records would be handy

  10. The Code is Short  Big advantage is not in writing, but in rewriting.

  11. The Code is Short  Big advantage is not in writing, but in rewriting.  10K lines of Haskell vs. 30K lines of Java

  12. The Ideas are Good  Monads, arrows, continuations, various combinator libraries, GADTs, even higher order functions.  Makes over-generality easy.

  13. The Result  Three projects:  Generalized data/change management (SNOWDRIFT) ○ Maintains relational view of data with constant time relation traversal ○ Provides priority-based process scheduling ○ Maintains tree of event handlers [Grust 1999] ○ Starts lightweight threads based on thrown events

  14. Event Handlers Ideal: [ h |- confidence <|- (1 +) | i <- h |- linkedFrom Supports , i |- belief == Accepted ]

  15. Event Handlers Ideal: [ h |- confidence <|- (1 +) | i <- h |- linkedFrom Supports , i |- belief == Accepted ] Actual, almost: [ h |- confidence <|- (1 +) | ModAttr i Belief _ Accepted = theEvent , h <- i |- linkedFrom Supports ]

  16. The Result  Three projects:  Generalized data/change management  Inference rules (WINTERMUTE) ○ Compositional constructers makeNamed “blah” >>= makeLocated (4,5) >>= makeExplainer >>= addMutable ○ Triggers propagate changes based on introduced relationships

  17. The Result  Three projects:  Generalized data/change management  Inference rules  Application-specific hackery (PAWPRINTS) ○ Mostly pure Haskell ○ G r a d u a l l y a b s t r a c t e d a n d m o v e d “ u p ”

  18. The Result  Three projects:  Generalized data/change management  Inference rules  Application-specific hackery  All work pretty well!

  19. R o g u e ’ s G a l l e r y  Concurrency h |- attr <-- val But what about? h1 |- attr1 <-- val1 h2 |- attr2 <-- val2

  20. R o g u e ’ s G a l l e r y  Something more like: h1,h2 |- attr1 h1 <-- val1 attr2 h2 <-- val2  B u t t h i s d o e s n ’ t c o m p o s e

  21. R o g u e ’ s G a l l e r y  Records (Compositional Construction) data Entity e => Thing e = Thing Stuff e makeFoo >>= makeBar >>= makeThing >>= addMutable Then, we want uniform access to composed objects: Class ThingLike t where getStuff :: t -> Stuff setStuff :: Stuff -> t -> t

  22. R o g u e ’ s G a l l e r y  Records (continued) But then composition is hard: data Entity e => Thing e = Thing Stuff e instance (c e) => c (Entity e) where …

  23. k Wh a t D i d n ’ t Wo r  Client/Server Interface  Serialization requirements forced some design decisions.  Frequently pushing changes removed many possible uses of laziness

  24. k Wh a t D i d n ’ t Wo r  Client/Server Interface  Serialization requirements forced some design decisions.  Frequently pushing changes removed many possible uses of laziness  B u t : t h a t ’ s m o s t l y o u r f a u l t .  Wh a t ’ s t h e b e t t e r w a y ?

  25. k Wh a t D i d n ’ t Wo r  Management buy-in  Maintenance and maturity of libraries  Tools-related projects

  26. What Can Work Better  Libraries working together  Cross-platform compatibility  More tools development  Debugging  Profiling --- performance seems like a black art  Programmer interest  But: chicken and egg problem?

  27. Thank you

Recommend


More recommend