算法高级(47)-AI现在都可以写代码了-辅助编程

一、AutoML

AutoML 是谷歌的一个能够制造子 AI 的 AI 系统。2017 年 5 月,谷歌大脑研究人员宣布创建了 AutoML,该 AI 系统能够创造自己的 AI 系统。最近,他们决定让 AutoML 攻克迄今为止对它来说最大的挑战,令人惊讶的是,AutoML 创造了一个非常厉害的「后代」,它的表现甚至超过了所有人类设计的 AI 系统。

Google AutoML 系统自主编写机器学习代码,其效率在某种程度上竟然超过了专业的研发工程师。AutoML的目标并不是要将人类从开发过程中剥离出去,也不是要开发全新的人工智能,而是让人工智能继续维持某种速度来改变世界。

人工神经网络已经实现了学习模型的自编码,还需要人来训练。而AutoML更进一步,实现了训练过程的自编码,通过类似Axure的拖拽方式就能完成对话操作。

在AutoML中,一种控制器神经网络能够提议一个“子”模型架构,然后针对特定任务进行训练与质量评估;而反馈给控制器的信息则会被用来改进下一轮的提议。我们重复这个过程数千次——从而生成新的架构,然后经过测试和反馈,让控制器进行学习。最终,控制器将学会为好的架构分配高的概率,以便在延续的验证数据集上实现更高的准确性,并且对于架构空间的差异很小。

AutoML 在机器学习系统的编程上,远胜于创造它的研究人员。在某个图像识别任务中,其实现了创纪录的 82% 的准确率。即使在一些复杂的人工智能任务中,其自创建的代码也比人类程序员优越。它可以在图像中标记多个点,准确率达到 42%;作为对比,人类打造的软件只有 39% 。

二、AutoML对AI意味着什么?

它像一款制作Demo的工具,可以帮PM理解端到端学习的应用边界。大部分PM(尤其转型中的)并不具备AI工程师的实操能力,这是个真实存在的痛点。以后若要验证新的场景思路,可以先做个Demo试试。解放出更多精力,分摊到分析场景、获取数据、设计方案、推进落地上。

三、AutoML系统背后的基础知识

如果你用过机器学习算法,那一定体验被算法调参支配的恐怖。面对错综复杂的算法参数,算法使用者们往往要花费无尽的黑夜去不断尝试,犹如大海捞针。有的时候加班到深夜,终于找到了一个靠谱的参数组合,然而找到的参数组合真的是最优的么?天知道。

然而在搭建机器学习链路的过程中,往往不止调参这一步耗时耗力。好不容易生成了算法模型,怎么把模型部署成服务供手机、PC这些终端调用也是困扰开发同学的一大难题。有的时候,为了打通这样的链路,要耗费整晚的时间调试不同格式的模型和服务端的关联。

AutoML用于描述模型选择和/或超参数优化的自动化方法。这些方法适用于许多类型的算法,例如随机森林,梯度提升机器(gradient boosting machines),神经网络等。AutoML尽量不通过人来设定超参数,而是使用某种学习机制,来调节这些超参数。这些学习机制包括传统的贝叶斯优化,多臂老虎机(multi-armed bandit),进化算法,还有比较新的强化学习。

四、进化算法

一般的进化算法其实大同小异,差别在如何选择变异,有比较细的变异,比如在Large-Scale Evolution of Image Classifiers 这篇文章中,就定义了非常具体的变异,比如有改变通道数量,改变filter大小,改变stride等等;而在Simple And Efficient Architecture Search for Convolutional Neural Networks这篇论文中,它的变异,就借鉴了现有公认的比较好的结构,加深网络就用conv-bn-relu3件套,加宽网络加大通道数量,增加skip connection。

这些进化算法在做自动模型选择时,每次迭代都不可避免的需要在整个数据集上跑若干个epoch,而每次迭代都有许多个变异,又需要很多次迭代,导致最后的训练时间太久。

fine-tune基础上的进化

Simple And Efficient Architecture Search for Convolutional Neural Networks 这篇论文提出,我们先用一个成熟的模型去训练(也可以fine-tune训练),然后在这个模型的基础上去变异,变异之后用fine-tune训练几个epoch即可。这带来两个好的结果:

  1. fine tune减少了大量的训练时间

  2. 我们最后拿出来的模型,至少不比成熟模型差

五、AI真能帮你写代码吗?

其实,我们所使用的现代IDE,已经带了丰富的代码提示功能,大家为什么都觉得IDEA比Eclipse好用,其实部分原因就是因为IDEA强大的提示功能,能帮程序员减少很多的键盘敲击事件。而AI写代码,更进一步,它能帮你写模块,帮你实现功能,当然要依赖人类建立的模型来实现。

以后,编程肯定是AI的事,人类能做的,应该就是在业务上为难AI了。

记住:人人都是产品经理!

 


我的微信公众号:架构真经(关注领取免费资源)

参考文章

  1. https://www.jianshu.com/p/616a777e0bcc
  2. https://baike.baidu.com/item/AutoML/22237135?fr=aladdin
  3. http://m.elecfans.com/article/799923.html
  4. https://www.jianshu.com/p/8178bb4d2ec3

你可能感兴趣的:(算法高级)