人工智能技術已經成為當前技術變革的主要推動力之一,從計算機科學到工程學等許多科學技術領域都在竭盡全力想用自動化的方法創造更大的價值。要想做到這一點,工程師當然必須要對當前最具潛力的機器學習方法有一個大致了解。倫敦國王學院信息學習教授 Osvaldo Simeone 公開發布了長達 237 頁的最新專著,為工程師提供了全面細致的機器學習入門介紹。
本專著的目標是介紹機器學習領域內的關鍵概念、算法和理論框架,涵蓋了監督學習與無監督學習、統計學習理論、概率圖模型和近似推斷等方向。本專著的目標讀者是具有概率學和線性代數背景的電氣工程師。本書基于第一原理(first principle)寫作,并按照有清晰定義的分類方式對其中的主要思想進行了組織,其中的類別包含鑒別式模型和生成式模型、頻率論者和貝葉斯方法、準確推斷和近似推斷、有向模型和無向模型、凸優化和非凸優化。本書中的數學框架使用了信息論的描述方式,以便工具具有統一性。書中提供了簡單且可重復的數值示例,以便讀者了解相關的關鍵動機和結論。本專著的目的并不是要為每個特定類別中已有的大量解決方案提供詳盡的細節描述(這些描述讀者可參閱教科書和論文了解),而是為了給工程師提供一個切入點,以便他們能借此進一步深入機器學習相關文獻。
第一章 概述
當我在教授機器學習課程時,有著工程學背景的同事和學生經常問及:如何更好地入門機器學習。我通常會以書籍推薦的形式回應——一般但稍微過時的介紹,請讀這本書;對于基于概率模型方法的詳細調查,請查看這些索引;如果想要了解統計學習,我覺得這篇文章很有用;如此等等。結果證明這些回答無法使我與提問者滿意。書籍很多很厚,使得繁忙的工程學教授和學生望而卻步。因此我首次撰寫了這篇專論,一篇基礎且體量適當的入門書,其中通過簡單的術語面向工程師統一介紹了機器學習主要思想和原理,同時涵蓋了其最新發展和文獻指導,以供進一步研究。
第二章,線性回歸入門介紹
第二章我們回顧了三個核心的學習框架,即頻率論者(frequentist)、貝葉斯和 MDL。頻率論者為數據假定了真實、未知分布的存在,并致力于學習一個預測器(predictor),從而更好地泛化來自這一分布的不可見數據。這可通過學習一個插入最優預測器表達式的概率模型或者直接解決預測變量上的 ERM 問題而完成。貝葉斯方法輸出一個預測分布,可通過解決計算不可見標簽上后驗分布的推斷問題而整合先驗信息與數據。最后,MDL 方法旨在篩選一個模型,允許使用最少的比特描述數據,因此去除在未觀察實例上泛化的任務。本章也廣泛討論了過擬合的關鍵問題,展示了學習算法的性能可就偏差和評估錯誤獲得理解。運行實例是用于高斯模型的線形回歸中的一個。下一章將會介紹更多學習構建和學習常見概率模型的工具。
第三章,概率學習模型
本章中,我們回顧了概率模型的一個重要類別——指數族,它被廣泛用作學習算法的組件以完成監督、無監督學習任務。這一類別成員的關鍵屬性是由同一家族中的梯度 LL 和共軛先驗的可用性采用的簡單形式。下一章我們將講述指數族在解決分類問題方面的不同應用模型。
第四章,分類
本章扼要概述了分類的關鍵問題。按照第二章提出的分類系統,我們依據用來連接解釋性變量與標簽的模型類型劃分了學習算法。尤其地,我們描述了線性與非線性的確定性判別模型,涵蓋了用于多層神經網絡的感知機算法、SVM、反向傳播;聚焦于 GLM 的概率判別模型;包括 QDA 和 LDA 在內的概率生成模型。我們同樣介紹了混合模型與提升方法(Boosting)。盡管本章聚焦在算法方面,下一章將討論一個理論框架,研究監督學習的性能。
第五章,統計學習理論
本章描述了經典的 PAC 框架,并用它分析監督學習的泛化性能。我們知道 VC 維理論定義了模型的能力,這就意味著 VC 維在給定模型準確度和置信度上度量了其學習所需要的樣本數量。在下一章中,我們將從監督學習進一步討論無監督學習問題。
第六章,無監督學習
在本章節中,我們回顧了無監督學習的基礎知識。優秀的無監督學習方法一般都通過隱變量或潛在變量幫助解釋數據的結構。我們首先通過期望最大化算法(EM)回顧了機器學習及各種變體。隨后介紹了機器學習生成模型 GAN,該方法使用從數據中學到的散度度量以代替 KL 散度。隨后接著回顧了通過 InfoMax 原則訓練的判別模型和自編碼器。在下一章節中,我們通過討論概率圖模型的強大框架而擴展了對概率模型的理解。
第七章,概率圖模型
概率圖模型將關于數據結構的先驗信息編碼為因果關系的形式,即通過有向圖和貝葉斯網絡(BN),或通過無向圖和馬爾可夫隨機場(MRF)編碼為相互之間的依賴性關系。這種結構可以表示為條件獨立性屬性。概率圖模型所編碼的結構屬性能有效地控制模型的性能,因此能以可能的偏差為代價減少過模型擬合。概率圖模型也推動執行貝葉斯推斷,至少在樹型結構的圖中是這樣的。下一章將討論貝葉斯推斷和關聯學習比較重要的問題,當然具體的方法對計算力的需求就太大了。
第八章,近似推斷與學習
本章通過關注 MC 和 VI 方法概覽了近似推斷技術。并且重點關注了選擇不同類型的近似準則及其所產生的影響,例如介紹 M- 和 I- 映射。同樣我們還討論了在學習問題上使用近似推斷的方法。此外,我們還討論了本章目前最優的技術進展。
第九章,結語
這一章節主要是簡單介紹機器學習,尤其是強調那些統一框架下的概念。除了前文縱覽機器學習的各種方法,我們在這年還提供了那些只是提到或簡要描述的重要概念及其擴展方向,因此下面將提供前文沒有介紹的重要概念列表。
隱私:在許多應用中,用于訓練機器學習算法的數據集包含了很多敏感的私人信息,例如推薦系統中的個人偏好和醫療信息等等。因此確保學習的模型并不會揭露任何訓練數據集中的個人記錄信息就顯得十分重要了。這一約束能使用差分隱私(differential privacy)概念形式化表達。保證個人數據點隱私的典型方法包括在執行 SGD 訓練模型時對梯度添加隨機噪聲,該方法依賴于使用不同的訓練數據子集混合所學習到的專家系統 [1]。
魯棒性:已經有研究者表明不同的機器學習模型包含神經網絡對數據集中很小的變化十分敏感,它們會對次要的、正確選擇的和解釋變量中的變動給出錯誤的響應。為了確保模型關于對抗樣本具有魯棒性,修正訓練過程是具有重要實踐意義的研究領域 [37]。
計算平臺和編程框架:為了擴展機器學習應用,利用分布式計算架構和相應的標準編程框架 [9] 是十分有必要的。
遷移學習:針對特定任務并使用給定數據集進行訓練的機器學習模型,目前如果需要應用到不同的任務還需要重新初始化和訓練。遷移學習研究領域即希望將預訓練模型從一個任務獲得的專業知識遷移到另一個任務中。神經網絡的典型解決方案規定了通用隱藏層的存在,即對不同任務訓練的神經網絡有一些隱藏層是相同的。
域適應(Domain adaptation):在許多學習問題中,可用數據和測試數據的分布并不相同。例如在語音識別中,模型學習時所使用的用戶數據和訓練后其他用戶使用該模型所提供的語音數據是不同的。廣義 PAC 理論分析了這種情況,其將測試分布作為測試和訓練的分布差異函數而獲得了泛化誤差邊界。
有效通信學習(Communication-efficient learning):在分布式計算平臺上,數據通常被分配在處理器中,處理器中的通信造成了延遲與能耗。一個重要的研究問題是找到學習性能與通信成本之間的最佳折衷。
強化學習:強化學習是機器學習方法最近大獲成功的根本核心,獲得了玩視頻游戲或與人類選手對決的必要技能。在強化學習中,一方想要學習世界中已觀察到的狀態 x 和動作 t 之間的最優映射,比如說 p(t|x, θ)。不同于監督學習,強化學習中最優動作不可知,機器會由于采取的動作而獲得一個獎勵/懲罰信號。其中一個流行的方法是深度強化學習,它通過神經網絡建模映射 p(t|x, θ)。通過使用強化方法評估梯度并借助 SGD,這被訓練從而最大化平均獎勵。
C++17是現代 C++編程中的下一個版本,最新版本的gcc、clang和 Visual C++ 都至少已經部分支持它。盡管 遷移到 C++17 并不像遷移到 C++11一樣是一個巨大的變化,但 C++17也包含了非常多很小但卻很有價值的語言 和庫特性。它們再一次改變了我們使用 C++編程的方式,無論是對應用程序員還是提供基礎庫的程序員來說都 是如此。這本書將會展現出 C++17 中所有的新的語言和庫特性。除了用例子展示這些特性的使用之外,本書還將覆 蓋這些特性的動機和背景信息。像我的其他書一樣,這本書也將專注于這些新特性在實踐中的應用,并演示這 些特性如何影響我們的日常編程和如何在項目中受益于這些特性。
本書的整體結構
這本書覆蓋了 C++17 引入的所有變化。既包括影響應用程序員日常編程的那些語言和庫特性,也包括那些 用于編寫復雜的(基礎)庫實現的特性。然而,更一般的情況和相關示例會放在前面。
不同的章節被分成若干組,除了最先介紹的語言特性可能會被后面的庫特性使用之外,這樣分組并沒有什么 深層的原因。理論上,你可以以任意順序閱讀這些章節。如果會用到其他章節的特性,那么將會有相應的交叉 引用。結果是,這本書包括以下部分:
? Part I覆蓋了新的非模板語言特性。
? Part II 覆蓋了用于模板泛型編程的新的語言特性。
? Part III 介紹了新的標準庫組件。
? Part IV 覆蓋了現有標準庫組件的擴展和修改。
? Part V覆蓋了為專家例如基礎庫程序員設計的語言和庫特性。
? Part VI 包含了有關 C++17的一些通用的提示
目錄內容: 第一部分 基本語言特性
第一章 結構化綁定
第二章 帶初始化的 if 和 switch 語句
第三章 內聯變量
第四章 聚合體擴展
第五章 強制省略拷貝或傳遞未實質化的對象
第六章 lambda 表達式擴展
第七章 新屬性和屬性特性
第八章 其他語言特性
第二部分 模板特性
第九章 類模板參數推導
第十章 編譯期 if 語句
第十一章 折疊表達式
第十二章 處理字符串字面量模板參數
第十三章 占位符類型作為模板參數
第十四章 擴展的 using 聲明
第三部分 新的標準庫組件
第十五章 std::optional<>
第十六章 std::variant<>
第十七章 std::any
第十八章 std::byte
第十九章 字符串視圖
第二十章 文件系統庫
第四部分 已有標準庫的擴展和修改
第二十一章 類型特征擴展
第二十二章 并行 STL 算法
第二十三章 新的 STL 算法詳解
第二十四章 子串和子序列搜索器
第二十五章 其他工具函數和算法
第二十六章 容器和字符串擴展
第二十七章 多線程和并發
第二十八章 標準庫的其他微小特性和修改
第五部分 專家的工具
第二十九章 多態內存資源 (PMR)
第三十章 使用 new 和 delete 管理超對齊數據
第三十一章 std::to_chars() 和 std::from_chars()
第三十二章 std::launder()
第三十三章 編寫泛型代碼的改進
第六部分 一些通用的提示
第三十四章 總體性的 C++17 事項
第三十五章 廢棄和移除的特性
這本書的書名聽起來有點神秘。如果這本書以一種錯誤的方式呈現了這個主題,人們為什么要讀它呢?書中哪些地方做得特別“不對”?
在回答這些問題之前,讓我先描述一下本文的目標受眾。這本書是“榮譽線性代數”課程的課堂講稿。這應該是高等數學學生的第一門線性代數課程。它的目標是一個學生,雖然還不是非常熟悉抽象推理,但愿意學習更嚴格的數學,在“烹飪書風格”的微積分類型課程。除了作為線性代數的第一門課程,它也應該是第一門向學生介紹嚴格證明、形式定義——簡而言之,現代理論(抽象)數學風格的課程。
目標讀者解釋了基本概念和具體實例的非常具體的混合,它們通常出現在介紹性的線性代數文本中,具有更抽象的定義和高級書籍的典型構造。
這本書系統性講述了統計學理論,包括概率理論、分布式理論與統計模型,基本統計理論、貝葉斯理論、無偏點估計、最大似然統計推斷、統計假設與置信集、非參與魯棒推斷。
第一門課程以對統計中有用的測量論概率論的概念和結果的簡要概述開始。隨后討論了統計決策理論和推理中的一些基本概念。探討了估計的基本方法和原理,包括各種限制條件下的最小風險方法,如無偏性或等方差法,最大似然法,以及矩法和其他插件方法等函數法。然后詳細地考慮了貝葉斯決策規則。詳細介紹了最小方差無偏估計的方法。主題包括統計量的充分性和完全性、 Fisher信息、估計量的方差的界、漸近性質和統計決策理論,包括極大極小和貝葉斯決策規則。
第二門課程更詳細地介紹了假設檢驗和置信集的原理。我們考慮了決策過程的表征,內曼-皮爾森引理和一致最有力的測試,置信集和推理過程的無偏性。其他主題包括等方差、健壯性和函數估計。
除了數理統計的經典結果外,還討論了馬爾可夫鏈蒙特卡洛理論、擬似然、經驗似然、統計泛函、廣義估計方程、折刀法和自舉法。
管理統計和數據科學的原理包括:數據可視化;描述性措施;概率;概率分布;數學期望;置信區間;和假設檢驗。方差分析;簡單線性回歸;多元線性回歸也包括在內。另外,本書還提供了列聯表、卡方檢驗、非參數方法和時間序列方法。
教材:
當前關于機器學習方面的資料非常豐富:Andrew NG在Coursera上的機器學習教程、Bishop的《機器學習與模式識別》 和周志華老師的《機器學習》都是非常好的基礎教材;Goodfellow等人的《深度學習》是學習深度學習技術的首選資料;MIT、斯坦福等名校的公開課也非常有價值;一些主要會議的Tutorial、keynote也都可以在網上搜索到。然而,在對學生們進行培訓的過程中, 我深感這些資料專業性很強,但入門不易。一方面可能是由于語言障礙,另一個主要原因在于機器學習覆蓋 面廣,研究方向眾多,各種新方法層出不窮,初學者往往在各種復雜的名詞,無窮無盡的 算法面前產生畏難情緒,導致半途而廢。
本書的主體內容是基于該研討班形成的總結性資料。基于作者的研究背景,這本書很難說 是機器學習領域的專業著作,而是一本學習筆記,是從一個機器學習 技術使用者角度對機器學習知識的一次總結,并加入我們在本領域研究中的一些經驗和發現。與其說是一本教材,不如說是一本科普讀物, 用輕松活潑的語言和深入淺出的描述為初學者打開機器學習這扇充滿魔力的大門。打開大門以后,我們會發現這是個多么讓人激動人心的 領域,每天都有新的知識、新的思路、新的方法產生,每天都有令人振奮的成果。我們希望這本書 可以讓更多學生、工程師和相關領域的研究者對機器學習產生興趣,在這片異彩紛呈的海域上找到 屬于自己的那顆貝殼。
強烈推薦給所有初學機器學習的人,里面有: 書籍的pdf 課堂視頻 課堂slides 各種延伸閱讀 MIT等世界名校的slides 學生的學習筆記等
為工程師寫的機器學習簡介(A Brief Introduction to Machine Learning for Engineers)
摘要
本專著的目標是介紹機器學習領域內的關鍵概念、算法和理論框架,涵蓋了監督學習與無監督學習、統計學習理論、概率圖模型和近似推斷等方向。本專著的目標讀者是具有概率學和線性代數背景的電氣工程師。本書基于第一原理(first principle)寫作,并按照有清晰定義的分類方式對其中的主要思想進行了組織,其中的類別包含鑒別式模型和生成式模型、頻率論者和貝葉斯方法、準確推斷和近似推斷、有向模型和無向模型、凸優化和非凸優化。本書中的數學框架使用了信息論的描述方式,以便工具具有統一性。書中提供了簡單且可重復的數值示例,以便讀者了解相關的關鍵動機和結論。本專著的目的并不是要為每個特定類別中已有的大量解決方案提供詳盡的細節描述(這些描述讀者可參閱教科書和論文了解),而是為了給工程師提供一個切入點,以便他們能借此進一步深入機器學習相關文獻。
高斯過程(GPs)為核機器的學習提供了一種有原則的、實用的、概率的方法。在過去的十年中,GPs在機器學習社區中得到了越來越多的關注,這本書提供了GPs在機器學習中理論和實踐方面長期需要的系統和統一的處理。該書是全面和獨立的,針對研究人員和學生在機器學習和應用統計學。
這本書處理監督學習問題的回歸和分類,并包括詳細的算法。提出了各種協方差(核)函數,并討論了它們的性質。從貝葉斯和經典的角度討論了模型選擇。討論了許多與其他著名技術的聯系,包括支持向量機、神經網絡、正則化網絡、相關向量機等。討論了包括學習曲線和PAC-Bayesian框架在內的理論問題,并討論了幾種用于大數據集學習的近似方法。這本書包含說明性的例子和練習,和代碼和數據集在網上是可得到的。附錄提供了數學背景和高斯馬爾可夫過程的討論。
本文采用了一種獨特的機器學習方法,它包含了對進行研究、開發產品、修補和玩耍所必需的所有基本概念的全新的、直觀的、但又嚴謹的描述。通過優先考慮幾何直觀,算法思維,和實際應用的學科,包括計算機視覺,自然語言處理,經濟學,神經科學,推薦系統,物理,和生物學,這篇文章為讀者提供了一個清晰的理解基礎材料以及實際工具需要解決現實世界的問題。通過深入的Python和基于MATLAB/ octave的計算練習,以及對前沿數值優化技術的完整處理,這是學生的基本資源,也是從事機器學習、計算機科學、電子工程、信號處理和數值優化的研究人員和實踐者的理想參考。其他資源包括補充討論主題、代碼演示和練習,可以在官方教材網站mlrefined.com上找到。