【轉載】關於機器學習的領悟與反思

做者介紹 node

張志華教授算法

北京大學數學學院教授,北京大數據研究院高級研究員。曾在浙江大學和上海交通大學計算機系任教。主要從事機器學習與應用統計等領域的教學與科研工做。
圖片描述編程

近年來,人工智能的強勢崛起,特別是去年AlphaGo和韓國九段棋手李世石的人機大戰,讓咱們深入地領略到了人工智能技術的巨大潛力。數據是載體,智能是目標,而機器學習是從數據通往智能的技術、方法途徑。所以,機器學習是數據科學的核心,是現代人工智能的本質。微信

通俗地說,機器學習就是從數據中挖掘出有價值的信息。數據自己是無心識的,它不能自動呈現出有用的信息。怎樣才能找出有價值的東西呢?第一步要給數據一個抽象的表示;接着基於表示進行建模;而後估計模型的參數,也就是計算;爲了應對大規模的數據所帶來的問題,咱們還須要設計一些高效的實現手段,包括硬件層面和算法層面。統計是建模的主要工具和途徑,而模型求解大多被定義爲一個優化問題或後驗抽樣問題,具體地,頻率派方法其實就是一個優化問題。而貝葉斯模型的計算則每每牽涉蒙特卡羅(Monte Carlo) 隨機抽樣方法。所以,機器學習是計算機科學和統計學的交叉學科。
借鑑計算機視覺理論創始人馬爾 (Marr) 的關於計算機視覺的三級論定義,我把機器學習也分爲三個層次:初級、中級和高級。初級階段是數據獲取以及特徵的提取。中級階段是數據處理與分析,它又包含三個方面:首先是應用問題導向,簡單地說,它主要應用已有的模型和方法解決一些實際問題,這能夠理解爲數據挖掘;其次,根據應用問題的須要,提出和發展模型、方法和算法以及研究支撐它們的數學原理或理論基礎等,這則是機器學習學科的核心內容;第三,經過推理達到某種智能。高級階段是智能與認知,即實現智能的目標。數據挖掘和機器學習本質上是同樣的,其區別是數據挖掘更接近於數據端,而機器學習則更接近於智能端。網絡

統計與計算

今年剛被選爲美國科學院院士的卡內基梅隆大學統計系教授沃塞曼 (Larry Wasserman) 寫了一本名字很是霸道的書:《統計學徹底教程》(All of Statistics)。這本書的引言部分有一個關於統計學與機器學習很是有趣的描述。沃塞曼認爲,原來統計是在統計系,計算機是在計算機系,這二者是不相來往的,並且互相都不認同對方的價值。計算機學家認爲那些統計理論沒有用,不解決問題,而統計學家則認爲計算機學家只是在「從新發明輪子」,沒有新意。然而,他認爲如今狀況改變了,統計學家認識到計算機學家正在作出的貢獻,而計算機學家也認識到統計的理論和方法論的廣泛性意義。因此,沃塞曼寫了這本書,能夠說這是一本爲統計學者寫的計算機領域的書,爲計算機學者寫的統計領域的書。
如今你們達成了一個共識:若是你在用一個機器學習方法,而不懂其基礎原理,這是一件很是可怕的事情。正是因爲這個緣由,目前學術界對深度學習仍是心存疑慮的。儘管深度學習已經在實際應用中展現出其強大的能力,但其中的原理目前你們還不是太清楚。數據結構

讓咱們具體討論計算機與統計學之間的關係。計算機學家一般具備強大的計算能力和解決問題的直覺,而統計學家擅長於理論分析和問題建模,所以,二者具備很好的互補性。Boosting、支持向量機 (SVM)、集成學習和稀疏學習是機器學習界也是統計界在近十年或者是近二十年來最爲活躍的方向,這些成果是統計界和計算機科學界共同努力成就的。例如,數學家瓦普尼克 (Vapnik) 等人早在20 世紀60 年代就提出了支持向量機的理論,但直到計算機界於90 年代末發明了很是有效的求解算法,並隨着後續大量實現代碼的開源,支持向量機如今成爲了分類算法的一個基準模型。再好比,核主成分分析(Kernel Principal Component Analysis, KPCA) 是由計算機學家提出的一個非線性降維方法,其實它等價於經典多維尺度分析(Multi-Dimensional Scaling, MDS)。然後者在統計界是很早就存在的,但若是沒有計算機界從新發現,有些好的東西可能就被埋沒了。架構

