1. 程式人生 > >書單 | 《分散式機器學習:演算法、理論與實踐》——理論、方法與實踐的全面彙總(文末有福利)...

書單 | 《分散式機器學習:演算法、理論與實踐》——理論、方法與實踐的全面彙總(文末有福利)...

640?

編者按:人工智慧和大資料時代,分散式機器學習解決了大量最具挑戰性的問題。為了幫助機器學習從業者更加深入地瞭解分散式機器學習領域的基本框架、典型演算法、理論和系統,幫助大家在這個領域打下紮實基礎,微軟亞洲研究院機器學習核心團隊撰寫《分散式機器學習:演算法、理論與實踐》一書,全面介紹了分散式機器學習的現狀,深入分析其中的核心技術問題,並且討論該領域未來的發展方向。

本書由鄂維南院士和周志華教授傾心撰寫推薦序,現已在京東上線,並躋身新書銷量榜前十名,購買地址請戳“閱讀原文”。

640?wx_fmt=jpeg

周志華推薦序言

分散式機器學習並非分散式處理技術與機器學習的簡單結合。一方面,它必須考慮機器學習模型構成與演算法流程本身的特點,否則分散式處理的結果可能失之毫厘謬以千里;另一方面,機器學習內含的演算法隨機性、引數冗餘性等,又會帶來一般分散式處理過程所不具備的、宜於專門利用的便利。

值得一提的是,市面上關於機器學習的書籍已有許多,但是分散式機器學習的專門書籍還頗少見。

劉鐵巖博士是機器學習與資訊檢索領域的國際著名專家,帶領的微軟亞洲研究院機器學習研究團隊成果斐然。此次他們基於分散式機器學習方面的豐富經驗推出《機器學習:分散式演算法、理論與實踐》一書,將是希望學習和了解分散式機器學習的中文讀者的福音,必將有力促進相關技術在我國的推廣和發展。

鄂維南推薦序言

最近幾年,機器學習在許多領域取得了前所未有的成功,由此也徹底改變了人工智慧的發展方向,引發了大資料時代的到來。其中最富有挑戰性的問題是由分散式機器學習解決的。所以,要了解機器學習究竟能夠帶來什麼樣前所未有的新機遇、新突破,就必須瞭解分散式機器學習。


相比較而言,機器學習這個領域本身是比較單純的領域。其模型和演算法問題基本上都可以被看成是純粹的應用數學問題。而分散式機器學習則不然。它更像是一個系統工程,涉及到資料、模型、演算法、通訊、硬體等許多方面。這更增加了系統瞭解這個領域的難度。劉鐵巖博士和他的合作者的這本書,從理論、演算法和實踐等多個方面對這個新的重要學科給出了系統、深刻的討論。這無疑是雪中送炭。這樣的書籍在現有文獻中還難以找到。對我個人而言,這也是我早就關注,但一直缺乏系統瞭解的領域。所以看了這本書,對我也是受益匪淺。相信對眾多關注機器學習的工作人員和學生,這也是一本難得的好書。

內容簡介

本書的目的,是給讀者全面展示分散式機器學習的現狀,深入分析其中的核心技術問題,並且討論該領域未來發展的方向。本書既可以作為研究生從事分散式機器學習方向研究的參考文獻,也可以作為人工智慧從業者進行演算法選擇和系統設計的工具書。

全書共12章。第1章是緒論,向大家展示分散式機器學習這個領域的全景。第2章介紹機器學習的基礎知識,其中涉及到的基本概念、模型和理論,會為讀者在後續章節中更好地理解分散式機器學習的各項技術奠定基礎。第3章到第8章是本書的核心部分,向大家細緻地講解分散式機器學習的框架,及其各個功能模組。其中第3章對整個分散式機器學習框架做綜述,而第4章到第8章則針對其中的資料與模型劃分模組、單機優化模組、通訊模組、資料與模型聚合模組分別加以介紹,展示每個模組的不同選項並討論其長處與短板。接下來的三個章節,是對前序內容的總結與昇華。其中第9章介紹了由分散式機器學習框架中不同選項所組合出來的各式各樣的分散式機器學習演算法,第10章討論了這些演算法的理論性質(例如收斂性),第11章則介紹幾個主流的分散式機器學習系統(包括Spark MLlib,Multiverso引數伺服器系統,和TensorFlow資料流系統)。最後的第12章是全書的結語,在對全書內容進行簡要總結之後,著重討論分散式機器學習這個領域未來的發展方向。

精彩章節節選

3.1 大資料與大模型的挑戰


