本書介紹學習深度學習的基礎知識,了解機器學習流程:產生可交付模型的步驟,掌握進行預測,改進決策,并應用概率方法,以及通過分類和聚類對數據進行分組機器學習可以解決哪些問題。提出了一系列可以用來解決現實問題的算法,以及利用神經網絡的深度學習技術。本書適合對于想要構建機器學習應用程序的專業人員。
我們需要這樣的人,他能夠夢想從未有過的事情,并且問自己為什么不能。
—約翰·F 肯尼迪在愛爾蘭議會的演講,1963年6月
人們對如今的人工智能持有兩種觀點,而且這兩種觀點并不是截然對立的。一種是絕大多數媒體所宣揚和追求的觀點,而另一種則是IT社區宣揚和追求的觀點。在這兩大陣營中,都有一些真正的專家和權威人士。
媒體所宣揚的觀點關注的是人工智能作為一個整體(無論是以已知還是未知的形式)可能對我們未來的生活產生的影響。IT社區(軟件和數據科學家所屬領域)所宣揚的觀點認為,機器學習是新一代軟件服務的基礎,而新一代軟件服務只是比現有服務更智能。
在媒體觸及的大眾與小得多的IT社區之間的中間地帶是云服務團隊。云服務團隊每天開展研究工作,使技術水平不斷提高,并發布新的服務,以便潛在地為新的和現有的應用程序添加智能。
位于人工智能金字塔底部的是經理和管理人員。一方面,他們渴望將從科技新聞中聽到的那些令人驚嘆的服務應用到業務中,以超越競爭對手;另一方面,在帶著極大的希望開啟項目后,隨之而來的是數額驚人的賬單。
人工智能不是一根魔杖。
人工智能不是按使用次數付費的服務。更糟糕的是,它既不是資本,也不是經營支出。
人工智能只是一種軟件。
如果能從軟件開發的角度來考慮—設置需求、找到可靠的合作伙伴、制定合理的預算、開展工作、在充分考慮敏捷性的前提下重新開始,那么,任何關于人工智能的商業決策都會更有效。
可是,真的就那么簡單嗎?
雖然人工智能與軟件開發有關,但它與建立電子商務網站或預訂平臺并不完全一樣。
如果你不清楚要解決的問題、問題的背景和要表達的觀點,就不要開始人工智能項目。
不要以最接近的競爭者為唯一榜樣來從事雄心勃勃的冒險項目。
如果你還沒準備好花一大筆錢,就不要開始這樣的項目。
你需要每次只解決一個痛點,構建一個跨功能的團隊,并提供對數據的完全訪問。
誰應該閱讀本書
在準備本書的過程中,我們收到了很多關于章節結構及文字細節的反饋。我們至少對目錄進行了三次大改。困難之處在于,我們寫這本書的初衷是使其內容與眾不同且具有創新性,追求的是一種與我們熟知的現實相去甚遠的機器學習和軟件開發理念。希望我們的愿景也是機器學習將來的愿景!
在數據科學的范疇下,我們把機器學習看作交付給開發人員的組件,可嵌入某些Web服務或桌面應用程序中。這看起來仍然是瀑布式結構,公司和企業經常談論的敏捷在哪里?敏捷機器學習意味著數據科學家和開發人員是在一起工作的,業務分析師和領域專家也會加入團隊。同時為了方便數據訪問和操作,數據利益相關者—無論是IT、DevOps還是其他什么—也會加入團隊。這就是一個恰到好處的敏捷團隊。
我們看到了從數據科學到軟件開發以及從軟件開發到數據科學的技術融合(商業)需求。這本入門書籍對這兩方面的讀者都是有益的。在深入分析機器學習算法的原理之前,我們首先面向開發人員展開討論,并展示MLNET的實際運行情況(涉及使用Python和不使用Python兩種情況)。我們還面向需要了解更多軟件需求的數據科學家進行了討論。
如果你是一名軟件開發人員,愿意將數據科學和機器學習技能添加到自己的技能庫中,那么本書就是你的理想選擇。如果你是一名數據科學家,愿意學習更多關于軟件的知識,那么本書也是非常理想的選擇。不過,這兩類人都需要更多地了解對方的領域。
這就是本書所下的“賭注”。我們將其歸類為“入門級”,因為它注重內容的廣度而不是深度。書中提供了NET的例子,因為我們認為,盡管Python生態系統非常豐富和繁榮,但是沒有理由不去尋找支持我們在更接近軟件應用、軟件服務和微服務的情況下進行機器學習的平臺,最終可以使用任意的學習管道(包括TensorFlow、PyTorch及Python代碼)。
誰不應該閱讀本書
這是一本入門級的書,對基于MLNET平臺的機器學習進行了廣泛但清晰、準確的概述。如果你正在尋找大量的Python示例,那么本書并不理想。如果你正在尋找能在解決方案中復制和粘貼的示例(無論是Python還是MLNET),我們不確定這本書是否理想。如果你正在尋找算法背后的數學本質,或者一些算法實現的簡單注釋,這本書也不理想。(書中確實包含一些數學知識,但只是皮毛。)
章節安排
本書分為五個部分。第一部分簡要介紹人工智能、智能軟件的基礎,以及機器學習項目在端到端解決方案中的基本實現步驟。第二部分重點介紹MLNET庫,概述其核心部分,比如在回歸和分類等常見問題中完成數據處理、訓練及評估等任務。第三部分涉及一系列算法的數學細節,這些算法通常被訓練來解決現實生活中的問題,包括回歸器、決策樹、集成方法、貝葉斯分類器、支持向量機、K–均值、在線梯度。第四部分致力于研究神經網絡,當淺層算法都不適用時,神經網絡可能會發揮作用。第五部分是關于人工智能(特別是機器學習)的商業愿景,粗略地回顧了云平臺(特別是Azure平臺)為數據處理和計算提供的運行時服務。
代碼示例
本書中演示的所有代碼,包括可能的勘
迪諾·埃斯波西托(Dino Esposito) 在程序開發領域擁有超過25年的經驗,14次被評為微軟最有價值專家(MVP),撰寫了20多本書,包括暢銷書Microsoft NET: Architecting Applications for the Enterprise,連續22年為《MSDN雜志》撰寫專欄,并經常為微軟及全球各類企業的程序開發人員做培訓。目前擔任BaxEnergy公司的數字戰略師,專注于智慧城市和智慧能源等領域。弗朗西斯科·埃斯波西托(Francesco Esposito) 軟件和AI公司Youbiquitous的創始人,并且運營著一家小型投資公司。他在青少年時期就為iOS、Android和Windows Phone等平臺開發了多款應用程序,目前專注于數學和數據科學,特別關注水和醫療保健領域。
第一部分 機器學習基礎第1章 人類是如何學習的 3邁向思考型機器 4機器推理的曙光 4哥德爾不完備定理 4計算機的形式化 5邁向人類思想的形式化 5人工智能學科的誕生 6學習原理 7什么是智能軟件 7神經元是如何工作的 8大棒加胡蘿卜法 14應變能力 15人工智能的形式 16原始智能 16專家系統 16自治系統 19人工情感的形式 20小結 22第2章 智能軟件 23應用人工智能 23 軟件智能的發展 24 專家系統 25通用人工智能 27 無監督學習 27 監督學習 29小結 32第3章 映射問題和算法 33基本問題 33 對象分類 34 結果預測 36 對象分組 38更復雜的問題 40 圖像分類 41 目標檢測 41 文本分析 42自動機器學習 42 AutoML平臺概述 42 AutoML模型構建器實戰 45小結 48第4章 機器學習解決方案的一般步驟 49數據收集 50 組織中的數據驅動文化 50 存儲選項 51數據準備 52 提高數據質量 53 清洗數據 53 特征工程 54 最終確定訓練數據集 56模型選擇及訓練 58 算法速查表 59 神經網絡案例 61 評估模型性能 62模型部署 64 選擇合適的主機平臺 64 公開API 65小結 66第5章 數據因素 67數據質量 67 數據有效性 68 數據收集 69數據完整性 70 完備性 70 唯一性 70 及時性 71 準確性 71 一致性 71什么是數據科學家 71 工作中的數據科學家 72 數據科學家的工具箱 73 數據科學家和軟件開發人員 73小結 74第二部分 NET中的機器學習第6章 NET方式 77為什么用/不用Python 78 為什么Python在機器學習中如此受歡迎 78 Python機器學習庫的分類 80 基于Python模型的端到端解決方案 82MLNET簡介 83 在MLNET中創建和使用模型 84 學習環境的要素 87小結 91第7章 實現MLNET管道 93從數據開始 93 探索數據集 94 應用公共數據轉換 94 關于數據集的注意事項 95訓練步驟 96 選擇算法 96 測量算法的實際值 97 計劃測試階段 97 指標預覽 98從客戶端應用程序中預測價格 99 獲取模型文件 99 設置ASPNET應用程序 99 預測出租車費用 100 設計適當的用戶界面 102 質疑數據和解決問題的方法 103小結 103第8章 MLNET任務和算法 105MLNET的整體框架 105 涉及的類型和接口 105 數據表示 107 支持的目錄 109分類任務 111 二進制分類 111 多類分類 116聚類任務 122 準備工作數據 122 訓練模型 123 評估模型 124遷移學習 126 建立圖像分類器的步驟 127 應用必要的數據轉換 127 模型的構建和訓練 129 關于遷移學習的補充說明 131小結 132第三部分 淺層學習基礎第9章 機器學習的數學基礎 135統計數據 135 均值 136 眾數 138 中位數 139偏差和方差 141 方差 142 偏差 144數據表示 145 五數概括法 145 直方圖 146 散點圖 148 散點圖矩陣 148 以適當的比例繪制 149小結 150第10章 機器學習的度量 151統計與機器學習 151 機器學習的終極目標 152 從統計模型到機器學習模型 153機器學習模型的評價 155 從數據集到預測 155 測量模型的精度 157為處理準備數據 162 縮放 162 標準化 163 歸一化 163小結 163第11章 進行簡單預測:線性回歸 165問題 165 用數據指導預測結果 166 對關系做假設 167線性算法 169 總體思路 169 確定代價函數 170 普通的最小二乘算法 171 梯度下降算法 174 判斷算法的好壞 178改進解決方案 178 多項式方法 178 正則化 179小結 180第12章 進行復雜的預測和決策:決策樹 181問題 181 什么是樹 182 機器學習中的樹 183 基于樹的算法示例 183基于樹的算法的設計原理 185 決策樹與專家系統 185 樹算法的種類 186分類樹 187 CART算法的工作原理 187 ID3算法的工作原理 191回歸樹 194 算法的工作原理 194 剪枝 195小結 196第13章 進行更好的決策:集成學習算法 197問題 197bagging技術 198 隨機森林算法 198 算法步驟 200 優點與缺點 202boosting技術 203 boosting的功能 203 梯度boosting 206 優點與缺點 210小結 210第14章 概率方法:樸素貝葉斯 211貝葉斯統計快速入門 211 貝葉斯概率簡介 212 基本符號 212 貝葉斯定理 214 一個實用的代碼審查示例 215貝葉斯統計在分類中的應用 216 問題的初始表述 217 簡化的有效分子式 217 貝葉斯分類器實踐 218樸素貝葉斯分類器 219 通用算法 219 多項式樸素貝葉斯 220 伯努利樸素貝葉斯 223 高斯樸素貝葉斯 224樸素貝葉斯回歸 226 貝葉斯線性回歸的基礎 226 貝葉斯線性回歸的應用 228小結 228第15章 對數據進行分組:分類與聚類 229有監督分類的基本方法 230 K–近鄰算法 230 算法步驟 232 應用場景 234支持向量機 235 算法概述 235 數學知識回顧 239 算法步驟 240無監督聚類 245 應用案例:縮減數據集 245 K–均值算法 246 K–模型算法 247 DBSCAN算法 248小結 251第四部分 深度學習基礎第16章 前饋神經網絡 255神經網絡簡史 255 McCulloch-Pitt神經元 255 前饋網絡 256 更復雜的網絡 256人工神經元的類型 257 感知機神經元 257 邏輯神經元 260訓練神經網絡 263 整體學習策略 263 反向傳播算法 264小結 270第17章 神經網絡的設計 273神經網絡概覽 273 激活函數 274 隱層 277 輸出層 281構建神經網絡 282 現成的框架 282 你的第一個Keras神經網絡 284 神經網絡與其他算法 287小結 289第18章 其他類型的神經網絡 291前饋神經網絡的常見問題 291遞歸神經網絡 292 有狀態神經網絡的結構 292 LSTM神經網絡 295卷積神經網絡 298 圖像分類與識別 298 卷積層 299 池化層 301 全連接層 303神經網絡的進一步發展 304 生成對抗神經網絡 304 自動編碼器 305小結 307第19章 情感分析:端到端解決方案 309為訓練準備數據 310 對問題進行形式化 310 獲取數據 311 處理數據 311 關于中間格式的注意事項 313訓練模型 313 選擇生態系統 314 建立單詞字典 314 選擇訓練器 315 網絡的其他方面 319客戶端應用 321 獲取模型的輸入 321 從模型中預測 322 將響應轉化為可用信息 323小結 323第五部分 思考第20章 面向現實世界的AI云服務 327Azure認知服務 327Azure機器學習工作室 329 Azure機器學習服務 331 數據科學虛擬機 333本地服務 333 SQL Server機器學習服務 333 機器學習服務器 334微軟數據處理服務 334 Azure數據湖 334 Azure Databricks 334 Azure HDInsight 335 用于Apache Spark的NET 335 Azure數據分享 336 Azure數據工廠 336小結 336第21章 人工智能的商業愿景 339工業界對AI的看法 339 挖掘潛能 339 AI可以為你做什么 340 面臨的挑戰 342端到端解決方案 343 我們就叫它咨詢吧 344 軟件和數據科學之間的界線 344 敏捷AI 346小結 349Contents PART I LAYING THE GROUNDWORK OF MACHINE LEARNING Chapter 1 How Humans Learn 3 The Journey Toward Thinking Machines 4 The Dawn of Mechanical Reasoning 4 Godel’s Incompleteness Theorems 4 Formalization of Computing Machines 5 Toward the Formalization of Human Thought 5 The Birth of Artificial Intelligence as a Discipline 6 The Biology of Learning 7 What Is Intelligent Software, Anyway? 7 How Neurons Work 8 The Carrot-and-Stick Approach 14 Adaptability to Changes 15 Artificial Forms of Intelligence 16 Primordial Intelligence