本書兼顧機器學(xué)習基礎(chǔ)、經(jīng)典方法和深度學(xué)習方法,對組成機器學(xué)習的基礎(chǔ)知識和基本算法進行了比 較細致的介紹,對廣泛應(yīng)用的經(jīng)典算法如線性回歸、邏輯回歸、樸素貝葉斯、支持向量機、決策樹和集成學(xué) 習等算法都給出了深入的分析并討論了無監(jiān)督學(xué)習的基本方法,對深度學(xué)習和強化學(xué)習進行了全面的敘 述,比較深入地討論了反向傳播算法、多層感知機、CNN、RNN 和 LSTM 等深度神經(jīng)網(wǎng)絡(luò)的核心知識和結(jié) 構(gòu);對于強化學(xué)習,不僅介紹了經(jīng)典表格方法,還討論了深度強化學(xué)習。 本書是面向大學(xué)理工科和管理類各專業(yè)的寬口徑、綜合性機器學(xué)習的教材,可供本科生和一年級研究 生課程使用,也可供科技人員、工程師和程序員自學(xué)機器學(xué)習的原理和算法使用。本書對基礎(chǔ)和前沿、經(jīng) 典方法和熱門技術(shù)進行了盡可能的平衡,使得讀者不僅能在機器學(xué)習領(lǐng)域打下一個良好的基礎(chǔ),同時也可 以利用所學(xué)知識解決遇到的實際問題并為進入學(xué)科前沿打好基礎(chǔ)。
本書對機器學(xué)習算法的全面介紹,既包含經(jīng)典機器學(xué)習方法,也包括深度學(xué)習和增強學(xué)習。
前言
機器學(xué)習已經(jīng)成為一種解決諸多問題的有效工具,廣泛應(yīng)用于多學(xué)科交叉領(lǐng)域。本書以理工科本科生和一年級研究生的基礎(chǔ)知識為起點,以面向工程應(yīng)用為目標,適度側(cè)重電子信息專業(yè)學(xué)生,并盡可能滿足其他專業(yè)需求,是一本通用性和專業(yè)性兼顧的機器學(xué)習入門教材。通過學(xué)習本書,讀者可以為掌握機器學(xué)習包括深度學(xué)習的本質(zhì)和算法、解決實際問題及開展與本領(lǐng)域相關(guān)的研究打下基礎(chǔ)。
本書是作者《機器學(xué)習導(dǎo)論》(以下稱《導(dǎo)論》)的姐妹篇,是對《導(dǎo)論》的精簡。但本書不是經(jīng)過簡單刪削的簡化版,而是對內(nèi)容進行了重新梳理和編排,更適合作為一個學(xué)期機器學(xué)習課程的基本教材!秾(dǎo)論》更適合作為對機器學(xué)習課程要求更高并留有一定自學(xué)材料的教材。與《導(dǎo)論》類似,本書在內(nèi)容選擇上盡可能地進行了平衡,既反映機器學(xué)習的基礎(chǔ)知識和經(jīng)典方法,又重視近期非常活躍的深度學(xué)習和強化學(xué)習的內(nèi)容。深度學(xué)習很重要,尤其當前的一些商業(yè)化應(yīng)用(包括計算機視覺、語音識別、自然語言處理、推薦系統(tǒng)、信息檢索等),既有大數(shù)據(jù)支持,又可以通過大規(guī)模計算系統(tǒng)進行訓(xùn)練(學(xué)習),取得了許多重要進展。但并不是所有應(yīng)用都有必要使用深度學(xué)習,許多問題用傳統(tǒng)機器學(xué)習技術(shù)就可以取得很好的結(jié)果,尤其是一些工程中的專門領(lǐng)域,獲取大數(shù)據(jù)集是非常困難的,在這些領(lǐng)域中,經(jīng)典的機器學(xué)習方法可得到更廣泛的應(yīng)用。
全書內(nèi)容共12章,分為3部分。
第一部分涵蓋前5章,包括基礎(chǔ)性介紹和一些需要補充的基礎(chǔ)知識。第1章是機器學(xué)習概述,介紹了機器學(xué)習要解決的基本問題,以及一些基本術(shù)語、基本類型和構(gòu)成模型的基本元素; 第2章是
統(tǒng)計與優(yōu)化基礎(chǔ),介紹了概率和統(tǒng)計基礎(chǔ)、決策論基礎(chǔ)、信息理論入門知識和優(yōu)化原理入門知識,目的是使本書盡可能滿足具有不同背景的讀者需求;第3章和第4章分別介紹了基本回歸算法和基本分類算法,包括線性回歸、線性基函數(shù)回歸、Fisher線性判別分析、感知機、邏輯回歸和樸素貝葉斯方法; 第5章介紹了機器學(xué)習的評估和機器學(xué)習理論的相關(guān)知識。
第二部分由第6~8章組成,介紹了機器學(xué)習的3種重要算法: 支持向量機、決策樹和集成學(xué)習。由于這3類算法較為重要,每類都用一章的篇幅進行專題介紹。
第三部分由最后4章組成,包括深度學(xué)習、無監(jiān)督學(xué)習和強化學(xué)習。關(guān)于神經(jīng)網(wǎng)絡(luò)與深度學(xué)習的專題,用兩章的篇幅做了較深入的討論。第9章是神經(jīng)網(wǎng)絡(luò)的基礎(chǔ),討論了網(wǎng)絡(luò)的結(jié)構(gòu)、表示定理、目標函數(shù)、基本優(yōu)化方法、梯度計算、初始化和正則化等,最重要的是給出了反向傳播算法的詳細介紹; 第10章詳細介紹深度學(xué)習中的兩大類網(wǎng)絡(luò)結(jié)構(gòu): 卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò),分別介紹了其基本結(jié)構(gòu)、擴展結(jié)構(gòu),以及幾個有影響的網(wǎng)絡(luò)結(jié)構(gòu)的例子,給出了殘差網(wǎng)絡(luò)、LSTM、GRU等新結(jié)構(gòu)的介紹,然后介紹了深度網(wǎng)絡(luò)的優(yōu)化技術(shù)、正則化和歸一化。第11章是關(guān)于無監(jiān)督學(xué)習算法的專題,討論了聚類算法、EM算法及主分量分析。第12章介紹了強化學(xué)習原理和算法,首先討論了強化學(xué)習的表格方法,然后介紹了值函數(shù)逼近和策略梯度兩類算法,這兩類算法都可以結(jié)合深度神經(jīng)網(wǎng)絡(luò)構(gòu)成深度強化學(xué)習。
目錄中標記星號的章節(jié)屬于選讀內(nèi)容。
作為一本教材,本書每章都設(shè)置了適量的習題供選用。作者在附錄A中給出了課程的實踐型作業(yè)實例。在作者自己開設(shè)的課程中,每學(xué)期均要求學(xué)生完成若干實踐型作業(yè),作業(yè)一般來自網(wǎng)絡(luò)資源中的實際數(shù)據(jù),需要學(xué)生自己選擇預(yù)處理方法,實踐型作業(yè)的效果非常好。每年的作業(yè)都有變化,為了提供完整的參考性,附錄A給出某年的全部實踐型作業(yè)的原題,僅供使用本書作為教材的老師參考。對于不同的院校、不同的專業(yè),可以有不同的要求,但應(yīng)該至少完成一項實踐型作業(yè)。對于自學(xué)本書的科技人員,可以自行選擇一些題目測試自己的學(xué)習效果。真正掌握好機器學(xué)習既需要較強的數(shù)學(xué)知識,從而理解各種算法; 又需要有較強的實踐能力,編程、調(diào)試完成一些實踐型作業(yè)。本書以原理和算法為主,若讀者需要學(xué)習編程基礎(chǔ),如Python語言,可自行選擇相關(guān)的編程教材或指南,本書附錄A的最后介紹了幾個編程指南的網(wǎng)絡(luò)鏈接。
作為一本綜合性、導(dǎo)論性的機器學(xué)習教材,本書對深度學(xué)習和強化學(xué)習的介紹在深度和廣度上都做了很大的努力,希望讀者在學(xué)習到機器學(xué)習基礎(chǔ)知識的同時,對深度學(xué)習和強化學(xué)習有深入的了解,盡快進入這些領(lǐng)域的前沿。
本書作為一本適合一學(xué)期課程使用的基本教材,參考文獻只列出了教材和專著,《導(dǎo)論》則包含了更多較新的研究論文,考慮篇幅和基本教材的定位,本書沒有再列出這些文獻。
許多同行和研究生對本書的出版做出了貢獻。微軟亞洲研究院的劉鐵巖博士對課程內(nèi)容的設(shè)置提出了寶貴意見,秦濤博士對本書的內(nèi)容給出了若干有價值的建議,清華大學(xué)電子工程系的同事汪玉、王劍、袁堅和沈淵等教授提供了各種幫助,謹表示感謝!作者的學(xué)生王超博士,曾多次作為課程助教,協(xié)助進行課程內(nèi)容的完善和實踐型作業(yè)的設(shè)計,并仔細閱讀了本書的初稿,提出若干修改意見; 助教博士生金月、邱云波幫助繪制了多幅插圖,金月幫助實現(xiàn)了3.3節(jié)的實例,在此一并表示感謝。
盡管做了很大努力,但由于作者水平、時間和精力所限,本書難免有缺點和不足,希望讀者批評指正。
張旭東
2023年3月于清華園
張旭東:清華大學(xué)電子工程系長聘教授,博士生導(dǎo)師,教學(xué)指導(dǎo)委員會主席。主要研究方向為信號處理和機器學(xué)習。先后承擔國家級、省部級和國際合作項目數(shù)十項,在IEEE、IET、ACM等重要刊物和NIPS、AAAI、ICASSP、SIGIR等重要會議上發(fā)表學(xué)術(shù)論文150余篇,出版著作5部。獲得Elsevier最高引用獎(The Most Cited Paper Award)和IET國際雷達年會最優(yōu)論文獎,兩次獲得清華大學(xué)教學(xué)成果一等獎,三次獲得清華大學(xué)優(yōu)秀教材獎。
第一部分基礎(chǔ)知識和基本方法
第1章機器學(xué)習概述
微課視頻 185分鐘
1.1什么是機器學(xué)習
1.2機器學(xué)習的類型
1.2.1基本分類
1.2.2監(jiān)督學(xué)習及其功能分類
1.3構(gòu)建機器學(xué)習系統(tǒng)的基本問題
1.3.1機器學(xué)習的基本元素
1.3.2機器學(xué)習的一些基本概念
1.4從簡單示例理解機器學(xué)習
1.4.1一個簡單的回歸示例
1.4.2一個簡單的分類示例
1.5深度學(xué)習簡介
1.6本章小結(jié)
習題
第2章統(tǒng)計與優(yōu)化基礎(chǔ)
微課視頻 168分鐘
2.1概率論基礎(chǔ)
2.1.1離散隨機變量
2.1.2連續(xù)隨機變量
2.1.3隨機變量的統(tǒng)一表示
2.1.4隨機變量的基本特征
2.1.5隨機特征的蒙特卡洛逼近
2.2概率實例
2.2.1離散隨機變量示例
2.2.2高斯分布
2.2.3指數(shù)族
2.2.4混合高斯過程
2.2.5馬爾可夫過程
2.3最大似然估計
2.4貝葉斯估計
2.5貝葉斯決策
2.5.1機器學(xué)習中的決策
2.5.2分類的決策
2.5.3回歸的決策
2.6隨機變量的熵特征
2.6.1熵的定義和基本性質(zhì)
2.6.2KL散度
2.7非參數(shù)方法
2.8優(yōu)化技術(shù)概述
2.9本章小結(jié)
習題
第3章基本回歸算法
微課視頻 85分鐘
3.1線性回歸
3.1.1基本線性回歸
3.1.2線性回歸的遞推學(xué)習
3.1.3多輸出線性回歸
3.2正則化線性回歸
3.3線性基函數(shù)回歸
3.4本章小結(jié)
習題
第4章基本分類算法
微課視頻 86分鐘
4.1基本分類問題
4.2線性判別函數(shù)模型
4.2.1Fisher線性判別分析
*4.2.2感知機
4.3邏輯回歸
4.3.1二分類問題的邏輯回歸
4.3.2多分類問題的邏輯回歸
4.4樸素貝葉斯方法
4.5高斯生成模型分類器
4.5.1相同協(xié)方差矩陣情況的二分類
4.5.2不同協(xié)方差矩陣情況的二分類
4.5.3多分類情況
4.6本章小結(jié)
習題
第5章機器學(xué)習的性能與評估
5.1模型的訓(xùn)練、驗證與測試
5.2機器學(xué)習模型的性能評估
5.3機器學(xué)習模型的誤差分解
5.4機器學(xué)習模型的泛化性能
5.4.1假設(shè)空間有限時的泛化誤差界
*5.4.2假設(shè)空間無限時的泛化誤差界
5.5本章小結(jié)
習題
第二部分經(jīng)典算法
第6章支持向量機與核函數(shù)方法
微課視頻 90分鐘
6.1線性可分的支持向量機
6.1.1不等式約束的優(yōu)化
6.1.2線性可分情況SVM的原理
6.1.3線性可分情況SVM的優(yōu)化解
6.2線性不可分情況的SVM
6.2.1線性不可分情況SVM的優(yōu)化解
6.2.2合頁損失函數(shù)
6.3非線性支持向量機
6.3.1SVM分類算法小結(jié)
6.3.2核函數(shù)方法
6.4SVM用于多分類問題
*6.5支持向量回歸
6.6本章小結(jié)
習題
第7章決策樹算法
微課視頻 75分鐘
7.1基本決策樹算法
7.1.1決策樹的基本結(jié)構(gòu)
7.1.2信息增益和ID3算法
7.1.3信息增益率和C4.5算法
7.2CART算法
7.2.1分類樹
7.2.2回歸樹
7.3決策樹的一些實際問題
7.3.1連續(xù)數(shù)值變量
7.3.2正則化和剪枝技術(shù)
7.3.3缺失屬性的訓(xùn)練樣本問題
7.4本章小結(jié)
習題
第8章集成學(xué)習算法
微課視頻 60分鐘
8.1Bagging和隨機森林
8.1.1自助采樣和Bagging算法
8.1.2隨機森林算法
8.2提升和AdaBoost算法
8.3提升樹算法
8.3.1加法模型和提升樹
8.3.2梯度提升樹
8.4本章小結(jié)
習題
第三部分進階方法
第9章神經(jīng)網(wǎng)絡(luò)與深度學(xué)習之一: 基礎(chǔ)
微課視頻 90分鐘
9.1神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)
9.1.1神經(jīng)元結(jié)構(gòu)
9.1.2多層神經(jīng)網(wǎng)絡(luò)解決異或問題
9.1.3多層感知機
9.1.4神經(jīng)網(wǎng)絡(luò)的逼近定理
9.2神經(jīng)網(wǎng)絡(luò)的目標函數(shù)和優(yōu)化
9.2.1神經(jīng)網(wǎng)絡(luò)的目標函數(shù)
9.2.2神經(jīng)網(wǎng)絡(luò)的優(yōu)化
9.3誤差反向傳播算法
9.3.1反向傳播算法的推導(dǎo)
9.3.2反向傳播算法的向量形式
9.4神經(jīng)網(wǎng)絡(luò)學(xué)習中的一些問題
9.4.1初始化
9.4.2正則化
9.4.3幾類等價正則化技術(shù)
9.5本章小結(jié)
習題
第10章神經(jīng)網(wǎng)絡(luò)與深度學(xué)習之二: 結(jié)構(gòu)與優(yōu)化
微課視頻 180分鐘
10.1卷積神經(jīng)網(wǎng)絡(luò)
10.1.1基本CNN的結(jié)構(gòu)
*10.1.2卷積的一些擴展結(jié)構(gòu)
*10.1.3CNN示例介紹
10.2循環(huán)神經(jīng)網(wǎng)絡(luò)
10.2.1基本RNN
10.2.2RNN的計算流程
*10.2.3RNN的擴展BP算法
10.2.4深度RNN
*10.2.5長短期記憶模型
*10.2.6門控循環(huán)單元
10.3深度學(xué)習中的優(yōu)化算法
10.3.1小批量SGD算法
10.3.2動量SGD算法
10.3.3自適應(yīng)學(xué)習率算法
10.4深度學(xué)習訓(xùn)練的正則化技術(shù)
10.4.1Dropout技術(shù)
10.4.2批歸一化
10.5本章小結(jié)
習題
第11章無監(jiān)督學(xué)習算法
微課視頻 85分鐘
11.1聚類算法
11.1.1K均值聚類算法
11.1.2其他度量和聚類算法
11.2EM算法
11.2.1獨立同分布情況
*11.2.2通過KL散度對EM算法的解釋
11.3EM算法求解高斯混合模型參數(shù)
11.3.1GMM參數(shù)估計
11.3.2GMM的軟聚類
11.4主分量分析
11.4.1主分量分析原理
11.4.2廣義Hebb算法
11.5本章小結(jié)
習題
第12章強化學(xué)習
微課視頻 160分鐘
12.1強化學(xué)習的基本問題
12.2馬爾可夫決策過程
12.2.1MDP的定義
12.2.2貝爾曼方程
12.2.3最優(yōu)策略
12.2.4強化學(xué)習的類型
12.2.5探索與利用
12.3動態(tài)規(guī)劃
12.3.1策略迭代方法
12.3.2值函數(shù)迭代方法
12.4強化學(xué)習的蒙特卡洛方法
12.4.1MC部分策略評估
12.4.2MC策略改進
12.5強化學(xué)習的時序差分方法
12.5.1基本時序差分學(xué)習和Sarsa算法
12.5.2Q學(xué)習
12.5.3DP、MC和TD算法的簡單比較
12.6強化學(xué)習的值函數(shù)逼近
12.6.1基本線性值函數(shù)逼近
12.6.2深度Q網(wǎng)絡(luò)
12.7策略梯度方法
12.7.1MC策略梯度算法Reinforce
12.7.2行動器評判器方法
*12.8多臂賭博機
12.9本章小結(jié)
習題
參考文獻
附錄A課程的實踐型作業(yè)實例
A.1第1次實踐作業(yè)
A.2第2次實踐作業(yè)
A.3第3次實踐作業(yè)
附錄B函數(shù)對向量和矩陣的求導(dǎo)
視 頻 名 稱時長/分鐘位置
ML01導(dǎo)論1651.1節(jié)節(jié)首
ML02導(dǎo)論2601.3節(jié)節(jié)首
ML03導(dǎo)論3601.4節(jié)節(jié)首
ML04統(tǒng)計基礎(chǔ)1702.1節(jié)節(jié)首
ML05統(tǒng)計基礎(chǔ)2402.5節(jié)節(jié)首
ML06統(tǒng)計基礎(chǔ)3582.6節(jié)節(jié)首
ML07回歸學(xué)習853.1節(jié)節(jié)首
ML08分類學(xué)習1504.1節(jié)節(jié)首
ML09分類學(xué)習2364.4節(jié)節(jié)首
ML10核與SVM906.1節(jié)節(jié)首
ML11決策樹757.1節(jié)節(jié)首
ML12集成學(xué)習608.1節(jié)節(jié)首
ML13神經(jīng)網(wǎng)絡(luò)909.1節(jié)節(jié)首
ML14深度學(xué)習18010.1節(jié)節(jié)首
ML15深度學(xué)習24410.2節(jié)節(jié)首
ML16深度學(xué)習35610.3節(jié)節(jié)首
ML17無監(jiān)督學(xué)習16511.1節(jié)節(jié)首
ML18無監(jiān)督學(xué)習22011.4節(jié)節(jié)首
ML19強化學(xué)習19012.1節(jié)節(jié)首
ML20強化學(xué)習27012.3節(jié)節(jié)首