計算機界和統計界的通力合做,成就了機器學習從20世紀90年代中期到21世紀00年代中期的黃金髮展時期,主要標誌是學術界涌現出一批重要成果,好比,基於統計學習理論的支持向量機、隨機森林和Boosting等集成分類方法,機率圖模型,基於再生核理論的非線性數據分析與處理方法,非參數貝葉斯方法,基於正則化理論的稀疏學習模型及應用等等。這些成果奠基了統計學習的理論基礎和框架。
機器學習如今已成爲統計學的一個主流方向,許多著名大學的統計系紛紛從機器學習領域招聘教授,好比斯坦福大學統計系新進的兩位助理教授來自機器學習專業。計算在統計領域已經變得愈來愈重要,傳統多元統計分析是以矩陣分解爲計算工具, 現代高維統計則是以優化爲計算工具。框架

最近有一本還沒有出版的書《數據科學基礎》(Foundation of Data Science ),做者之一霍普克洛夫特 (John Hopcroft) 是圖靈獎得主。在這本書前言部分,提到了計算機科學的發展能夠分爲三個階段:早期、中期和當今。早期就是讓計算機能夠運行起來,其重點在於開發程序語言、編譯技術、操做系統,以及研究支撐它們的數學理論。中期是讓計算機變得有用,變得高效,重點在於研究算法和數據結構。第三個階段是讓計算機具備更普遍的應用,發展重點從離散類數學轉到機率和統計。我曾經和霍普克洛夫特教授交談過幾回,他認爲計算機科學發展到今天, 機器學習是核心。並且他正致力於機器學習和深度學習的研究和教學。dom

如今計算機界戲稱機器學習爲「全能學科」,它無所不在。除了有其自身的學科體系外,機器學習還有兩個重要的輻射功能。一是爲應用學科提供解決問題的方法與途徑。對於一個應用學科來講,機器學習的目的就是把一些難懂的數學翻譯成讓工程師可以寫出程序的僞代碼。二是爲一些傳統學科,好比統計、理論計算機科學、運籌優化等找到新的研究問題。所以,大多數世界著名大學的計算機學科把機器學習或人工智能列爲核心方向,擴大機器學習領域的教師規模,並且至少要保持兩、三個機器學習研究方向具備一流競爭力。有些計算機專業有1/3甚至1/2的研究生選修機器學習或人工智能。
然而,機器學習是一門應用學科,它須要在工業界發揮做用,能爲他們解決實際問題。幸運的是,機器學習切實能被用來幫助工業界解決問題。特別是當下的熱點,好比說深度學習、AlphaGo、無人駕駛汽車、人工智能助理等對工業界的巨大影響。當今IT的發展已從傳統的微軟模式轉變到谷歌模式。傳統的微軟模式能夠理解爲製造業,而谷歌模式則是服務業。谷歌搜索徹底是免費的,服務社會,他們的搜索技術作得愈來愈極致,同時創造的財富也愈來愈豐厚。機器學習

財富蘊藏在數據中,而挖掘財富的核心技術則是機器學習,所以谷歌認爲本身是一家機器學習公司。深度學習做爲當今最有活力的機器學習方向,在計算機視覺、天然語言理解、語音識別、智力遊戲等領域的顛覆性成就,造就了一批新興的創業公司。工業界對機器學習領域的人才有大量的需求。不只僅須要代碼能力強的工程師,也須要有數學建模和解決問題的科學家。

機器學習發展啓示

機器學習的發展歷程告訴咱們:發展一個學科須要一個務實的態度。時髦的概念和名字無疑對學科的普及有必定的推進做用,但學科的根本仍是所研究的問題、方法、技術和支撐的基礎等,以及爲社會產生的價值。

