0
本文作者: 恒亮 | 2017-04-28 10:19 |
對于MATLAB,不少人的印象依然停留在學(xué)校期間學(xué)習(xí)的高級線性代數(shù)解題器的階段,在他們看來,MATLAB只是一個(gè)高級版的計(jì)算器。
從本質(zhì)上說,這種看法并沒有錯(cuò)。因?yàn)?MATLAB 的確提供了豐富的數(shù)學(xué)計(jì)算功能,甚至為了簡化使用,這些功能也盡量以極簡的數(shù)學(xué)入門語法實(shí)現(xiàn),以至于一個(gè)沒什么編程經(jīng)驗(yàn)的初學(xué)者也可以很快把描述良好的數(shù)學(xué)方程直接“翻譯”到 MATLAB 語言之中,這也成了 MATLAB 作為一種數(shù)值計(jì)算語言的關(guān)鍵優(yōu)勢之一。
然而,這種看法卻不完整。因?yàn)?MATLAB 并非只能做各種各樣的數(shù)學(xué)運(yùn)算,實(shí)際上在過去的 30 年中,MATLAB 積累了大量工業(yè)應(yīng)用相關(guān)的工具箱,在廣度上觸及了數(shù)據(jù)分析、通信和信號處理、復(fù)雜控制系統(tǒng)、代碼生成、金融學(xué)甚至生物信息學(xué)等在內(nèi)的諸多領(lǐng)域,目前已經(jīng)成為通信信號處理和控制算法開發(fā)的通用平臺之一。
另外,近年來隨著大數(shù)據(jù)和深度學(xué)習(xí)技術(shù)的興起,MATLAB 還適時(shí)地推出了:統(tǒng)計(jì)與機(jī)器學(xué)習(xí)工具箱、神經(jīng)網(wǎng)絡(luò)工具箱、數(shù)據(jù)庫工具箱以及自動(dòng)駕駛工具箱等在內(nèi)的各種大數(shù)據(jù)分析和人工智能相關(guān)的新功能。
不僅如此,按照 MATLAB 官網(wǎng)的說法,實(shí)際上公司內(nèi)部安排有專門的測試團(tuán)隊(duì),每天針對 MATLAB 提供的函數(shù)庫和工具箱進(jìn)行百萬量級的測試和驗(yàn)證,以保證它們的穩(wěn)定性和可靠性。
然而,在這個(gè)大數(shù)據(jù)風(fēng)起云涌、開源項(xiàng)目層出不窮的時(shí)代,作為這樣一個(gè)功能豐富、易用、可靠的巨無霸級商業(yè)軟件,MATLAB 在一些領(lǐng)域似乎陷入了不小的危機(jī)。例如在人工智能領(lǐng)域,TensorFlow 和 Caffe 這樣的開源框架似乎更受歡迎,相應(yīng)地,NumPy、SciPy 和 SymPy 等基于 Python 的數(shù)學(xué)計(jì)算開源庫的應(yīng)用也越來越多。為什么同樣可以完成一項(xiàng)任務(wù),MATLAB在這些場景的出鏡率更低?與這些開源項(xiàng)目相比,MATLAB 的目標(biāo)用戶到底是哪些人?
為了回答這些問題,雷鋒網(wǎng)近日采訪了 MathWorks 公司中國區(qū)高級應(yīng)用工程師陳建平,從他口中,我們得以更深入地認(rèn)識 MATLAB。
“術(shù)業(yè)有專攻,數(shù)據(jù)科學(xué)家不是專業(yè)程序員?!?陳建平表示,“一直以來,MATLAB 的目標(biāo)客戶都是各個(gè)領(lǐng)域的算法研發(fā)人員和科學(xué)家。在大數(shù)據(jù)時(shí)代也不例外, MATLAB 的大數(shù)據(jù)客戶集中在面向工業(yè)生產(chǎn)的大數(shù)據(jù)分析之中?!?/p>
陳建平說,這些人并非專業(yè)的程序員,他們本身具有豐富的工業(yè)知識和背景,但是對計(jì)算機(jī)和編程卻不擅長,由于科研和工業(yè)上的應(yīng)用需要,又必須借助計(jì)算機(jī)程序來做一些數(shù)值運(yùn)算和數(shù)據(jù)處理類的任務(wù),因此他們需要 MATLAB。MATLAB 可以為這些用戶補(bǔ)足計(jì)算機(jī)編程上的短板,讓他們專注于本身業(yè)務(wù)上的工作。這一點(diǎn)與開源軟件的目標(biāo)用戶其實(shí)是非常不同的,開源項(xiàng)目的使用者大多數(shù)都是編程專家。
“例如在大數(shù)據(jù)處理領(lǐng)域,MATLAB就為用戶提供了一套極簡的 API,方便用戶把一個(gè)串行的數(shù)值計(jì)算問題平滑遷移到 Haddop/Spark 平臺,即使是一個(gè)沒有太多軟件開發(fā)經(jīng)驗(yàn)的人,只要他/她有工業(yè)背景,也可以在極短的時(shí)間內(nèi),開發(fā)并部署大數(shù)據(jù)的應(yīng)用?!标惤ㄆ奖硎尽?/p>
“具體來說,與MATLAB功能有重疊的產(chǎn)品其實(shí)有兩類?!标惤ㄆ竭M(jìn)一步表示,“一類是NumPy和SciPy這樣的數(shù)值運(yùn)算工具,另一類是TensorFlow和Caffe這樣框架級的產(chǎn)品。MATLAB的特點(diǎn)是簡單、高效,只要懂?dāng)?shù)學(xué)或者具有一定的工業(yè)背景,幾個(gè)小時(shí)之內(nèi)就能很快上手,而且MATLAB還配有非常全面和詳細(xì)的幫助文檔。”
“但這些開源項(xiàng)目不同,雖然它們是免費(fèi)的,看起來節(jié)省了開發(fā)成本,但每個(gè)工具的學(xué)習(xí)其實(shí)都需要一定的編程基礎(chǔ),使用上遠(yuǎn)不及MATLAB簡單,碰到問題也幾乎沒有對應(yīng)的幫助文檔,這一點(diǎn)實(shí)際上又拉長了開發(fā)周期。當(dāng)然,這里我不是說這些開源的框架不好,現(xiàn)在各種算法其實(shí)都是公開的,大家的實(shí)現(xiàn)也都差不多,無非是各種工具的應(yīng)用側(cè)重點(diǎn)不一樣。你將幾種特定領(lǐng)域的開源工具組合起來,可能也可以完成一個(gè)工程上的項(xiàng)目,但它的可靠性和庫的質(zhì)量是沒有保證的,高效性也很可能不如商業(yè)軟件。這里根本的原因是商業(yè)軟件是經(jīng)過專業(yè)團(tuán)隊(duì)大量驗(yàn)證和評估的結(jié)果,商業(yè)公司要對其產(chǎn)品負(fù)責(zé),而開源項(xiàng)目在穩(wěn)定性和可靠性上則沒有這方面的保證。”
陳建平認(rèn)為,從根本上說MATLAB和這些開源工具的定位也很不一樣。MATLAB 是按照工業(yè)應(yīng)用的順序?qū)⒏鞣N相關(guān)的功能整合在一起,形成一套完整的流程工具。而開源框架考慮更多的是如何做好其中的一個(gè)點(diǎn)。比如 Tensorflow 關(guān)注于深度學(xué)習(xí),Caffe 關(guān)注于卷積處理等。陳建平說:“我相信在一些場景下,開源工具可能在某個(gè)單一的點(diǎn)上做得非常好,超過了 MATLAB,但是 MATLAB 會更貼近工業(yè)應(yīng)用,它覆蓋了工程上從數(shù)據(jù)采集、整理、分析到產(chǎn)品發(fā)布的各個(gè)重要環(huán)節(jié),這一點(diǎn)其他開源工具是無法做到的?!?/p>
“例如和 TensorFlow 對比,MATLAB 是典型的工程數(shù)值軟件,要解決的是工程計(jì)算的問題;而 TensorFlow 則更加注重深度學(xué)習(xí),目的是簡化深度學(xué)習(xí)的算法開發(fā)問題。一個(gè)是通用的數(shù)值計(jì)算軟件,一個(gè)專用的深度學(xué)習(xí)軟件,兩者在定位上本身就非常不同?!?/p>
除此之外,這種定位的不同還重點(diǎn)體現(xiàn)在工業(yè)背景上。現(xiàn)有工業(yè)用戶已經(jīng)匯集了大量的工業(yè)數(shù)據(jù),單一的數(shù)據(jù)分析手段常常無法滿足工業(yè)客戶的需求。工業(yè)數(shù)據(jù)的特點(diǎn)要求工程師必須具備專業(yè)的領(lǐng)域知識,并且能夠在領(lǐng)域知識和大數(shù)據(jù)分析之間進(jìn)行高效協(xié)作。要實(shí)現(xiàn)這一點(diǎn),最簡單的方案莫過于一個(gè)統(tǒng)一的平臺,而這就是作為傳統(tǒng)的工業(yè)仿真和分析軟件 MATLAB 發(fā)揮作用的地方。
“我們需要一種能夠簡化專業(yè)工程師工作的手段,降低工程師和數(shù)據(jù)科學(xué)家之間的溝通成本,提升企業(yè)大數(shù)據(jù)分析的效率,這一點(diǎn)和開源框架非常不同?!标惤ㄆ浇榻B稱,“例如機(jī)器學(xué)習(xí),很多人關(guān)注的都是怎樣做好中間的模型訓(xùn)練部分,關(guān)注于算法的實(shí)現(xiàn),但其實(shí)工程上最大的時(shí)間分配是在數(shù)據(jù)的預(yù)處理部分。這個(gè)部分需要工程師的領(lǐng)域知識才能夠做的最好,這點(diǎn)就需要除了單純的機(jī)器學(xué)習(xí)之外的工具的配合。我舉一個(gè)簡單的例子,即使是AlphaGo 學(xué)習(xí)圍棋,也需要最好的圍棋專家和大量的棋譜,你直接把 19x19 的表格輸送給算法是沒有用的?!?/p>
陳建平稱:“MATLAB 更加側(cè)重工業(yè)上的數(shù)據(jù)分析,它的主要優(yōu)勢在于幾十年來在工業(yè)領(lǐng)域積累的各種性能穩(wěn)定的工具箱。雖然 MATLAB 也做機(jī)器學(xué)習(xí)和深度學(xué)習(xí)相關(guān)的功能,但其實(shí)也只涉及一些靠近工業(yè)應(yīng)用的部分,并不全面。我們更多的是在工業(yè)上提供一些方便快捷的工具箱,提供很多圖形化的工具簡化開發(fā)過程?!?/p>
整體上看,正是由于 MATLAB 專門面向不擅長編程的、具有工業(yè)背景的科研用戶量身定制,而且又定位于實(shí)際工業(yè)場景的應(yīng)用,因此在以編程專家和學(xué)者居多的,尚處于學(xué)術(shù)發(fā)展期的人工智能領(lǐng)域自然不受重視。不過就像陳建平反復(fù)強(qiáng)調(diào)的:“工具本身沒有什么好壞之分,面對特定的問題,選擇特定的工具,這是再正常不過的道理。就好像大家都說 C 語言和匯編是萬能的,但沒人會用 C 和匯編去做所有事情。”
最后,陳建平提到了另一個(gè)在人工智能領(lǐng)域人們更少提到 MATLAB 的關(guān)鍵原因。他表示:“開源軟件的一個(gè)重要優(yōu)勢就是社區(qū)討論,所有用戶都能下載和使用這些軟件,然后根據(jù)自己的使用結(jié)果、收獲和疑問展開討論。但商業(yè)軟件則不同,商業(yè)軟件需要購買,而且 MATLAB 的用戶群更多地集中于企業(yè)和機(jī)構(gòu),這類用戶很少在公開場合發(fā)表自己產(chǎn)品的核心技術(shù),更不會分享代碼。這也是相對開源軟件,MATLAB 出鏡率更低的一個(gè)重要因素?!?/p>
其實(shí),“MATLAB 只是一個(gè)高級版的計(jì)算器”這句話本身已經(jīng)表達(dá)了一種固有的印象:MATLAB 只是專門用來做數(shù)學(xué)計(jì)算的。雖然客觀上 MATLAB 軟件的確已經(jīng)在數(shù)學(xué)計(jì)算的基礎(chǔ)上進(jìn)行了廣泛且深入的擴(kuò)展,但事實(shí)證明這種固有印象的轉(zhuǎn)變似乎還有待時(shí)日。
雷鋒網(wǎng)(公眾號:雷鋒網(wǎng))相關(guān)閱讀:
這才是 TensorFlow 自帶可視化工具 TensorBoard 的正確打開方式?。ǜ巾?xiàng)目源碼)
推薦 | ThoughtWorks 大牛教你入門 Tensorflow
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。