本書是關于在MATLAB中使用實例進行機器學習的綜合指南。書中概述了人工智能與自動控制的歷史;回顧了用于機器學習的商用軟件包,并展示了它們如何應用于該領域;接著展示了如何使用MATLAB來解決機器學習問題,以及如何利用MATLAB圖形技術來增強程序員對機器學習結果的理解。
本書隨書提供了機器學習中若干重要問題的MATLAB完整解決方案,包括飛機控制、人臉識別、自動駕駛。書中所有的示例和應用程序都提供了完整的源代碼。
機器學習包含大量的數學概念與理論。書中以清晰簡潔的方式介紹了其中每個領域的數學知識,即使是并不經常接觸數學理論的讀者也可以輕松理解。工程領域的讀者會看到這些數學知識與他們已經了解的領域技術之間的密切聯系,并將學習到新的技術。
本書主要內容:
?機器學習領域的知識概述
?如何使用MATLAB進行編程和構建機器學習應用程序
?用于機器學習的MATLAB圖形技術
?面向實際機器學習問題的MATLAB應用案例
1.《MATLAB與機器學習》以MATLAB為編程語言,從機器學習基本知識到工程實踐,由淺入深,分析包括自動駕駛、飛機智能控制等工程應用問題并給出解決方案,該書的寫作得到Mathworks公司官方圖書計劃的支持并收錄其中。
2.本書適合具有MATLAB使用基礎的大專院校工程專業學生、研究者和從業工程師,學習機器學習在工程方面的應用,理解在真實場景中將算法如何應用與工程實踐。
3.本書提供所有示例的源代碼下載:https://www.apress.com/us/book/9781484222492,讀者可在MATLAB中文社區論壇:http://www.ilovematlab.cn/forum-265-1.html與譯者互動交流。
PREFACE前言機器學習正在眾多學科中變得愈加重要,它應用于工程領域中的自動駕駛汽車技術和金融領域中的股市預測,而醫療專業人員則使用它來輔助診斷。雖然許多優秀的機器學習軟件包可以通過商業購買和開源軟件渠道獲得,但深入理解其中隱藏的算法原理仍然是很有價值的。進而,自己動手編程來實現算法則會更加受益匪淺,因為這樣不僅能夠深入了解商業和開源軟件包中的算法實現方法,還能掌握足夠的背景知識來編寫定制化的機器學習軟件以實現特定的應用需求。
MATLAB的起源正是基于這樣的目的。最初,科學家們使用FORTRAN語言編寫數值軟件來進行矩陣運算。當時,用戶必須通過“編寫-編譯-鏈接-執行”的過程來使用計算機程序,整個過程非常耗時,且極易出錯。MATLAB則為用戶提供了一種腳本語言,用戶只須編寫很少的幾行代碼,立即執行,便可以解決許多問題。MATLAB的內置可視化工具可以進一步幫助用戶更好地理解計算結果。編寫MATLAB程序比編寫FORTRAN程序更為高效和充滿樂趣。
本書旨在幫助用戶利用MATLAB解決一系列寬泛的學習問題。本書包含兩部分:第一部分包括第1~3章,介紹機器學習的背景知識,其中包括學習控制,其內容通常與機器智能并不緊密相關,在書中我們采用“自主學習”一詞涵蓋所有這些學科。本書第二部分包括第4~12章,展示了完整的MATLAB機器學習應用示例。第4~6章針對性地介紹了MATLAB的相關功能,使得機器學習算法非常易于實現。其余章節則給出了應用示例。每一章都提供了特定主題的技術背景和如何實現學習算法的思路。每個示例都由一系列MATLAB函數支持的MATLAB腳本來實現。
本書適用于信息領域中對機器學習感興趣的技術人員和開發者,也適用于其他技術領域中對如何利用機器學習和MATLAB來解決專業領域問題感興趣的技術人員。
作者:Michael Paluszek先生現任美國普林斯頓衛星系統公司總裁,具有超過30年航空航天技術咨詢服務經驗,曾在通用電氣公司(GE)宇航部門工作,參與并領導過多個美國軍方和民用項目。開發過多個MATLAB工具箱和軟件包,應用于衛星、飛行器、潛艇、機器人和核聚變推進等系統。Paluszek先生獲得了麻省理工學院的電氣工程學士學位、航空航天學碩士和工程學位。他發表了很多論文,擁有十多項美國專利。
作者:Stephanie Thomas女士是位于美國普林斯頓衛星系統公司的副總裁。她擁有麻省理工學院獲得航空航天學士學位和碩士學位。Thomas女士在近20年的MATLAB實踐經歷中,她開發了許多MATLAB軟件工具,包括用于航天器控制工具箱的太陽能帆板模塊、美國空軍的近地軌道衛星操控工具、運載火箭分析工具等等。她還為來自澳大利亞、加拿大、巴西和泰國等不同國家的工程師進行了航天器控制工具箱培訓,并為美國太空總署(NASA)、美國空軍和歐洲航天局等提供MATLAB咨詢服務。2016年,Thomas女士因“核聚動力冥王星軌道探測器和登陸器”入選美國太空總署創新資助項目,被任命為美國太空總署NIAC研究員。
譯者:李三平,美國麻省大學計算機工程專業博士,現為DELLEMC中國研究院首席研究員,研究方向主要為深度學習模型與服務框架,云架構的預測分析與智能運維等。已在IEEE Transactions期刊和會議上發表論文數十篇,申請美國專利20余項。
譯者:陳建平,MathWorks中國資深技術專家,專注于工程大數據分析和高性能計算領域。擁有北京大學學士和碩士學位,并于2008年加入MathWorks公司,之前在NTT DoCoMo從事通信算法的研究工作。擁有十余年并行數值算法設計、實現,以及對大規模工程數據分析和建模的經驗。
第一部分 機器學習概論
第1章 機器學習概述
1.1 引言
1.2 機器學習基礎
1.2.1 數據
1.2.2 模型
1.2.3 訓練
1.3 學習機
1.4 機器學習分類
1.5 自主學習方法
1.5.1 回歸
1.5.2 神經網絡
1.5.3 支持向量機
1.5.4 決策樹
1.5.5 專家系統
第2章 自主學習的歷史
2.1引言
2.2 人工智能
2.3 學習控制
2.4 機器學習
2.5 未來
第3章 機器學習軟件
3.1 自主學習軟件
3.2 商業化MATLAB軟件
3.2.1 MathWorks公司產品
3.2.2 普林斯頓衛星系統產品
3.3 MATLAB開源資源
3.3.1 深度學習工具箱
3.3.2 深度神經網絡
3.3.3 MatConvNet
3.4 機器學習工具
3.4.1 R語言
3.4.2 Scikit learn
3.4.3 LIBSVM
3.5 優化工具
3.5.1 LOQO
3.5.2 SNOPT
3.5.3 GLPK
3.5.4 CVX
3.5.5 SeDuMi
3.5.6 YALMIP
第二部分 機器學習的MATLAB實現
第4章 用于機器學習的MATLAB數據類型
4.1 MATLAB數據類型概述
4.1.1 矩陣
4.1.2 元胞數組
4.1.3 數據結構
4.1.4 數值類型
4.1.5 圖像
4.1.6 數據存儲
4.1.7 Tall數組
4.1.8 稀疏矩陣
4.1.9 表與分類數組
4.1.10 大型MAT文件
4.2 使用參數初始化數據結構
4.2.1 問題
4.2.2 方法
4.2.3 步驟
4.3 在圖像數據存儲上執行mapReduce
4.3.1 問題
4.3.2 方法
4.3.3 步驟
總結
第5章MATLAB圖形
5.1 二維線圖
5.1.1 問題
5.1.2 方法
5.1.3 步驟
5.2二維圖形
5.2.1 問題
5.2.2 方法
5.2.3 步驟
5.3 定制二維圖
5.3.1 問題
5.3.2 方法
5.3.3 步驟
5.4 三維盒子
5.4.1 問題
5.4.2 方法
5.4.3 步驟
5.5 用紋理繪制三維對象
5.5.1 問題
5.5.2 方法
5.5.3 步驟
5.6 三維圖形
5.6.1 問題
5.6.2 方法
5.6.3 步驟
5.7 構建圖形用戶界面
5.7.1 問題
5.7.2 方法
5.7.3 步驟
總結
第6章 MATLAB機器學習示例
6.1引言
6.2 機器學習
6.2.1 神經網絡
6.2.2 面部識別
6.2.3 數據分類
6.3 控制
6.3.1卡爾曼濾波器
6.3.2自適應控制
6.4人工智能
第7章 基于深度學習的面部識別
7.1在線獲取數據:用于訓練神經網絡
7.1.1 問題
7.1.2 方法
7.1.3 步驟
7.2 生成神經網絡的訓練數據
7.2.1 問題
7.2.2 方法
7.2.3 步驟
7.3 卷積
7.3.1 問題
7.3.2 方法
7.3.3 步驟
7.4卷積層
7.4.1 問題
7.4.2 方法
7.4.3 步驟
7.5 池化
7.5.1 問題
7.5.2 方法
7.5.3 步驟
7.6 全連接層
7.6.1 問題
7.6.2 方法
7.6.3 步驟
7.7 確定輸出概率
7.7.1 問題
7.7.2 方法
7.7.3 步驟
7.8 測試神經網絡
7.8.1 問題
7.8.2 方法
7.8.3 步驟
7.9 識別圖像
7.9.1 問題
7.9.2 方法
7.9.3 步驟
總結
第8章 數據分類
8.1 生成分類測試數據
8.1.1 問題
8.1.2 方法
8.1.3 步驟
8.2 繪制決策樹
8.2.1 問題
8.2.2 方法
8.2.3 步驟
8.3 決策樹的算法實現
8.3.1 問題
8.3.2 方法
8.3.3 步驟
8.4 生成決策樹
8.4.1 問題
8.4.2 方法
8.4.3 步驟
8.5 手工創建決策樹
8.5.1 問題
8.5.2 方法
8.5.3 步驟
8.6 訓練和測試決策樹
8.6.1 問題
8.6.2 方法
8.6.3 步驟
總結
第9章 基于神經網絡的數字分類
9.1 生成帶噪聲的測試圖像
9.1.1 問題
9.1.2 方法
9.1.3 步驟
9.2創建神經網絡工具箱
9.2.1 問題
9.2.2 方法
9.2.3 步驟
9.3 訓練單一輸出節點的神經網絡
9.3.1 問題
9.3.2 方法
9.3.3 步驟
9.4 測試神經網絡
9.4.1 問題
9.4.2 方法
9.4.3 步驟
9.5 訓練多輸出節點的神經網絡
9.5.1 問題
9.5.2 方法
9.5.3 步驟
總結
第10章 卡爾曼濾波器
10.1 狀態估計器
10.1.1 問題
10.1.2 方法
10.1.3 步驟
10.1.4 傳統卡爾曼濾波器
10.2 使用UKF進行狀態估計
10.2.1 問題
10.2.2 方法
10.2.3 步驟
10.3 使用UKF進行參數估計
10.3.1 問題
10.3.2 方法
10.3.3 步驟
總結
第11章 自適應控制
11.1 自調諧:求振蕩器頻率
11.1.1 問題
11.1.2 方法
11.1.3 步驟
11.2 模型參考自適應控制
11.2.1 創建方波輸入
11.2.2 實現模型參考自適應控制
11.2.3 轉子的MRAC系統實現
11.3 飛機的縱向控制
11.3.1 編寫飛機縱向運動的微分方程
11.3.2 利用數值方法尋找平衡狀態
11.3.3 飛機的數值仿真
11.3.4 神經網絡中對取值范圍的限定和縮放
11.3.5 尋找學習控制的神經網絡
11.3.6 枚舉輸入集合
11.3.7 編寫通用神經網絡函數
11.3.8 實現PID控制
11.3.9 飛機俯仰角PID控制演示
11.3.10 創建俯仰動力學的神經網絡
11.3.11 非線性仿真中的控制器演示
11.4 輪船駕駛:實現輪船駕駛控制的增益調度
11.4.1 問題
11.4.2 方法
11.4.3 步驟
總結
第12章 自動駕駛
12.1 汽車雷達建模
12.1.1 問題
12.1.2 步驟
12.1.3 方法
12.2 汽車的自主傳遞控制
12.2.1 問題
12.2.2 方法
12.2.3 步驟
12.3 汽車動力學
12.3.1 問題
12.3.2 步驟
12.3.3 方法
12.4 汽車仿真與卡爾曼濾波器
12.4.1 問題
12.4.2 方法
12.4.3 步驟
12.5 雷達數據的MHT實現
12.5.1問題
12.5.2 方法
12.5.3 步驟
12.5.4 假設形成
12.5.5 軌道剪枝