「機器學習」是個很酷的名字,簡單地按照字面理解,它的目的是讓機器能像人同樣具備學習能力。但在其十年的黃金髮展期,機器學習界並無過多地炒做「智能」或者「認知」,而是關注於引入統計學等來創建學科的理論基礎,面向數據分析與處理,以無監督學習和有監督學習爲兩大主要的研究問題,提出和開發了一系列模型、方法和計算算法等,切實地解決了工業界所面臨的一些實際問題。近幾年,由於大數據的驅動和計算能力的極大提高,一批面向機器學習的底層架構前後被開發出來。神經網絡其實在20 世紀80年代末或90年代初就被普遍研究,但後來沉寂了。近幾年,基於深度學習的神經網絡強勢崛起,給工業界帶來了深入的變革和機遇。深度學習的成功不是源自腦科學或認知科學的進展,而是由於大數據的驅動和計算能力的極大提高。
機器學習的發展詮釋了多學科交叉的重要性和必要性。然而這種交叉不是簡單地彼此知道幾個名詞或概念就能夠的,是須要真正的融會貫通。已故的布萊曼(Leo Breiman) 教授是統計機器學習的主要奠定人,他是衆多統計學習方法的主要貢獻者,好比Bagging、分類迴歸樹(CART)、隨機森林以及非負garrote 稀疏模型等。萊曼教授經歷傳奇,他從學術界轉到工業界從事統計的實際應用十多年,而後又回到學術界。布萊曼是喬丹(Michael Jordan) 教授的伯樂,當初是他力主把喬丹從麻省理工學院引進到伯克利分校的。喬丹教授既是一流的計算機學家,又是一流的統計學家,而他的博士專業爲心理學,他可以承擔起創建統計機器學習的重任,爲機器學習領域培養了一大批優秀的學者。

斯坦福大學教授弗萊德曼(Jerome Friedman) 早期從事物理學研究,但弗萊德曼是優化算法大師,他特別善於從優化的視角來研究統計方法,好比由此提出了多元自適應迴歸(Multivariate Adaptive Regression Splines, MARS) 和梯度推動機(Gradient Boosting Machines, GBM) 等經典機器學習算法。多倫多大學的辛頓教授是世界最著名的認知心理學家和計算機科學家。雖然他很早就成就斐然,在學術界久負盛名,但他依然始終活躍在一線,本身寫代碼。他提出的許多想法簡單、可行又很是有效,被稱爲偉大的思想家。正是因爲他的睿智和身體力行,深度學習技術迎來了革命性的突破。

總之,這些學者很是務實,從不提那些空洞無物的概念和框架。他們遵循自下而上的方式,從具體問題、模型、方法、算法等着手,一步一步實現系統化。
能夠說機器學習是由學術界、工業界、創業界(或競賽界)等協力造就的。學術界是引擎,工業界是驅動,創業界是活力和將來。學術界和工業界應該有各自的職責和分工。學術界的職責在於創建和發展機器學習學科,培養機器學習領域的專門人才;而大項目、大工程更應該由市場來驅動,由工業界來實施和完成。

我國機器學習發展示狀和出路

機器學習在我國獲得了普遍的關注,也取得了必定的成績,但我以爲大多數研究集中在數據挖掘層面,我國從事純粹機器學習研究的學者屈指可數。在計算機學術界,理論、方法等基礎性的研究沒有獲得足夠重視,一些理論背景深厚的領域甚至被邊緣化。而一些「過剩學科」、「夕陽學科」則彙集了大量的人力、財力,這使得我國在國際主流計算機領域中缺少競爭力和影響力。
統計學在我國仍是一個弱勢學科,最近才被國家定爲一級學科。我國統計學處於兩個極端,一是它被看成數學的一個分支,主要研究機率論、隨機過程以及數理統計理論等。二是它被劃爲經濟學的分支,主要研究經濟分析中的應用。而機器學習在統計學界尚未被深度地關注。統計學和計算機科學仍處於沃塞曼所說的「各自爲戰」階段。

我國計算機學科的培養體系還基本停留在早期發展階段,現在的學生從小就與計算機接觸,他們的編程能力和國外學生相比沒有任何劣勢。但因爲理論知識一直沒有被充分重視,並且統計學的重要性沒有被充分認識到,這些形成了學生的數學能力和國外著名高校相比差距很大。我國大多數大學計算機專業的本科生都開設了人工智能課程,研究生則開設了機器學習課程,但不管是深度、寬度仍是知識結構都落後於學科的發展,不能適應時代的須要。所以,人才的培養不管是質量仍是數量都沒法知足工業界的迫切需求。

