【导读】 手游加速器真的有用吗,下面是小编为你收集整理的,希望对你有帮助!手游加速器是有用的,手游加速器可以防掉线自动重连,还可以智能加速降延迟,针对游戏时WiFi、3G/4G等各种网络问题进行优化,防止掉线,让团战,PK,畅玩无阻。手游加速器是利用IDC资源,采用数据转发......
发布时间:2023-11-21 20:01:16
乾明 发自 凹非寺
想象一下。
直接说你想干什么,就能生成相应的代码,会是多么“功德无量”一件事。
最直接受益的,就是程序员群体。
再也不用饱受“996”的折磨,也不用摸着不断后退的发际线而黯然神伤。

现在,这一天又近了一些。
最近,有一篇论文提出了一种基于语法的结构化CNN代码生成器,用《炉石传说》(HearthStone)基准数据集进行实验的结果表明:
准确性上明显优于以前最先进的方法5个百分点。

这篇论文目前已经被AAAI 2019收录。作者在论文中表示,他们是第一个成功地将CNN解码器用于代码生成的团队。
那么问题来了:
将CNN解码器用到代码生成,与之前的方法相比,到底有什么不同?
他们的模型又有什么特殊之处?效果到底好在哪?
下面,我们就来一一回答这些问题。
用CNN解码器生成代码的优势
基于自然语言描述生成代码,是挺难的一件事。
现在,通常用循环神经网络( RNN)进行序列生成,生成一首诗、进行机器翻译,都没问题。
但用在生成代码上,“麻烦”就来了。
程序中有很多结构化的信息,对程序建模很重要,但传统的Seq2Seq神经网络,并没有明确对程序结构进行建模。就比如下面这个Python的抽象语法树(AST)。

其中,n3和n6两个节点应该作为父子节点紧密交互,但如果使用传统的Seq2Seq方法,就会导致他们“父子离散”,彼此远离。
为了解决这个问题,很多人都开始想各种办法。其中一个关键方法就是用卷积神经网络(CNN),毕竟人家效率高,训练也简单。
这篇论文,就是一个代表。而且是第一个成功地将CNN解码器用于代码生成的,颇具分水岭意义。
在论文中,作者也介绍说,这比原来的RNN强多了。最主要的一点就是:
输入的程序一半都比自然语言句子长得多,就算RNN有LSTM(long short-term memory)的加持,也会一直受到依赖性问题的困扰。
而CNN就不一样了,可以通过滑动窗口(slide window)有效地捕捉不同区域的特征。
那,这个模型是怎么设计的呢?
模型设计
论文中介绍的CNN,是一种基于语法的结构化CNN。模型会根据AST的语法结构规则生成代码,而且还能预测语法规则的顺序,最终构建整个程序。
那,他们是如何预测语法规则的呢?主要基于三种类型的信息:
指定要生成的程序的源序列、之前预测的语法规则和已经生成的部分AST。
第一种很好理解,是编码器的输入。后两种的任务,就是使解码器能够自回归(autoregressiveness),并且解码器也以编码器为条件。
为了让这个结构化CNN更适合于代码生成,他们还设计了几个不同的组件:
第一,基于树的卷积思想,在AST结构上应用滑动窗口。然后,设计另一个CNN模块对部分AST中的节点进行前序遍历。这两种类型的CNN不仅捕获序列中的“邻居”信息,还捕获树结构中的“邻居”信息。
第二,将另一个CNN模块应用于要生成的节点的祖先,让网络知道,在某个步骤中在哪里生成。从而增强“自回归性”。
第三,设计专门的注意力机制,将CNN的特征与不同的CNN模块进行交互。此外,作者表示,在代码生成过程中考虑范围名称(例如,函数和方法名称)是有用的,所以就使用了这样的信息当作几个池层的控制器。
于是,就得出了这样的一个模型。

△模型概述。虚线箭头表示注意力控制器。
这个模型,效果到底怎么样呢?
模型效果
作者用两个任务评估了模型的效果。一个是生成《炉石传说》游戏的Python代码,一个是用于语义解析的可执行逻辑形式生成。
生成《炉石传说》的Python代码
这个任务使用的是《炉石传说》基准数据集,一共包括665张不同卡牌。
输入是字段的半结构化描述,例如卡牌名、成本、攻击、描述和其他属性;

要输出的是实现卡牌功能的Python代码片段。

通过准确性与BLEU分数来测量模型的质量。在准确性方面,作者追踪了之前大多数研究相同的方法,根据字符串匹配计算精度(表示为StrAcc )。
有时候,几个生成的程序使用了不同的变量名,但功能是正确的,这就需要人为去调整。并用Acc +表示人为调整的精度。
最后,用BLEU值评估生成的代码的质量。
结果如下图所示:

在准确性和BLEU分数方面,都优于之前的所有模型。StrAcc比之前最好的模型高出了5个百分点。经过人为调整后的Acc+达到了30.3%,增加了3个百分点,之前的模型最好的效果提高了2%。
作者认为,这显示了他们方法的有效性。至于之前的模型跟他们的模型在BLEU分数上的相似性,作者解释道,代码生成还是要看细节。
语义解析任务
在语义解析任务中,使用的两个语义解析数据集( ATIS和JOBS ),其中输入是自然语言句子。ATIS的输出是λ演算形式,而对于JOBS,输出的是Prolog形式。