大規模訓練資料的出現為訓練大模型提供了物質基礎,因此近年來湧現出了很多大規模的機器學習模型。這些模型動輒可以擁有幾百萬、甚至幾十億個引數。一方面,這些大規模機器學習模型具備超強的表達能力,可以幫助人們解決很多難度非常大的學習問題;而另一方面,它們也有自己的弊端:非常容易過擬合(也就是在訓練集上取得非常好的效果,然而在未知測試資料上則表現得無法令人滿意),因此倒逼訓練資料的規模;結果無可避免地導致大資料和大模型的雙重挑戰,從而對計算能力和儲存容量都提出新的要求。計算複雜度高,導致單機訓練可能會消耗無法接受的時長,因而不得不使用並行度更高的處理器、或者計算機叢集來完成訓練任務;儲存容量大,導致單機無法滿足需求,不得不使用分散式儲存。在這個背景下,湧現出很多新的軟、硬體技術,包括圖形處理器(GPU)的興起和大規模計算機叢集的廣泛使用。

GPU和CPU相比,有更強的並行度和計算能力,可以使複雜的訓練過程變得更加高效。

640?wx_fmt=jpeg

圖3.1  GPU在各種計算領域的突出表現(出處:英偉達官網)

GPU的運算能力雖然很強,但是當訓練資料更大、計算複雜度更高時,單塊GPU還是會捉襟見肘。這時就需要利用分散式叢集,尤其是GPU叢集來完成訓練任務。這使得亞馬遜AWS、微軟Azure、谷歌Google Cloud等雲端計算公司獲得了巨大的發展機遇。之前,雲端計算服務的主要目的是解決企業的IT管理問題——將IT集中化、服務化;而近年來隨著人工智慧的飛速發展,大規模機器學習和科學計算越來越多地成為了雲端計算上的典型任務。比如AWS推出的P2虛擬機器,包含1-16個GPU的配置選擇;而Azure上的N系列虛擬機器,也提供了1-4塊GPU的配置選項;人們開始利用它們來實現人工智慧模型的訓練。與此同時,很多大型公司和學術機構開始建立屬於自己的私有GPU叢集。在這些大規模計算資源的支援下,如今很多前沿的學術研究和高階人工智慧產品背後,都在使用包含成百上千塊卡的GPU叢集進行運算。

3.2 分散式機器學習的基本流程

之所以需要使用分散式機器學習,大體有三種情形:一是計算量太大,二是訓練資料太多,三是模型規模太大。對於計算量太大的情形,可以採取基於共享記憶體(或虛擬記憶體)的多執行緒或多機並行運算。對於訓練資料太多的情形,需要將資料進行劃分,並分配到多個工作節點上進行訓練,這樣每個工作節點的區域性資料都在容限之內。每個工作節點會根據區域性資料訓練出一個子模型,並且會按照一定的規律和其他工作節點進行通訊(通訊的內容主要是子模型引數或者引數更新),以保證最終可以有效整合來自各個工作節點的訓練結果得到全域性的機器學習模型。對於模型規模太大的情形,則需要對模型進行劃分,並且分配到不同的工作節點上進行訓練。與資料並行不同,在模型並行的框架下各個子模型之間的依賴關係非常強,因為某個子模型的輸出可能是另外一個子模型的輸入,如果不進行中間計算結果的通訊,則無法完成整個模型訓練。因此一般而言,模型並行對通訊的要求較高。讀者請注意,以上三種分散式機器學習的情形在實際中通常是摻雜在一起發生的。比如,我們遇到的實際問題可能訓練資料也多、模型也大、計算量也大。所以有時候不太容易清楚地劃分這些不同情形的邊界。如果一定要區分它們的佔比,到目前為止,資料並行還是最常見的情形,因為訓練資料量過大導致訓練速度慢仍是分散式機器學習領域的主要矛盾。因此在本書行文過程中,我們將用大部分篇幅來講解資料並行時需要解決的一些問題,同時也會盡量覆蓋與計算並行和模型並行有關的問題。

無論是上面提到的哪種情形,分散式機器學習都可以用圖3.2加以描述。它包含以下幾個主要模組:資料與模型劃分模組、單機優化模組、通訊模組、以及資料與模型聚合模組。這些模組的具體實現和相互關係可能因不同演算法和系統而異,但一些基本的原理是共通的。接下來我們會對這些模組加以簡要綜述。

640?wx_fmt=jpeg

圖3.2  分散式機器學習系統框架

9.4.2 同步、非同步的融合

