清華大學朱軍博士:可擴展的貝葉斯方法與深度生成模型(文末贈書)
AI科技評論按:中國人工智慧學會 AIDL 第二期「 人工智慧前沿講習班 」在北京中科院自動化所舉行,主題為「 機器學習前沿」。周志華教授擔任學術主任,前來授課的嘉賓均為中國機器學習界一流專家、資深科研人員和企業精英,包括:耿新、郭天佑、劉鐵岩、王立威、葉傑平、於劍、余揚、張長水、鄭宇、朱軍。
來自清華大學計算機科學與技術系的朱軍副教授做了題為《貝葉斯學習前沿進展》的開場分享課,總時長為兩個小時,內容主要分為三大部分:貝葉斯基本理論、模型和演算法;可擴展的貝葉斯方法;深度生成模型。本文乃三大內容中的第二及第三部分,由 AI 科技評論編輯。
傳送門:清華大學計算機科學與技術系朱軍教授:機器學習里的貝葉斯基本理論、模型和演算法
離異找男友,不介意的直接約 廣告朱軍
清華大學計算機系長聘副教授、智能技術與系統國家重點實驗室副主任、深度學習技術與應用國家工程實驗室副主任、國家萬人計劃青年拔尖人才、中國自然科學基金優秀青年基金獲得者、中國計算機學會青年科學家、IEEE AI"s 10 to Watch 入選者。
展開剩餘95%
以下是根據朱軍副教授現場分享整理的文字報告。
第二部分 可擴展的貝葉斯方法
我們先看一下這個經典的貝葉斯定理,它有一個很好的性質是序列更新的,這對於處理流式數據非常適合。比如:用 B1,…,Bt 表示第一個時刻到第 t 個時刻的數據集,我們可以得到一個遞推公式:假設已經算出來了第 t-1 時刻的後驗分布,那麼下一個時刻 t 的後驗分布正比於第t-1時刻的後驗分布乘上新來數據集 Bt 的似然函數,這個迭代過程實際上是把上一時刻的後驗作為當前時刻的先驗分布了。這是非常漂亮的遞推公式,可以實時處理流式數據。
但它有一個前提是你可以算出來每個時刻的後驗分布。這對於簡單的模型是可行的,比如:線性動態系統。但是,對於一般的模型,每一步都很難算出精確的後驗分布,所以這個更新公式並不好算。需要一些好的演算法。
在線變分貝葉斯(OVB)
最近,在演算法上大家做了很多的工作,有一個叫在線(流式)變分貝葉斯的演算法,採用的是我們前面所提到的變分近似的思想實現在線貝葉斯推理。假設有一個演算法 A,它的輸入是一個數據集和先驗,輸出是一個近似的後驗分布。在第一個時刻可以用第一個數據值加上先驗來更新,得到一個近似的後驗。在接下來一個新的數據集,可以用 t-1 時刻的近似後驗來做新的先驗,隨著時間的推移你會得到 t+1、t+2……時刻的後驗分布,這就是流式計算的方法。
分散式貝葉斯更新(Distributed Bayesian Updating)
貝葉斯公式還有另外一個好的性質,適合多個機器的分散式計算。比如,假設現在有 100 台機器,每個機器有 1%的數據。我們先並行的在每個機器上處理這 1%的數據得到 100 個局部後驗分布;然後,再把它們集成在一起,就會得到我們想要的精確後驗分布。同樣,這是非常漂亮的性質。
但是,它存在同樣的挑戰:對於一般的貝葉斯模型,我們得不到局部後驗分布的解析解。為了處理這個困難,我們會考慮用一個近似的演算法去做,再集合在一起。
它的適用範圍非常廣泛,這裡有一套公式,具體的細節我不說了,如果感興趣的話,大家可以研究一下:如果這個演算法輸出的是一個指數族分布,你集成在一起還是指數族分布,只要把參數變化一下就行了,這是它的最大好處。
我們組也在這些方面做了一些工作,包括:在線/隨機演算法和分散式演算法等;大家也可以閱讀我在演講開頭提及的綜述文章,以供參考。
我現在給大家介紹一個在線學習的例子。我們考慮用貝葉斯模型做在線的分類。這是一個有監督的學習任務,因此會有一個損失函數。
我們先看一下在線學習的基本過程。假設有一個初始的模型,我可以用它對新來的數據做預測,判斷它屬於哪類。預測完之後會有兩個結論,一個是預測準確了,另外一個是預測錯了。
這是很基本的一個在線學習的框架。
Online Passive—Aggressive Updates
其中,有一個很經典的具體演算法,叫 Online Passive—Aggressive Learning,它是針對 SVM 提出的在線學習演算法。因為 SVM 是學一個特定的模型,假設當前的模型參數是 Wt,新數據出現後會做一個判斷,結果可能是正確的或錯誤的。如果判斷正確就是說你的模型足夠好,那麼可以採用 Passive Update 的策略,所謂的消極是指:我不更新,直接把這個模型拷貝到下一個時刻;還有另外一種情況,如果判斷錯了,就採取一個激進(Aggressive)的方法,比如:剛才的模型不夠好,我就做一個投影,投影到好的模型的區域里,得到一個新的模型。這是兩種操作,每一個數據都進行判斷,再選擇 Passive 或是 Aggressive 的策略,然後不斷地迭代,這種很簡單的策略實際上還有一些好的性質,實際應用的效果也挺好。
現在,我們可以做一個很簡單的類比,把上述更新過程擴展到貝葉斯模型,在線地學習貝葉斯 SVM,每個時刻都學到所有模型的一個後驗分布。這個想法實際上和前面的更新過程基本上是一樣的,差別在於我們更新的是後驗分布。假設當前的後驗分布是 qt(W),新來的數據可以用一個準則判斷它到底是正確還是錯誤,同樣對應到兩種情況,如果正確的話,表明當前的後驗分布足夠好了,我可以不去更新,實際操作時如果有似然函數,我可以用貝葉斯定理做一次更新,不會影響這個結果。當我們犯錯誤的時候,可以做一個 Aggressive 的更新,得到新的分布。
在錯誤發生時,我們可以做硬約束或是允許一定錯誤的軟約束,來優化這個錯誤率。理論分析我這裡就不細說了。
這種在線貝葉斯學習的最大好處時它可以處理隱含變數(數據中沒有觀察到的變數),挖掘數據中的隱含結構。在這種情況下,只需要對前面講的在線更新的過程稍加擴展即可,基本流程保持不變。
這裡講一個話題模型的例子。比如:我明天要出差,現在想訂一個賓館,那麼我可能會打開網站去看它的評論和打分;現在,這方面的數據有很多。假設我們拿到了很多評論文檔數據,我們可以做兩件事情,一個是挖掘大家關心的主題是哪些,另一個是看看某個具體的評論是傾向於正面還是負面,這實際上是做一個判別。這就可以用我剛才所講的在線貝葉斯學習來實現。
具體過程我就不講了。這裡給大家看一個效果,橫軸是時間,縱軸是分類的正確率(F1 值)。這裡列出來多個演算法,大家顯然能看出來,基於在線貝葉斯學習的演算法要比使用批處理的方法大約有 100 倍的性能提升,同時,分類的精度沒有下降(甚至可能有提升)。
這裡邊道理是什麼呢?實際上,大數據裡邊通常有很多冗餘,在做模型更新的時候沒必要把所有的數據都處理一遍,尤其當你的數據集特別大的時候完全沒有必要,現在大家訓練的深度學習也是一樣,最常用的方法是用隨機梯度,思想是一樣的。我們沒必要把上萬張圖片掃描一遍,再更新模型的權重,少量圖片其實就足夠了。由於每次計算的數據量非常少,因此,總體時間上有很大優勢。
分散式後採樣
我們前面講貝葉斯方法本身有一個很好的性質做分散式計算,但是,難點在於我們怎麼去做計算。我們在這方面做了一個工作,是基於 MCMC 蒙特卡洛採樣的,發表在 NIPS 2014。它的基本思路是,我們把數據劃分到多個機器,先採用 MCMC 的方法去估算局部後驗分布(的一些統計量),然後採用期望傳播(EP)的框架在多個機器之間傳遞信息,把採樣的樣本聚集合在一起,以解決近似後驗分布的問題。這個演算法收斂之後,每個局部的分布實際上就是我們想要的全局分布。這個演算法支持同步更新、非同步更新以及去中心化的更新方式,配置非常靈活。
第三部分 深度生成模型(Deep Generative Models)
我接下來講一些大家可能都很關心的深度學習。我主要介紹一些深度生成模型,包括無監督和半監督學習的模型。
通常情況下,大家做深度學習時,用的更多的是所謂的判別式深度學習,比如深度卷積網路,它的目的是學習一個從輸入到輸出的影射函數,在測試時,判斷測試樣本屬於哪個類。這種網路已經在人臉識別、語音識別或者自然語言(處理)的很多任務中應用。當然,在實際做的時候,還要注意一些細節,包括一些保護模型、避免過擬合的機制。
深度卷積網路已經被廣泛應用,包括發展出來的一些變種的網路結構。最近,這種網路也用於強化學習,比如 AlphaGo。細節這裡就不說了,我今天想和大家分享一下,除了這種判別式學習,深度學習實際上還有許多問題值得我們關注。
簡單來說,深度學習現在的應用場景有以下三點。大模型;大數據;大集群。
首先,現在的模型比較大,主要體現在它有很多參數。這是 2012 年的一個例子,它大概有 10 億個參數。其次,訓練數據比較多,當時的訓練使用了 1000 萬的圖片。最後,需要很大的計算資源,我可以用 CPU 或者 GPU 集群來運算,這幾乎成了現在做深度學習的標配。
過擬合
在這種場景下,往往有一個誤解:如果有大數據,過擬合就不再是問題了。實際上,我們說,大數據情況下過擬合可能變得更嚴重。
具體來說,對於一個機器學習演算法,我們實際上不是在關心數據的個數有多大,10 萬也好,100 萬也罷;我們更關心的是,這個數據里包含的信息有多少,給我們模型訓練所帶來的統計信息有多大。數據量多會給我們帶來很大的處理負擔。
這有一個研究結果,它衡量了當數據大小增加時,數據中的相關信息(relevant information)是如何增加的。
該圖呈現了常見的三個情況:
總體上,這三種情況下的信息增加速度都遠低於線性,充分反映了數據中存在很多冗餘。所以,在這種大數據下,過擬合是一個更值得關注的問題。
另外,深度學習還有其他的問題,比如:不夠魯棒。對於一個訓練好的神經網路,正常情況下識別精度很高,但如果對輸入圖片加一些少量干擾(人甚至識別不出來),可能同一個圖像卻完全識別錯了。我們也可以隨意地用樣本誤導它,比如:通過添加雜訊,可以誘導一個網路把特定圖像識別成指定的類別。這種特性對於關鍵領域的應用是非常危險的。
Dropout
因此,對深度學習來說,避免過擬合,增加魯棒性是本質的問題。Dropout 就是一個非常簡單,但很有效的避免過擬合的策略。它是一個隨機策略:我們在訓練網路時,每次迭代都隨機丟掉一些節點(或權重)的更新。這種方法對結果的提升是比較顯著的。
Dropout 剛提出時,大家並不清楚如何解釋它。後來,大家在類似的框架下來解釋 dropout,包括我們自己在 SVM 方面的工作。最新的進展是 Gal 和 Ghahramani 去年的工作,把 dropout 理解成貝葉斯推理的近似,這也體現了貝葉斯方法在保護模型,避免過擬合方面的效用。
Dropout 只是一個例子。事實上,貝葉斯和深度學習之間還存在很多的關聯,甚至互補的關係,如果能夠將二者有機融合,將更好地推動人工智慧的發展。
這裡有一個很好的貝葉斯的最新進展。2015 年 Science 的一篇封面文章介紹了貝葉斯程序學習(BPL),它本質上是一個多層的貝葉斯生成模型,具有層次的結構,因此,也可以看成是一個深度模型。它和深度學習不一樣的地方在於,每一層的隨機過程都有清晰的定義,比較容易解釋,比如說:在刻畫手寫體字數生成的過程是,最上層是一些基本筆畫,然後,通過隨機採樣會組合出一些部件(parts),再按照一定的規則組合在一起,形成字元的基本框架;最後是按照一定的雜訊模型,生成所觀察的具體數據。
這是一個典型的主觀貝葉斯模型,通過對手寫體字元生成過程的相對精細的描述,構造了一個有意義的層次化結構,這樣的好處是可以實現小樣本下的學習——通過主觀先驗知識彌補數據上的不足。
這個文章展示的是單示例學習(one-shot learning):只給模型一個有標註的訓練數據,讓它識別其他沒有識別的數據。實驗結果是非常好的,BPL 遠好於一般的深度學習網路以及針對 one-shot learning 做過改進的深度網路。同時,BPL 的結果比人做的錯誤率還要低。
這是一個很好但也很極端的例子。它把主觀貝葉斯的想法發揮到了極致,它的先驗分布是基於對問題的深入理解而構建的。雖然在特定任務上表現很好,但問題是與特定領域的結合太強,如果換到另外一個領域,整個BPL要重新設計。
實際上,深度學習和貝葉斯可以看成一個譜(spectrum)的兩個極端。基於數據驅動的深度學習需要大量的標註數據來訓練網路;而貝葉斯方法通過引入知識,加上小的訓練樣本也可以達到很好的效果。大家可以想想,兩者的中間是什麼?事實上,越來越多的人在思考,我們能不能朝中間靠攏一些?處在中間的模型應該具有兩方面的優點:
我們把融合了二者優點的方法稱為貝葉斯深度學習。
在深度學習中應用貝葉斯方法
事實上,已經有不少工作將貝葉斯方法用在深度學習上。早在神經網路時期,MacKay、Neal 等人已經開始用貝葉斯來保護網路避免過擬合。後來,也有了一些深入分析。近期的結果也有不少,其中一個是用非參數化貝葉斯來學深度神經網路的結構,並且獲得了 2010 年的 AISTATS 最佳論文獎。
接下來,我們來看一下一類重要的,最近進展很快的貝葉斯深度學習模型——深度生成模型。
它們和判別式模型不一樣,其主要目標是構建一個能夠刻畫數據分布的模型,通過逼近數據的真實分布,提取數據中的結構。有了這個模型之後,我們可以對它做採樣,產生新的樣本,比如:這是一個手寫體的數據集,是從真實分布里採樣得到的。我們學完生成模型之後,可以得到一個逼近真實分布的模型。我對這個模型再次採樣後會得到一些新的樣本(一些在訓練數據裡面沒有出現過的樣本)。
為什麼我們要用生成模型
生成模型有很多用處。首先,是生成新的樣本,即:創作,在學習完之後,可以「舉一反三」。其次,可以充分利用無監督數據進行學習,挖掘數據中的結構規律。再次,可以做半監督學習,融合一小部分有標註的數據和一大部分未標註的數據。最後,可以做有條件的生成,比如:從文本到語言的生成、從一種語言到另外一種語言的生成、從圖片到文本的生成等。
最近有很多進展,包括比較流行的 GAN、VAE 等,都是生成模型。
這是對生成模型的一個抽象描述。基本框架是一個概率模型,可以隨機採樣。X 是我們的觀察變數,在訓練集里觀察到一些具體的取值。為了解釋 X,生成模型假設它是由一些隱含的變數產生的,這裡用 Z 表示隱含變數,服從某種分布。從 Z 生成 X 的過程可以是隨機的,比如:p(X|Z),也可以是某種退化的確定性變換 X=f(Z)。由於 Z 的隨機性,兩種定義都是可以描述 X 的隨機性,並對 X 進行採樣。後面會看到一些具體的例子。這裡我們先關注前者。
除了使用有向的貝葉斯網路來刻畫,生成模型還可以用無向圖的隨機場來定義,典型的例子是受限玻爾茲曼機(RBM)。
這兩類模型都定義了 X 和 Z 的聯合分布。在給定數據X的具體值時,我們希望推斷出隱含變數 Z 的信息,即:後驗分布。這可以通過貝葉斯公式實現。
下面是一些典型的例子,在機器學習或模式識別的課上可能都講過。最上邊是一個簡單的混合模型,下邊是一個因子分析模型。這些基本模型是構建深度生成模型的基本單元。
深度生成模型
深度生成模型的概念其實很直接,就是,隱含變數 Z 可以有多層,不同層之間存在連接關係,這裡的連接比深度神經網路中的要更廣泛,我們即支持確定性的函數變換(比如:ReLu),也支持隨機的變換。總體上,Z 是隨機的,服從某種先驗分布。
在給定觀察樣本時,我們希望反向推斷出來 Z 的後驗分布。這和一般的神經網路是完全一樣的,希望 Z 具有一定的語義,且越高層的Z其語義也高級,以至於能解釋觀察到的現象。
這有一個簡單的例子,來說明深度生成模型的定義和靈活性。
這個 Z 是一個非常簡單的分布:標準高斯。通過隨機採樣,我們得到一個 Z 的具體值,然後經過一個非線性的網路(比如:一個簡單的 MLP 全連接網路)變換,我們把該網路的輸出定義為刻畫 X 分布的參數,比如:我們假設X的兩個維度是獨立的,分布服從高斯分布,那麼,MLP 的四個輸出神經元分布對應這兩個高斯分布的均值和方差。
這是一個非常直觀的定義方式,但是,非常有效。我們知道,一個簡單分布的隨機變數通過函數變換之後,會得到一個複雜分布的隨機變數。這裡是使用參數化的深度神經網路來定義函數變換,它的參數可以通過訓練數據自動學習出來,因此,比人為選擇的特定函數具有更好的適應性。它充分利用了神經網路強大的函數擬合能力。
定義完模型之後,接下來的問題是如何學習參數。根據前面的介紹,我們的主要目標是讓模型分布與數據分布盡量接近。因此,需要一個合適的度量,來衡量兩個分布的遠近。目前,已經發展了多個性質較好的準則學習深度生成模型。
下面,我們主要介紹 MLE 的思想,關於 GAN 和矩匹配,可以參考其他材料深入了解。
AEVB(Auto-Encoding Variational Bayes)
變分推斷是一種常用的對複雜模型做後驗推斷的工具。為了處理深度生成模型,最近在演算法上有一些根本的變化。這裡有一個典型的叫 AEVB。
深度生成模型的特點在於隱含變數存在複雜的函數變換(比如:用神經網路來刻畫的非線性變換),所以,這種模型的後驗分布 p 有很多局部概率比較大的點,一般的方法是很難逼近的。AEVB 的基本思想是:採用另一個神經網路定義一個深度產生模型 q,來反向逼近目標。
這裡是一個構造從 X 到 Z 的變分分布 q 的例子。我們從數據X出發,通過神經網路變換,其輸出當作Z的後驗分布的參數,比如:高斯分布的均值和方差。同樣的,這種定義也是充分利用了神經網路強大的函數擬合能力。這個網路叫做Q網路。相應的,生成數據的網路稱為P網路。這網路的參數可以一起優化,比如:使用隨機梯度的方法。
把 Q-P 網路放在一起,我們可以構成如下的圖示。它看上去和一個標準的 Auto-Encoder 是類似的結構,差別在於這裡的變數是隨機的,我們要處理的目標是概率分布。正因為這種類似,這種方法被稱為 Auto-Encoding Variational Bayes (AEVB)。
上面是 AEVB 的基本框架,當然,在具體做的時候,還有一些細節,比如:如何計算隨機梯度?如何控制隨機梯度的方差?如何自適應調整步長等等。這裡就不在一一介紹了。
下面還有一點時間,快速看一些具體的例子。
首先,在 AEVB 中,Q-P 網路一般是對稱的,P 怎麼生成的,Q 網路就反過來。但是,實際上非對稱的網路可能更適合。我們知道,用於識別的網路 Q,其主要目的是從底層輸入中逐層抽象,提取高層的特徵表示。但是,在提取過程中,我們會丟失細節信息。所以,到了高層的 Z 之後,再反過來生成 X,實際上細節信息就沒有了,而且沒辦法恢復。一個簡單的解決思路是打破這種對稱結構,讓生產網路具有某種機制,把細節信息記下來,在生成新樣本時,可以使用。
這裡我們做了一個初步嘗試,在生成網路上引入可以學習的記憶(memory)單元,這個 memory 是記細節信息的。在生成具體圖像時,通過一個有選擇性的模型,得到一個稀疏的權重向量,對 memory 中的單元進行加權求和,並且與高層表示結合在一起,就可以生成底層想要的細節信息,基本的結構如下圖所示,多個基本層疊加在一起,可以構造一個深度生成模型。
這個想法很簡單,受到了腦科學的啟發,它的實際效果很顯著。基本上在不增加網路參數的情況下,用 memory 記得信息得到的恢復結果要比不用的好很多,生成質量會更好。
深度生成模型最主要的任務是做樣本生成,從未標註數據中學習。最近,也被用來做半監督學習,其主要目的是利用大量未標註數據,學習更好的分類器。這裡面有兩個問題需要回答,首先,深度生成模型的識別精度如何?其次,如何將未標註和有標註數據很好地融合在一起?我們課題組做了一些探索,發現深度生成模型在適當訓練的情況下,其識別精度可以與判別式神經網路類似,而且產生新樣本的能力沒有受影響,這在一些困難場景下具有優勢,比如:當輸入樣本被污染,或者存在缺失數據時,可以用生成模型對數據進行恢復,其識別性能往往不會受到很大影響;相反,判別式的神經網路是不具備這些能力的,其精度往往惡化嚴重。在識別任務中,深度生成模型也可以利用卷積運算以及池化操作等,處理複雜的圖像。
對於第二個問題,最近也有不少進展,包括我們自己的工作,半監督的深度生成模型在很多任務上都獲得了當前最好的識別精度。更有趣的是,在半監督任務下,我們可以把類別信息和風格(style)信息區分開,生成特定變化的樣本。例如:在生成的時候,可以先給定一個類,通過變化 Style,得到同一個類的不同 Style 的圖像(如 MNIST 字元);也可以通過固定 Style,變化類別得到不同類別的相同 Style 的圖像。因此,可以從兩個維度刻畫生成的樣本。
以上是我想跟大家分享的。我想說的主要觀點是:即使在做深度學習或者大數據時,經典的貝葉斯方法還是非常有用的,而且應該得到大家的重視。現在比較活躍的一個發展方向。從歷史上看,人工智慧的基本原理很大層度上依賴於概率統計。深度學習也會一樣。我相信會有越來越多的工作在這方面深入探索。
最後,我們還做了一個事情,值得和大家分享。我們知道,深度神經網路的快速發展離不開開源平台的貢獻,比如 TensorFlow、Caffe、Theano 等等。這些平台都是支持神經網路的訓練和測試,目前仍然缺乏一個有效的平台,支持貝葉斯深度學習、深度生成模型等。如果每個模型都從底層開始實現,將會是一個非常痛苦的事情。為了降低深度生成模型的使用和開發門檻,我們研發了「珠算」(ZhuSuan)Python 庫,已經在 Github 上開源,歡迎大家試用( https://zhusuan.readthedocs.io)。珠算是基於 TensorFlow 的,充分支持 TensorFlow 中的各種運算,非常好用,實現一個深度生成模型就像一個普通的神經網路一樣方便。
福利來了!
貝葉斯統計距今已經有超過 250 年的歷史,是現代數據科學家運用的眾多工具集中的一種,可以用來解決預測、分類、垃圾郵件檢測、排序、推斷等諸多問題。本次我們為大家準備了 3 本貝葉斯的精選好書!
福利一:留言點贊數前 3 的用戶可以獲得由非同步社區(http://www.epubit.com.cn)贈書 1 本,可從以下 3 本圖書中挑選,活動截止時間為1 月 22 號 18 點。
福利二:我們為大家準備了非同步社區的購書優惠碼,沒有獲得贈書的小夥伴憑藉優惠碼購買這 3 本書,可以享受 75 折的優惠!優惠碼:epubit2018(有效期至 2018-02-28)
《Python貝葉斯分析》
【阿根廷】Osvaldo Martin(奧斯瓦爾多·馬丁)
貝葉斯統計距今已經有超過 250 年的歷史,其間該方法既飽受讚譽又備受輕視。直到近幾十年,得益於理論進步和計算能力的提升,貝葉斯統計才越來越多地受到來自統計學以及其他學科乃至學術圈以外工業界的重視。本書將從實用的角度來學習貝葉斯統計,不會過多地考慮統計學範例及其與貝葉斯統計之間的關係。本書的目的是藉助 Python 做貝葉斯數據分析,儘管與之相關的哲學討論也很有趣,不過受限於篇幅,這部分內容並不在本書的討論範圍之內,有興趣的讀者可以通過其他方式深入了解。無論你是數據科學的新手,還是有經驗的專業人士,都可以從本書學到貝葉斯分析的方法。
《貝葉斯方法:概率編程與貝葉斯推斷》
【加】Cameron Davidson-Pilon
簡介:從 20 世紀 80 年代末到 90 年代,人工智慧領域出現了 3 個最重要的進展:深度神經網路、貝葉斯概率圖模型和統計學習理論。貝葉斯方法是一種常用的推斷方法,是現代數據科學家運用的眾多工具集中的一種,可以用來解決預測、分類、垃圾郵件檢測、排序、推斷等諸多問題。在下一個十年,掌握貝葉斯方法,就像今天掌握 C / C++、Python 一樣重要。提到貝葉斯,就不能不提到這本書。這本書得到了國際著名機器學習專家余凱博士、騰訊專家研究員岳亞丁博士聯合推薦。這本書基於 PyMC 語言以及一系列常用的 Python 數據分析框架,如 NumPy、SciPy 和 Matplotlib,通過概率編程的方式,講解了貝葉斯推斷的原理和實現方法。無需複雜的數學分析,通過實例、從編程的角度介紹貝葉斯分析方法,大多數程序員都可以入門並掌握。
《貝葉斯思維:統計建模的Python學習法》
【美】Allen B.Downey
簡介:在大數據和人工智慧時代,貝葉斯方法正在變得越來越常見與重要。貝葉斯方法是一種常見的利用概率學知識去解決不確定性問題的數學方法,對於一個計算機專業的人士,應當熟悉其應用在諸如機器翻譯,語音識別,垃圾郵件檢測等常見的計算機問題領域。這本書基於 Allen Downey 在大學講授的本科課程,幫助那些希望用數學工具解決實際問題的人們。全書在 15 章的篇幅中討論了怎樣解決十幾個現實生活中的實際問題。本書適合懂得 Python 語言和有一點概率論知識的讀者閱讀。通過學習本書,讀者可以利用 Python 代碼處理實際工作中的貝葉斯統計問題,比如分析 SAT 考試成績,模擬腎臟腫瘤分析等。
關於非同步社區
非同步社區(www.epubit.com.cn)是人民郵電出版社旗下 IT 專業圖書旗艦社區,也是國內領先的 IT 專業圖書社區,致力於優質學習內容的出版和分享,實現了紙書電子書的同步上架。
真正的智能投顧課
從0到1落地,完整的項目操作流程
四大行智能投顧系統一線操盤手
王蓁博士首個線上系列課,全程跟進答疑
————————————————————
搜狐知道精品課推薦:物理精選8節課,秒殺高考提分20分——清華物理學霸【劉傑物理】
聲明:本文由入駐搜狐號作者撰寫,除搜狐官方賬號外,觀點僅代表作者本人,不代表搜狐立場。推薦閱讀:
※基因人源化動物模型
※下圖這隻雞叫什麼,有出處么?
※模型教程:直愣愣的模型
※初玩者拼裝高達模型可以入手哪些工具?
※可能是今年最好的電影玩具——UT禁閉