全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
785 0
2020-10-19
人工智能正在推动软件2.0…以最少的人为干预
未来软件开发将由模型驱动,而不是代码驱动。
现在,我的4个书(“数据,分析和数字化转型的经济学”)是我的出版商手里,它的时间回去工作调查和分享新学。 在此博客中,我将讨论软件2.0的主题。 并感谢Jens朝这个方向努力!
想象一下,在if-then语句的照片编码中尝试将狗与其他动物区分开来:
如果该动物有四条腿(由于意外而只有三条腿的情况除外),并且该动物的皮毛很短(除了它是只毛狗或没有皮毛的吉娃娃),并且该动物的长度中等耳朵(除了狗是猎犬),并且动物的腿长中等(除非是斗牛犬),以及…
好吧,你明白了。
实际上,将狗与其他在if-then语句中编码的动物区分开是不可能的。
这就是基于模型(人工智能和深度学习)编程的力量所展示的力量;解决诸如面部识别,自然语言处理,实时听写,图像识别等编程问题,这些问题几乎无法使用传统的基于规则的编程来解决(参见图1)。
图 1: 深度学习的工作原理
正如“ 2020年挑战:学会改变框架”中讨论的那样,大多数传统分析都是基于规则的;分析根据预先确定的一组业务或运营规则进行决策。但是,人工智能和深度学习根据从数据中收集的“学习”来做出决策。深度学习“学习”实体的特征,以便区分猫与狗,坦克与卡车,或健康细胞与癌细胞(见图2)。
图 2: 基于规则的编程与基于学习的编程
当在一系列相似资产(车辆,火车,飞机,压缩机,涡轮机,发动机,电梯,起重机)中共享学习成果时,这种学习就会放大,从而可以汇总一项资产的学习成果并向后传播到资产。
编程的不确定未来
NVIDIA最近发布的公告引起了AI社区的热议,软件开发人员担心他们的未来。 NVIDIA研究人员最近使用AI重新创建了经典的视频游戏《吃豆人》。 NVIDIA使用产生性对抗网络(GAN)(称为NVIDIA GameGAN)创建了一个AI模型,该模型可以生成Pac-Man的全功能版本,而无需与构建底层游戏引擎相关的编码。 AI模型能够重新创建游戏,而无需“编码”游戏的基本规则(参见图3)。
图 3:“ GAN和自适应内容将如何改变学习,娱乐和更多内容”
使用AI和机器学习(ML)来创建软件而不需要对该软件进行编码,正在驱动“ Software 2.0”现象。 而且令人印象深刻。 Kunle Olukotun在题为“为软件2.0设计计算机系统”的出色演讲中讨论了软件2.0在利用机器学习从数据生成模型并替代许多应用程序的传统软件开发(编码)方面的潜力。
软件2.0 [1]
由于大数据和物联网的惊人增长,在图像识别,自然语言处理,自动驾驶和个性化等领域,神经网络现在可以访问足够详细的细粒度数据,从而在复杂模型的预测准确性方面超过传统的编码算法。药物。
可以用反向传播和随机梯度下降训练神经网络,而不是用传统的开发方式来编码软件算法,而是通过优化神经网络节点的权重来交付所需的输出或结果(参见图4)。
图 4:“神经网络: 元学习是新的黑人吗?”
通过模型驱动的软件开发,训练模型通常比手动编码算法更容易,尤其是对于诸如自然语言处理(NLP)和图像识别之类的复杂应用程序而言。 另外,与传统算法相比,模型驱动的软件开发通常在运行时和内存使用方面更具可预测性
例如,谷歌的杰夫·迪恩报道,500行代码TensorFlow的repla ...。尽管减少了数千倍,但更重要的是该代码的工作原理:神经网络可以从发现的偏见和偏见中学习并适应,而不是使用一百万行静态代码。
软件2.0挑战:数据生成
在“机器学习对软件开发意味着什么”一文中,安德鲁·卡帕蒂(Andrew Karpathy)指出,神经网络已证明它们可以执行几乎所有有足够训练数据的任务。训练神经网络击败Go或Chess或StarCraft成为可能,因为相关的训练数据量很大。 收集用于Go或Chess的训练数据很容易,因为已有150多年的数据用于训练模型。ImageNet上 提供的1400万张带标签的图像促进了图像识别程序的培训。
但是,在所有情况下,神经网络模型并不总是有足够的数据。 必须投入大量的精力来创建和设计训练数据,并使用诸如噪声标记方案,数据增强,数据工程和数据重塑等技术为基于模型的神经网络应用程序提供动力。 欢迎来到浮潜。
Snorkel(该死的很酷的名字)是一个无需手动标记即可以编程方式构建和管理训练数据集的系统。Snorkel可以使用三种不同的编程操作自动开发,清理和集成大型培训数据集(请参见图5):
通过使用启发式规则或远程监管技术来标记数据
通过旋转或拉伸图像来变换或扩充数据
将数据切成不同的子集以进行监视或有针对性的改进
图 5: 使用Snorkel以编程方式构建和管理培训数据
Snorkel是用于数据标记和数据综合的强大工具。手动标记数据非常耗时,Snorkel可以通过编程方式解决此问题,并且人类可以通过查看数据样本来验证所得数据。
有关其工作原理的更多信息,请参见“ Snorkel入门教程:数据增强”。
软件2.0摘要
存在某些复杂的编程问题-面部识别,自然语言处理,实时听写,图像识别,自动驾驶汽车,精密医学-使用传统的基于规则的编程几乎无法解决。 在这些情况下,创建AI,深度学习和机器学习模型相对容易一些,这些模型可以进行训练(使用大型数据集)以执行正确的动作,而无需进行编码即可执行正确的动作。 这是软件2.0的理念。
您可以训练神经网络来优化神经网络节点的权重,以提供所需的输出或结果,而不用传统的开发方式来编码软件算法。模型驱动程序的另一个优势是能够学习和适应……当发现数据中的偏见和偏见时,神经网络可以学习和适应。
但是,在所有情况下,神经网络模型并不总是有足够的数据。 在这种情况下,Snorkel之类的新工具可以提供帮助……Snorkel可以自动开发,清理和集成大型培训数据集
未来软件开发将由模型驱动,而不是代码驱动。

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群