Andrej Karpathy:神经网络是“软件2.0”,而非机器学习的一种工具

简介: 深度学习和计算机视觉专家、特斯拉人工智能部门主管Andrej Karpathy最近提出将神经网络视为Software 2.0,而非“机器学习中的一种工具”,讨论了Software 2.0在机器视觉、语音识别、机器翻译等领域逐渐取代“Software 1.0”的应用,以及它的优势和局限。

我有时看到人们把神经网络称为“机器学习工具箱中的另一种工具”。神经网络作为一种工具有这样那样的优点和缺点,在这个任务或那个任务工作,有时你可以利用它们赢得Kaggle的比赛。不幸的是,这种解释只见树木,不见树林。神经网络不只是另一种分类器,它们代表了我们编写软件的根本性转变的开始。它们是软件2.0(Software 2.0)。

软件2.0正在越来越多地接管软件1.0的任务

软件1.0(Software 1.0)的“经典堆栈”(classical stack)是我们很熟悉的——它是用Python、C++等语言编写的,它由程序员编写的对计算机的明确指令组成。通过编写每行代码,程序员可以确定程序空间中的某个特定点。

相比之下,Software 2.0 是用神经网络权重编写的。没有人参与这段代码的编写过程,因为权重有很多(典型的网络可能有数百万个权重),并且直接用权重进行编码是很困难的(我尝试过)。相反,我们对一个理想程序的行为指定一些约束(例如,一个样本的输入输出对数据集),并使用可用的计算资源来搜索程序空间中满足约束条件的程序。在神经网络的例子中,我们把搜索限制在程序空间的一个连续的子集,在这个空间中,搜索过程可以利用反向传播和随机梯度下降奏效。

事实证明,在现实世界中,大部分的问题具有收集数据要比明确地编写程序容易得多的性质。未来,大部分程序员不再需要维护复杂的软件库,编写复杂的程序,或者分析程序的运行时间。他们需要收集、整理、操作、标记、分析和可视化提供给神经网络的数据。

20b2b336a57c9ca2d814b09f911e0920f38e4a7d

Software 2.0不会取代1.0(实际上,需要大量的1.0基础架构来进行训练和推断,以“编译”2.0代码),但是它将会越来越多地接管软件1.0的任务。让我们来看看一些正在进行的一些过渡的例子:

视觉识别:视觉识别过去是由工程特性组成的,有一点机器学习(例如SVM)在里面。后来,我们开发了一个机制来发现更强大的图像分析程序(ConvNet结构体系),并且最近我们已经开始在架构中搜索(参考论文:Large-Scale Evolution of Image Classifiers)。

语音识别:语音识别过去涉及大量的预处理、高斯混合模型和隐马尔可夫模型,但今天几乎完全由神经网络组成。

语音合成:从历史上来看,语音合成一直以来用各种各样的拼接机制来处理,但是现在,最先进的模型是产生原始音频信号输出的大型卷积网络(例如WaveNet)。

