Searching for More Efficient Dynamic Programs
Tim Vieira, Ryan Cotterell, Jason Eisner

TL;DR
This paper introduces an automated method for optimizing dynamic programming algorithms in computational linguistics by applying semantics-preserving transformations to improve efficiency, potentially discovering speed-ups that humans might miss.
Contribution
It presents a novel automated search framework for transforming declarative programs to achieve better asymptotic runtime in NLP tasks.
Findings
Automated search can find significant efficiency improvements.
Many common NLP speed-ups could be automatically discovered.
The method is practical and aligns with human intuition in program optimization.
Abstract
Computational models of human language often involve combinatorial problems. For instance, a probabilistic parser may marginalize over exponentially many trees to make predictions. Algorithms for such problems often employ dynamic programming and are not always unique. Finding one with optimal asymptotic runtime can be unintuitive, time-consuming, and error-prone. Our work aims to automate this laborious process. Given an initial correct declarative program, we search for a sequence of semantics-preserving transformations to improve its running time as much as possible. To this end, we describe a set of program transformations, a simple metric for assessing the efficiency of a transformed program, and a heuristic search procedure to improve this metric. We show that in practice, automated search -- like the mental search performed by human programmers -- can find substantial…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