同步和非同步演算法有各自的優缺點和適用場景。如果可以把它們結合起來應用,取長補短,或許可以更好地達到收斂速度與收斂精度的平衡。例如:對於機器數目很多、本地工作節點負載不均衡的叢集,我們可以考慮按照工作節點的運算速度和網路連線情況進行聚類分組,將效能相近的節點分為一組。由於組內的工作節點效能相近,可以採用同步並行的方式進行訓練;而由於各組間運算速度差異大,更適合採用非同步並行的方式進行訓練。這種混合並行方法既不會讓執行速度慢的本地工作節點過度拖累全域性訓練速度,也不會引入過大的非同步延遲從而影響收斂精度。圖9.10展示了一個能夠完成這種混合並行的原型系統框架。

640?wx_fmt=jpeg

圖9.10 有分組的並行機器學習系統

混合並行演算法的核心挑戰是如何找到一種合理的工作節點分組方式。對於分組方式的簡單暴力搜尋是不可行的,因為組合數非常大。比如對於16個工作節點組成的叢集,不同的分組情況有10,480,142,147種。一種比較實用的方法是對工作節點按照某種指標進行聚類,再按照聚類結果,採用組內同步、組間非同步的方式來規劃分散式機器學習系統的執行邏輯。不過,顯而易見,當採取不同的指標時, 聚類的結果會有很大差別。為了取得更好的聚類效果,我們可以利用另外一個機器學習模型,也就是採取所謂元學習(meta learning或learning to learn)的思路。

圖9.11給出了一個可行的元學習系統流程:首先針對工作節點和執行的學習任務提取一系列的特徵。工作節點的特徵可以包括CPU/GPU的計算效能、記憶體、硬碟的資訊,以及工作節點兩兩之間的網路連線情況等;學習任務的特徵可以包括資料的維度,模型的大小和結構等。我們可以首先利用工作節點的特徵,採用層次聚類的方法得到若干候選分組。然後用這些候選分組在抽樣的資料集上進行試訓練,得到分散式訓練的速度(比如到達特定的精度所需要的時間)。而後針對這些分組和學習任務的特徵,訓練一個預測優化速度的神經網路模型。利用這個模型對於未知的候選分組進行打分,最終找到這個任務上最好的分組。

640?wx_fmt=jpeg

圖9.11 一種可行的混合並行選取框架

作者介紹

640?wx_fmt=jpeg

劉鐵巖,微軟亞洲研究院副院長。劉博士的先鋒性研究促進了機器學習與資訊檢索之間的融合,被國際學術界公認為“排序學習”領域的代表人物。近年來他在深度學習、分散式學習、強化學習等方面也頗有建樹,發表論文200餘篇,被引用近兩萬次。多次獲得最佳論文獎、最高引用論文獎、Springer十大暢銷華人作者、Elsevier 最高引中國學者等。受邀擔任了包括SIGIR、WWW、KDD、ICML、NeurIPS、AAAI、ACL在內頂級國際會議的程式委員會主席或領域主席和多家國際學術期刊副主編。他被聘為卡內基-梅隆大學(CMU)客座教授、諾丁漢大學榮譽教授、中國科技大學教授、博士生導師;他被評為國際電子電氣工程師學會(IEEE)會士,國際計算機學會(ACM)傑出會員。他擔任了中國計算機學會青工委副主任,中文資訊學會資訊檢索專委會副主任,中國雲體系創新戰略聯盟常務理事。他的團隊釋出了LightLDA、LightGBM、Multiverso等知名的機器學習開源專案,並且為微軟CNTK專案提供了分散式訓練的解決方案,他的團隊所參與的開源專案在Github上已累計獲得2萬餘顆星。

640?wx_fmt=png

陳薇,微軟亞洲研究院機器學習組主管研究員,研究機器學習各個分支的理論解釋和演算法改進,尤其關注深度學習、分散式機器學習、強化學習、博弈機器學習、排序學習等。陳薇於2011年於中國科學院數學與系統科學研究院獲得博士學位,同年加入微軟亞洲研究院,負責機器學習理論專案,先後在NeurIPS、ICML、AAAI、IJCAI等相關領域頂級國際會議和期刊上發表文章。

640?wx_fmt=jpeg

王太峰,螞蟻金服人工智慧部總監、資深演算法專家。他在螞蟻金服負責AI演算法元件建設,包括文字理解,影象理解,線上學習,強化學習等等,演算法工作服務於螞蟻金服的支付,國際,保險等多條業務線。在加入螞蟻之前他在微軟亞洲研究院工作11年,任主管研究員,他的研究方向包括大規模機器學習,資料探勘,計算廣告學等等。他在國際頂級的機器學習會議上發表近20篇的論文和4次大規模機器學習專題講座,並被多次邀請為各個會議程式委員。他目前還是中國人工智慧開源軟體發展聯盟的副祕書長,他在大規模機器學習工具開源方面也做出過很多貢獻,在微軟期間主持開發過DMTK的開源專案,在Github上獲得綜述超過8千的點贊,獲得廣泛的好評。