机器翻译:机器翻译通常是采用基于短语的统计技术的方法,但神经网络正在迅速成为主导。我最喜欢的架构是在多语言环境中进行训练的(Google's Multilingual Neural Machine Translation System: Enabling Zero-Shot Translation),其中一个模型可以将任何源语言转换为任何目标语言,并且在弱监督(或完全无监督)的环境中进行。

机器人:机器人技术长久以来是将问题分解为感知、姿态估计、规划、控制、不确定性建模等,使用显式表示和算法来进行中间表示。我们还没有完全做到这一点,但UC Berkeley和谷歌最近的一些研究表明,Software 2.0或许能更好地表示所有这些代码。

游戏:围棋程序已经存在了很长一段时间,但AlphaGo Zero(一个观察棋盘的原始状态并决定落子位置的ConvNet)现在已经成为围棋游戏最强大的玩家。我希望我们在其他领域也能看到类似的结果,例如DOTA 2或星际争霸。

你可能注意到我前面提到的许多工作都是谷歌公司做的,这是因为谷歌现在处于将自己的大部分代码重新编写成Software 2.0代码的最前沿。《一个模型解决所有问题》(One model to rule them all)这篇论文提出了一个草图,在这个模型中,单个领域的统计强度被合并为一个对世界的一致理解。

Software 2.0的优势

为什么我们更喜欢将复杂的程序移植到软件2.0中呢?一个简单的答案是它们在实践中表现得更好。但是,还有很多其他的方便的理由让我们选择这个堆栈。让我们来看看Software 2.0(例如,一个 ConvNet)的相比Software1.0(例如,一个生产级的C ++代码库)的好处。

Software 2.0是:

计算均匀的。一个典型的神经网络由一个只有两个操作的层组成:矩阵乘法(matrix multiplication)和在零点的阈值(ReLU)。将其与经典软件的指令集进行比较,后者明显更具有异质性和复杂性。因为你只需为少量的核心计算原语(例如矩阵乘法)提供Software 1.0实现,你可以更容易地进行各种正确性/性能保证。

很容易烧成芯片。作为一个推论,由于神经网络的指令集相对较小,因此更容易实现这些网络,例如使用定制asic,神经形态芯片,等等。当低耗能的智能变得无处不在时,世界就将会改变。例如,小而便宜的芯片可以使用预训练的卷积神经网络、语音识别器和WaveNet语音合成网络,它们都集成在一个小的原脑(protobrain)中,你可以把它连接到任何东西上。

持续的运行时间。典型的神经网络正向传递的每一次迭代都需要完全相同的FLOPS量。基于不同的执行路径,你的代码可能会通过一些庞大的C ++代码库来实现。当然,你可以有动态计算图,但执行流程通常仍然受到很大的限制。这样,我们几乎可以保证永远不会发现自己处于无意的无限循环中。

持续的内存使用。与上一点相关的是,任何地方都没有动态分配的内存,因此交换磁盘的可能性也很小,或者必须在你的代码中搜索的内存泄漏也很少。

它非常便携。与经典的二进制文件或脚本相比,在任意计算配置上运行一个矩阵乘法序列要容易得多。

它非常敏捷。如果你有一个c++代码,有人希望你将速度加快2倍(需要的话,可以付出性能上的代价),这需要为新的规范重新调优系统。但是,在Software 2.0,我们可以在网络中删除一半的通道,重新训练,然后就满足要走了——速度提升2倍,性能降低一点。相反地,如果你碰巧得到了更多的数据/计算资源,你可以通过增加更多的通道和重新训练来让你的程序更好地工作。

模块可以融合为一个最优的整体。我们的软件经常被分解为通过公共功能、api或端点进行通信的模块。但是,如果两个最初被分别训练的Software 2.0模块相互作用,我们可以很容易地在整个过程中进行反向传播。想想看,如果你的web浏览器能够自动重新设计底层系统指令10个堆栈,从而在加载web页面时获得更高的效率,那该多好。对于Software 2.0,这是默认行为。

它很容易掌握。我喜欢开玩笑说,深度学习是浅显的。它不是核物理学,在你可以做任何有用的事情之前,得需要完成一个博士学位。深度学习中,基本的概念需要掌握基本的线性代数、微积分、Python和CS231n的一些课程。当然,随着时间的推移,你可以获得大量的专业知识和直觉,因此,更准确的说法是,Software 2.0堆栈很容易入门,但并不容易掌握。

它比你厉害。最后,也是最重要的一点,在很大一部分有价值的垂直领域中,神经网络比你或我所能编写的代码块更好,目前这至少涉及图像/视频、声音/语音和文本。

Software 2.0的局限

2.0堆栈也有自身的一些缺点。在优化结束后,得到的大型网络运行得很好,但是我们很难知道它是如何运作的。在许多应用领域,我们会面临选择,是使用我们所理解的精确度90%的模型,还是我们不理解的精确度99%的模型。

2.0堆栈可能会以不直观和令人尴尬的方式失败,或者更糟的是,它们可能会“无声地失败”,例如,通过在它们的训练数据中无声地采用偏见,由于训练数据在大多数情况下都非常大,很难正确地进行分析和检查。

最后,我们还发现了这个堆栈的一些特殊属性。例如,对抗样本(adversarial examples)和攻击(attacks)的存在突显了这个堆栈不直观的本质。

Software 2.0的未来是光明的

如果将神经网络看作是一个软件堆栈,而不仅仅是一个很好的分类器,那么很显然,它们拥有大量的优势和很大的潜力来改造软件。

从长远来看, Software 2.0的未来是光明的,因为越来越多的人清楚,当我们开发AGI(通用人工智能)时,肯定会写成Software 2.0。

Software 3.0?那就需要到AGI的时代了。


原文发布时间为:2017-11-12

本文作者:Andrej Karpathy

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:Andrej Karpathy:神经网络是“软件2.0”,而非机器学习的一种工具

相关文章
|
2月前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
76 11
|
1月前
|
机器学习/深度学习 边缘计算 运维
机器学习在网络安全中的防护:智能化的安全屏障
机器学习在网络安全中的防护:智能化的安全屏障
125 15
|
2月前
|
人工智能 搜索推荐 决策智能
不靠更复杂的策略,仅凭和大模型训练对齐,零样本零经验单LLM调用,成为网络任务智能体新SOTA
近期研究通过调整网络智能体的观察和动作空间,使其与大型语言模型(LLM)的能力对齐,显著提升了基于LLM的网络智能体性能。AgentOccam智能体在WebArena基准上超越了先前方法,成功率提升26.6个点(+161%)。该研究强调了与LLM训练目标一致的重要性,为网络任务自动化提供了新思路,但也指出其性能受限于LLM能力及任务复杂度。论文链接:https://arxiv.org/abs/2410.13825。
65 12
|
2月前
|
运维 监控 安全
公司监控软件:SAS 数据分析引擎驱动网络异常精准检测
在数字化商业环境中,企业网络系统面临复杂威胁。SAS 数据分析引擎凭借高效处理能力,成为网络异常检测的关键技术。通过统计分析、时间序列分析等方法,SAS 帮助企业及时发现并处理异常流量,确保网络安全和业务连续性。
61 11
|
2月前
|
数据采集 监控 安全
公司网络监控软件:Zig 语言底层优化保障系统高性能运行
在数字化时代,Zig 语言凭借出色的底层控制能力和高性能特性,为公司网络监控软件的优化提供了有力支持。从数据采集、连接管理到数据分析,Zig 语言确保系统高效稳定运行,精准处理海量网络数据,保障企业信息安全与业务连续性。
60 4
|
3月前
|
存储 人工智能
从零到一打造知识网络:你选对文档软件了吗?
在信息爆炸时代,学术工作者面临高效管理知识的挑战。传统文档管理软件难以满足“知识动态积累”与“多领域交叉”的需求。动态结构化看板通过多维度卡片化管理,以标签、层级和网状关联方式动态呈现文档和笔记,实现知识的系统化整合。例如多维标签系统和文档流动视图,能够帮助快速检索和关联资料,成为学术研究的“第二大脑”。
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
打破传统:机器学习与神经网络获2024年诺贝尔物理学奖引发的思考
诺贝尔物理学奖首次授予机器学习与神经网络领域,标志该技术在物理学研究中的重要地位。本文探讨了这一决定对物理学研究的深远影响,包括数据分析、理论物理突破及未来科研方向的启示,同时分析了其对学术跨界合作与全球科研产业的影响。
69 4
|
3月前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
240 1
|
3月前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
3月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
176 4