在这两个数据集中,论文中提出的模型并没有展现出什么优势。

作者在论文中表示,这可能是因为语义解析的逻辑形式通常很短,因此,RNN和CNN都可以生成逻辑形式。
不过,这个实验也证明了用CNN进行代码生成的普遍性和灵活性。毕竟,整个模型基本上是为长程序设计的,在语义解析方面也很好。
关于作者
按照署名顺序,作者分别为孙泽宇、朱琪豪、牟力立、熊英飞、李戈、张路,其中其中熊英飞为通讯作者。作者单位为北京大学信息科学技术学院。

传送门
论文:
https://arxiv.org/abs/1811.06837
GitHub:
https://github.com/zysszy/GrammarCNN
— 完—
钱姓排于百家姓中的第二位,虽然起源和来历并不多,但是钱姓人却分布广泛,成为了中国姓氏中的第二大姓。钱姓的主要来源就是彭祖的儿子篯孚,彭祖的真名叫做篯铿,是因为被尧封于大彭而得姓-彭,而他的儿子篯孚因为掌管着钱财,任职钱府上士,所以便为“钱”姓,所以彭钱是一家。...
发布时间:2024-09-20 20:03:27
胡服最早是由春秋战国时的赵武灵王-赵雍引入中原的,因为当时赵国的地形和地理位置都非常不好,常年深受战争威胁,加上赵武灵王继位之后,时局不稳,周边国家都想要攻打赵国,所以赵武灵王便下令让全员都推行胡服,并且学习骑射,相较于宽大的汉服更加便于行动。...
发布时间:2024-09-20 19:05:44
赛艇运动起源于英国的泰晤士河上,当时还是17世纪,英国泰晤士河上的船工在工作之余经常会举办一些赛船,久而久之就形成了一种习俗,在1715年的时候,为了庆祝英王的卫冕,所以第一次正式举办了赛艇比赛,最终在1775年发展为一个正式的运动项目,并且成立了相应的运动俱乐部。...
发布时间:2024-09-20 18:04:28
人们之所以不愿意或者不敢以“宸”为名,主要是因为在古时候“宸”有着“深邃的房屋”的意思,也就是专指皇帝的居住场所,象征着无上的权力,所以“宸”字自然也就成为了禁忌,不过现代人大多是害怕这个字的气势,普通人的命格扛不住。...
发布时间:2024-09-20 17:00:53
商细蕊是电视剧《鬓边不是海棠红》中的京剧名旦,很多人都为他和海归商人程凤台的知己故事而动容,但遗憾的是在历史长河中并没有商细蕊真正的原型,只能说他可能是作者根据历史上著名的京剧名旦构建的一个角色,因为他和梅兰芳、程砚秋、尚小云以及徐碧云等四人的经历和性格都有着极为相似之处。...
发布时间:2024-09-20 16:05:01
在中华上下五千年的历史长河中,除了王朝更替的政治生活与文化生活,还有一些美貌的女子点缀着历史的绘卷,那么在悠悠岁月中有哪些著名的美女呢?下面小编就来为大家盘点一下吧!...
发布时间:2024-09-20 15:04:04
谈及古代帝王,最让人津津乐道的当属那后宫佳丽三千,不过也不是所有的帝王都有那么充实的后宫,比如历史上有一位皇帝就只有一位妻子,是不是让人有点不敢相信,下面小编就带大家一起了解下吧!...
发布时间:2024-09-20 14:01:05
自古无情帝王家,说到帝王的爱情多是奢望,很多帝王后宫的妃子换了一个又一个,几乎都是薄情寡义的,但是漫长的历史长河中也有例外,有的皇帝便与众不同,特别的长情,下面小编来为大家介绍一下历史上最长情的皇帝吧!...
发布时间:2024-09-20 13:03:24
可以说人的成长伴随着无数的武侠剧,尤其是电视剧中的那些绝世高手更是让人影响深刻,有不少人小时候都幻想过可以武功盖世,一统江湖,那么有人知道武侠剧中有哪些绝世高手吗?下面小编为大家盘点一下吧!...
发布时间:2024-09-20 12:02:19
古装电视剧中有许多的美丽的女子,她们身着美丽的衣裳,一举一动摇曳生姿,美得让人挪不开双眼,可以说是一场视觉盛宴,下面就让小编为大家盘点一下那些古装美女吧!...
发布时间:2024-09-20 11:09:01
近年清朝古装剧收视率暴涨,这些电视剧不仅剧情引人入胜,身着清装的美人也同样吸引了不少目光,有着让人过目不忘的美貌,那么清朝古装剧中有哪些美人呢?下面小编就来为大家盘点一下吧!...
发布时间:2024-09-20 11:02:08
养龟市场上经常可以看到小青龟,这种乌龟乖巧可爱以及性情温顺,所以很多人都会选择小青龟来饲养,不过一直都是见到小青龟都比较小,这不禁令人好奇这种乌龟能长多大?下面小编就带大家一起了解一下小青龟吧!...
发布时间:2024-09-20 10:01:47