您现在的位置是:热点 >>正文
AI根据代码内容自动起函数名,再也不怕命名不规范的同事了
热点385人已围观
简介...
本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
有的人能把代码写成推理小说。
需要一个临时变量的时候就叫temp,需要多个就叫var1,var2。
甚至用拼音AI缩写当函数名,比如查询订单就叫cxdd。
要想看懂这样的代码,得联系上下文反复推敲,还原每个部分的真实作用。
这个过程叫做反混淆(Deobfuscation)。
麻烦,着实麻烦。就没有省事儿点的办法吗根据?
让AI来啊!
最近,Facebook就出了这样一个语言模型DOBF,专治代码混淆。
像下图这种,所有不影响运行的变量名、函数名、类名,都被替换成无意义的符号,AI都能作出猜测并尝试还原。
来看看和正确答代码案的对比,虽然不是完全一样,但AI的改法也大大提高了代码的可读性。
像FUNC_0,源代码中是“重置参数”,AI改成“初始化权重”,也完全说得通。
DOBF模型目前除了Python还支持C++和Java。
编码内容不规范的人毕竟是少数,这个模型更广泛的用途是恢复故意做混淆以保护知识产权的代码,比如这种:
代码写好后,把不影响编译运行的部分,批量替换成人类难以分辨的符号,给破译增加难度。
在这之前也有掩码语言模型(自动Masked Language Model)用于恢复被遮蔽的文本。
用于恢复代码的有哈工大&微软开发的CodeBERT和Facebook之前开发的TransCoder,但效果都不如最新的DOBF。
D起函OBF超过它们靠的不是模型架构上的创新或数据集的完善,而是提出了新的预训练任务。
合理的任务指导AI学习
之前的掩码语言模型多是随机选择要掩蔽的部分,经常会选到括号逗号这种对AI来说没什么难度的。
DOBF的做数名法是指定遮蔽变量名、函数名和类名并让AI去恢复,这个任务难度更大,能迫使AI学到更深层的规律。
另外还用相同的符号替代多次出现的同一名称,这样可以防止AI发现有的名字可以复制粘贴之后学会偷懒走捷径。
像上图,再中的变量V3,AI从第3行的定义可以看出这个变量是List类型,再一看第5行调用的是pop(0)。
这不是先进先出嘛,AI就会命名成queue(队列)而不是stack(堆栈)了。
更厉害的还在后面,DOB也不F通过代码内容甚至能判断出相应函数是生成斐波那契数列和做向量点积的。
DOBF在架构上其实没有特别的设计,只是为了公平对比分别训练了两个和CodeBERT、TransCoder层数一样的模型。
成功的关怕命键之处就在于合理的训练任务。
微调一下能完成更多任务
验证了这个方法有效后,Facebook把这个训练任务提取出来称为DOBF任务,还可以用于训练其他语言模型。
比如在TransCoder模型上把DOBF作为预名不训练任务,再用CodeXGLUE基准测试中的下游任务进行微调。
结果在代码抄袭检测、总结代码生成文档、和自然语言搜索代码片段这3个任务上,使用DOBF或MLM+DOBF预训练都取得了更好的成绩。
Fa规范cebook下一步还要以DOBF作为指导,看看能不能为自然语言设计更好的预训练目标。
不过代码上的事还不算完,人类在混淆代码上可是无所不用其极的。
期待着有一天,AI连国际C语言混乱代码大赛上的变态的同代码也能看懂。
Github地址:
https://github.com/facebookresearch/CodeGen/blob/master/docs/dobf.md
论文地址:
https://arxi事了v.org/abs/2102.07492
国际C语言混乱代码大赛:
http://www.ioccc.org/
Tags:
相关文章
谷歌收集iPhone数据遭起诉 英国最高法院驳回
热点新浪科技讯 北京时间4月29日早间消息,英国人向谷歌发起集体诉讼,他们认为谷歌秘密追踪iPhone用户,影响的用户以百万计,不过英国最高法院周三裁定诉讼不可行,无法继续。 谷歌律师安东尼·怀特(Ant...
【热点】
阅读更多标签: 国铁集团 CR450 渝厦高铁 铁水联运
热点云梦级11月1日云梦级消息,10 月 31 日,国铁集团披露了 2025 年前三季度财务决算。前三季度,国铁集团实现营业总收入 9122 亿元,净利润盈利 117.2 亿元。 今年前三季度,全国铁路累...
【热点】
阅读更多云计算开发:Python内置函数-xrange()函数详解
热点描述 xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器。 语法 以下是 xrange() 函数语法: xrange(stop) xrange(start...
【热点】
阅读更多
热门文章
最新文章
友情链接
- 标签: 康师傅
- https://www.metalmensales.com/?action=QUERY&s=谷歌快排【tg:seogoogle987】,dtl
- https://www.nonsolocap.it/cap?action=SEARCH&k=谷歌快排【tg:seogoogle987】,Hyg
- https://www.rockngem.com/?action=CHECK&s=谷歌快排【tg:seogoogle987】,uMV
- https://www.simcoemuskokahealth.org/SearchResults.aspx?SearchQuery=谷歌快排【tg:seogoogle987】,BoN
- https://www.zalora.sg/catalog/?cat=112&q=谷歌快排【tg:seogoogle987】,5o6
- https://www.vet-direct.com/search?cat=72&term=谷歌快排【tg:seogoogle987】,GUR
- https://www.varian.com/en-au/search?cat=113&search=谷歌快排【tg:seogoogle987】,qWD
- https://www.trockenmittel.ch/catalogsearch/result/?iC=ZM3&q=谷歌快排【tg:seogoogle987】,Js3
- https://www.youthforum.org/search-results?cx=4f5236218ab5e8ef9&ie=UTF-8&q=谷歌快排【tg:seogoogle987】,t7o
- https://www.remit.co.jp/ne/?s=谷歌快排【tg:seogoogle987】,HEk
- https://www.sportbiketracktime.com/index.php?route=product/search&tag=谷歌快排【tg:seogoogle987】,zud
- https://www.ushmm.org/search/results.php?q=谷歌快排【tg:seogoogle987】,ioa
- https://www.xvideos.com/tags/谷歌快排【tg:seogoogle987】,oBE
- https://www.pmindia.gov.in/en/?s=谷歌快排【tg:seogoogle987】,A74
- https://www.riohondo.edu/?action=QUERY&s=谷歌快排【tg:seogoogle987】,JEb
- https://www.woorden.org/spreekwoord.php?woord=谷歌快排【tg:seogoogle987】,gTE
- https://search.danawa.com/dsearch.php?query=谷歌快排【tg:seogoogle987】7Zo
- https://www.remit.co.jp/vi/?s=谷歌快排【tg:seogoogle987】D9n
- https://www.impactpool.org/search/?type=79&q=谷歌快排【tg:seogoogle987】Edl
- https://www.rookwinkel.nl/catalogsearch/result/index/?q=谷歌快排【tg:seogoogle987】,jdr
- https://www.tombow.com/en/search/谷歌快排【tg:seogoogle987】,2bg
- https://www.teamlab.art/?submit=谷歌快排【tg:seogoogle987】,FdN
- https://www.remit.co.jp/zh/?s=谷歌快排【tg:seogoogle987】,qrF
- https://www.spicebar.de/catalogsearch/result/?q=谷歌快排【tg:seogoogle987】,Wk8
- https://www.teamlab.art/fr/?submit=谷歌快排【tg:seogoogle987】,5CK
- https://www.realsporting.com/buscador?buscar=谷歌快排【tg:seogoogle987】,qhG
- https://www.sbaad.no/?s=谷歌快排【tg:seogoogle987】,g0J
- https://www.normani.de/search?q=谷歌快排【tg:seogoogle987】,pLu
- https://www.tcv.org.uk/search/谷歌快排【tg:seogoogle987】,vCd
- https://www.sogou.com/web?query=谷歌快排【tg:seogoogle987】,Kze
- https://www.teamlab.art/pt/?submit=谷歌快排【tg:seogoogle987】,myc
- https://www.tiktok.com/tag/谷歌快排【tg:seogoogle987】,ZnC
- https://www.lneg.pt/en/?s=谷歌快排【tg:seogoogle987】,Dbq
- https://www.thealexandrian.net/?s=谷歌快排【tg:seogoogle987】,gSp
- https://www.toy-people.com/?s=谷歌快排【tg:seogoogle987】,cFX
- https://www.roblox.com/discover/?cat=107&Keyword=谷歌快排【tg:seogoogle987】,R92
- https://www.flickr.com/photos/tags/谷歌快排【tg:seogoogle987】kL7
- https://www.xbiao.com/search/index?tpf&wd=谷歌快排【tg:seogoogle987】,mGH
- https://www.so.com/s?ie=utf-8&src=360sou_home&_re=0&q=谷歌快排【tg:seogoogle987】,SLq
- https://www.samen-maier.at/search/谷歌快排【tg:seogoogle987】,BCf
- https://www.kyuhoshi.com/?s=谷歌快排【tg:seogoogle987】,nd3
- https://www.thedp.com/page/search?q=谷歌快排【tg:seogoogle987】,xYM
- https://www.universal-music.co.jp/?ID=1sIcckCTeBS8FjzCshAW9w53s8gr691o&s=谷歌快排【tg:seogoogle987】,Uea
- https://www.whatsonstage.com/search?cat=64&term=谷歌快排【tg:seogoogle987】,CQ2
- https://www.terramania.nl/catalogsearch/result/index/?q=谷歌快排【tg:seogoogle987】,VSR
- https://www.zutari.com/?s=谷歌快排【tg:seogoogle987】,oJK
- https://store.line.me/search/sticker/ja?q=谷歌快排【tg:seogoogle987】fNc
- https://www.yli.ro/catalogsearch/result/?q=谷歌快排【tg:seogoogle987】,vJx
- https://www.openstreetmap.org/search?query=谷歌快排【tg:seogoogle987】,slP
- https://5gaa.org/?token=6e2l7hjt2i26gzgctgwdrv7v0j6nxorq&s=谷歌快排【tg:seogoogle987】AR5