99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀Hadoop 2.0 上深度學(xué)習(xí)的解決方案_數(shù)據(jù)分析師
Hadoop 2.0 上深度學(xué)習(xí)的解決方案_數(shù)據(jù)分析師
2015-01-20
收藏

Hadoop 2.0 上深度學(xué)習(xí)的解決方案_數(shù)據(jù)分析師


波士頓的 數(shù)據(jù)科學(xué)團(tuán)隊(duì)正在利用尖端工具和算法來優(yōu)化商業(yè)活動(dòng),且這些商業(yè)活動(dòng)是基于對(duì)用戶數(shù)據(jù)中的深刻透析。數(shù)據(jù)科學(xué)大量使用機(jī)器算法,可以幫助我們?cè)跀?shù)據(jù)中識(shí)別和利用模式。從互聯(lián)網(wǎng)大規(guī)模數(shù)據(jù)中獲取透析是一項(xiàng)具有挑戰(zhàn)性的任務(wù),因此,能大規(guī)模運(yùn)行算法是一個(gè)至關(guān)重要的需求。伴隨著數(shù)據(jù)的爆炸性增長(zhǎng)和成千上萬的機(jī)器集群,我們需要使算法可以適應(yīng)在如此分布的環(huán)境下運(yùn)行。在通用的分布式計(jì)算環(huán)境中運(yùn)行機(jī)器學(xué)習(xí)算法具有一系列的挑戰(zhàn)。

\

這里,我們探討一下如何在一個(gè)Hadoop集群中實(shí)現(xiàn)和部署深度學(xué)習(xí)(一個(gè)尖端機(jī)器學(xué)習(xí)框架)。對(duì)于算法是如何適應(yīng)運(yùn)行在一個(gè)分布式環(huán)境中,我們提供了具體的細(xì)節(jié)。我們也給出了算法在標(biāo)準(zhǔn)數(shù)據(jù)集上的運(yùn)行結(jié)果。

深度信任網(wǎng)絡(luò)

深度信任網(wǎng)絡(luò)(Deep Belief Networks, DBN)是在貪婪和無監(jiān)督的條件下通過迭代和訓(xùn)練受限的玻耳茲曼機(jī)(Boltzmann Machines, RMB)而得到的圖形模型。通過對(duì)如下可被觀察的維度x和隱藏層hk之間相互連接的分布式進(jìn)行建模,DBN被訓(xùn)練來提取訓(xùn)練數(shù)據(jù)的深層透析。

 

\

 

表達(dá)式1:DBN分布式

在下圖中,輸入層和隱藏層的關(guān)系是可以被觀察到的。從高層次來看,第一層被作為RBM來訓(xùn)練,為原始輸入x進(jìn)行建模。輸入的數(shù)據(jù)是個(gè)稀疏二進(jìn)制維度,表明數(shù)據(jù)將會(huì)被分類,比如,一個(gè)二進(jìn)制的數(shù)字圖像。后續(xù)層把前面的層傳遞過來的數(shù)據(jù)(樣本或activations)當(dāng)作訓(xùn)練示例使用。層數(shù)可以通過經(jīng)驗(yàn)來決定,以此來獲得更好的模型性能,DBN支持任意多的層數(shù)。

 

\

 

圖1:DBN層次

下面的代碼片段表明了進(jìn)入RBM的訓(xùn)練。在提供給RBM的輸入數(shù)據(jù)中,有多個(gè)預(yù)定義的時(shí)間點(diǎn)。輸入數(shù)據(jù)被分成小批量數(shù)據(jù),為各個(gè)層計(jì)算weights、activations和deltas。

 

\

 

在所有的層都被訓(xùn)練以后,深度網(wǎng)絡(luò)的參數(shù)調(diào)整使用受監(jiān)督的訓(xùn)練標(biāo)準(zhǔn)。受監(jiān)督的訓(xùn)練標(biāo)準(zhǔn),比如,可以作為一個(gè)分類問題來設(shè)計(jì),允許使用深度網(wǎng)絡(luò)來解決分類問題。更復(fù)雜的受監(jiān)督的標(biāo)準(zhǔn)可以用來提供如情景解讀之類的有趣的結(jié)果,比如解釋圖片里展示的東西是什么。

基礎(chǔ)構(gòu)造