640?wx_fmt=jpeg

高飛,微軟亞洲研究院副研究員,主要從事分散式機器學習和深度學習的研究工作,並在國際會議上發表多篇論文。2014年設計開發了當時規模最大的主題模型演算法和系統LightLDA。他還開發了一系列分散式機器學習系統,並通過微軟分散式機器學習工具包(DMTK)開源在Github上。

粉絲福利

歡迎大家在留言區留言,分享你在分散式機器學習領域的見解,留言點贊數前3名的小夥伴將分別獲得劉鐵巖博士親筆簽名的贈書一本

留言截止時間:2018年11月28日

活動最終解釋權歸微軟亞洲研究院所有

本書已經在京東上架,點選“閱讀原文”,直達購買頁面。

你也許還想看

640.png?

感謝你關注“微軟研究院AI頭條”,我們期待你的留言和投稿,共建交流平臺。來稿請寄:[email protected]

640.jpeg?

相關推薦

| 《分散式機器學習演算法理論實踐》——理論方法實踐全面彙總福利...

編者按:人工智慧和大資料時代,分散式機器學習解決了大量最具挑戰性的問題。為了幫助機器學習從業者更

【高併發】億級流量場景下如何實現分散式限流?看完我徹底懂了!!福利

## 寫在前面 > 在網際網路應用中,高併發系統會面臨一個重大的挑戰,那就是大量流高併發訪問,比如:天貓的雙十一、京東618、秒殺、搶購促銷等,這些都是典型的大流量高併發場景。關於秒殺,小夥伴們可以參見我的另一篇文章《[【高併發】高併發秒殺系統架構解密,不是所有的秒殺都是秒殺!](https://mp

用Python Scikit-learn 實現機器學習十大演算法--樸素貝葉斯演算法程式碼

  1,前言 很久不發文章,主要是Copy別人的總感覺有些不爽,所以整理些乾貨,希望相互學習吧。不囉嗦,進入主題吧,本文主要時說的為樸素貝葉斯分類演算法。與邏輯迴歸,決策樹一樣,是較為廣泛使用的有監督分類演算法,簡單且易於理解(號稱十大資料探勘演算法中最簡單的演算法)。但

機器學習演算法模型效能中的偏差方差概念

什麼時候模型的複雜程度該停止? 模型越複雜,單次預測出的結果與真實結果的偏差(bias)就越小。但很容易引發過擬合。 模型越簡單,預測不同資料,預測的準確性差別越小。預測不同資料,所得到的準確性構成序列,序列的方差(variance)也就越小。

分散式機器學習如何快速從Python棧過渡到Scala棧

首先介紹下我的情況和需求,如果你跟我類似,那麼這篇文章將很有幫助; 我之前的技術棧主要是**Java**、**Python**,機器學習方面主要用到是**pandas**、**numpy**、**sklearn**、**scipy**、**matplotlib**等等,因為工作需要使用spark,所以理所應

機器學習一步步教你理解反向傳播方法

神經網絡 方法 數學 https 以及 看到了 兩個 簡單的 down http://www.360doc.com/content/17/0209/17/10724725_627833018.shtml 數學完全看不懂 看到了這篇通過示例給出反向傳播的博文A Step by

學習倫理黑客搭建滲透測試實驗環境彩蛋

本文以WindowsXP為例,使用VirtualBox搭建輕便的滲透實驗環境。下面的實驗環境搭建以我的Mac筆記本作為物理主機,若和基於其它物理主機的環境搭建存在出入請不要過於驚訝。 Step1:下載VirtualBox和WindowsXP映象

在北京開發三年月薪16k,如何在第四年要到30k以上福利!!!

工作三年現況自述 半道出家的程式設計師,從不偽造簡歷,起點低,三年時才16k月薪*14在北京外包公司,認為混的比較差。 當然補充一句,不要拿應屆生的所謂待遇來比,不是你比不起,而是這麼比沒意義,應屆生接觸了四年計算機相關領域,你到現在接觸這個行業也不到四年,

阿里社招面試如何準備?談談對於Java程式猿學習中各個階段的建議,福利

引言 其實本來真的沒打算寫這篇文章,主要是LZ得記憶力不是很好,不像一些記憶力強的人,面試完以後,幾乎能把自己和麵試官的對話都給記下來。LZ自己當初面試完以後,除了記住一些聊過的知識點以外,具體的內容基本上忘得一乾二淨,所以寫這篇文章其實是很有難度的。 但是,最近問LZ的

