0
对于MATLAB,不少人的印象依然停留在学校期间学习的高级线性代数解题器的阶段,在他们看来,MATLAB只是一个高级版的计算器。
从本质上说,这种看法并没有错。因为 MATLAB 的确提供了丰富的数学计算功能,甚至为了简化使用,这些功能也尽量以极简的数学入门语法实现,以至于一个没什么编程经验的初学者也可以很快把描述良好的数学方程直接“翻译”到 MATLAB 语言之中,这也成了 MATLAB 作为一种数值计算语言的关键优势之一。
然而,这种看法却不完整。因为 MATLAB 并非只能做各种各样的数学运算,实际上在过去的 30 年中,MATLAB 积累了大量工业应用相关的工具箱,在广度上触及了数据分析、通信和信号处理、复杂控制系统、代码生成、金融学甚至生物信息学等在内的诸多领域,目前已经成为通信信号处理和控制算法开发的通用平台之一。
另外,近年来随着大数据和深度学习技术的兴起,MATLAB 还适时地推出了:统计与机器学习工具箱、神经网络工具箱、数据库工具箱以及自动驾驶工具箱等在内的各种大数据分析和人工智能相关的新功能。
不仅如此,按照 MATLAB 官网的说法,实际上公司内部安排有专门的测试团队,每天针对 MATLAB 提供的函数库和工具箱进行百万量级的测试和验证,以保证它们的稳定性和可靠性。
然而,在这个大数据风起云涌、开源项目层出不穷的时代,作为这样一个功能丰富、易用、可靠的巨无霸级商业软件,MATLAB 在一些领域似乎陷入了不小的危机。例如在人工智能领域,TensorFlow 和 Caffe 这样的开源框架似乎更受欢迎,相应地,NumPy、SciPy 和 SymPy 等基于 Python 的数学计算开源库的应用也越来越多。为什么同样可以完成一项任务,MATLAB在这些场景的出镜率更低?与这些开源项目相比,MATLAB 的目标用户到底是哪些人?
为了回答这些问题,雷锋网近日采访了 MathWorks 公司中国区高级应用工程师陈建平,从他口中,我们得以更深入地认识 MATLAB。
“术业有专攻,数据科学家不是专业程序员。” 陈建平表示,“一直以来,MATLAB 的目标客户都是各个领域的算法研发人员和科学家。在大数据时代也不例外, MATLAB 的大数据客户集中在面向工业生产的大数据分析之中。”
陈建平说,这些人并非专业的程序员,他们本身具有丰富的工业知识和背景,但是对计算机和编程却不擅长,由于科研和工业上的应用需要,又必须借助计算机程序来做一些数值运算和数据处理类的任务,因此他们需要 MATLAB。MATLAB 可以为这些用户补足计算机编程上的短板,让他们专注于本身业务上的工作。这一点与开源软件的目标用户其实是非常不同的,开源项目的使用者大多数都是编程专家。
“例如在大数据处理领域,MATLAB就为用户提供了一套极简的 API,方便用户把一个串行的数值计算问题平滑迁移到 Haddop/Spark 平台,即使是一个没有太多软件开发经验的人,只要他/她有工业背景,也可以在极短的时间内,开发并部署大数据的应用。”陈建平表示。
“具体来说,与MATLAB功能有重叠的产品其实有两类。”陈建平进一步表示,“一类是NumPy和SciPy这样的数值运算工具,另一类是TensorFlow和Caffe这样框架级的产品。MATLAB的特点是简单、高效,只要懂数学或者具有一定的工业背景,几个小时之内就能很快上手,而且MATLAB还配有非常全面和详细的帮助文档。”
“但这些开源项目不同,虽然它们是免费的,看起来节省了开发成本,但每个工具的学习其实都需要一定的编程基础,使用上远不及MATLAB简单,碰到问题也几乎没有对应的帮助文档,这一点实际上又拉长了开发周期。当然,这里我不是说这些开源的框架不好,现在各种算法其实都是公开的,大家的实现也都差不多,无非是各种工具的应用侧重点不一样。你将几种特定领域的开源工具组合起来,可能也可以完成一个工程上的项目,但它的可靠性和库的质量是没有保证的,高效性也很可能不如商业软件。这里根本的原因是商业软件是经过专业团队大量验证和评估的结果,商业公司要对其产品负责,而开源项目在稳定性和可靠性上则没有这方面的保证。”
陈建平认为,从根本上说MATLAB和这些开源工具的定位也很不一样。MATLAB 是按照工业应用的顺序将各种相关的功能整合在一起,形成一套完整的流程工具。而开源框架考虑更多的是如何做好其中的一个点。比如 Tensorflow 关注于深度学习,Caffe 关注于卷积处理等。陈建平说:“我相信在一些场景下,开源工具可能在某个单一的点上做得非常好,超过了 MATLAB,但是 MATLAB 会更贴近工业应用,它覆盖了工程上从数据采集、整理、分析到产品发布的各个重要环节,这一点其他开源工具是无法做到的。”
“例如和 TensorFlow 对比,MATLAB 是典型的工程数值软件,要解决的是工程计算的问题;而 TensorFlow 则更加注重深度学习,目的是简化深度学习的算法开发问题。一个是通用的数值计算软件,一个专用的深度学习软件,两者在定位上本身就非常不同。”
除此之外,这种定位的不同还重点体现在工业背景上。现有工业用户已经汇集了大量的工业数据,单一的数据分析手段常常无法满足工业客户的需求。工业数据的特点要求工程师必须具备专业的领域知识,并且能够在领域知识和大数据分析之间进行高效协作。要实现这一点,最简单的方案莫过于一个统一的平台,而这就是作为传统的工业仿真和分析软件 MATLAB 发挥作用的地方。
“我们需要一种能够简化专业工程师工作的手段,降低工程师和数据科学家之间的沟通成本,提升企业大数据分析的效率,这一点和开源框架非常不同。”陈建平介绍称,“例如机器学习,很多人关注的都是怎样做好中间的模型训练部分,关注于算法的实现,但其实工程上最大的时间分配是在数据的预处理部分。这个部分需要工程师的领域知识才能够做的最好,这点就需要除了单纯的机器学习之外的工具的配合。我举一个简单的例子,即使是AlphaGo 学习围棋,也需要最好的围棋专家和大量的棋谱,你直接把 19x19 的表格输送给算法是没有用的。”
陈建平称:“MATLAB 更加侧重工业上的数据分析,它的主要优势在于几十年来在工业领域积累的各种性能稳定的工具箱。虽然 MATLAB 也做机器学习和深度学习相关的功能,但其实也只涉及一些靠近工业应用的部分,并不全面。我们更多的是在工业上提供一些方便快捷的工具箱,提供很多图形化的工具简化开发过程。”
整体上看,正是由于 MATLAB 专门面向不擅长编程的、具有工业背景的科研用户量身定制,而且又定位于实际工业场景的应用,因此在以编程专家和学者居多的,尚处于学术发展期的人工智能领域自然不受重视。不过就像陈建平反复强调的:“工具本身没有什么好坏之分,面对特定的问题,选择特定的工具,这是再正常不过的道理。就好像大家都说 C 语言和汇编是万能的,但没人会用 C 和汇编去做所有事情。”
最后,陈建平提到了另一个在人工智能领域人们更少提到 MATLAB 的关键原因。他表示:“开源软件的一个重要优势就是社区讨论,所有用户都能下载和使用这些软件,然后根据自己的使用结果、收获和疑问展开讨论。但商业软件则不同,商业软件需要购买,而且 MATLAB 的用户群更多地集中于企业和机构,这类用户很少在公开场合发表自己产品的核心技术,更不会分享代码。这也是相对开源软件,MATLAB 出镜率更低的一个重要因素。”
其实,“MATLAB 只是一个高级版的计算器”这句话本身已经表达了一种固有的印象:MATLAB 只是专门用来做数学计算的。虽然客观上 MATLAB 软件的确已经在数学计算的基础上进行了广泛且深入的扩展,但事实证明这种固有印象的转变似乎还有待时日。
雷锋网(公众号:雷锋网)相关阅读:
这才是 TensorFlow 自带可视化工具 TensorBoard 的正确打开方式!(附项目源码)
推荐 | ThoughtWorks 大牛教你入门 Tensorflow
雷峰网原创文章,未经授权禁止转载。详情见转载须知。