您现在的位置:首页 > 教案范文 > 正文

历史学论文研究方法_毕业论文研究方法_论文研究方法怎么写(4)

2017-12-16 17:05 网络整理 教案网

层级生成式CNN模型(Hierarchical Generative Convolutional Neural Networks,简称HGCNN模型)是Facebook最近提出的一种具备“代码生成派”典型特点的深度学习自动程序推导方法。其整体工作流程符合上述“代码生成派”运行过程,只是图4中的“深度学习自动编程系统”模块采用了具体的HGCNN模型而已。

图5 层级生成式CNN模型(HGCNN)

图5展示了HGCNN模型的神经网络结构。在模型应用阶段,对于需要编码的新任务,先提供若干满足任务处理逻辑的输入输出数据(HGCNN主要对数组进行各种类型的变换,比如图5中展示的例子是对数组进行排序)。对于每个输入输出数据,HGCNN使用四层采用全连接结构的DNN网络(图5中标为b的网络结构)来对其进行特征提取,每层网络包含512个隐层神经元。之后,将若干个输入输出数据的特征求均值作为输入输出数据的整体特征表示。可以看出,这个过程是对输入实例进行编码和特征提取的阶段。然后采用连续的CNN上采样(UpSampling)操作不断形成逐步扩大的二维结构矩阵,上采样是用来可视化展示CNN隐层所学到的特征所常用的技术,在这里采用上采样可以将输入输出数据中的特征规律以类似二维图形的方式展示;上采样形成的二维矩阵每次扩大一倍,直到形成最终的16*16大小的代码画布(Code Canvas),这个最终的代码画布代表了各种操作原语在最终代码中出现的可能性。代码画布的每一行代表一个操作原语语句,一个操作原语由某个操作符以及对应的两个参数构成(参考图5中的c部分)。GHCNN的“领域特定语言”定义的语言类似于汇编语言,图5中c子图展示的是Load 1 2的操作命令,图6则列出了这个语言定义的操作原语。

图6 HGCNN的领域特定语言

在获得了最终程序中可能包含的原语语句概率信息后,HGCNN采用宽度优先搜索策略在代码组合空间中搜索满足输入输出实例约束条件的代码片段,以此来最终形成输出的程序代码,这样就完成了指定输入输出实例后自动产生代码的功能。

HGCNN有个特色是训练数据包括输入输出以及对应的代码完全自动生成得来,而不像很多其它系统需要提供现成的训练数据,从这点上说其运作机制有点类似于无监督学习。另外,从上述描述可以看出,本质上HGCNN是一种符合Encoder-Decoder(编码器-解码器)结构的具体模型,这里Encoder的编码对象是多个<输入,输出>数据,形成特征表示后采用Decoder来产生DSL原语语句,Decoder则是利用了上采样生成二维结构的方式生成DSL原语片段生成概率。

DeepCoder是另外一个采取“代码生成派”路线的深度学习自动编码系统,其主体思路和HGCNN类似,只不过使用的具体Encoder和Decoder不太相同,其整体运行流程也基本采用了图4所示的“代码生成派”典型流程。

问题与展望

利用机器自动根据任务实例学习编写代码是能够极大提高代码开发效率的人工智能应用领域,而深度学习技术广泛使用在这个领域也是最近两年刚出现的新趋势,尽管取得了非常快速的技术进展,但是这个研发领域仍然面临一系列需要解决的问题。

首先,深度学习自动编码研究仍然处于技术发展初期,目前也只能产生解决比较简单任务的代码,距离真正实用化的代码生成还有很大距离。其次,尽管提出了一些通用的解决方案,但是大部分技术的通用性仍然不够强。所谓通用性不强,是指当面临一类新的编程任务,需要重新训练神经网络参数,无法做到训练一次以后面对新场景时原先的神经网络能够反复适用,这对于技术的实用化应用是个很大的障碍。

再次,对于机器自动产生的代码,很难验证其逻辑的正确性。历史学论文研究方法自动产生的程序虽然能够将训练实例中给定的输入正确转换为指定输出,但是毕竟这些例子很有限,对于更多的输入其输出是否正确这点很难验证。

虽然面临如上诸多困难,但是深度学习的蓬勃发展给很多应用领域都带来了根本性的性能提升,相信在未来几年内神经网络编码器领域会有大幅的技术进步,有可能在某些垂直领域产生真正实用化的机器码农。