作者
“有时候,我会听见有些人仅把神经网络视为机器学习的工具。但是我并不认同这个观点。“双十一”当天,特斯拉 AI 主管 Andrej Karpathy 在一篇文章中发表了他的观点。他认为深度学习是软件 2.0,然而第二天,他在文章中关于深度学习的看法就被人怼了。提出反对观点的人为 Carlos E. Perez,曾著有《Deep Learning AI Playbook》一书。
Andrej Karpathy 曾在 OpenAI 公司(计算机视觉深度学习、生成建模和强化学习研究)担任研究员,获得多伦多大学计算机科学与物理双学位,斯坦福大学计算机科学专业博士学位。博士在读期间,他曾在谷歌实习,学习 YouTube 视频大规模特征,并在 DeepMind 进行深度强化学习。他还与李飞飞合作研究卷积/回归神经网络架构及其在计算机视觉、自然语言处理以及两者重叠领域的应用,并在斯坦福大学首开深度学习课程——视觉识别的卷积神经网络 (CS231n)。此外, Andrej 还用脚本语言创办深度学习图书馆 arxiv-sanity.com,用户可在该网站查到近三年来关于深度学习的 30000 多篇论文。
软件 2.0
在他看来,神经网络不仅是一个分类器,更意味着编程基础开始发生变化。神经网络有滋生的优势和缺点,应用范围广泛,甚至有时候还能凭此赢得 Kaggle 大赛的胜利。这就是软件 2.0。
大家所熟知的 软件 1.0,是程序员通过 Python, C++ 等编程程序指令组成,每一行代码赋予程序特定的功能。
而软件 2.0 与软件 1.0 不同,前者是通过神经网络权值进行编程。
Karpathy 表示,软件 2.0 的应用范围广泛,在视觉识别、语音识别、语音合成、机器翻译、机器人、游戏中的应用,将展现其不同于软件 1.0 的优势。
例如,软件 2.0 在机器学习方面的应用。以前,视觉识别由设定程序和一些机器学习组成。此后,机器学习发展成能够发现具有更强大图像分析功能的程序,最近机器学习已经能够完成在架构内搜索了。
软件 2.0 在机器翻译方面的应用也快速发展。机器翻译通常通过以词组为基础的数据技术实现,但神经网络很快将成为主流。比如,架构可以设定为弱指导(或完全无监管)多语言,一个模型就可以搞定所有语言翻译。
软件 2.0 不会替代软件 1.0(事实上,训练和推理编辑 2.0 代码需要大量 1.0 架构),但是会逐渐蚕食软件 1.0 目前所应用的领域。
然而,Carlos E. Perez 却对他提出的软件 2.0 存在的一些优势并不认同,认为 Andrej 的文章缺乏支持性的观点,有些他提到的优势并不能判断其真实性。
同态计算(在计算上等同)
神经网络的最典型特征,就是通过矩阵乘法(matrix multiplication )和线性整流函数(ReLU)进行操作,而传统软件与之相比更有异质性、更复杂。
对此,反对的观点则认为,这种观点虽然有趣,但却是不成立的。虽然神经网络看起来是均匀计算,但这是因为其仍处于早期发展阶段。多样化将朝着专业化和模块化的方向发展,这是自然发展的规律。以大脑为例,我们的大脑是非同态的,因为大脑由不同的若干部分和多种神经网络组成。
更易烧录
在 Karpathy 看来,因为神经网络的指令集更加简短,因此会更加方便地传到专用集成电路、神经形态芯片等组件上。
但 Carlos E. Perez 认为这不现实。硬件是机器学习的关键组成部分,但这个领域变化太快,这也是可编程 GPU 比专用集成电路价值更大的原因。
持续运行
典型的神经网络每一次传输都会花费等量的每秒浮点计算。基于不同的执行路径,代码可以通过一些庞大的 C++ 代码库来实现,几乎可以保证我们永远不会陷入无意的无限循环中。
然而,Carlos E. Perez 认为,这仅适用于简单的网络,但对于更复杂的条件遍历网络却是不一定正确;在运行时间有所差异的迭代组件上,这却完全有可能实现。
常量存储
因为不存在动态分配存储,存储泄露,需要在代码中搜索的可能性极小。
而反对的观点则认为,这对于不断快速写入的网络并不适用。
运算高效
由于连续的矩阵乘法序列,深度学习在任意计算机设备上运算比二进制更加简单。
而反对的观点则认为,深度学习比传统的 ML 更加便携和模块化,但是却忽略了模块化系统的固有特点。
十分敏捷
软件 2.0 能够减少计算步骤,计算速度可以加快 2 倍,但效率会略差。因此,在计算量较大和需要快速计算时,这一点有非常重要的意义。
此外,Andrej 认为软件 2.0 还具有模块融合最优化、简单易学等特点,但同时也存在数据偏差等不可忽视的缺陷。
软件 2.0 不会超越物理定律
而对于 Andrej 认为软件 2.0 的编程更加进步这一说法,Carlos E. Perez 则表示同意,并称许多伟大的发现都是通过无理论的方式得到的,深度学习或将成为“人类最近的创新”。
具有争议性的是,这个系统是否和其他普遍使用的系统有所不同。软件 2.0 所用的材料、信息处理方式与软件 1. 0 相同,不同的是核心、计算和存储。深度学习同样支持图灵机,并且可以从归纳中进行学习。这意味着,这种模块性的系统有别于一般的编程。但不同的模块性并不意味着基础的硬件特征会消失——软件 2.0 永远不会超越物理定律。因此,从物理层面为深度学习建模时(而不是数学),就会发现机器学习的缺陷。
关于软件深度学习的问题有哪些?考虑到深度学习系统本质上为“直觉机器”,它的行为会和软件 1.0 大为不同。
我们还处于深度学习开发的初始阶段,在这种具有软件 1.0 的功能,但性能优于软件 1.0 的新型计算系统得到应用的过程中,还有很多问题亟待解决。虽然谷歌和优步正致力于这一领域的研究,但还有很多问题仍然存在。
深度学习将会逐渐变成软件 2.0,但还需要一些时间。
转自 http://www.infoq.com/cn/news/2017/11/Deep-learning-software-2-Taunt