人物專訪:微軟首席數據科學家謝梁
謝梁
美國微軟總部首席數據科學家,福瑞至生態成員華康中泰首席人工智慧技術官。本科畢業於西南財經大學經濟學專業,後在中國工商銀行從事信貸評估工作,一年後辭職到紐約州立大學學習應用計量經濟學。研究興趣主要是混合模型(mixed model)和數據挖掘方法,以及 SAS 潛力的挖掘(他認為在各大 SAS 論壇幫人解決問題同時學習他人經驗,是提升自己最快的途徑,曾用網名 oloolo),著有《Keras 快速上手:基於 Python 的深度學習實戰》。
十餘年的機器學習應用經驗,讓他成功從一位經濟學畢業生轉型為雲計算領域的頂級數據科學家。近日,謝梁接受專訪,分享了從經濟學入坑機器學習的原因和挑戰;如何深入掌握深度學習;當今工業界應用的模型很多,是否可安心當調包俠等話題。
腦神經示意
由腦神經抽象得來的神經網路模型
(知道了神經網路的基本結構和原理,就可以使用keras去實現一個簡單的神經網路。)
為何轉向機器學習
提問:你是經濟學博士,什麼原因讓你著迷於機器學習、數據挖掘和人工智慧,並將其應用於 IT 基礎架構的優化?
謝梁:我的專業是計量經濟學,專註於實證分析各種社會和經濟現象,其中很多內容跟統計學習、機器學習都有重合,只是應用領域不同,後面的數理模型還是有很多相通的地方。我一開始也直接從事基於機器學習的商業智能方面的工作,包括自動化的營銷、客戶畫像等,使我對機器學習的應用領域有了比較多的了解。
到微軟以後,我先後在 Azure 雲計算部門從事了服務層 SaaS 和基礎架構層 IaaS 的數據分析工作。SaaS 層專註於使用 Azure 雲服務的客戶行為分析,而在 IaaS 則重點構築基於機器學習的基礎架構運營優化工作。這些領域都需要對大量的數據進行分析,對客戶運營策略和基礎架構上運行的軟體行為進行優化,都是在有限資源條件下進行最優化的工作,同時需要對結果進行合理的解讀與概念推廣,這些都與經濟學裡的工作很像,因此計量經濟學所學的理論,方法和技術都能自然地得到運用。
凡是有大量數據,並能根據數據找出某種規律並實施操作的業務都能運用機器學習的方法來自動化和優化。微軟 Azure 雲計算恰恰提供了一個非常符合這種要求的應用環境,並且其規模和競爭壓力促使其無法一直維持最初的粗放型擴張,必須運用現代智能方法提高自動化運維水平。可以說在合適的時間,出現的合適的機會促使我考慮將機器學習和人工智慧應用於 IT 基礎架構的優化。
提問:經濟學博士入坑機器學習,你遇到的挑戰都有哪些?
謝梁:經濟學背景的人進行機器學習有自己的優勢和劣勢。
優勢是經濟學出身的人對實證分析結果的解釋非常重視,往往考慮的是如何在實證結果的基礎之上進一步提供理論總結和可執行的策略。這在以後的發展中非常重要。
劣勢是經濟學出身的人在編程方面相對較弱,特別是生產系統上進行規範的編程相對科班出身的人來講差距較大,會影響在 IT 公司里發揮。
經濟學裡面的一個核心概念是比較優勢,作為經濟學出身的人,需要懂得合理運用這個理論。
名詞解釋:python是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明。IEEE發布2017年編程語言排行榜Python高居首位。
微軟Azure儲存部門如何開展機器學習
提問:你和團隊將機器學習與人工智慧方法用於大規模高可用並行存儲和運維,具體包括哪些方面的工作?是否可以量化說明這些手段的效果?
謝梁:機器學習和人工智慧的方法可以應用於 IaaS 存儲系統的多個方面,包括負載平衡、節點故障預測、可售容量預測、系統工作調度等。更新的應用包括內部運維的知識圖譜構建,代碼質量打分和 Bug 預測等。這些工作有很大部分也是建立在微軟現有其他部門的工作或者建立的基礎平台之上。
機器學習的效果非常顯著。比如,通過節點故障預測,並相應地合理安排存儲拷貝,我們在幾乎不損失容量的情況下,將由於節點故障造成的 Incidents 降低了 30%。
提問:根據你的經驗,是否未來的開發團隊和運維團隊都應當掌握機器學習和人工智慧方法?
謝梁:我覺得未來的運維必須智能化才能有效降低程序員的工作負荷,極大提高系統運作效率。在一個部門裡面,至少需要一個專門的數據挖掘團隊來提供相應服務,而如果開發和運維團隊都能將人工智慧方法從一開始就建立到系統中,那將有更大的競爭優勢。這也是我在 Azure 存儲部門推動的目標之一。
提問:深度學習在互聯網公司應用廣泛,社區提供的工具很多,你和團隊如何根據場景選擇深度學習框架?
謝梁:微軟作為一個成熟的領先 IT 公司,內部有自己的系統和深度學習平台。但是微軟現在也擁抱各種開源工具。在深度學習框架選擇上,仍然是根據自己需要的場景,「哪個能儘快提供從概念到生產系統的實現」是選擇的重要依據。
深度學習實戰技巧
問:你的著作《Keras 快速上手:基於 Python 的深度學習實戰》,選擇從 Keras 入手簡單、快速地設計模型,較少注底層代碼,那我們是否可以這麼推導:現在很多演算法都封裝好了,並且工業界應用的模型那麼多,安心當調包俠就可以了?
謝梁:肯定不是這樣的。誠然,現在的機器學習理論和演算法越來越先進,很多以前需要數據科學家和分析師進行的工作都可以由演算法自動完成,比如以前需要做很多人工的特徵工程工作,現在新的演算法將這方面的要求降低,但是如何選擇合適的模型,如何對結果進行合理的解釋仍然需要數據科學家有較好的理論訓練和知識深度。
在工業界應用機器學習,包括三個部分:
前端對實際業務問題的理解和翻譯;
中端對所選機器學習演算法的實現;
末端對結果的解釋和在業務上的運用。
現在有了較多可調用的機器學習包,只是讓中段的一些工作簡化,但同時對前端和末端提出了更多的要求,因為現在很多業務問題都非常複雜,如何將其合理地分解為可以進行建模的問題,非常考驗實踐工作者。同時,如何將分析結果植入到現有生產系統中,高效率高質量地運行也是不低的要求。
「調包俠」會是被人工智慧代替的首批白領之一,所以當調包俠可沒法安心。
問:能否分享寫這本書的初衷,以及寫作過程中你印象最深刻的事情是什麼?
謝梁:寫這本書之前就有很多業界朋友問我深度學習問題,最多的就是如何開始,並能了解一些應用。他們也都看了很多市面上的深度學習書籍,基本面臨兩個難題:一是很多書是大部頭論著,作為學校畢業多年已經工作的人來說沒有精力研讀;二是很多深度學習著作難以入門,學習曲線陡峭,不是適合他們的背景。他們需要一本簡單實用的書,能達到快速入門的目的。
問:很多專家對這本書的評價都強調了「實用」,你能否總結這一點如何體現,實用的收穫都有哪些?
謝梁:最實用的書就是菜譜,從配料都烹飪的每一步都一一列出。我們這本書也遵循這樣的方式,不過多強調理論,而是具體強調對於一個問題去怎麼做。沒有深度學習基礎的讀者讀完本書以後能自己舉一反三進行類似問題的實際操作。
問:有評論說這部書後半部分講解得比較深,需要有一定深度學習基礎,你對本書讀者的知識儲備和配套學習資料有什麼建議嗎?
謝梁:這本書基本都講得比較淺顯,後半部分可能最深的要算時間序列的一些理論,但是並不影響讀者學習深度學習實際操作部分。如果對那些理論暫時不了解的話可以跳過,先看代碼,等有時間再回去依次了解每個概念。
名詞解釋:SaaS是Software-as-a-Service(軟體即服務)的簡稱,隨著互聯網技術的發展和應用軟體的成熟, 在21世紀開始興起的一種完全創新的軟體應用模式。
如何進階
問:通過 Keras 快速體驗深度學習之後,如果還想進一步提升,比如希望透徹理解底層原理和優化,或者這本書的經驗用到移動端深度學習,你有什麼建議?
謝梁:進一步提升需要跟上最新的進展,可以多讀讀這個領域頂級會議的文章。如果沒有什麼基礎可以從以前的經典論文開始讀,輔以 Ian Goodfellow 與 Yoshua Bengio 合寫的《深度學習》這本書能較好地了解原理。之後可以關注當前頂級會議的文章,看看最新發展。
問:有人評價說 Keras 不好調試,編譯慢,那麼 Keras + TensorFlow/CNTK 是否可以滿足生產環境需求?
謝梁:相對於很多模型的訓練時間,編譯的耗時可以忽略不計。對於輕度的生產環境,Keras 本身就可以滿足需求,比如用 neocortex.js 在瀏覽器中根據 Keras 模型實時打分。對於負載較大的生產環境或者對實時性要求非常高的生產環境,還是需要直接使用 TensorFlow 或者 CNTK 的底層 API。
問:對於調參,有哪些經驗可以分享?
謝梁:調參對於傳統的機器學習方法通常是通過 Cross Validation 進行 greedy search,但是對於 hyperparameter 的範圍大致根據經驗有一個設定。對於深度學習的模型,還是根據數據量大小和特點選擇合適的結構特徵比較有效。
了解最適合人工智慧開發的5種語言
Python
Python由於簡單易用,是人工智慧領域中使用最廣泛的編程語言之一,它可以無縫地與數據結構和其他常用的AI演算法一起使用。
Python之所以時候AI項目,其實也是基於Python的很多有用的庫都可以在AI中使用,如
Numpy提供科學的計算能力,Scypy的高級計算和Pybrain的機器學習。
另外,Python有大量的在線資源,所以學習曲線也不會特別陡峭。
Java
Java也是AI項目的一個很好的選擇。它是一種面向對象的編程語言,專註於提供AI項目上所需的所有高級功能,它是可移植的,並且提供了內置的垃圾回收。另外Java社區也是一個加分項,完善豐富的社區生態可以幫助開發人員隨時隨地查詢和解決遇到的問題。
對於AI項目來說,演算法幾乎是靈魂,無論是搜索演算法、自然語言處理演算法還是神經網路,Java都可以提供一種簡單的編碼演算法。另外,Java的擴展性也是AI項目必備的功能之一。
Lisp
Lisp因其出色的原型設計能力和對符號表達式的支持在AI領域嶄露頭角。LISP作為因應人工智慧而設計的語言,是第一個聲明式系內函數式程序設計語言,有別於命令式系內過程式的C、Fortran和面向對象的Java、C#等結構化程序設計語言。
Lisp語言因其可用性和符號結構而主要用於機器學習/ ILP子領域。著名的AI專家彼得·諾維奇(Peter Norvig)在其《Artificial Intelligence: A modern approach》一書中,詳細解釋了為什麼Lisp是AI開發的頂級編程語言之一,感興趣的朋友可以自行查看。
Prolog
Prolog與Lisp在可用性方面旗鼓相當,據《Prolog Programming for Artificial Intelligence》一文介紹,Prolog一種邏輯編程語言,主要是對一些基本機制進行編程,對於AI編程十分有效,例如它提供模式匹配,自動回溯和基於樹的數據結構化機制。結合這些機制可以為AI項目提供一個靈活的框架。
Prolog廣泛應用於AI的 expert系統,也可用於醫療項目的工作。
C ++
C ++是世界上速度最快的編程語言,其在硬體層面上的交流能力使開發人員能夠改進程序執行時間。 C ++對於時間很敏感,這對於AI項目是非常有用的,例如,搜索引擎可以廣泛使用C ++。
在AI項目中,C++可用於統計,如神經網路。另外演算法也可以在C ++被廣泛地快速執行,遊戲中的AI主要用C ++編碼,以便更快的執行和響應時間。
人工智慧是一個很廣闊的領域,很多編程語言都可以用於人工智慧開發,所以很難說人工智慧必須用哪一種語言來開發。選擇多也意味著會有優劣之分,實際應用中應當根據不同情況選擇最合適的語言。
華康中泰
福瑞至生態成員華康中泰致力於將健康管理與大數據結合,運用大數據分析方法及高性能計算平台,進行精準的個人疾病預測分析,為用戶推薦相關領域的專家醫生。此外,還能為專業醫療機構或健康服務機構建立健康管理平台,讓醫院在工作流程、健康管理方面更加便捷、高效。
END
TAG:福瑞至控股 |