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