現在多工學習根據資料的收集方式可以粗略地被分為兩種,乙個是集中化的計算方法,即假定資料被事先收集到乙個中心節點上然後再執行模型, 大多數基於神經網路的多工學習應用,比如cv和nlp,主要都用的這種方法[1][2][3][4]。
另外還有一種是分布式的計算方法,這種方法假定異構的(heterogeneous)資料分別由各個任務分別以分布式的方式收集。這種方法常常被建模為在多智慧型體(multi-agent)系統(比如移動裝置、無人駕駛汽車、智慧型城市等)中的分布式學習。這種方式通常有兩個假定,一是各任務節點和中心節點之間的網路通訊代價很高,二是資料只能在任務節點存放,不能拷貝到中心節點(由於私隱性和通訊代價問題)。近年來由於聯邦學習的火熱,該方法得到了很多的重視。
在分布式多工學習中,傳統的處理方式[5][6][7]仍然是多個任務節點分攤任務,然後將資訊交給主節點彙總(比如在分布式近端對映演算法中,任務節點進行梯度計算,主節點負責近端對映)。
近年來,隨著去中心化優化演算法的研究發展,越來越朝著去中心化的路線發展[8][9][10],也就是盡量滿足使任務節點直接相互通訊,而減少任務節點與主節點的通訊。同時,隨著聯邦學習的發展,也越來越注重聯邦學習中的經典問題,比如拜占庭容錯等。
我們前面提到,分布式多工學習朝著聯邦學習的路線發展。但讀者其實聯邦學習和多工學習原本是很不一樣的。在標準的聯邦學習中,每個節點任務不共享資料,但是可以共享引數,以此聯合訓練出各乙個全域性的模型。也就是說,聯邦學習下每個節點的任務是一樣的。而多工學習是要針對不同的任務協同訓練出多個不同的模型。
但是,為什麼分布式多工學習會走向聯邦學習呢?其實,不是分布式多工選擇了聯邦學習,而是聯邦學習選擇了分布式多工學習。 原來,聯邦學習由於資料不獨立同分布,每個模型訓練出的區域性模型差異會很大,就會使得構建乙個全域性的、通用的模型難度很大。比如同樣乙個下乙個單詞**的任務,同樣給定"i love eating,",但對於下乙個單詞每個client會給出不同的答案,這也是現在有人提出聯邦多工學習的原因)。
為了解決聯邦學習中資料不獨立同分布的的問題,有**[11][12]提出不求訓練出乙個全域性的模型,使每個節點訓練各不相同的模型這樣一種訓練方式,這就被冠名為聯邦多工學習了。
此二者非常相似,但是聯邦多工學習可以看做是分布式多工學習在特殊條件下的限制版,即聯邦多工學習中可能更關注節點的容錯性,以及節點資料集隱私(節點之間的資料不能共享),單純的分布式多工學習一般沒這幾個需求。此外還有一點就是,按照最初的傳統聯邦多工學習一般是有中心節點的(如**[11]中所說),而分布式多工學習是可以去中心化的(如**[10]中所說)。但是也有**把聯邦多工學習也去中心化了([12]),所以這個應該算不上主要依據。
我的研究現在關注的是分布式/聯邦的多工學習方法。而分布式的多工學習方法其思想常常**於基於正則化的多工學習,這是一種非神經網路的多工學習方法,已經得到了充分的研究,大家可以參見我的部落格《多工學習速覽》
回顧一下這種方法。
分布式學習
負載均衡 nginx 高效能 高併發的web伺服器 功能包括負載均衡 反向 靜態內容快取 訪問控制 工作在應用層 lvs linux virtual server,基於集群技術和linux作業系統實現乙個高效能 高可用的伺服器 工作在網路層 webserver tomcat,apache,jboss...
分布式學習總結
最近要忙著找工作了,為了準備面試,就發奮圖強的看了和分布式相關的書籍,對知識點進行了乙個總結,總結如下 1.分布式系統是將服務分布在不同的機器上,或者是在同一臺機器上啟動多個程序或者執行緒來應對不斷變化的變化的客戶端數量,所有分布式系統應該應該具有可擴充套件性,由於系統涉及到多個程序和執行緒之間的相...
分布式學習之路
分布式架構簡介 一致性協議 chubby與paxos zookeeper與paxos zookeeper使用 cli zookeeper客戶端 zookeeper應用場景 zookeeper在大型分布式系統中的應用 zookeeper系統模型 zookeeper序列化及通訊協議 zookeeper客...