This topic recently came up at the FLANN workshop [1], and seems to periodically be rediscovered [2,3,4] in different contexts. While some have speculated about the biological role it plays (e.g., Pearlmutter & Houghton [5]), we still lack a conclusive theory of sleep, but the convergent evolution of this specific phenomenon across the animal kingdom and the fact that deprivation is inevitably fatal seems like an important clue. [1]: https://flann.cs.yale.edu [2]: https://www.cs.toronto.edu/~hinton/csc2535/readings/ws.pdf [3]: https://arxiv.org/abs/1711.02282 [4]: https://arxiv.org/abs/2006.08381 [5]: https://mural.maynoothuniversity.ie/id/eprint/1653/1/Hamilto...
DreamCoder: Growing generalizable, interpretable knowledge with wake-sleep Bayesian program learning
Kevin Ellis, Catherine Wong, Maxwell Nye
Show all 9 authors
Mathias Sable-Meyer, Luc Cary, Lucas Morales, Luke Hewitt, Armando Solar-Lezama, Joshua B. Tenenbaum
2020 · arXiv
- HN score
- 0
- Mentions
- 13
- Readers
- 10
- Months
- 10
From the abstract
Expert problem-solving is driven by powerful languages for thinking about problems and their solutions. Acquiring expertise means learning these languages -- systems of concepts, alongside the skills to use them. We present DreamCoder, a system that learns to solve problems by writing programs. It builds expertise by creating programming languages for expressing domain concepts, together with neural networks to guide the search for programs within these languages. A ``wake-sleep'' learning algorithm alternately extends the language with new symbolic abstractions and trains the neural network on imagined and replayed problems. DreamCoder solves both classic inductive programming tasks and creative tasks such as drawing pictures and building scenes. It rediscovers the basics of modern functional programming, vector algebra and classical physics, including Newton's and Coulomb's laws. Concepts are built compositionally from those learned earlier, yielding multi-layered symbolic representations that are interpretable and transferrable to new tasks, while still growing scalably and flexibly with experience.
Metadata: arXiv. Abstracts retain their original authors’ rights.
In the conversation
Original HN comments, with labels from simple text rules. A label describes the whole comment and may miss context or irony. Read the discussion to make up your own mind. About the labels
13 selected excerpts · 13 total mentions
> So if someone figures out to do this, it will probably take less hardware than an LLM. We have, it's called DreamCoder. There's a paper and everything. Everything needed for AGI exists today, people simply have (incorrect) legacy beliefs about cognition that are holding them back (e.g. "humans are rational"). https://arxiv.org/abs/2006.08381
Some parts of PAIP might be outdated, but it still has really current material on e.g. embedding Prolog in Lisp or building a term-rewriting system. That's relevant for pursuing current neuro-symbolic research, e.g. https://arxiv.org/pdf/2006.08381.pdf. Other parts like coding an Eliza chatbot are indeed outdated. I have read AIMA and followed a long course that used it, but I didn't really like it. I found it too broad and shallow.
AI Research Residency Program (1 year) | Zug/Zurich area | Full time | On site | 100-200k CHF/annum I am launching a new AI research organisation in the Zug/Zurich area. The goal of the organisation is to make a meaningful contribution towards solving AGI. I am looking for employees number no. 1 and 2. This will ideally be someone with a history of interesting research and a clear agenda for future research. I am personally interested in LLM's, MuZero (https://arxiv.org/abs/1911.08265), Dreamer (https://arxiv.org/pdf/2301.04104v1.pdf) and DreamCoder (https://arxiv.org/abs/2006.08381), and think there are some interesting systems to be found by interpolating between these…
Read the full comment
existing areas (however, please still apply even if your research isn't in these areas). The project will be financed by my current company which has made extensive use of deep learning for the past 4 years. You will have access to the >100 top-end GPUs owned by this company. The job will be structured as a research residency program in the first year, with the hope of transitioning successful candidates into full-time roles. In your application, please include a high-level research proposal stating what you would work on. To apply, email me at : not_a_cat at fastmail. co[m].
From more recent times, and not specifically an art project, but I liked the work on DreamCoder, particularly the part where it learned to draw in Logo graphics. See figure on page 11 for some graphics: DreamCoder: Growing generalizable, interpretable knowledge with wake-sleep Bayesian program learning https://arxiv.org/abs/2006.08381
> I would actually be more impressed if it understood enough about programs to be able to mimic higher-level structure without just memorizing text. Agreed. > Why do you think Python isn't good for comparing program structure? From recent experience I prefer control flow analysis, or something that results in a graph structure. As you said, that's harder with dynamic languages. I also think some Python features (english-like syntax, f-strings, division converts int to float, whitespace indentation, loops vs generator expressions) make structural comparisons messy, but that may just be bias. The ideal language would be one with minimal syntax, where we can target a decent…
Read the full comment
range of programs, and obtain as much info as possible about program structure without actually running the program. I've come across LISP-without-macros in Dreamcoder (https://arxiv.org/abs/2006.08381), BF++ (https://arxiv.org/abs/2101.09571), and a couple of others which I can't remember right now. I think the APL family (APL/J/K) would interesting because fewer characters to generate, but each character has a lot of meaning. Right now I'm looking at flow-based programming (FBP) for this: In FBP the control flow is explicit - the program code describes a directed acyclic graph (DAG), so comparing program structure becomes straightforward (subgraph isomorphism with some heuristics). I'm writing a toy FBP language that draws images (https://github.com/mayahq/flatland), with which I aim to test what these models understand.
That’s not entirely correct, as I know of at least one approach to neural program synthesis that employs self supervised learning. https://arxiv.org/abs/2006.08381 It’s a slightly different, easier problem: generating programs based on example outputs, rather than natural language specifications.
> if he could find a way to symbolically represent these fundamental concepts and develop a method by which to combine them logically, then he would be able to generate new thoughts on demand Reminds me of some recent neurosymbolic work, like "DreamCoder: Growing generalizable, interpretable knowledge with wake-sleep Bayesian program learning" [1] [1] https://arxiv.org/abs/2006.08381
Here is a 1984 article on Eurisko: https://aliciapatterson.org/stories/eurisko-computer-mind-it... From the article we learn Eurisko is more of an example of human machine symbiosis than of AI. "Thus the final crediting of the win should be about 60/40% Lenat/Eurisko," he wrote, "though the significant point here is that neither party could have won alone. The program came up with all the innovative designs and design rules and recognized the significance of most of these. It was a human observer, however, (the author) who appreciated the rest, and who occasionally noticed errors or flaws in the synthesized design rules which would have wasted inordinate amounts of time…
Read the full comment
before being corrected by Eurisko." Lenat did not know much about the game and its search space was intractable for the AI. The combination of both was able to come up with unique solutions counter-intuitive to humans. From a certain perspective, Eurisko could also be viewed as on the path to some next iteration of programming that never quite arrived. That is, programming languages stalled in the 70s, as Alan Kay notes in: http://worrydream.com/EarlyHistoryOfSmalltalk/ A look beyond OOP as we know it today can also be done by thinking about late-binding. Prolog's great idea is that it doesn't need binding to values in order to carry out computations [Col *]. The variable is an object and a web of partial results can be built to be filled in when a binding is finally found. Eurisko [Lenat *] constructs its methods—and modifies its basic strategies—as it tries to solve a problem. Instead of a problem looking for methods, the methods look for problems—and Eurisko looks for the methods of the methods. This has been called "opportunistic programming"—I think of it as a drive for more enlightenment, in which problems get resolved as part of the process. This higher computational finesse will be needed as the next paradigm shift—that of pervasive networking—takes place over the next five years. Objects will gradually become active agents and will travel the networks in search of useful information and tools for their managers. Objects brought back into a computational environment from halfway around the world will not be able to configure themselves by direct protocol matching as do objects today. Instead, the objects will carry much more information about themselves in a form that permits inferential docking. Some of the ongoing work in specification can be turned to this task [Guttag ][Goguen]. Tongue in cheek, I once characterized progress in programming languages as kind of "sunspot" theory, in which major advances took place about every 11 years. We started with machine code in 1950, then in 1956 FORTRAN came along as a "better old thing" which if looked at as "almost a new thing" became the precursor of ALGOL-60 in 1961. In 1966, SIMULA was the "better old thing," which if looked at as "almost a new thing" became the precursor of Smalltalk in 1972. Everything seemed set up to confirm the "theory" once more: in 1978 Eurisko was in place as the "better old thing" that was "almost a new thing". But 1983—and the whole decade—came and went without the "new thing". Of course, such a theory is silly anyway—and yet, I think the enormous commercialization of personal computing has smothered much of the kind of work that used to go on in universities and research labs, by sucking the talented kids towards practical applications. I believe Eurisko operates on very similar principles as PI, which is detailed here:http://bactra.org/reviews/hhnt-induction/ in a fascinating review by Shalizi. > Unlike the classifier system, which acts on raw binary strings, PI rules and representations are Lisp expressions, and there are more structured representations of concepts, which are however still basically rule clusters. Again unlike the classifier system, which gets new rules by using a genetic algorithm on existing ones, PI has a number of specific inductive mechanisms --- specialization, generalization, abduction, and concept formation --- which are intended to be reminiscent of conscious experience, unlike the GA. PI was invented by Holland, who is more famously known for his contributions to genetic algorithms and evolutionary computation. Those algorithms were meant to be used in a system like PI and not in the stand alone manner typical of today. Learning Classifier Systems being simplified versions of PI, are probably the closest concept to Eurisko in semi-active use. DreamCoder: https://arxiv.org/abs/2006.08381 is the latest development along this investigatory and very much underexplored path to Machine intelligence.
DreamCoder: Growing generalizable, interpretable knowledge with wake-sleep Bayesian program learning https://arxiv.org/abs/2006.08381 A killer paper presenting an algorithm capable of inductive learning. ("DreamCoder solves both classic inductive programming tasks and creative tasks such as drawing pictures and building scenes. It rediscovers the basics of modern functional programming, vector algebra and classical physics, including Newton's and Coulomb's laws.")
>> It is current state of art approach. That's not right. The approach described in the article and the linked paper is not "state of the art". It beats one benchmark which has only been used to compare one kind of system: neural program synthesis systems (Codex, AlphaCode, GPT-j and the one in the article, CodeRL). It almost completely fails to acknowledge the wider field of program synthesis that has existed long before that benchmark. The benchmark is ad hoc and arbitrary and it tells us nothing about the general capability of the compared systems, except that they are still very bad at that particular benchmark. I linked the Gulwani report above because it is a good,…
Read the full comment
recent introduction to the field of program synthesis research which is still dominated by non-neural approaches and for very good reasons. I linked to another paper that shows an example of a system of the non-neural kind that is common in program synthesis. I pointed out that regardless of the one and only benchmark on which the LLM-based systems have been tested that are listed in the article above, the approach of code generation by LLM is primitive compared to the sophisticated search and testing strategies developed by the wider prorgam sythesis community over the years. Again, see Gulwani at al. for examples. The proposed approach is also primitive compared to existing, earlier neural program synthesis approaches, i.e. program synthesis approaches that do use a neural network, but not an LLM, for example DreamCoder [https://arxiv.org/abs/2006.08381] or everything from Dawn Song's group [https://sunblaze-ucb.github.io/program-synthesis/index.html] - none of which I'm affiliated with in any way, btw. If you're looking for the state of the art in program synthesis, look elsewhere than LLM-based systems like the one in the article above. Even if you're looking for the state of the art in neural program synthesis, look elsewhere. What is described in the article above is a first, faltering step in a direction that may still yield some good results in the future. Or it may not. But it's nothing impressive for the time being. >> Unpublish paper and results? Gulwani et al is a technical report but it's a staple reference in the field, and an easy introduction to outsiders. As far as I can tell, neither AlphaCode, nor CodeRL (the Salesforce model described in the article) have been the subject of published work. The article above is linking to an arxiv preprint.
>> This is technology that simply didn't exist in any form 2 years ago. A few examples of neural program synthesis from at least 2 years ago: https://sunblaze-ucb.github.io/program-synthesis/index.html Another example from June 2020: DreamCoder: Growing generalizable, interpretable knowledge with wake-sleep Bayesian program learning https://arxiv.org/abs/2006.08381 RobustFill, from 2017: RobustFill: Neural Program Learning under Noisy I/O https://www.microsoft.com/en-us/research/wp-content/uploads/... I could go on. And those are only examples from neural program synthesis. Program synthesis, in general, is a field that goes way back. I'd suggest as usual not making big proclamations about its state of the art without being acquainted with the literature. Because if you don't know what others have done every announcement by DeepMind, OpenAI et al seems like a huge advance... when it really isn't.
Program induction (or inductive programming, program synthesis from incomplete specifications etc, the task of learning programs from examples) is not "headed towards ML", it is a branch of machine learning research - only, one that is dominated by symbolic learning approaches such as Inductive Logic Programming and Inductive Functional Programming. When you say "ML" you probably mean the deep neural networks approaches that are currently state of the art for machine vision etc. Deep neural network approaches have been proposed for the task of program induction but they generally lag well behind symbolic machine learning approaches. The most coherent efforts to tackle…
Read the full comment
program induction by neural networks that I am aware of is the work of Dawn Song's group at Berkeley [1] and of Joshua Tenenbaum's group at MIT. I can't find a handy link to a compilation of the latter group's work but the Dreamcoder paper in the paperswithcode search you linked to was an interesting milestone [2]. There is a lot of work on neuro-symbolic approaches to program induction, for example see the recent (two weeks ago) NeSy workshop [3], part of the first International Joint Conference on Learning and Reasoning for some new work in that burgeoning field. Statistical Relational AI combines symbolic with probabilistic learning; see the STAR-AI workshop [4] also at IJCLR. If you're interested in recent developments on the front of program induction (again, learning programs from examples) then IJCRL is the conference to keep an eye on. _______ [1] https://sunblaze-ucb.github.io/program-synthesis/index.html [2] https://arxiv.org/abs/2006.08381 [3] https://sites.google.com/view/nesy20/home [4] https://starai.cs.kuleuven.be/2021/
Keep following the thread.
More in Programming languagesMore from the same topics.
Language Models are Few-Shot Learners
Tom B. Brown, Benjamin Mann, Nick Ryder +28
Recent work has demonstrated substantial gains on many NLP tasks and benchmarks by pre-training on a large corpus of text followed by fine-tuning on a specific task.
Dissolving the Fermi Paradox
Anders Sandberg, Eric Drexler, Toby Ord
The Fermi paradox is the conflict between an expectation of a high {\em ex ante} probability of intelligent life elsewhere in the universe and the apparently lifeless universe we in fact observe.
Understanding deep learning requires rethinking generalization
Chiyuan Zhang, Samy Bengio, Moritz Hardt +2
Despite their massive size, successful deep artificial neural networks can exhibit a remarkably small difference between training and test performance.
Copy-and-Patch Compilation: A fast compilation algorithm for high-level languages and bytecode
Haoran Xu, Fredrik Kjolstad
Fast compilation is important when compilation occurs at runtime, such as query compilers in modern database systems and WebAssembly virtual machines in modern browsers.