目前數據科學專業在我國獲得了極大的關注,北京大學、復旦大學和中國人民大學等依託雄厚的統計學實力紛紛創建了數據科學專業或大數據研究院,並已經開始招收本科生和研究生。可是目前尚未一所大學開設機器學習專業。機器學習對其餘應用或理論學科有輻射做用,也是鏈接二者的紐帶。一方面它能夠爲理論端儲備人才,另外一方面能夠結合不一樣領域問題,好比醫療數據、金融數據、圖像視頻數據等,爲應用端輸送人才。所以,我認爲在計算機科學和應用數學本科專業中,增長機器學習的訓練是必要的。

機器學習集技術、科學與藝術於一體,它有別於傳統人工智能,是現代人工智能的核心。它牽涉到統計、優化、矩陣分析、理論計算機、編程、分佈式計算等。所以,建議在已有的計算機專業本科生課程的基礎上,適當增強機率、統計和矩陣分析等課程,下面是具體課程設置和相關教材的建議:

增強機率與統計的基礎課程,建議採用莫里斯·德格魯特(Morris H.DeGroot) 和馬克·舍維什(Mark J.Schervish) 合著的第四版《機率論與數理統計》(Probability and Statistics) 爲教材。
在線性代數課程裏,增強矩陣分析的內容。教材建議使用吉爾伯特·斯特朗(Gilbert Strang) 的《線性代數導論》(Introduction to Linear Algebra)。吉爾伯特·斯特朗在麻省理工學院一直講述線性代數,他的網上視頻課程堪稱經典。後續建議開設矩陣計算,採用特雷費森·勞埃德(Trefethen N.Lloyd) 和戴維·鮑(David Bau lll) 著做的《數值線性代數》(Numerical Linear Algebra) 爲教科書。

開設機器學習課程。機器學習有許多經典的書籍,但大多不太適宜作本科生的教材。最近,麻省理工學院出版的約翰·凱萊赫(John D.Kelleher) 和布瑞恩·麥克·納米(Brian Mac Namee) 等人著做的《機器學習基礎之預測數據分析》(Fundamentals of Machine Learning for Predictive Data Analytics ),或者安得烈·韋伯 (Andrew R.Webb) 和基思·科普塞(Keith D.Copsey) 合著的第三版《統計模式識別》(Statistical Pattern Recognition ) 比較適合做爲本科生的教科書。同時建議課程設置實踐環節,讓學生嘗試將機器學習方法應用到某些特定問題中。

此外,我建議設立如下課程做爲本科計算機專業的提升課程或者榮譽課程。特別是,國內有些大學計算機專業設立了拔尖人才項目,我認爲如下課程能夠考慮列入該項目的培養計劃中。事實上,上海交通大學ACM 班就開設了隨機算法和統計機器學習等課程。

開設數值優化課程,建議參考教材喬治·諾塞達爾(Jorge Nocedal) 和史蒂芬·賴特(Stephen J.Wright) 的第二版《數值優化》(Numerical Optimization ) ,或者開設數值分析,建議採用蒂莫西·索爾的《數值分析》(Numerical Analysis) 爲教材。
增強算法課程,增長高級算法,好比隨機算法,參考教材是邁克爾·米曾馬克(Michael Mitzenmacher) 和伊萊·阿普法(Eli Upfal) 的《機率與計算: 隨機算法與機率分析》(Probability and Computing: Randomized Algorithms and Probabilistic Analysis)。
在程序設計方面,增長或增強並行計算的內容。特別是在深度學習技術的執行中,一般須要GPU 加速,可使用戴維·柯克 (David B.Kirk) 和胡文美(Wen-mei W.Hwu) 的教材 《大規模並行處理器編程實戰》(第二版)(Programming Massively Parallel Processors:A Hands-on Approach,Second Edition ) ;另外,還能夠參考優達學城(Udacity) 上英偉達(Nvidia) 講解CUDA 計算的公開課。

我認爲以計算機科學爲主導,聯合統計和應用數學專業,開設機器學習研究生專業是值得考慮的。研究生專業應該圍繞理論機器學習、機率與隨機圖模型、貝葉斯方法、大規模優化算法、深度學習等基礎機器學習領域。建議開設理論機器學習、機率圖模型、統計推斷與貝葉斯分析、凸分析與優化、強化學習、信息論等課程。在附錄我列出了一些相應書籍供參考。

