單元)
簡介《模式識別和機器學習》中文版俗稱「花書」是機器學習領域的經(jīng)典教材由Chris Bishop撰寫面向具備高等數(shù)學與概率統(tǒng)計基礎的初學者、研究生及科研人員幫助讀者跨越英文閱讀門檻系統(tǒng)掌握機器學習的主流理論。這本PDF深入淺出地講解了多項式曲線擬合、概率密度、期望與協(xié)方差、貝葉斯概率與曲線擬合、高斯分布、模型選擇、維度災難、決策論、信息論等核心主題各章配有公式推導、示例和練習目錄結(jié)構完整既適合從頭通讀也方便按章節(jié)查閱。資源為單個PDF文件大小11.56MB內(nèi)含完整中文譯本目前已有349人學習下載。從前兩章內(nèi)容看章節(jié)從緒論中的曲線擬合與貝葉斯視角延伸到概率分布中的高斯推斷、學生t分布、混合高斯模型等進階內(nèi)容讀者可借此快速搭建機器學習的概率理論框架深入理解貝葉斯方法、模型選擇與信息論等關鍵概念為后續(xù)算法學習與科研打下堅實基礎。1. PRML 中文版值得讀嗎先看清這份資源的邊界與用法做機器學習到一定階段都會碰到同一個坎模型調(diào)得動公式推不動。PRML 全稱 Pattern Recognition and Machine Learning是模式識別與機器學習領域公認的經(jīng)典教材這份中文翻譯版把原版核心章節(jié)按原文結(jié)構完整保留了下來從多項式曲線擬合一路推到混合模型和 EM中間覆蓋概率論、線性模型、神經(jīng)網(wǎng)絡、核方法、圖模型這些主線。它的價值不在「教你調(diào)包」而在于把算法為什么這樣設計講透尤其適合已經(jīng)會用 scikit-learn、但一讀論文就被貝葉斯公式勸退的從業(yè)者。需要先說清一個邊界民間常把這本書也叫「花書」但它和另一本封面上印著花的深度學習教材不是同一本別下錯資源。這本書寫于深度學習爆發(fā)之前不覆蓋 Transformer、Attention但核方法、高斯過程、圖模型、EM 這些內(nèi)容至今沒有過時反而是現(xiàn)在很多論文里繞不開的數(shù)學底座。中文版對英文閱讀有壓力的人是剛需不過翻譯版本流傳多年個別術語需要對照原文理解這個坑后面第五章會專門展開。2. 從目錄反推學習路線四條主線把全書串起來這本書不適合從頭到尾線性讀。原版正文加練習接近 800 頁中文版目錄也保留了完整的章節(jié)結(jié)構如果抱著「逐頁翻完」的心態(tài)大概率在第二章高斯分布那里就擱置了。我一般建議拿到這份資源之后先干一件事不看正文只看目錄把章節(jié)按依賴關系重新分組。書里的章節(jié)順序是按照知識邏輯排的但人的學習路徑可以跳著走。2.1 主線一概率語言與貝葉斯視角第一、二章第一條主線是全書的地基也是最勸退的部分。第一章從多項式曲線擬合開篇用一個小例子把誤差函數(shù)、過擬合、正則化、模型選擇、概率視角全部串起來1.2 節(jié)的概率論和貝葉斯定理看起來是復習實際上是后面所有推導的公共語言。如果你讀完第一章只覺得「哦曲線擬合我懂了」那說明還沒抓到重點——重點是 1.2.3 貝葉斯概率和 1.2.4 高斯分布這兩個小節(jié)在后文出現(xiàn)頻率極高。第二章是整本書最「硬」的章節(jié)幾乎沒有一處可以快進。2.1 二元變量和二項分布還算友好2.2 多項式變量引入狄利克雷分布也還能跟住真正的分水嶺是 2.3 高斯分布。條件高斯分布、邊緣高斯分布、高斯變量的貝葉斯定理、最大似然估計、貝葉斯推斷、學生 t 分布、混合高斯模型這一小節(jié)的內(nèi)容幾乎是后面第三、四、六、九章的公共依賴。我個人的建議是第二章的 2.3 必須精讀2.4 指數(shù)族分布可以先混個臉熟2.5 非參數(shù)方法也可以留到以后再看不影響主線推進。主線覆蓋章節(jié)必讀小節(jié)優(yōu)先級概率與貝葉斯第一、二章1.1、1.2、1.3、2.3高線性模型第三、四章3.1、3.2、4.2、4.3高神經(jīng)網(wǎng)絡與核方法第五、六、七章5.1、5.3、6.1、6.4中圖模型與 EM第八、九章8.1、8.2、9.1、9.2中2.2 主線二線性模型從回歸到分類第三、四章第三條主線是線性模型這部分是實際工作中最常打交道的算法族。第三章回歸的線性模型里3.1 節(jié)最大似然與最小平方的等價性是個值得停下來推導的結(jié)論——它告訴你平時用的最小二乘其實是在高斯噪聲假設下的最大似然解這對理解損失函數(shù)的設計動機很關鍵。3.2 偏置-方差分解解釋了為什么模型不能太復雜也不能太簡單3.3 貝葉斯線性回歸則把第一、二章的概率語言落到回歸問題上。第四章分類的線性模型重點看 4.2 概率生成式模型和 4.3 概率判別式模型的對比。生成式模型先建模類條件概率再算后驗判別式模型直接建模后驗這個區(qū)別在面試里經(jīng)常被問到也是理解 logistic 回歸本質(zhì)的入口。4.1 里的感知器算法現(xiàn)在用得少但「線性可分時感知器必然收斂」這個結(jié)論值得記住它和第七章支持向量機的最大邊緣思想是接續(xù)的。4.3.3 迭代重加權最小平方法IRLS建議慢讀一遍這是后面拉普拉斯近似的基礎。2.3 主線三神經(jīng)網(wǎng)絡與核方法的兩條升級路徑第五、六、七章第三條主線分兩條路徑一條從神經(jīng)網(wǎng)絡走一條從核方法走。第五章神經(jīng)網(wǎng)絡寫于二十多年前但骨架完全沒變前饋網(wǎng)絡、誤差反向傳播、正則化、早停、卷積神經(jīng)網(wǎng)絡的雛形都在。讀這一章時最好和一個現(xiàn)代框架的自動求導對照著看你會發(fā)現(xiàn)反向傳播本質(zhì)就是鏈式法則的工程化。5.5.6 卷積神經(jīng)網(wǎng)絡只有一小節(jié)篇幅很短不需要深究知道「共享權值 局部連接」是當年的核心思想就夠了。第六章核方法和第七章稀疏核機是另一條路徑。6.1 對偶表示是個數(shù)學上的巧妙轉(zhuǎn)換把線性模型從「特征的線性組合」變成「訓練樣本的線性組合」計算復雜度從特征維度轉(zhuǎn)移到樣本數(shù)量這就是核技巧的起點。6.4 高斯過程是貝葉斯線性回歸的等價視角今天的超參數(shù)優(yōu)化、貝葉斯優(yōu)化里大量使用值得作為精讀對象。第七章支持向量機部分現(xiàn)在基本靠庫實現(xiàn)但「最大邊緣」的幾何直覺仍然值得從 7.1 里獲得相關向量機RVM只需要知道它和 SVM 的定位差異即可。2.4 主線四圖模型與 EM 把結(jié)構畫出來第八、九章第四條主線是圖模型和 EM這是全書中抽象程度最高、也最接近現(xiàn)代概率編程思想的部分。第八章貝葉斯網(wǎng)絡和馬爾科夫隨機場核心不是公式而是把變量之間的條件依賴關系畫成圖。我自己的體會是先學會看圖說話再回頭理解 d-劃分和條件獨立難度會降一半。8.4 節(jié)的加和-乘積算法是圖模型推斷的核心建議配合一個簡單的鏈狀圖手工推一遍不要只盯符號看。第九章混合模型和 EM 是很多人口中的「勸退章」但它其實不難難在沒找到抓手。9.1 K 均值聚類是最簡單的硬分配 EM9.2 混合高斯是軟分配版本9.3 才是 EM 的一般形式。按這個順序讀E 步和 M 步就不難理解了E 步是補全隱變量的期望M 步是在補全后的完整數(shù)據(jù)上最大化似然。這一章讀完后很多遺留問題就解開了比如為什么某些模型迭代時損失會先降后升、為什么聚類對初始值敏感。3. 先跑通最小復現(xiàn)單元多項式擬合的推導與驗證拿到這本中文版資源我最不建議的用法是「從頭開始背公式」。我自己習慣的做法是每一章挑一個最小可復現(xiàn)的例子用代碼把書里的結(jié)論重新驗證一遍。整個書里最小的復現(xiàn)單元就是第一章那個多項式曲線擬合它把誤差函數(shù)、過擬合、正則化全部濃縮在一個一維回歸問題里十分鐘就能跑完。3.1 為什么多項式擬合是全書最小復現(xiàn)單元多項式擬合的目標函數(shù)很簡單用 sin(2πx) 生成一組帶噪聲的樣本然后用 M 階多項式去擬合。問題看似平凡但當你改變 M 的值時模型行為會發(fā)生幾個明顯的階段變化M 太小欠擬合M 適中擬合良好M 太大則精確穿過所有樣本點卻在區(qū)間外劇烈振蕩。這幾個階段對應著機器學習最核心的張力——模型容量與泛化能力之間的權衡。書里用這個例子引出誤差函數(shù)、正則化、概率視角和貝葉斯曲線擬合一整章的邏輯閉環(huán)都掛在這一個例子上。所以我建議拿到資源后先別急著往下翻花半小時把這個例子在本地跑通一次。這比通讀十頁公式有用得多。3.2 設計矩陣與閉式解的驗證步驟驗證過程分三步先構造帶噪聲的訓練樣本再設計多項式基函數(shù)構成設計矩陣最后用閉式解求出權向量。下面是一段可以直接運行的 numpy 實現(xiàn)M 是多項式階數(shù)N 是樣本數(shù)量。import numpy as np # 生成 10 個帶噪聲的訓練樣本目標函數(shù)是 sin(2*pi*x) rng np.random.default_rng(0) N 10 x np.linspace(0, 1, N) t np.sin(2 * np.pi * x) 0.3 * rng.standard_normal(N) def design_matrix(x, M): # 每一行是 [1, x, x^2, ..., x^M]M 是多項式階數(shù) return np.vander(x, M 1, increasingTrue) def fit_polynomial(x, t, M): Phi design_matrix(x, M) # 閉式解 w (Phi^T Phi)^-1 Phi^T t用 solve 避免顯式求逆 w np.linalg.solve(Phi.T Phi, Phi.T t) return w for M in [0, 1, 3, 9]: w fit_polynomial(x, t, M) print(fM{M}, w{np.round(w, 3)})這段代碼里np.vander構造的是范德蒙矩陣increasingTrue讓列按升冪排列這樣第 j 列正好對應 x^j。np.linalg.solve直接解線性方程組比手寫inv(Phi.T Phi) Phi.T t數(shù)值上更穩(wěn)在 M 偏大時能少踩一些矩陣病態(tài)的坑。M9 時10 個樣本配 10 個參數(shù)模型會精確穿過每個數(shù)據(jù)點但相鄰點之間的曲線會劇烈起伏——這就是過擬合的典型面貌。3.3 訓練誤差與測試誤差的配合觀察只看擬合曲線還不夠更有效的驗證是同時觀察訓練誤差和測試誤差。做法是額外生成一組無噪聲的密集測試樣本分別計算各 M 值下的均方根誤差畫成兩條曲線對比。訓練誤差會隨 M 增大單調(diào)下降而測試誤差通常呈 U 形先降后升。測試誤差最低點對應的 M就是平衡點。多項式階數(shù) M訓練誤差測試誤差模型行為0很高很高欠擬合近似一條水平線1中中欠擬合只能捕捉線性趨勢3低低擬合良好接近真實目標函數(shù)9幾乎為 0很高過擬合震蕩劇烈這個觀察結(jié)果直接對應第一章 1.3 節(jié)模型選擇的動機模型復雜度是一個需要顯式控制的量不能單看訓練集表現(xiàn)。順著這個例子再往深處想維度災難的直覺也在這里埋下了伏筆——特征維度增加時參數(shù)空間體積以指數(shù)級膨脹需要的數(shù)據(jù)量也隨之暴漲這就是 1.4 節(jié)的核心。3.4 正則化項的引入與參數(shù)選擇過擬合出現(xiàn)后書里順勢引入正則化項把誤差函數(shù)改成平方誤差加 λ 倍的權向量范數(shù)平方。固定 M9然后在一組對數(shù)刻度上掃描 λ你會看到一個很有意思的現(xiàn)象λ 從 0 增大時擬合曲線逐漸從劇烈振蕩變回平滑權向量 w 的幅值大幅收縮但 λ 大到一定程度曲線又退化成近似直線變成欠擬合。λ 的選擇通常用交叉驗證確定常見做法是在 10^-6 到 10^2 之間按對數(shù)間隔掃一輪選驗證集誤差最小的那個點。這個正則化項不是拍腦袋加的它對應著第三章 3.3 貝葉斯線性回歸里高斯先驗的精度參數(shù)。換句話說正則化在頻率視角下是「懲罰大權值」在貝葉斯視角下是「給權值一個先驗分布」兩種說法最終落到同一個公式。建議跑完代碼后再回去讀 1.2.5 和 1.2.6 這兩節(jié)你會理解書里為什么反復強調(diào)「從概率角度看曲線擬合」——因為這個例子從頭到尾都在為貝葉斯方法做鋪墊。4. 進階章節(jié)的讀法核方法、圖模型與 EM 的取舍現(xiàn)代從業(yè)者讀這本書最常問的問題是里邊的數(shù)學要推到什么程度我的判斷是分三檔工作中正在用的算法要能獨立推導核心公式只用庫的算法可以只保留幾何直覺純理論擴展可以瀏覽結(jié)論。用這個標準去切中間幾章會省下大量時間。4.1 模型選擇與維度災難什么時候該停下來第一章里模型選擇這節(jié)書里同時給了交叉驗證和貝葉斯模型比較兩種思路。交叉驗證是頻率視角下的實用主義方案——把數(shù)據(jù)切幾份循環(huán)做訓練和驗證選泛化誤差最小的模型貝葉斯模型比較則要給每個模型算邊緣似然計算成本高而且對先驗選擇敏感。我的建議是實踐里用好交叉驗證和信息準則就夠了貝葉斯模型比較能看懂思想即可不必死磕邊緣似然的歸一化系數(shù)推導。維度災難要關注的不是高維空間本身而是「高維讓數(shù)據(jù)變稀疏」帶來的連鎖反應密度估計需要海量樣本、距離度量失真、K 近鄰在高維幾乎失去意義。書里給的解決方向同樣值得記降維、流形假設、核技巧本質(zhì)都是在對抗維度災難這條線索會一直貫穿到第八、九章。4.2 核方法與高斯過程要不要手推第六章核方法經(jīng)常被高估難度其實核心就三個點對偶表示解決的是「參數(shù)數(shù)量隨樣本數(shù)量增長」的計算問題核函數(shù)隱式定義了特征空間的相似度高斯過程把核從「相似度函數(shù)」升級成「協(xié)方差函數(shù)」。其中高斯過程值得認真對待因為它在現(xiàn)代機器學習里仍然活躍——超參數(shù)優(yōu)化、貝葉斯優(yōu)化、少量樣本回歸任務里經(jīng)常用它做代理模型。讀 6.4 高斯過程時我的建議是把它和第三章貝葉斯線性回歸放在一起對照貝葉斯線性回歸是先固定基函數(shù)再推斷參數(shù)高斯過程是直接用核定義函數(shù)分布。兩者在數(shù)學上殊途同歸但高斯過程繞開了「基函數(shù)怎么選」這個老大難問題。4.2 這一節(jié)跳過 6.3 的 Nadaraya-Watson 模型細節(jié)也問題不大重點抓住 6.1 對偶表示的推導邏輯以及 6.4 里超參數(shù)優(yōu)化的目標函數(shù)長什么樣。4.3 圖模型與 EM畫圖優(yōu)先于寫公式讀第八章圖模型有一個很實用的技巧遇到一段概率公式先別急著展開把它對應的圖結(jié)構畫在紙上觀察哪些變量之間有邊、哪些沒有邊。條件獨立性質(zhì)、d-劃分這些抽象概念一旦落到圖上就變得非常直觀。8.4 節(jié)的加和-乘積算法可以用一個簡單的鏈狀圖手推一遍算完你就會明白「消息傳遞」這個詞從哪來。EM 算法放到第九章章節(jié)標題是混合模型和 EM但實際可以拆成三段K 均值是最直觀的硬聚類混合高斯把 K 均值的硬分配換成軟分配每個點分屬于多個簇是有概率權重的一般形式的 EM 才把方法論抽象出來。讀的時候只需要盯住一個問題E 步是在補全隱變量的期望M 步是在補全后的完整數(shù)據(jù)上做最大似然估計。這個循環(huán)每迭代一次似然函數(shù)只會上升不會下降理解了這個單調(diào)性保證很多工程上的調(diào)試直覺就通了。章節(jié)主題必讀內(nèi)容可以先跳過核方法6.1 對偶表示、6.4 高斯過程6.3 RBF 網(wǎng)絡細節(jié)稀疏核機7.1 最大邊緣思想7.2 RVM 稀疏性分析圖模型8.1 貝葉斯網(wǎng)絡、8.2 d-劃分8.4.6 一般圖精確推斷EM9.1 到 9.3 的順序推導9.3 之后的擴展應用5. 避坑讀中文版 PRML 的五個常見問題這本書的中文翻譯版解決了不少人的英文閱讀問題但實際讀起來依然有幾個高頻坑。以下問題都是我自己和身邊同行對照教材踩過的按「現(xiàn)象 → 原因 → 解決」逐條拆開能幫你省下不少自查時間。5.1 數(shù)學符號體系和框架文檔對不上現(xiàn)象讀第三章回歸時看到 w、Φ、E(w) 這些符號覺得很抽象翻譯成代碼或者讀框架源碼時不知道怎么對應。原因這本書使用的記號是傳統(tǒng)統(tǒng)計學語法比如用 Φ 表示基函數(shù)矩陣用 E(w) 表示誤差函數(shù)和現(xiàn)在 PyTorch 里的nn.Parameter、loss_fn完全不是一個命名體系。符號是歷史的不代表理論是舊的。解決拿到書之后第一遍先花十分鐘建一張自己的符號對照表把書里的符號對應到 numpy 變量或 PyTorch 張量上。比如 w 對應weightΦ 對應design_matrixE(w) 對應loss。做到「看到一個符號腦子里立刻浮現(xiàn)出數(shù)組形狀」后面推導就不會被符號繞暈。5.2 中文術語與主流教材的譯法不一致現(xiàn)象書里某個術語的譯法和你在網(wǎng)上看到的文章說法對不上查資料時產(chǎn)生混淆。比如判別式模型、生成式模型在部分章節(jié)的譯名表述和現(xiàn)在中文技術社區(qū)的習慣叫法存在差異likelihood 這個詞在不同版本里可能被譯為「似然性」或「似然」英文原詞是同一個。原因中文翻譯版流傳時間較長早期翻譯的術語體系還沒有完全和后來社區(qū)的主流譯法統(tǒng)一。翻譯本身沒有問題只是存在版本差異。解決讀的時候手邊開一個英文原版目錄或術語索引遇到不確定的中文詞先翻英文原詞再繼續(xù)。特別是貝葉斯相關章節(jié)建議直接記住英文術語中文翻譯只作為輔助理解。5.3 跳過概率章節(jié)直接讀線性模型現(xiàn)象覺得自己概率論學過直接從第三章開始讀結(jié)果貝葉斯線性回歸那里完全跟不上證據(jù)近似那節(jié)更是天書。原因第三章 3.3 貝葉斯線性回歸默認你已經(jīng)掌握了第一章的貝葉斯概率、高斯分布、第三章前面的最大似然估計。概率論的「學過」和這本書要求的「能推導」不是一個量級尤其是條件高斯和邊緣高斯那幾小節(jié)是后面幾乎所有推導的公共依賴。解決至少把 1.2 節(jié)和 2.3 節(jié)過一遍不求所有習題做完但要求能自己寫出「給定均值方差的高斯分布表達式」和「貝葉斯定理的后驗形式」。這兩個公式熟到能默寫再進行到第三章。5.4 把「花書」當成深度學習新書現(xiàn)象沖著「花書」這個名字、沖著現(xiàn)代深度學習的名頭下載打開一看發(fā)現(xiàn)沒有 Transformer 沒有注意力機制覺得資源過時了。原因民間俗稱撞名。PRML 這本「花書」出版年份很早它的定位是機器學習經(jīng)典教材不是深度學習前沿讀物。它的內(nèi)容覆蓋概率模型、圖模型、核方法這些「傳統(tǒng)但有用」的方向而另一本深度學習教材才是以神經(jīng)網(wǎng)絡為主的花書。解決下載前先對照目錄確認內(nèi)容。如果目標是 Transformer、大模型這份資源確實不是首選如果目標是補概率圖模型、貝葉斯推斷、EM 的數(shù)學底子它就是合適的。兩本花書包里的東西完全不同看目錄即可。5.5 只看推導不做習題現(xiàn)象讀的時候覺得自己全看懂了公式都能順下來但合上書一周后回憶發(fā)現(xiàn)腦子里只剩幾個名詞。原因看推導是輸入型學習大腦會把「眼睛看過」誤判為「自己會推」。書里練習題的難度設定很講究每一道題都對應正文里一個重要推導不做題就把最有效的記憶鞏固環(huán)節(jié)跳過了。解決每章挑兩三道練習題不要求全做完。做法是先把公式用筆推一遍再拿 numpy 寫一小段代碼驗證數(shù)值正確性。第五章會有具體示例這個「習題當測試用例」的習慣一旦養(yǎng)成讀這類數(shù)學書的效果會翻倍。6. 一個鞏固公式的小技巧把習題當測試用例這套方法聽起來簡單執(zhí)行起來需要一點紀律。我的習慣是每讀完一章挑兩三個習題不直接算而是先去習題所在的正文小節(jié)里找它對應的公式然后開一個 Jupyter notebook把公式翻譯成 numpy 運算。比如第一章練習 1.1 問的是正則化最小二乘的權向量形式它和第三章 3.1 里的閉式解本質(zhì)上是同一個公式區(qū)別只在于誤差函數(shù)里多了一項 λ 乘權向量內(nèi)積。用代碼驗證時關鍵點是檢查矩陣形狀和維度是否對齊。閉式解里如果設計矩陣 Φ 的形狀是 N×(M1)那么 Φ?Φ 一定是 (M1)×(M1)Φ?t 一定是 (M1)×1解出來的 w 也是一樣。每次驗證時先在代碼里打印出各矩陣的形狀再對結(jié)果做數(shù)值斷言這比靠眼睛判斷可靠得多。# 習題式驗證檢查設計矩陣和閉式解的維度是否對齊 Phi design_matrix(x, 9) # 形狀應為 (N, 10) w np.linalg.solve(Phi.T Phi, Phi.T t) assert Phi.shape (N, 10) assert w.shape (10,)為什么這樣做有效因為做題時手算能容忍小幅失誤但代碼不會——寫錯一個下標就報錯一個減號漏掉擬合曲線就崩。當公式翻譯成可運行代碼并通過斷言的那一刻才是真正把書里的推導變成了自己的直覺。我第一次讀這本書時翻車得很徹底就是在習題上卡了兩天才發(fā)現(xiàn)是矩陣維度寫錯從那以后我每次讀完一節(jié)都強制自己把核心公式用 numpy 重寫一遍順手補上形狀斷言。順序是先推筆頭再跑代碼最后回看書里那句話。希望幫到你也祝這份資源能真正變成你案頭常翻的工具書。本文還有配套的精品資源點擊獲取