機器學習系統設計的目標
機器學習系統設計是為機器學習系統定義接口、算法、數據、基礎設施和硬件以滿足特定要求的過程。
大多數ML課程只涵蓋ML算法部分。在本課程中,我們不會教你不同的ML算法,但我們會看看整個系統。
下是我們將要學習的系統應該具備的四個主要要求:
//stanford-cs329s.github.io/index.html
業界和學界對知識圖譜的關注主要集中于兩大領域,分別是知識圖譜的構建和知識圖譜的應用。前者聚焦于通過對結構化、非結構化數據的整合,實現統一形式的數據存儲;后者則著眼于通過算法對海量知識圖譜數據進行學習與挖掘,從而推理出新的知識,服務于具體行業應用。知識圖譜推理在其中發揮了重要作用,被譽為知識圖譜領域的皇冠。
CS224W圖機器學習課程講述了《知識圖譜推理》最新進展PPT。
圖機器學習講述關于《圖神經網絡理論》最新課程。
圖網絡(GNNs)的新變體層出不窮,但是卻鮮有對圖網絡框架的理論分析。Kipf在2017年提出的GCN中,曾從圖上的譜分析的角度給出了GCN的理論基礎;近期也有日本研究者從圖信號處理的角度,表明GNNs只是一個低頻濾波器(arxiv.org/abs/1905.09550)。而本文嘗試從圖同構的角度出發,以Weisfeiler-Lehman Isomorphism Test (WL test)為基礎,給出了GNNs表征能力的精彩理論分析,具體的貢獻總結如下:
作者表明,在區別不同圖結構時,GNNs最多只能取得和 WL test 一樣效果,即,GNNs表征能力的上限是WL test;
作者也給出了構建GNNs的條件,滿足這些條件后,GNNs的表征能力和 WL test一樣強;
給出了GCN和GraphSAGE等傳統圖網絡框架不能區分的網絡結構;
建立了一個簡單的框架GIN,并在理論上證明了其表征能力和 WL test一樣強。
總結起來,全文需要回答兩個關鍵性的問題:
機器學習系統設計的概念是指,為了滿足特定要求,針對機器學習系統對軟件體系架構、基礎架構、算法和數據進行定義的過程。雖然現有的系統也可以滿足大部分模型搭建的需求,但我們必須承認:首先,工具空間是不斷革新的;其次,業務需求是不斷變化的;最后,數據分布也是持續更替的。因此,「系統」是很容易過時的。如果不能及時更新,那么出錯、崩潰都是可以預料的。這也是本門課程開設的初衷。
本門課程旨在為現實中的機器學習系統提供一個迭代框架,該框架的目標是構建一個可部署、可信賴、可擴展的系統。首先要考慮的是每個 ML 項目的利益相關者及目標,不同的目標則需要不同的設計選擇,且要考慮如何權衡。
課程涵蓋了從項目界定、數據管理、模型開發、部署、基礎架構、團隊架構到業務分析的所有步驟,在每個步驟中,都會探討不同解決方案的動機、挑戰和局限性。在課程的最后一部分,將會探討機器學習生產生態系統的未來。學生們還將學習關于隱私、公平、安全方面的知識。
學習這門課程的學生應該滿足以下條件:
具備基本的計算機科學原理和技能知識,能夠編寫一般的計算機程序(比如完成了 CS106B / X 等課程);
對機器學習算法有著良好的掌握(比如完成了 CS229、CS230、CS231N、CS224N 等課程);
熟悉至少一個框架,比如 TensorFlow,PyTorch,JAX;
熟悉基本的概率論(比如完成 CS109 或 Stat116 等課程)
鑒于大多數課程都會使用 Python,因此也建議選擇這門課程的學生了解一點 Python 知識。
這門課程沒有教科書,主要依賴于課堂講義和一些閱讀材料。課程視頻都會被錄制保存,目前僅開放給校內學生,暫未決定是否公開發布。
本課程涵蓋了每個專業程序員需要了解的關于算法和數據結構的基本信息,重點是應用程序和Java實現的科學性能分析。第一部分介紹基本的數據結構、排序和搜索算法。第二部分重點介紹圖形和字符串處理算法。
《算法(第四版》是普林斯頓超級大神教授Robert Sedgewick的神作,該書還有配套的MOOC課程,是算法領域經典的參考書。
這本書涵蓋所有程序員必須掌握的50種算法,全面介紹了關于算法和數據結構的必備知識,并特別針對排序、搜索、圖處理和字符串處理進行了論述。第4版具體給出了每位程序員應知應會的50個算法,提供了實際代碼,而且這些Java代碼實現采用了模塊化的編程風格,讀者可以方便地加以改造。
本課程的中文名稱設定為 人工智能系統,主要講解支持人工智能的計算機系統設計,對應的英文課程名稱為 System for AI。本課程中將交替使用一下詞匯:人工智能系統,AI-System 和 System for AI。
近年來人工智能特別是深度學習技術得到了飛速發展,這背后離不開計算機硬件和軟件系統的不斷進步。在可見的未來,人工智能技術的發展仍將依賴于計算機系統和人工智能相結合的共同創新模式。需要注意的是,計算機系統現在正以更大的規模和更高的復雜性來賦能于人工智能,這背后不僅需要更多的系統上的創新,更需要系統性的思維和方法論。與此同時,人工智能也反過來為設計復雜系統提供支持。
我們注意到,現在的大部分人工智能相關的課程,特別是深度學習和機器學習相關課程主要集中在相關理論、算法或者應用,與系統相關的課程并不多見。我們希望人工智能系統這門課能讓人工智能相關教育變得更加全面和深入,以共同促進人工智能與系統交叉人才的培養。
本課程主要為本科生高年級和研究生設計,幫助學生:
完整的了解支持深度學習的計算機系統架構,并通過實際的問題,來學習深度學習完整生命周期下的系統設計。
介紹前沿的系統和人工智能相結合的研究工作,包括AI for Systems and Systems for AI,以幫助高年級的本科生和研究生更好的尋找和定義有意義的研究問題。
從系統研究的角度出發設計實驗課程。通過操作和應用主流和最新的框架、平臺和工具來鼓勵學生動手實現和優化系統模塊,以提高解決實際問題的能力,而不僅僅是了解工具使用。
先修課程: C/C++/Python, 計算機體系結構,算法導論
課程主要包括以下三大模塊:
第一部分,是人工智能的基礎知識和人工智能系統的全棧概述;以及深度學習系統的系統性設計和方法學。
第二部分,為高級課程,包括最前沿的系統和人工智能交叉的研究領域。
第三部分,是與之配套的實驗課程,包括最主流的框架、平臺和工具,以及一系列的實驗項目。
第一部分的內容將集中在基礎知識,而其他兩部分的內容將隨著學術界和工業界的技術進步而動態調整。后兩部分的內容將以模塊化的形式組織,以利于調整或與其他CS的課程(比如編譯原理等)相結合,作為高級講義或者實習項目。
本課程的設計也會借助微軟亞洲研究院在人工智能和系統交叉領域的研究成果和經驗,其中包括微軟及研究院開發的一部分平臺和工具。課程也鼓勵其他學校和老師根據自己的需求添加和調整更多的高級課題,或者其他的實驗。
基礎課程
高階課程
第一節課的重點是分析今天能夠進行并行計算的典型個人計算機中的算法行為,第二節課的重點是今天能夠進行分布式計算的典型公共云中的此類個人計算機集群中的算法行為。我們將從第1節中簡要介紹的基本原理開始,并努力理解過去幾十年來算法的重大突破。并行計算是指在一臺機器上使用多個處理器和共享內存進行計算。并行計算和分布式計算雖然密切相關,但它們都提出了獨特的挑戰——主要是并行計算情況下的共享內存管理和分布式計算情況下的網絡通信開銷最小化。理解并行計算的模型和挑戰是理解分布式計算的基礎。課程內容反映了這一點,首先在并行環境中涵蓋各種經典的、數值的和圖形的算法,然后在分布式環境中涵蓋相同的主題。目的是強調每個設置帶來的獨特挑戰。
//github.com/lamastex/scalable-data-science/blob/master/read/daosu.pdf
人類的視覺系統證明,用極少的樣本就可以學習新的類別;人類不需要一百萬個樣本就能學會區分野外的有毒蘑菇和可食用蘑菇。可以說,這種能力來自于看到了數百萬個其他類別,并將學習到的表現形式轉化為新的類別。本報告將正式介紹機器學習與熱力學之間的聯系,以描述遷移學習中學習表征的質量。我們將討論諸如速率、畸變和分類損失等信息理論泛函如何位于一個凸的,所謂的平衡曲面上。我們規定了在約束條件下穿越該表面的動態過程,例如,一個調制速率和失真以保持分類損失不變的等分類過程。我們將演示這些過程如何完全控制從源數據集到目標數據集的傳輸,并保證最終模型的性能。
計算機科學正在發展,以利用新的硬件,如GPU、TPUs、CPU和大型商品集群。許多子領域,如機器學習和優化,已經調整了它們的算法來處理這樣的集群。
課程主題包括分布式和并行算法: 優化、數值線性代數、機器學習、圖分析、流式算法,以及其他在商用集群中難以擴展的問題。該類將重點分析程序,并使用Apache Spark和TensorFlow實現一些程序。
本課程將分為兩部分: 首先,介紹并行算法的基礎知識和在單多核機器上的運行時分析。其次,我們將介紹在集群機器上運行的分布式算法。
地址: //stanford.edu/~rezab/dao/
主講:
Reza Zadeh是斯坦福大學計算與數學工程學院的客座教授,同時也是Matroid公司的CEO。他的主要工作集中于機器學習理論與應用,分布式計算,以及離散數學。
課程目錄:
【導讀】本課程探討現代人工智能基礎上的概念和算法,深入探討游戲引擎、手寫識別和機器翻譯等技術的思想。通過實踐項目,學生在將圖形搜索算法、分類、優化、強化學習以及其他人工智能和機器學習的主題融入到他們自己的Python程序中,從而獲得圖形搜索算法、分類、優化和強化學習背后的理論知識。課程結束時,學生將獲得機器學習庫的經驗,以及人工智能原理的知識,使他們能夠設計自己的智能系統。
目錄
講師簡介
David J. Malan是Gordon McKay工程與應用科學學院的計算機科學實踐教授,也是哈佛大學教育研究生院的教員。他于1999年、2004年和2007年分別獲得哈佛大學計算機科學學士學位、碩士學位和博士學位。他教授計算機科學50課程,也被稱為CS50,這是哈佛大學最大的課程,耶魯大學最大的課程之一,也是edX最大的MOOC課程,注冊人數超過150萬。他還在哈佛商學院、哈佛法學院、哈佛延伸學院和哈佛暑期學院任教。他所有的課程都是免費開放課程。
我是布賴恩,哈佛大學繼續教育學院的資深導師。我于2019年從哈佛大學畢業,獲得了計算機科學和語言學學位。我目前在哈佛大學計算機科學導論課程CS50的團隊中工作,在那里我專注于教學、課程開發、拓展和軟件工具。我也是通過edX、哈佛擴展學院和哈佛暑期學院提供的Python人工智能入門和Python和JavaScript Web編程的講師。 我曾與許多其他計算機科學課程合作過,包括CS51,哈佛計算機抽象與設計課程,CS124,哈佛算法導論,以及CS100,哈佛數字人文領域的軟件工程課程。除了計算機科學教育,我還在Palantir做過軟件工程實習生,在哈佛深紅報做過新聞主管和數字戰略家,我還在 3P Speech和全國演講與辯論協會工作過。我對計算、語言和教育感興趣。
個人鏈接:
部分PPT: