软件2.0的兴起

2021-02-28 21:45:42

在研究的某个时刻,我正在研究文献中的软件工程(SE)和人工智能(AI)之间的相互作用。我在FSE’18大会上通过了Erik Meijer的主题演讲。主题演讲的标题为“每个伟大的深度学习框架背后都有一个更大的编程语言概念”。演讲阐述了差异化编程背后的深层编程语言原理,希望激发正在工作的Software 1.0工程师认真关注Software 2.0的威胁和机遇。

Andrej Karpathy对软件2.0的定义如下:“软件2.0可以用更抽象的,人类的*不友好的*语言编写,例如神经网络的权重。没有人参与编写此代码,因为权重很多(典型的网络可能有数以百万计),而直接用权重进行编码很难。

我个人认为Software 2.0是深度学习的补充,是对传统软件工程堆栈的补充,因此我们可以构建以前无法构建的复杂软件。我相信软件生产已经通过称为“数据产品”的中间状态从纯粹的软件1.0演变为软件2.0。当顶级软件公司了解大数据的业务潜力并开始使用机器学习构建数据产品时,便会出现这种状态。下图进一步说明了我的想法。

在以下各节中,我将通过提及此类产品的特性并为它们提供一些实际示例来进一步支持我的想法。请注意,我将不讨论软件1.0产品的完善情况。

在解释“数据科学”最近兴起的原因的流程中,Schutt和O'Neil在“做数据科学书”中指出,数据有趣的背后的一个主要因素是数据本身成为数据产品的基础。

在现实生活中,这些产品可以是Amazon推荐系统,该系统可以预测您作为客户感兴趣的内容。提出友情可能性的Facebook推荐系统。 Netflix电影推荐。还有什么? Google搜索查询完成算法。位智路由算法。 Airbnb经验背后的排名算法。而这样的例子不胜枚举。

他们是次要的。它们并不是不重要,而是它们为主要软件产品增加了价值。考虑一下Airbnb经验排名和推荐算法。 Airbnb的主要软件产品是一个平台,人们可以在此平台上居住或租赁房屋。在平台上运行多年后,会生成大量数据。与所有企业一样,他们决定通过向他们推荐最感兴趣的事物来发挥这种潜力,并增加购买体验的人数。

他们不断发展。传统软件产品会随着时间的流逝而发展。数据产品的发展要快得多。如果我说数据用户与数据产品的每一次互动都将直接促进产品发展,我不会夸大其词。当您在Netflix上对电影进行评分时,您的操作会稍微影响他们的推荐系统。这样的影响在用户之间汇总。舒特(Schutt)和奥尼尔(O’Neil)明确表示:“我们正在目睹一个庞大的,文化上饱和的反馈回路的开始,在该回路中,我们的行为改变了产品,而产品改变了我们的行为。”

基于传统ML。此类产品大部分是使用传统的机器学习算法构建的,这些算法过去一直运行良好并且仍在运行。决策树,支持向量机,回归等

可解释性问题。银行家将很高兴拥有决策树模型来预测个人对个人贷款的批准。这是因为该模型生成的知识可以公式化为一组人类友好的规则。例如,“如果这个人年轻,已婚,有六位数的收入,那么根据培训数据,他/她将拖欠贷款的可能性为78%。”另一方面,祝您好运,这家银行家可以使用基于X的基于神经网络的最新深度学习模型。

研发得分中等。如果我们认为传统软件比研究软件更能开发(从技术角度来看),即它位于R& D频谱的D端。然后,数据产品位于R& D频谱的中心。数据产品的构建周期不是确定性的,您不能简单地设置交付截止日期的里程碑。这是一个反复试验的过程。我们选择N个算法并尝试M个超参数,并希望其中一些达到丛生性要求。尽管数据产品处理是R& D频谱的中心,但它倾向于D,因为它总是适合使用现成的算法。在大多数情况下,算法创新并不重要。