推薦一本分散式服務架構方面的好書彩蛋

講解高可用架構核心:可伸縮與可擴充套件,詳解分散式發號器訊息佇列框架、資料庫分庫分表、快取、El

C# QueueRabbitMQ的愛恨情仇附原始碼QMQ訊息佇列簡單應用

首先我們簡單瞭解一下什麼堆、棧、佇列。 堆是在程式執行時,而不是在程式編譯時,申請某個大小的記憶體空間。即動態分配記憶體,對其訪問和對一般記憶體的訪問沒有區別。 棧就是一個容器,後放進去的先拿出來,它下面本來有的東西要等它出來之後才能出來。(先進後出or後進先出) 佇列只能在隊頭做刪除操作,在隊尾做插入操作.

C# QueueRabbitMQ的愛恨情仇附原始碼QMQ訊息佇列簡單應用

上一章我們講了佇列( Queue),這一章我們講Message Queue訊息佇列,簡稱MQ。 定義:   MQ是MessageQueue,訊息佇列的簡稱(是流行的開源訊息佇列系統,利用erlang語言開發)。MQ是一種應用程式對應用程式的通訊方法。 應用程式通過讀寫入隊和出隊的訊息來通訊,無

這個秋季過關斬將—設計模式,分散式,多執行緒彩蛋

一、前言 今天為什麼要談論這個話題暱?想必大家都知道了,又到一年的中跳槽季了,肯定有一些小夥伴寂寞難耐,想出去搞事情了。在此,我丟擲三個詞,這三詞應該歸屬面試最熱詞的範疇了,這是我自身體會及從各個同行公認的。下面我簡單概述一下,希望對大夥有所幫助。 二、設計模式 概念 設計模式(Design Patt

分散式機器學習平臺大比拼SparkPMLSTensorFlowMXNet

  本論文從分散式系統的角度開展針對當前一些機器學習平臺的研究,綜述了這些平臺所使用的架構設計,對這些平臺在通訊和控制上的瓶頸、容錯性和開發難度進行分析和對比,並對分散式機器學習平臺的未來研究工作提出了一些建議。文中的工作由 Murat Demirbas 教授與他的研究生 Kuo Zhang 和 Salem

斯坦福大學公開課機器學習 advice for applying machine learning | regularization and bais/variance機器學習中方差和偏差如何相互影響以及和算法的正則化之間的相互關系

交叉 來講 相對 同時 test 如果 開始 遞增 相互 算法正則化可以有效地防止過擬合, 但正則化跟算法的偏差和方差又有什麽關系呢?下面主要討論一下方差和偏差兩者之間是如何相互影響的、以及和算法的正則化之間的相互關系 假如我們要對高階的多項式進行擬合,為了防止過擬合現象

斯坦福大學公開課機器學習 advice for applying machine learning | deciding what to try next(revisited)針對高偏差高方差問題的解決方法以及隱藏層數的選擇

ice 簡單 pos .com img 想要 技術 分割 就是 針對高偏差、高方差問題的解決方法: 1、解決高方差問題的方案:增大訓練樣本量、縮小特征量、增大lambda值 2、解決高偏差問題的方案:增大特征量、增加多項式特征(比如x1*x2,x1的平方等等)、減少la

機器學習模型泛化L1L2 和彈性網絡

如果 開拓 最優解 曲線 方法 通過 機器學習 功能 都是 一、嶺回歸和 LASSO 回歸的推導過程 1)嶺回歸和LASSO回歸都是解決模型訓練過程中的過擬合問題 具體操作:在原始的損失函數後添加正則項,來盡量的減小模型學習到的 θ 的大小,使得模型的泛化能力更強;

機器學習評價分類結果實現混淆矩陣精準率召回率

test set 目的 mod 二分 參數 nbsp return try 一、實例  1)構造極度偏差的數據 import numpy as np from sklearn import datasets digits = datasets.load_digits

機器學習SVMscikit-learn 中的 RBFRBF 中的超參數 γ

import colors 機器 class 核函數 RoCE caf 情況 方差 一、高斯核函數、高斯函數 μ:期望值,均值,樣本平均數;(決定告訴函數中心軸的位置:x = μ) σ2:方差;(度量隨機樣本和平均值之間的偏離程度:, 為總體方差, 為變量, 為總體

機器學習K近鄰演算法,kd樹

https://www.cnblogs.com/eyeszjwang/articles/2429382.html kd樹詳解 https://blog.csdn.net/v_JULY_v/article/details/8203674 一、K-近鄰演算法(KNN)概述