在人工智慧時代,MATLAB 還是曾經的那個“高級計算器”麼?
對於MATLAB,不少人的印象依然停留在學校期間學習的高級線性代數解題器的階段,在他們看來,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 可以為這些使用者補足電腦程式設計上的短板,讓他們專注於本身業務上的工作。這一點與開源軟體的目標使用者其實是非常不同的,開源專案的使用者大多數都是程式設計專家。
“例如在大資料處理領域,MATLAB就為用戶提供了一套極簡的 API,方便使用者把一個串列的數值計算問題平滑遷移到 Haddop/Spark 平臺,即使是一個沒有太多軟體發展經驗的人,只要他/她有工業背景,也可以在極短的時間內,開發並部署大資料的應用。”陳建平表示。
“具體來說,與MATLAB功能有重疊的產品其實有兩類。”陳建平進一步表示,“一類是NumPy和SciPy這樣的數值運算工具,另一類是TensorFlow和Caffe這樣框架級的產品。MATLAB的特點是簡單、高效,只要懂數學或者具有一定的工業背景,幾個小時之內就能很快上手,而且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