用于训练的序列长度 T 对长期相关性(long-term dependencies)建模十分重要。在经验性试验后,用于训练的 DSL 代码输入文件由大小为 48 的滑动窗口(sliding window)分割,即我们用 48 步展开循环神经网络。 训练由损失函数对神经网络的权重求偏导数而执行反向传播算法,因此可以最小化多级对数损失而进行训练:
其中 xt+1 为预期符号(expected token),yt 为预测符号。 3.5 抽样 为了生成 DSL 代码,我们投送 GUI 图像和 T = 48 符号的序列 X,其中符号 xt . . . xT −1 设置为空符号,j2直播,而序列 xT 设置为特别的<START>符号。
表 1:数据集统计 试验
图 3:在不同训练集的训练损失和模型在训练 10 个 epochs 中的抽样 ROC 曲线。
表 2:在测试集(表 1 所述)上的试验结果报告。 图 4、5、6 展示了输入 GUI 图像(样本真值),和由已训练 pix2code 模型生成输出的 GUI。
图 4:iOS GUI 数据集中的试验样本。
图 5:安卓 GUI 数据集中的试验样本。
图 6:网页 GUI 数据集的试验样本。 结语 在本论文中,我们提出了 pix2code 模型,它是一种给定 GUI 图片作为输入,且能生成计算机代码的新方法。虽然我们的工作展示了这样一种能自动生成 GUI 代码的潜力系统,但我们的工作只是开发了这种潜力的皮毛。我们的模型由相对较少的参数组成,并且只能在相对较小的数据集上训练。而构建更复杂的模型,并在更大的数据集上训练会显著地提升代码生成的质量。并且采用各种正则化方法和实现注意力机制(attention mechanism [1])也能进一步提升生成代码的质量。同时该模型采用的独热编码(one-hot encoding)并不会提供任何符号间关系的信息,而采用 word2vec [12] 那样的词嵌入模型可能会有所好转,同时独热编码(one-hot encoding)也会限制可支持的符号数量。最后,由于近来生成对抗网络(GAN)在图片生成上有极其出色的表现,也许我们可以借助 GAN 及其思想由 GUI 图像生成计算机代码。 本文为机器之心编译,转载请联系本公众号获得授权。 ✄------------------------------------------------ 加入机器之心(全职记者/实习生):[email protected] 投稿或寻求报道:[email protected] 广告&商务合作:[email protected] (责任编辑:本港台直播) |