深度學(xué)習(xí)受到了廣泛的關(guān)注,不僅僅是因?yàn)樗梢缘贸霰绕渌恍W(xué)習(xí)算法更優(yōu)異的結(jié)果,也因?yàn)樗梢栽诜植际皆O(shè)備上運(yùn)行,允許處理大規(guī)模的數(shù)據(jù)集。深度網(wǎng)絡(luò)可以在兩個(gè)級(jí)別進(jìn)行并行、層級(jí)別和數(shù)據(jù)級(jí)別[6]。對(duì)于層級(jí)別的并行,許多實(shí)現(xiàn)使用GPU數(shù)組來并行計(jì)算層級(jí)別activations和頻繁同步它們。然而,這種方法不適合那種數(shù)據(jù)駐留在通過網(wǎng)絡(luò)連接的多個(gè)機(jī)器的集群,因?yàn)橛兄^高的網(wǎng)絡(luò)開銷。對(duì)于數(shù)據(jù)層的并行,訓(xùn)練是在數(shù)據(jù)集上進(jìn)行并行的,更適合分布式設(shè)備。Paypal的大部分?jǐn)?shù)據(jù)存儲(chǔ)在Hadoop集群上,因此能夠運(yùn)行那些集群上的算法是我們的首要任務(wù)。專用集群的維護(hù)和支持也是一個(gè)我們需要考慮的重要因素。然而,由于深度學(xué)習(xí)本質(zhì)上是迭代的,像MapReduce這樣的范式不適合運(yùn)行這些算法。但是隨著Hadoop2.0和基于YARN的資源管理的問世,我們可以編寫迭代程序,同時(shí)可以精細(xì)地控制程序使用的資源。我們使用了IterativeReduce [7] , Hadoop YARN里面的一個(gè)用戶編寫迭代算法的程序,我們可以將它部署在一個(gè)運(yùn)行Hadoop 2.4.1的Paypal集群中。

方法

我們實(shí)現(xiàn)了Hinton的核心算法,在[2]中引用的。由于我們的需求是分散運(yùn)行在多個(gè)機(jī)器的集群中的算法,我們?cè)谶@樣的環(huán)境下使用了他們的算法。對(duì)于在多個(gè)機(jī)器上分散這個(gè)算法,我們參照了Grazia所提出的指南[6]。下面是對(duì)我們的實(shí)現(xiàn)做的詳細(xì)總結(jié):

? Master節(jié)點(diǎn)初始化RBM的weights。
? Master節(jié)點(diǎn)向Worker節(jié)點(diǎn)推送weights和splits。
? Worker節(jié)點(diǎn)在一個(gè)數(shù)據(jù)集時(shí)間點(diǎn)訓(xùn)練一個(gè)RBM層,換句話說,在一個(gè)Worker節(jié)點(diǎn)完全通過所有的split后,向Master發(fā)送更新后的weights。
? 在一個(gè)給定的時(shí)間點(diǎn)里,Master節(jié)點(diǎn)對(duì)來自所有Worker節(jié)點(diǎn)的weights求平均值。
? 在預(yù)定義的時(shí)間集(我們的例子中是50)中,重復(fù)3-5步操作。
? 第6步完成以后,有一個(gè)層就被訓(xùn)練了。后續(xù)的RBM層也重復(fù)這些步驟。
? 當(dāng)所有的層都被訓(xùn)練以后,深度網(wǎng)絡(luò)就會(huì)通過使用錯(cuò)誤反向廣播機(jī)制準(zhǔn)確地調(diào)整好。

下圖描述了在運(yùn)行深度學(xué)習(xí)算法時(shí)的一個(gè)單個(gè)數(shù)據(jù)集時(shí)間點(diǎn)(步驟3-5)。我們注意到,這個(gè)范式可以被利用來實(shí)現(xiàn)一個(gè)主機(jī)可迭代的機(jī)器學(xué)習(xí)算法。

 

\

 

圖2:用于訓(xùn)練的單個(gè)數(shù)據(jù)集時(shí)間點(diǎn)

下面的代碼片段表明了在訓(xùn)練單個(gè)機(jī)器的DBN中所涉及的步驟。數(shù)據(jù)集首先被拆分成多個(gè)批次,然后多個(gè)RBM層會(huì)被順序地初始化和訓(xùn)練。在RBM都被訓(xùn)練以后,它們會(huì)通過一個(gè)準(zhǔn)確調(diào)整的錯(cuò)誤反向廣播相位。

 

\

 

我們使用了IterativeReduce[7]的實(shí)現(xiàn)很大程度是為了YARN管道。我們對(duì)實(shí)現(xiàn)做出了重大改革,可以將它利用到我們的深度學(xué)習(xí)算法實(shí)現(xiàn)。IterativeReduce的實(shí)現(xiàn)是為Cloudera Hadoop分布式而編寫,它被我們重置了平臺(tái),以此來適應(yīng)標(biāo)準(zhǔn)的Apache Hadoop分布式。我們還重寫了實(shí)現(xiàn),以此來使用[8]中描述的標(biāo)準(zhǔn)編程模型。特別是,我們需要YARN客戶端API在ResourceManager和客戶端程序之間進(jìn)行通信。我們也使用了AMRMClient和AMNMClient在ApplicationMaster、ResourceManager和NodeManager之間進(jìn)行通信。

