DEEPCODER: LEARNING TO WRITE PROGRAMS

Basic Information

  • Authors: Matej Balog, Alexander L. Gaunt, Marc Brockschmidt, Sebastian Nowozin, Daniel Tarlow
  • Publication: ICLR'17
  • Description: Generate code based on input-output examples via neural network techniques

INDUCTIVE PROGRAM SYNTHESIS (IPS)

The Inductive Program Synthesis (IPS) problem is the following: given input-output examples, produce a program that has behavior consistent with the examples.

Building an IPS system requires solving two problems:

  • Search problem: to find consistent programs we need to search over a suitable set of possible programs. We need to define the set
    (i.e., the program space) and search procedure.
  • Ranking problem: if there are multiple programs consistent with the input-output examples, which one do we return?

Domain Specific Languages (DSLs)

  • DSLs are programming languages that are suitable for a
    specialized domain but are more restrictive than full-featured programming languages.
  • Restricted DSLs can also enable more efficient special-purpose search algorithms.
  • The choice of DSL also affects the difficulty of the ranking problem.

Search Techniques

Technique for searching for programs consistent with input-output examples.

  • Special-purpose algorithm
  • Satisfiability Modulo Theories (SMT) solving

Ranking

LEARNING INDUCTIVE PROGRAM SYNTHESIS (LIPS)

The components of LIPS are:

  1. a DSL specification,

    An attribute function A that maps programs P of the DSL to finite attribute vectors a = A(P). (Attribute vectors of different programs need not have equal length.) Attributes serve as the link between the machine learning and the search component of LIPS: the machine learning model predicts a distribution q(a | E), where E is the set of input-output examples, and the search procedure aims to search over programs P as ordered by q(A(P) | E). Thus an attribute is useful if it is both predictable from input-output examples, and if conditioning on its value significantly reduces the effective size of the search space.

    Possible attributes are the (perhaps position-dependent) presence or absence of high-level functions (e.g., does the program contain or end in a call to SORT). Other possible attributes include control
    flow templates (e.g., the number of loops and conditionals).

  2. a data-generation procedure,

    Generate a dataset ((P(n), a(n), E(n)))Nn=1 of programs P(n) in the chosen DSL, their attributes a(n), and accompanying input-output examples E(n)).

  3. a machine learning model that maps from input-output examples to program attributes,

    Learn a distribution of attributes given input-output examples, q(a | E).

  4. a search procedure that searches program space in an order guided by the model from (3).

    Interface with an existing solver, using the predicted q(a | E) to guide the search.

DEEPCODER: Instantiation of LIPS

  1. DSL AND ATTRIBUTES
    A program in our DSL is a sequence of function calls, where the result of each call initializes a fresh variable that is either a
    singleton integer or an integer array. Functions can be applied to any of the inputs or previously computed (intermediate) variables. The output of the program is the return value of the last function
    call, i.e., the last variable. See Fig. 1 for an example program of length T = 4 in our DSL.
    Overall, our DSL contains the first-order functions HEAD, LAST, TAKE, DROP, ACCESS, MINIMUM, MAXIMUM, REVERSE, SORT, SUM, and the higher-order functions MAP, FILTER, COUNT, ZIPWITH, SCANL1.

  1. DATA GENERATION
  2. MACHINE LEARNING MODEL
    1. an encoder: a differentiable mapping from a set of M input-output examples generated by
      a single program to a latent real-valued vector, and
    2. a decoder: a differentiable mapping from the latent vector representing a set of M inputoutput
      examples to predictions of the ground truth program’s attributes.

  1. SEARCH

    1. Depth-first search (DFS)
    2. “Sort and add” enumeration
    3. Sketch
  2. TRAINING LOSS FUNCTION
    Negative cross entropy loss

Implementation

  1. Pure python 3 implementation of DeepCoder
  2. Re-implement DeepCoder
  3. DeepCoder-tensorflow

