5 ms·
Probabilistic Models of Cognition
- Tloewald 10y agoVery interesting and well presented. If it were me I would try to provide a few concrete examples, ideally with figures, in the introduction but I'm a visual person.
- mturmon 10y agoThe JS version of the text ("v2") linked above seems to answer your wishes. Interactive in your browser.
- tbenst 10y agoJust a heads up that church has now been replaced by webppl: http://webppl.org http://webppl.org.
- long 10y agoIndeed. And there is now a webppl version of the probmods textbook: http://probmods.org/v2 http://probmods.org/v2
- wodenokoto 10y agoThank you for sharing. I have tried completing probmods twice, but gone sour in the syntax twice. Third times the charm :)
- TeMPOraL 10y agoYou mean replaced as a language, or just replaced in a new version of the book? Either way, :(.
- long 10y agoBoth. (source: I've worked on both languages and versions of the book). But give webppl a shot -- it's a good language!
- TeMPOraL 10y agoI will. I don't doubt it's good. It's the Smug Lisp Weenie in me that's sad.
- shanusmagnus 10y agoCurious -- do you have any insider perspective on the reason for the changeover from Church?
- long 10y agoA non-exhaustive list: 1. Pedagogically, the lispy syntax was a big stumbling block for beginners. Probabilistic programming is hard enough as it is; prefix notation and parens only added difficulties (and these difficulties were unrelated to the conceptual material). 2. webchurch compiled to Javascript anyway, so it was nice to be closer to the target language. 3. Lisp can be a bit awkward for certain contemporary programming idioms (e.g., accessing object properties).
- kazinator 10y agoSome Lisp designers are listening: $ cat animal.tl (defstruct animal nil (:static legs nil) (:method speak (self something) (pprinl something))) (defstruct dog animal (:static legs 4) (:method speak (self something) (call-super-method self 'speak something) (pprinl "Woof!"))) $ txr -i animal.tl 1> (defvar d1 (new dog)) d1 2> (defvar d2 (new dog)) d2 3> d1.legs 4 4> (set d2.legs 5) ;; legs is static: i.e. class-wide 5 5> d1.legs ;; all dogs have 5 legs now 5 6> d1.(speak "hey!") hey! Woof! "Woof!" 7> Next: 7> 'a.b.c.d a.b.c.d 8> (car 'a.b.c.d) qref 9> (cdr 'a.b.c.d) (a b c d) 10> '(qref a b c d) ;; qref ::= "qualified reference" a.b.c.d 11> '(qref a b (c x y) d) a.b.(c x y).d 12> '(qref (qref a b) c) (qref a.b c) qref is syntax, targetted by a macro definition: 13> (macroexpand '(qref a b c)) (slot (slot a 'b) 'c) We can hijack it in data for our own use: 14> '(www.google.com "blah") (www.google.com "blah") 15> (caar '(www.google.com "blah")) qref 16> (cdar '(www.google.com "blah")) (www google com) The TXR Lisp scripting language removes most of the Lisp micro-stumbling-blocks in everyday coding, providing the above notation, plus array access with ranges, and nice "string quasiliteral" notation for interpolated strings. 17> [mapcar succ "abcd"] "bcde" 18> ["abcdefg" 0] #\a 19> ["abcdefg" 0..3] "abc" 20> ["abcdefg" -2..:] "fg" 21> (car 'a..b) rcons 22> (cdr 'a..b) (a b) 23> '(rcons a b) a..b 24> (rcons 1 2) #R(1 2) 25> ["abcd" #R(1 3)] "bc" 26> ["abcde" '(0 2 4 6)] "ace"
- nrjames 10y agoI really like the concept but I don't really want to learn a niche programming language to interact with the site.
- nextos 10y agoYou can always use PyMC or some other probabilistic programming library/language.
- otoburb 10y agoChurch was the original probabilistic programming language used for the book, and as per another comment in this thread and a draft PhD dissertation[1], WebPPL is the successor to Church. "Niche" is probably in the eyes of the beholder if the audience is deliberately diving into probabilistic programming languages and probabilistic cognitive models. [1] http://library.meritology.com/fundamentals/chapters/1a-In_a_nutshell http://library.meritology.com/fundamentals/chapters/1a-In_a_...
- wodenokoto 10y agoIt's basically scheme with built in probabilistic functions. If you know scheme or lisp it should be no different than learning to use a few new functions. If you are not familiar with functional programming you might find it difficult to learn. I know I found it difficult.
- pinouchon 10y agoI'd like to mention that the research center behind this, the Center for Brains, Minds, and Machines (CBMM), has a great youtube channel: https://www.youtube.com/channel/UCGoxKRfTs0jQP52cfHCyyRQ https://www.youtube.com/channel/UCGoxKRfTs0jQP52cfHCyyRQ Some of my favourite videos: - Neural Representations of Language Meaning - Tom Mitchell https://www.youtube.com/watch?v=pRBf8BWAG3k https://www.youtube.com/watch?v=pRBf8BWAG3k - Computational cognitive science - Josh Tenenbaum (co-author of probmods) https://www.youtube.com/watch?v=2WQO9e5Mdj4 https://www.youtube.com/watch?v=2WQO9e5Mdj4