告别Python,用神经网络编写的软件走向2.0时代

  • 时间:
  • 浏览:0

语音识别也不我 涉及絮状的预除理、高斯混合模型和隐藏的马尔可夫模型,但目前几乎全版由神经网络组成。

相比之下,软件2.0是用神经网络的权重来编写的。越来越人参与编写这段代码,不可能 有什么都有有有权重(典型的网络不可能 有数百万个),因此 直接在权重中进行编码是很困难的。反而,亲戚大伙儿 指定了这个约束应用线程的行为(类似,一3个 输入输出对示例的数据集),并使用可自行支配的计算资源来搜索满足约束条件的应用线程空间。在神经网络的例子中,亲戚大伙儿 把搜索限制在应用线程空间的一3个 连续的子集上,在两种空间中,搜索过程这个出乎意料地可不都要使用反向传播和随机梯度下降算法。

亲戚大伙儿 所熟悉的软件1.0的“经典堆栈”是用Python、C++等语言编写的,它中含了应用线程员编写的计算机的显式指令。通过编写每行代码,应用线程员可不都要通过这个可取的行为来选泽应用线程空间中的某个特定点。

有时亲戚大伙儿 把神经网络称为“机器学习工具箱中的另两种工具”。有时我就用它们来赢得Kaggle的比赛。因此 ,两种解释全版见木不见林。神经网络不也不我 另两种分类器,它们代表了亲戚大伙儿 怎么可不可以编写软件的根本性转变的开始。可不都要说是软件的2.0时代。下文简称软件2.0。

最后,亲戚大伙儿 还发现了两种堆栈的这个特殊属性。类似,对抗样本的位于突出了两种堆栈的不直观的本质。

5.它具有厚度的可移植性:与经典的二进制文件或脚本相比,在任意计算配置上运行一3个 矩阵乘法序列要容易得多。

4.持续的内存使用:与上面相关的是,在任何地方都越来越动态分配的内存,因此 也不我 大不可能 交换到磁盘,或越来越你都要在你的代码中追踪的内存泄漏。

机器人技术将问题报告 分解为感知、姿态估计、规划、控制、不选泽性建模等,使用显式表示和算法多于上面表示。亲戚大伙儿 还越来越全版做到两种点,但加州大学伯克利分校和谷歌的研究表明,软件2.0或许不能更好地代表所有哪几种代码。

7.模块可不都要融合为一3个 最优的整体:亲戚大伙儿 的软件无缘无故被分解为通过公共函数,API或端点进行通信的模块。然而,不可能 一3个 最初训练的软件2.0模块相互作用,亲戚大伙儿 可不都要很容易地在整个过程中进行反向传播。想看了,不可能 你的web浏览器不能自动重新设计底层系统指令10个堆栈,直到加载web页面时获得更高的速度,那该多好。而对于2.0,这是默认的行为。

从长远来看,软件2.0的未来是光明的,不可能 完会 的人认为,当亲戚大伙儿 开发了AGI时,它肯定会写入软件2.0中。

6.它非常敏捷:不可能 你一3个 C++代码,因此 大家想我就把它以两倍的速度为代价获得(不可能 都要一段话),这将是非常重要的调优系统新规范。然而,在软件2.0中亲戚大伙儿 可不都要把亲戚大伙儿 的网络删除一半的通道,因此 再次训练,——它完都在运行速度的两倍,因此 运行的这个糟糕。相反地,不可能 你恰好得到了更多的数据/计算,我就通过增加更多的通道和重新训练来我就的应用线程更好地工作。

语音合成无缘无故以来都在各种各样的拼接(stitching)机制,因此 现在,艺术模型的状况是产生原始音频信号输出的大的卷积(类似WaveNet)。

机器翻译通常是采用基于短语的统计技术的土法律方式,但神经网络调慢就会位于主导地位。我最喜欢的架构是在多语言环境中进行训练的,其中一3个 模型可不都要从任何源语言转换为任何目标语言,因此 在弱监督(或全版不受监督的)环境中进行。

软件2.0的好处

不可能 你把神经网络看作是一3个 软件堆栈,而不仅仅是一3个 很好的分类器,越来越调慢就会发现,它们拥有絮状的优势和很大的潜力来转换软件。

视觉识别也不我 是由这个中含机器学习的工程形态学 组成的(类似,SVM)。从那时起,亲戚大伙儿 开发了机器,以发现更强大的图像分析应用线程(在卷积架构中),因此 最近亲戚大伙儿 也不我 可能 开始搜索架构。

2.简单设置为硅:作为一3个 推论,不可能 神经网络的指令集相对较小,因此 更容易实现将哪几种网络更靠近硅,类似自定义ASIC芯片,神经形态学 芯片等等。当低动力的智能变得无处都越来越时,状况又会位于变化。类似,小而便宜的芯片可不都要使用预先训练过的卷积神经网络、语音识别器和WaveNet语音合成网络,它们都集成在一3个 小的、可不都要连接到任何东西上的“原始大脑”中。

软件2.0完会取代1.0(实际上,都要絮状的1.0基础架构来进行“编译”2.0代码的训练和推测),因此 它不可能 接管完会 的软件1.0的责任。让亲戚大伙儿 来看看这个正在进行的过渡的例子,以使其更加具体:

事实证明,在现实世界中,分派数据要比明确地编写应用线程容易得多。过段时间并且,大每段应用线程员完会维护多样化的软件库,编写多样化的应用线程,不可能 分析它们的运行时间。但亲戚大伙儿 会分派、分派、操作、标签、分析和可视化馈送神经网络的数据。

本文由AiTechYun编译,转载请注明出处。更多内容关注微信公众号:atyun_com

2.0堆栈可不都要以不直观和令人尴尬的土法律方式失败,类似,通过在训练数据中默默地采用偏差,当它们的大小在数百万的大多数状况下,是没能正确地分析和检查的。

3.恒定的运行时间:典型的神经网络正向传递的每一次迭代都采用同样数量的FLOPS(即“每秒浮点运算次数”,“每秒峰值速度”)。零可变性基于你的代码的不同的执行路径,是可不都要通过这个庞大的C++代码库来实现的。当然,我就拥有动态计算图,因此 执行流通常仍然受到很大的限制。也不我 ,亲戚大伙儿 几乎可不都要保证永远完会发现自己的操作在无意地进行无限循环。

2.0堆栈都在这个自身的缺点。在优化的最后,亲戚大伙儿 剩下的是大型网络,它们运行得很好,因此 亲戚大伙儿 没能知道它是怎么可不可以运作的。在这个应用领域,亲戚大伙儿 不可能 选泽使用亲戚大伙儿 所理解的90%的精确模型,不可能 99%的准确模型。

为哪几种亲戚大伙儿 更喜欢将多样化的应用线程移植到软件2.0中呢? 很明显,答案是不可能 它们在实践操作中表现得更好。因此 ,还有什么都有有有这个的方便的理由来选泽两种堆栈。让亲戚大伙儿 来看看软件2.0(一3个 卷积神经网络)与软件1.0相比(一3个 生产级别的C++代码基数)的这个好处。软件2.0:

软件2.0的局限性

1.计算均匀:一3个 典型的神经网络,首先,由一3个 操作组成:矩阵乘法和在零点(ReLU函数)的阈值。将其与经典软件的指令集进行比较,后者明显更具有异构性和多样化性。不可能 你只需为絮状的核心计算原语(类似,矩阵乘法)提供软件1.0实现,就可不都要更容易地做出各种正确的/性能的保证。