如何快速使用大規(guī)模機器學(xué)習(xí)的核心技術(shù)?
過去兩年,機器學(xué)習(xí)書寫了一卷強大的成長史,無論你是否真的覺察,它都是如此直接且普遍地在我們的生活中體現(xiàn)價值:客服機器人、垃圾郵件過濾、人臉識別、語音識別、個性化推薦……機器學(xué)習(xí)和人的洞察力這對組合正逐漸滲透到各行各業(yè),使我們在面對這些冷冰冰的現(xiàn)代設(shè)備時,享受到靈活、智能、且越來越富人情味兒的服務(wù)。
本文引用地址:http://www.ex-cimer.com/article/201602/287461.htm的確,神經(jīng)網(wǎng)絡(luò)、人工智能和機器學(xué)習(xí)沒什么新穎的,這些算法早在幾十年前就存在。但為什么這瓶老酒直到最近,才發(fā)酵出勢不可擋的香氣呢?數(shù)十億用戶每天行走于互聯(lián)網(wǎng)中,面對這巨大的行為數(shù)據(jù)體量,傳統(tǒng)統(tǒng)計分析方法已經(jīng)無力招架。圍繞著數(shù)據(jù)和工具發(fā)生的變化,可擴展的計算能力在急劇上升,這些都推動著機器學(xué)習(xí)以前所未有的方式大步向前。
除此之外,面向機器學(xué)習(xí)的可用框架也迎來了爆發(fā)式增長。巨頭們紛紛將最為復(fù)雜的技術(shù)從機器學(xué)習(xí)中抽象出來,開源給開發(fā)者和學(xué)術(shù)研究人員,在幫助更多人的同時,使自身技術(shù)方案不斷得到完善和進步。微軟也如是。
去年11月,微軟亞洲研究院將分布式機器學(xué)習(xí)工具包(DMTK)通過GitHub開源。隨著某些應(yīng)用場景下數(shù)據(jù)量越來越大,分布式機器學(xué)習(xí)技術(shù)的重要性日益顯現(xiàn)。但將大量設(shè)備匯聚起來并開發(fā)出能夠順利跨越各設(shè)備運行的機器學(xué)習(xí)應(yīng)用絕非易事。大規(guī)模機器學(xué)習(xí)技術(shù)的挑戰(zhàn)在哪里?優(yōu)勢又是什么?對于開發(fā)者,怎樣結(jié)合實際業(yè)務(wù)需求更好地使用DMTK?帶著這些問題,51CTO記者走進微軟亞洲研究院向DMTK團隊研究員——微軟亞洲研究院主管研究員王太峰拋出了我們的疑問。
微軟亞洲研究院主管研究員 王太峰
DMTK是什么
王太峰介紹,DMTK由一個服務(wù)于分布式機器學(xué)習(xí)的框架和一組分布式機器學(xué)習(xí)算法構(gòu)成,是一個將機器學(xué)習(xí)算法應(yīng)用在大數(shù)據(jù)上的工具包。DMTK目前聚焦于解決Offline-training的并行化。除了分布式學(xué)習(xí)框架,它還包括了主題模型和詞向量學(xué)習(xí)的算法,這些算法可以應(yīng)用于自然語言處理方面,比如文本分類與聚類、話題識別以及情感分析等。為了適應(yīng)不同的集群環(huán)境,DMTK框架支持兩種進程間的通信機制:MPI和ZMQ。應(yīng)用程序端不需要修改任何代碼就能夠在這兩種方式之間切換。DMTK支持Windows和Linux兩種操作系統(tǒng)。目前主要支持C和C++,之后會考慮到一些高級語言的升級,比如Python。
在實現(xiàn)算法的過程中DMTK團隊看到,用一個框架來將這些算法很容易地并行到大量機器上來解決大規(guī)模機器學(xué)習(xí)問題,是非常必要的。因此,微軟將DMTK框架和幾個例子開源出來,一方面與開發(fā)者和學(xué)術(shù)研究人員共同分享技術(shù),另一方面希望通過大家貢獻改進意見,并將更多的算法添加到這套框架中來。
如何應(yīng)對大規(guī)模機器學(xué)習(xí)的挑戰(zhàn)
在被問及DMTK如何解決大規(guī)模機器學(xué)習(xí)的挑戰(zhàn)時,王太峰主要從如何處理大規(guī)模數(shù)據(jù)和訓(xùn)練大規(guī)模模型兩方面做了回答。
1. 大規(guī)模數(shù)據(jù):基于DMTK我們可以利用多個機器一同完成處理,每個機器處理一部分數(shù)據(jù)。在多個機器中同時存在多個參數(shù)的副本,它們獨立基于本地數(shù)據(jù)產(chǎn)生對參數(shù)的更新,并在參數(shù)服務(wù)器端進行參數(shù)更新的合并。通過這種數(shù)據(jù)并行的方式,利用多個機器同時處理大規(guī)模的數(shù)據(jù),大大加速了學(xué)習(xí)過程。即使是每臺機器處理相對小的數(shù)據(jù)分塊,但是有時候模型參數(shù)非常多,以至于基于全部參數(shù)在內(nèi)存中更新的算法變得不可行。
2. 大規(guī)模模型:在大規(guī)模模型中,學(xué)習(xí)參數(shù)在單個機器中裝不下。就這個問題,DMTK可以從兩個方面解決,首先DMTK框架中的參數(shù)服務(wù)器本身即為分布式,所以可利用很多機器分布式存儲模型。其次,在單個機器進行本地學(xué)習(xí)的過程中,通過設(shè)計精巧的分段學(xué)習(xí)方法,使得參數(shù)更新分批次完成。即使模型再大,也能保證本地參數(shù)學(xué)習(xí)順利完成。
評論