[ICLR'17] DEEPCODER: LEARNING TO WRITE PROGRAMS的更多相关文章

  1. 17、Learning and Transferring IDs Representation in E-commerce笔记

    一.摘要 电子商务场景:主要组成部分(用户ID.商品ID.产品ID.商店ID.品牌ID.类别ID等) 传统的编码两个缺陷:如onehot,(1)存在稀疏性问题,维度高(2)不能反映关系,以两个不同的i ...

  2. SysML——AI-Sys Spring 2019

    AI-Sys Syllabus Projects Grading AI-Sys Spring 2019 When: Mondays and Wednesdays from 9:30 to 11:00 ...

  3. [综述]Deep Compression/Acceleration深度压缩/加速/量化

    Survey Recent Advances in Efficient Computation of Deep Convolutional Neural Networks, [arxiv '18] A ...

  4. (zhuan) Deep Reinforcement Learning Papers

    Deep Reinforcement Learning Papers A list of recent papers regarding deep reinforcement learning. Th ...

  5. Machine Learning 方向读博的一些重要期刊及会议 && 读博第一次组会时博导的交代

    读博从报道那天算起到现在已经3个多月了,这段时间以来和博导总共见过两次面,寥寥数语的见面要我对剩下的几年读书生活没有了太多的期盼,有些事情一直想去做却总是打不起来精神,最后挣扎一下还是决定把和博导开学 ...

  6. 【Deep Learning Nanodegree Foundation笔记】第 0 课:课程计划

    第一周 机器学习的类型,以及何时使用机器学习 我们将首先简单介绍线性回归和机器学习.这将让你熟悉这些领域的常用术语,你需要了解的技术进展,并了解深度学习在更大的机器学习背景中的位置. 直播:线性回归 ...

  7. Github项目推荐-图神经网络(GNN)相关资源大列表

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 转自 | AI研习社 作者|Zonghan Wu 这是一个与图神经网络相关的资源集合.相关资源浏览下方 ...

  8. 库、教程、论文实现,这是一份超全的PyTorch资源列表(Github 2.2K星)

    项目地址:https://github.com/bharathgs/Awesome-pytorch-list 列表结构: NLP 与语音处理 计算机视觉 概率/生成库 其他库 教程与示例 论文实现 P ...

  9. CNN结构:场景分割与Relation Network

    参考第一个回答:如何评价DeepMind最新提出的RelationNetWork 参考链接:Relation Network笔记  ,暂时还没有应用到场景中 LiFeifei阿姨的课程:CV与ML课程 ...

随机推荐

  1. tensorflow 手写数字识别

    https://www.kaggle.com/kakauandme/tensorflow-deep-nn 本人只是负责将这个kernels的代码整理了一遍,具体还是请看原链接 import numpy ...

  2. python 生成动态密码

    import stringimport randomdef gen_psd(length=10): """length is password length"& ...

  3. Github超棒资源汇总

    Awesome List 中文资源大全 经典编程书籍大全 免费的编程中文书籍索引 awesome-awesomeness-zh_CN https://github.com/jnv/lists awes ...

  4. SSE图像算法优化系列九:灵活运用SIMD指令16倍提升Sobel边缘检测的速度(4000*3000的24位图像时间由480ms降低到30ms)。

    这半年多时间,基本都在折腾一些基本的优化,有很多都是十几年前的技术了,从随大流的角度来考虑,研究这些东西在很多人看来是浪费时间了,即不能赚钱,也对工作能力提升无啥帮助.可我觉得人类所谓的幸福,可以分为 ...

  5. ArcGIS鼠标滚轮方向之代码篇

    Desktop10.X有多个版本,不同版本的注册表路径不一致,注册表中可能残留多个版本的注册信息:也可能没有Desktop,而是Engine.其实可以通过RuntimeManager.ActiveRu ...

  6. php : 文件及文件夹操作(创建、删除、移动、复制)

    Talk is cheap, show you the code : <?php /** * 操纵文件类 * */ class FileUtil { /** * 建立文件夹 * * @param ...

  7. MySQL读取配置文件的顺序、启动方式、启动原理

    一.MySQL读取配置文件的顺序 读取顺序:/etc/my.cnf > /etc/mysql/my.cnf > /usr/etc/my.cnf > ~/.my.cnf 命令验证:[r ...

  8. AYUI7 响应式开发

    AYUI7 爱奇艺某页面 响应式DEMO,AY响应式框架在MVC中,使用起来xaml级别,支持 显示器水平/垂直/任意 显示: 大于宽度和大于高度 触发器,小于宽度和小于高度 触发器,每个触发器支持是 ...

  9. wamp 在本地安装PHP环境, 开启 curl 扩展

    分别打开以下 2 个文件: wamp\bin\php\(your php version)\php.ini wamp\bin\Apache\(your apache version)\bin\php. ...

  10. 对 IIC 总线的理解、调用函数以及常见面试问题

    一.IIC 总线概述: IIC 即Inter-Integrated Circuit(集成电路总线) I2C总线是PHLIPS公司推出的一种串行总线, I2C总线只有两根双向信号线.一根是数据线SDA, ...