编程自动化之AlphaCode

作为一名不专业的数据分析人员,最近常常会被AlphaCode即将取代各种编程工作的消息所刷屏。想想也是,写代码的过程中经常会遇到许多的内容是重复的。例如,对于基因ID转换的工作,明明是一件再简单不够的任务,却仍需要几行代码(如无现有工具的前提下),即使是复杂点需要添加一点正则的内容,也并不代表这是一种有意义的工作。实际上,许多个性化分析的工作内容仅对当次分析有用,但对于编程而言,却是一种重复的且无意义的一类工作。因此,如果存在一种工具,可以根据我们的代码逻辑直接生成代码,便可使大家抽身出来,思考抽象层次更高的问题,专注于整体架构,而不是ID转换这样细节的东西。对于生信分析人员而言,有了这类工具,我们便可集中在分析流程的架构与生物学问题的思考上。而本章介绍AlphaCode,即有可能在未来可能就会成为这样的工具。
一 AlphaCode代码的逻辑


从图中可以看出,谷歌deepmind开发的AlphaCode先根据github上的代码进行训练,随后通过CodeContests进行微调,生成成熟的模型,随后,针对codeforces中的问题进行大范围的采样、过滤与聚类分析,最终筛选到能够解决问题且代码行最短的AI-code。

图3 AlphaCode生成代码与人类代码的比较
实际上通过对论文的阅读我们发现,谷歌的这一模型主要基于NLP(自然语言处理)的逻辑。即通过模型大量阅读github代码(包含问题、注释和代码),将每句话的语义对应代码片段,通过达到能够阅读codeforces中的问题,并生成大批量的测试代码。之后,通过对测试代码的检验和筛选,从而挑出最优的代码段。

不过,这个模型应该不是简单的copy和paste,应该是在某些程度上在对语义的理解上有更高层次的抽象了(本文作者不是专业的机器学习工程师,仅简单理解而已)。只是个人感觉来看,这种策略相对于人类而言,在实际问题的逻辑思考方面,应该还是差挺多的。但是对于许多简单和重复的工作,已经由很大的进步空间了,这也表明那些只会搬运和复制代码的分析人员而言,未来的工作很有可能会被自动化取代。
论文作者也提到了该模型的一些局限性,但是相信未来应该能够克服这些困难,从而达到彻底解放人类双手的程序。下面是摘自论文的两句话,或许也能帮助生信分析工程师们减轻一些焦虑。
1.Proving a sorting algorithm is correct is usually easier than proving anetwork will sort numbers correctly in all cases.
2.his is partially mitigated because writing code is only one portion ofthe job, and previous instances of partially automating programming (e.g.compilers and IDEs) have only moved programmers to higher levels of abstractionand opened up the field to more people.
二惯例小结
应该在不远的将来,或许我们需要做的就不是码代码,更多的是一种代码审核的工作(毕竟有些代码还是非常重要的,比如医学类的代码)。另一方面,我们或许也不应该将自己的精力过多的聚焦于编程上,而是应该将自己的精力专注于具体的生物学问题的提出和解决。因此,或许当下需要做的或许是培养自己解决问题的高级逻辑思维能力和代码实现的底层逻辑,而不是具体的某个语言(未来的编程语言会越来越简单,辅助编程的IDE也会越来越智能,写代码的门槛越来越低,代码生成的速度越来越快)。
本公众号开发的相关软件,Multi-omics Hammer软件和Multi-omics Visual软件欢迎大家使用。文末是本公众号在其他平台的账户,也欢迎大家关注并多提意见。
简书:WJ的生信小院
公众号:生信小院
博客园:生信小院
最后,也欢迎各位大佬能够在本平台上:1传播和讲解自己发表的论文;2:发表对某一科研领域的看法;3:想要达成的合作或者相应的招聘信息;4:展示自己以寻找博后工作或者博士就读的机会;5:博导提供博后工作或者博士攻读机会,都可以后台给笔者留言。希望本平台在进行生信知识分享的同时,能够成为生信分析者的交流平台,能够实现相应的利益互补和双赢(不一定能实现,但是梦想总得是有的吧)。
另外,怎么说呢,投币也可,不强求,但奢求。