我們首先使用YARN API提交應(yīng)用程序到Y(jié)ARN資源管理器:

 

\

 

在應(yīng)用被提交以后,YARN資源管理器啟動(dòng)應(yīng)用程序Master。如果必要的話,應(yīng)用程序Master負(fù)責(zé)分配和釋放Worker容器。程序Master使用AMRMClient來與資源管理器進(jìn)行通信。

 

\

 

應(yīng)用程序Master使用NMClient API在容器(主節(jié)點(diǎn)傳遞過來的)中運(yùn)行命令。

 

\

 

一旦應(yīng)用Master啟動(dòng)了它需要的Worker容器,它設(shè)置一個(gè)端口來和應(yīng)用Master進(jìn)行通信。對(duì)于我們深度學(xué)習(xí)實(shí)現(xiàn)來說,我們新增了一些方法,它們需要為原始的IterativeReduce接口提供參數(shù)初始化、逐層訓(xùn)練和精確調(diào)整信號(hào)。IterativeReduce使用Apache Avro IPC來實(shí)現(xiàn)Master和Worker之間的通信。

下面的代碼片段表明了一系列涉及Master-Worker節(jié)點(diǎn)的分布式訓(xùn)練,Master向worker發(fā)送初始參數(shù),然后Worker在部分?jǐn)?shù)據(jù)上訓(xùn)練它的RBM。在Worker完成訓(xùn)練之后,它將結(jié)果發(fā)送至Master,Master將會(huì)綜合這些結(jié)果。迭代完成以后,Master通過啟動(dòng)反向廣播精確調(diào)整相位來完成流程。

 

\

 

結(jié)果

我們?cè)u(píng)估了使用MNIST手寫數(shù)字識(shí)別[3]來實(shí)現(xiàn)的深度學(xué)習(xí)的性能。數(shù)據(jù)集包含手工標(biāo)記的0-9的數(shù)字。訓(xùn)練集由60000張圖片組成,測(cè)試集包含了10000張圖片。

為了測(cè)量性能,DBN首先被預(yù)訓(xùn)練,然后在60000張照片中被精確調(diào)整,通過以上的步驟,DBN會(huì)在10000張測(cè)試圖片上進(jìn)行評(píng)估。在訓(xùn)練或者評(píng)估期間,沒有對(duì)圖片進(jìn)行預(yù)處理。出錯(cuò)率是由為分類的圖片總數(shù)與測(cè)試集中的圖片總數(shù)的比率而得到。

當(dāng)在每個(gè)RBM使用500-500-2000的隱藏單元,同時(shí)使用十個(gè)節(jié)點(diǎn)的分布式設(shè)備的時(shí)候,我們能達(dá)到最佳的分類錯(cuò)誤率1.66%。錯(cuò)誤率可堪比原始算法的作者所報(bào)告的1.2%(使用500-500-2000的隱藏單元)[2],和類似設(shè)置下的一些結(jié)果[3]。我們注意到原始實(shí)現(xiàn)是在單個(gè)機(jī)器上的,而我們的實(shí)現(xiàn)是在分布式機(jī)器上的。參數(shù)平均的這一步導(dǎo)致性能略微降低,然而將算法分布在多臺(tái)機(jī)器上是利大于弊的。下面的表格總結(jié)出了在十個(gè)節(jié)點(diǎn)的集群上運(yùn)行的每個(gè)層的隱藏單元數(shù)對(duì)應(yīng)的錯(cuò)誤率的變化。

 

\

 

表1:MNIST性能評(píng)估

深入思考

我們成功地部署了一個(gè)深度學(xué)習(xí)系統(tǒng),我們相信它在解決一些機(jī)器學(xué)習(xí)問題過程中很有用處。此外,迭代降低抽象可以被利用來分布任何其它合適的機(jī)器學(xué)習(xí)算法,能夠利用通用的Hadoop集群將會(huì)被證明非常有利于在大數(shù)據(jù)集上運(yùn)行大型機(jī)器學(xué)習(xí)算法。我們注意到,我們的當(dāng)前框架需要一些改進(jìn),主要圍繞減少網(wǎng)絡(luò)延遲和更先進(jìn)的資源管理。另外,我們需要優(yōu)化DBN框架,這樣可以減少內(nèi)部節(jié)點(diǎn)之間的通信。隨著對(duì)集群資源的精確調(diào)整控制,Hadoop YARN框架給我們提供了更多的靈活性。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }