.

2700万程序员要失业机器编程要让全球7

公益中国爱心救助定点医院 http://disease.39.net/yldt/bjzkbdfyy/6108180.html
数据显示,全球78亿人中,只有万人会编写代码,占比不到1%。不过,机器编程想让另外99%的人也能编写代码。这听起来很科幻,但英特尔在机器编程领域的进展让我们相信让%的人都能写代码并非触不可及。英特尔的ControlFlag系统是全球首个自我监控系统,不需要标记数据就能学习,通过学习超过十亿行代码,可以自主检测代码中的错误,发现了许多过去被开发人员忽略的违规和异常。机器编程到底要做什么?为什么全员都能编程后程序员不会失业?什么是机器编程?机器编程并非近来提出的全新概念,在20世纪50年代时它被称为“程序合成”,程序合成是一种使用数学证明的非常形式化的方法,它采用某种形式的输入,然后生成一个软件。实际上,机器编程是构建系统,然后由系统自动构建软件系统,硬件系统也随之构建起来。显然,自动生成软件是机器编程的核心重点,其核心原则是,人类向机器表达他(她)的意图,机器会自动创建完成该意图所需的所有软件。研究机器编程是为了替代程序员吗?答案当然是否定的。英特尔高级院士、副总裁、英特尔研究院院长RichUhlig在英特尔研究院开放日上表示:“关于编程,我们看到了两种对立的趋势。一方面,计算资源变得越来越异构,需要了解硬件以及如何最大限度使用硬件的专家级程序员。另一方面,软件开发人员越来越青睐于使用更抽象的语言,以提高工作效率,但这会导致硬件难以发挥出它本身的性能。”“研究当前的软件是如何开发的,考虑异构硬件的未来,可以得出一个强有力的结论,那就是当前开发软件的方式不会可维持地继续向前发展。”英特尔首席科学家、英特尔研究院机器编程研究主任及创始人JustinGottschlich认为,“我们对程序员的要求过高。”用一个非常形象的比喻来解释软件开发需要的准备工作,想象你是一位技艺高超的画家,但在画画之前,需要制作画笔、画布、画框、画架、颜料。“有多少画家能做到这些?我认为这样的画家很少,甚至没有,编程的门槛过高导致许多天才被埋没。“Justin认为。他举了个例子,一名房地产行业的权威,对市场的理解敏锐又细致,但现有的工具不能帮助她制定房地产决策,于是只能分开使用每一种工具,慢慢收集数据。但只要在她决策之前市场发生变化,之前的工作就需要重新开始,时间也被浪费。不仅仅是需要精细度、精确性的地产行业,农业、生物、建筑、医疗、金融领域的专家也希望能够向机器表达他们的意图,机器能够构建相应的软件实现他们的意图。这也是机器编程的概念以及人们为什么需要机器编程。如何实现机器编程?英特尔研究院和麻省理工学院的教授团队合作撰写的题为《机器编程的三大支柱》的论文指出,意图(Intention)、创造(Invention)和适应(Adaption)是机器编程的三大支柱。简而言之,“意图”是人类向机器表达自己想法的能力,表达出来后机器就可以“创造”,之后继续根据用户指定的意图,构造更高级的程序表达。在构造了更高级的表达后,“适应系统”会对这个更高阶的程序进行转换,化解异构硬件挑战。要实现这个长期的愿景,需要先迈出关键一步。Justin说:“要让机器编程同时从两个方向为开发人员提供帮助。首先是提高编码员和非编码员的工作效率。其次是确保机器编程系统生成的是高质量、快速、安全的代码。”基于两个核心价值,机器编程关键的第一步是改进软件调试(Debug)。软件Debug本质上是识别、分析和纠正软件缺陷的过程,让软件变得更强大和可靠。根据年剑桥大学开展的一项调查,美国程序员Debug的时间平均花费占到整个开发周期的一半。这明确了两个问题,程序员的开发的软件质量不合格,同时Debug严重影响了程序员的工作效率。据悉,英特尔研究院开发的机器编程系统可以将程序员的工作效率提高2倍。利用《诊断软件性能回归的零正学习方法》提出的一种在高性能计算代码中,自动进行回归测试(由新代码签入引起的错误)的方法AutoPerf,在运行代码时只利用名义训练数据和硬件性能计数器,英特尔的系统证明AutoPerf可以检测到并行编程中一些最复杂的性能bug。更重要的是,这个系统可以自动将测试应用于不同的硬件架构上,解决了硬件异构带来的软件编程复杂性大幅提升的挑战。这个系统的研究成果已经在去年的机器学习顶级研究会议NeurIPS上发布。英特尔的另一个机器编程系统就是文章开篇提到的ControlFlag系统,可以在无人监督的情况下查找不限于性能的漏洞。“ControlFlag可以在没有任何人类生成的数据标签下学习,非常让我兴奋的是,这个系统最近突破了从超过10亿行代码中学习的极限。”Justin说:“它能够发现一些高度复杂的细微漏洞,其中有些漏洞十多年来一直被开发人员所忽略。每次我们添加更多数据,它似乎都能学到以前没有观察到的新事物。”雷锋网了解到,ControlFlag更多研究成果将会在今年的NeurIPS上展示。Jestin介绍,机器编程主要有两种方法,一种是形式化方法,一种是随机方法,目前业界更重视随机的方法。英特尔的不同在于融合了两种算法,并且在许多案例中实现了超过千倍的成绩。比如在改进软件开发时序质量(Temporalqualities),也就是开发软件的时间减少到千分之一,这就有可能让现在需要花三年开发的软件,借助机器编程只需要花费一天就可以完成同样的软件。“在某些例子中,可以说是近乎无限的改进。因为构建某些东西需要一定的时间,然后我们把这个数字降为零。”Justin进一步指出。机器编程会替代程序员吗?程序能够自动化的高效构建,意味着程序员要失业了吗?Justin的观点是,如果机器编程成功,其真正过人之处是创造数千万到数亿个就业机会,为全新类型的程序员有非常大的创造平台,专业程序员也不会被替代。原因很简单,首先,现存在的大多数机器编程系统都需要大量数据,这些数据通常是代码的形式存在,而代码是由专业程序员编写,自动化将会对高技能程序员的需求将会增加,因为专业程序员写的代码越多,构建的机器编程系统就越先进。更重要的是,如果意图系统成功,将降低编程的准入门槛。这样一来,只要他们有批判性思考的能力,就可以表达其想法,软件就能帮助他实现,就像前面提到的房产权威的例子。接下来的问题就是机器编程何时会被大量应用。Justin认为得益于算法、算力和数据的提升,机器编程正处于拐点。据悉,许多机器编程的研究成果都出自英特尔年成立的机器编程中心卡帕研究中心(KappaResearchCenter)。并且,英特尔发布了开源技术和出版物,推动机器编程的进一步发展以及与合伙伙伴的合作。英特尔还创立了叫做“机器编程研讨会”,也称MAPS,参会人数已经从四年前的20人增加到了去年差不多人。Justin透露,年英特尔还将建立一个新的机器编程中心,英特尔也会建立更广泛的合作。不过,无论是在硬件还是软件领域,想要实现0倍的提升仅靠单一技术是不够的。Rich说:“英特尔的目标是让每个人都能获得百亿亿次级计算,英特尔研究院正在实现这一目标。为了实现目标,必须改变思考方式,将各领域专家聚集在一起,合作探索科学和技术知识的交叉领域。我们选择了集成光电、神经拟态计算、量子计算、保密计算、机器编程这五个领域。我们认为这五个领域能够真正大规模释放数据价值,并且变革人们与数据互动的方式。”比如机器编程和神经拟态的交叉研究,Justin认为,“机器编程可以帮助神经拟态计算,以非传统的编程角度进入该架构。今天使用的机器编程的很多技术,是基于各种机器学习类型的系统。我特别感兴趣的是,我们是否可以运用神经拟态计算,探索机器编程的创造性和适应性系统,目前我们还没有探索到。”最后,引用Justin的一句话:“对于颠覆性的技术,需要‘理性的自由’,要花时间深入挖掘把事情做好,如果做事急躁,在设计和方法上妥协,可能会获得短期收益,但系统长期的生命力会下降。”


转载请注明:http://www.abachildren.com/jbzs/7089.html