結語

在AlphaGo和李世石九段對弈中,一個值得關注的細節是,表明AlphaGo方懸掛的是英國國旗。咱們知道AlphaGo是由deep mind團隊研發的,deep mind是一家英國公司,但後來被google公司收購了。科學成果是世界人民共同擁有和分享的財富,但科學家則是有其國家情懷和歸屬感的。
位低不敢忘春秋大義,我深切地認爲我國人工智能發展的根本出路在於教育。只有培養出一批批數理基礎深厚、動手執行力極強,有真正融合交叉能力和國際視野的人才,咱們纔會有大做爲。
◆ ◆ ◆ ◆

附錄:參考書籍

ShaiShalew-ShwartzandShaiBen-David.Understanding Machine Learning:from Theory to Algorithms.Cambridge University Press.2014
George Casella and Roger L.Berger.Statistical Inference, second edition.The Wadsworth Group,2002.
Andrew Gelman et al.Bayesian Data Analysis,Third edition.CRC,2014.
Daphne Koller and Nir Friedman.Probabilistic Graphical Models:Principles and Techniques.MIT,2009.
Jonathan M.Borwein and Adrian S.Lewis.Convex Analysis and Nonlinear Optimization:Theory and Examples,second edition.Springer,2006.
Avrim Blum,John Hopcroft,and Ravindran Kannan.Foundation of Data Science.2016.
Richaerd S.Sutton and Andrew G.Barto.Reinforcement Learning:An Introduction.MIT,2012.
Thomas M.Cover and Joy A. Thomas.Elements of Information Theory.John Wiley & Sons,2012.

本文是根據在統計之都微博發佈的《機器學習:統計與計算之戀》和中國計算機學會通信發表的《機器學習的發展歷程及啓示》修訂而成。

——2017年1月9日修訂於靜園6院

優達學城並行編程入門介紹

課程開發

NVIDIA

課程概述

瞭解 GPU 和 CUDA 編程環境中的並行計算基礎知識!在此課程中,你將經過編碼一系列圖像處理算法瞭解並行編程,如 Photoshop 或 Instagram 中同樣。你將可以在高端 GPU 上編程和運行你的任務,即便你本身不具有高端 GPU。

並行思考的重要性何在

瞭解如何經過將理論和實驗與計算相結合來加快科學發現,從而對抗癌症、預防心臟病和促進機器人手術的新進步。

爲何學習這門課程?

你將經過使用 CUDA C/C++ 編程現代 GPU,掌握大規模並行計算的基本原理。你將學習 GPU 編程模型與架構、關鍵算法和並行編程模式以及優化技術。你的任務也將經過圖像處理應用體現這些概念,但這是並行計算課程,你所學的內容可轉化到任何應用領域。最重要的是,咱們但願你能學會並行思考。

先修要求

咱們但願學生擁有紮實的 C 編程語言功底和數據結構與算法的基本知識。

學習計劃

  • 第 1 課:GPU 編程模型
    項目 1:灰度轉換(打造優雅質地!)

  • 第 2 課:GPU 硬件和並行通訊
    項目 2:特殊模糊(去除皺紋的神奇產品!)

  • 第 3 課:基礎並行算法
    項目 3:高動態範圍 (HDR) 色調映射(當 1000:1 的對比還不夠!)

  • 第 4 課:使用排序和掃描
    項目 4:去紅眼(柔和去除明亮紅眼)

  • 第 5 課:優化 GPU 程序
    項目 5:加快直方圖顯示速度(當多快都不夠快)

  • 第 6 課:並行計算模式
    項目 6:無縫圖像合成(游泳池中的北極熊)

  • 第 7 課:GPU 計算的新領域和將來

優達學城機器學習納米學位

  • 優達學城Udacity機器學習納米學位是由Google,滴滴,Kaggle共同開發的機器學習課程,畢業證書受到上述幾家公司承認並可提供內推機會。

  • 添加做者(機器學習博士生,Udacity機器學習社羣導師)微信號:Grant-- 加入機器學習社羣,瞭解更多狀況。

  • 納米學位購買優惠碼:CA2BF3B9

相關文章
相關標籤/搜索