美文网首页
Neural Programmer: Inducing Late

Neural Programmer: Inducing Late

作者: Junr_0926 | 来源:发表于2018-08-14 22:40 被阅读0次

    # Neural Programmer: Inducing Latent Programs with Gradient Descent笔记

    ## neural programmer模型

    整个模型由四个部分组成:

    * 一个RNN用于处理输入的问题

    * 一个选择器用于在每一个time step,分别给一组操作和data segments赋予概率值

    * 一组这个模型可以采用的操作

    * 一个历史RNN用于记忆之前的操作和data segments

    如下图

    Neural Programmer

    其中模型在t时刻的输出通过在data segments应用操作并按照概率加权得到,模型的最终输出是T时刻的输出

    ### 问题模型(question module)

    question module将question tokens转换为一个distribution representation。在论文中,作者使用了RNN以及RNN最后的隐藏状态(hidden state)来表示。

    类似于最常见的RNN,在机器翻译中的encoder-decoder模型中,将句子中每一个词的embedding作为每一个时刻的输入,取最终的hidden state作为该句子的一个表示。

    对于每一个句子,作者除去了句子中的数字,并且将数字和数字左端那个词选出来单独保存为一个list

    对于长句子,使用bidirectional RNN

    ### Selector选择器

    selector在每一个时刻产生两个概率分布,一个用于set of operations,另一个用于set of columns。selector的输入是之前问题模型中得到的问题的表示和history RNN在时刻t的输出。

    每一个operation由一个d维的向量表示,如果operation个数为O,那么可以用一个O*d的矩阵U来表示所有的operation.

    **操作的选择**由以下公式决定

    它就相当于将selector的输入(question representation 和 history RNN输出)拼接后接一个全联接层,一个激活层,一个全联接层后接 softmax 输出一个概率值

    selector在每个时刻t也会产生columns的概率,用矩阵P(C*D)来表示column

    **数据选择**

    类似于操作选择

    ## Operations

    Neural Programmer现在支持两种输出:a)标量 b)a list of items selected from the table

    第一类输出用于"sum of elements in column C"类型的问题

    第二类输出用于"Print elements in column A that are greater than 50"类型的问题

    为了达到这样的目的,模型在每个时刻t维护来两种输出变量: scalar_answer, lookup_answer,除来这两个变量,模型还维护来另外一个变量row_select,用于表示选择row i的概率

    neural programmer的关键是built-in的操作,这些操作可以接触到所有时间t之前的输出,下表所示

    下图展示了如何计算输出

    论文中给出了输出的变量的公式

    ### 

    相关文章

      网友评论

          本文标题:Neural Programmer: Inducing Late

          本文链接:https://www.haomeiwen.com/subject/husbbftx.html