我相信这些内容确实描述了数据产品或软件1.0和软件2.0之间的中间状态。如果您有其他想法,请在评论部分中分享。我很高兴听到他们的声音。

软件2.0是神经网络。这是深度学习。这是连接主义机器学习。它是通过汇总简单的计算单元来学习复杂概念的机器。 Andrej Karpathy将在此处进行描述。他还描述了它的特性以及如何与传统软件进行比较。为了避免冗余,我将重点放在提供此类软件的实际示例上,而不是特性上。

基于深度学习。明显地。与数据产品不同,软件2.0产品基于当代的深度学习模型。

这是主要的。与数据产品不同,Software 2.0不是次要的。它是软件产品和实际业务价值的核心组成部分。

可解释性无关紧要。是的,那是真的。可解释性无关紧要。没关系,有一个研究领域正在致力于使深度学习模型更具可解释性?好吧,这对于某些对安全敏感的领域确实很重要,例如自动驾驶汽车和医疗应用。但是对于许多其他应用程序则不是。只要模型输出的结果是期望值就可以了。这在下面我将提到的产品示例中将更加明显。

高R& D分数。软件2.0更倾向于R& D频谱中的R。与现成的模型相比,对于每个应用程序,都需要创新一些技巧和窍门以获得最佳效果。那里总是发生一些算法上的创新。如果您在给定的领域中构建软件2.0产品,那么您将自动成为发展利基专业知识的领域专家。

在这里,我将提到一些真实的软件2.0示例,以便人们可以直接了解它们。

我认为到目前为止,已经有很多人听说过或使用过Prisma。 Prisma是一种照片编辑移动应用程序,它使用神经网络和人工智能来应用艺术效果来转换图像。该应用程序是由Alexey Moiseenkov,Oleg Poyaganov,Ilya Frolov,Andrey Usoltsev,Aram Hardy创建的。它于2016年6月作为免费移动应用程序启动。 Prisma利用最新的神经样式转换技术使用另一种图像样式重绘图像。了解Prisma如何是基于深度学习的产品,基础模型的可解释性如何无关紧要,以及它的R& D评分肯定如何。这项技术对视频来说不是很酷吗?看看这个。酷哈!

Rosebud实际上在AI生成的媒体的保护下提供了多个软件2.0产品。它使用了生成对抗网络GAN和Deepfakes中的最新技术。制作化身或真实人物面孔的Tokkingheads之类的产品可以表达您的声音或特定文字。生成照片,您可以在其中更改人体模型的面孔,种族和编辑头发。 Faceloop,您可以在其中对脸部应用新的滤镜,例如更改头发颜色,卡通化和年龄。你可以试试看!

Lobe.ai实际上不是软件2.0产品,而是构建此类产品的平台。它说:“ Lobe是一个免费的私人桌面应用程序,它具有将机器学习思想从原型移植到生产所需的一切。”使用波瓣,训练深度学习模型就像喝一口水。请注意,波瓣是Microsoft产品。

Otter是一项基于转录AI的服务,可与主流视频会议软件(例如Zoom)一起使用。我尝试用它来抄写Hinton(被称为AI的上帝之父)的“ Deep Learning简介”。演讲。您可以在这里找到结果。

我敢打赌,大多数读者已经知道语法。语法是基于AI的数字写作辅助应用程序。该手稿已经过校对。

我在这里列出了5种软件2.0产品。如您所见,上述特征适用。野外发生了很多事情,许多伟大的初创公司正在使用AI构建伟大的东西(请检查xnor.ai所做的!)。但是,为了简单起见,我选择了这5个示例,因为它们以最终用户为目标,以便读者可以检出它们。如果您知道有任何很棒的软件2.0应用程序,请在下面的评论中分享。我想听听。而且,如果您发现本文有趣,请别忘了鼓掌支持(您实际上可以鼓掌多次)

我希望我使软件2.0的特性清晰明了。现在您受到启发,为什么不构建自己的软件2.0应用程序?您认为使用以前无法实现的深度学习可以做什么?