本說(shuō)明書(shū)涉及使卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練并行化。
卷積神經(jīng)網(wǎng)絡(luò)通常包括兩種類(lèi)型的神經(jīng)網(wǎng)絡(luò)層:卷積神經(jīng)網(wǎng)絡(luò)層和全連接神經(jīng)網(wǎng)絡(luò)層。卷積神經(jīng)網(wǎng)絡(luò)層具有稀疏連接性,其中卷積層中的每個(gè)節(jié)點(diǎn)從僅次最低神經(jīng)網(wǎng)絡(luò)層中的節(jié)點(diǎn)的子集接收輸入。一些卷積神經(jīng)網(wǎng)絡(luò)層具有與該層中的其它節(jié)點(diǎn)共享權(quán)重的節(jié)點(diǎn)。然而,全連接層中的節(jié)點(diǎn)從次最低神經(jīng)網(wǎng)絡(luò)層中的每個(gè)節(jié)點(diǎn)接收輸入。
技術(shù)實(shí)現(xiàn)要素:
一般而言,本說(shuō)明書(shū)描述用于在多個(gè)批量的訓(xùn)練樣例上訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)的技術(shù)。CNN由多個(gè)工作器(worker)訓(xùn)練。每個(gè)工作器被配置成維護(hù)CNN的卷積層中的每個(gè)卷積層的相應(yīng)的副本以及CNN的全連接層中的每個(gè)全連接層的相應(yīng)的不相交分區(qū)。卷積層的每個(gè)副本包括卷積層中的節(jié)點(diǎn)中的全部,并且全連接層的每個(gè)不相交分區(qū)包括全連接層的節(jié)點(diǎn)的一部分。每個(gè)工作器在指派給該工作器的批量的訓(xùn)練樣例上訓(xùn)練由該工作器維護(hù)的卷積層副本,同時(shí)在多個(gè)批量的訓(xùn)練樣例中的全部訓(xùn)練樣例上訓(xùn)練由該工作器維護(hù)的全連接層分區(qū)。
能夠?qū)崿F(xiàn)本說(shuō)明書(shū)中所描述的主題的特定實(shí)施例以便實(shí)現(xiàn)以下優(yōu)點(diǎn)中的一個(gè)或多個(gè)。通過(guò)在卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練期間與全連接層不同地使卷積層并行化,能夠通過(guò)利用兩種類(lèi)型的層的不同結(jié)構(gòu)來(lái)高效地且迅速地訓(xùn)練網(wǎng)絡(luò)。附加地,通過(guò)使中間通信與訓(xùn)練交疊,例如,通過(guò)與工作器處理其它訓(xùn)練樣例的數(shù)據(jù)并行地從一個(gè)工作器向另一工作器發(fā)送激活數(shù)據(jù)、與工作器處理其它訓(xùn)練樣例的數(shù)據(jù)并行地從一個(gè)工作器向另一工作器發(fā)送梯度數(shù)據(jù)或兩者,能夠減少訓(xùn)練時(shí)間并且能夠減輕由于數(shù)據(jù)在訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)的工作器之間的傳輸而導(dǎo)致的訓(xùn)練延遲。
在下面在附圖和描述中闡述本說(shuō)明書(shū)的主題的一個(gè)或多個(gè)實(shí)施例的細(xì)節(jié)。主題的其它特征、方面和優(yōu)點(diǎn)從本描述、附圖和權(quán)利要求書(shū)中將變得顯而易見(jiàn)。
附圖說(shuō)明
圖1是用于訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)的示例系統(tǒng)的框圖。
圖2是用于訓(xùn)練CNN的示例過(guò)程的流程圖。
圖3是用于通過(guò)由工作器維護(hù)的全連接層分區(qū)來(lái)處理激活數(shù)據(jù)的示例過(guò)程的流程圖。
圖4是用于通過(guò)由工作器維護(hù)的全連接層分區(qū)來(lái)反向傳播梯度的示例過(guò)程的流程圖。
圖5是用于在工作器之間傳送激活數(shù)據(jù)和梯度數(shù)據(jù)的示例過(guò)程的流程圖。
圖6是用于在工作器之間傳送激活數(shù)據(jù)和梯度數(shù)據(jù)的另一示例過(guò)程的流程圖。
圖7是用于在工作器之間傳送激活數(shù)據(jù)和梯度數(shù)據(jù)的另一示例過(guò)程的流程圖。
各個(gè)附圖中的相同的附圖標(biāo)記和名稱指示相同的元件。
具體實(shí)施方式
圖1是用于訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)的示例系統(tǒng)150的框圖。CNN包括神經(jīng)網(wǎng)絡(luò)層的序列,其中CNN的輸入由序列中的最低層接收并且通過(guò)序列中的所有層來(lái)處理以從輸入生成輸出。例如,輸入可以是圖像并且輸出可以是一組類(lèi)別中的每個(gè)類(lèi)別的分?jǐn)?shù)的集合。針對(duì)給定類(lèi)別而生成的分?jǐn)?shù)表示所輸入的圖像包含屬于該類(lèi)別的對(duì)象的圖像的可能性。
CNN中的每個(gè)神經(jīng)網(wǎng)絡(luò)層包括節(jié)點(diǎn)集合。每個(gè)節(jié)點(diǎn)即從直接在序列中的神經(jīng)網(wǎng)絡(luò)層下面的層中的一個(gè)或多個(gè)節(jié)點(diǎn)接收輸入,或者,如果所述層是序列中的最低層,則接收CNN的輸入中的全部或一部分,并且從輸入產(chǎn)生激活。由給定神經(jīng)網(wǎng)絡(luò)層中的節(jié)點(diǎn)所生成的激活然后作為輸入被提供給序列中的次最高層中的節(jié)點(diǎn),或者,如果所述層是序列中的最高層,則被視為CNN的輸出。
特別地,神經(jīng)網(wǎng)絡(luò)層的序列包括卷積神經(jīng)網(wǎng)絡(luò)層集合,卷積神經(jīng)網(wǎng)絡(luò)層集合后面有全連接神經(jīng)網(wǎng)絡(luò)層集合。通常,全連接層中的每個(gè)節(jié)點(diǎn)從序列中的次最低層中的每個(gè)節(jié)點(diǎn)接收輸入并且依照針對(duì)該節(jié)點(diǎn)的權(quán)重集合從所接收到的輸入產(chǎn)生激活。由給定全連接層中的每個(gè)節(jié)點(diǎn)所生成的激活被作為輸入提供給序列中的次最高全連接層中的每個(gè)節(jié)點(diǎn),或者,如果全連接層是序列中的最高層,則被視為CNN的輸出。
與全連接層不同,卷積層通常是稀疏連接的神經(jīng)網(wǎng)絡(luò)層。也就是說(shuō),卷積層中的每個(gè)節(jié)點(diǎn)從前面神經(jīng)網(wǎng)絡(luò)層中的節(jié)點(diǎn)的一部分(即,少于全部)接收輸入,或者,如果卷積層是序列中的最低層,則接收CNN的輸入的一部分,并且從輸入產(chǎn)生激活。通常,卷積層具有通過(guò)依照針對(duì)每個(gè)節(jié)點(diǎn)的權(quán)重集合使接收到的輸入卷積來(lái)產(chǎn)生激活。在一些情況下,卷積層中的節(jié)點(diǎn)可以被配置成共享權(quán)重。也就是說(shuō),所述層中的節(jié)點(diǎn)的一部分可能受約束以總是具有與所述層中的其它節(jié)點(diǎn)相同的權(quán)重值。
一些CNN使其它類(lèi)型的層散布在這些層的序列中。例如,其它層可以包括池化層,即,包括從序列中的次最低層中的節(jié)點(diǎn)的一部分接收輸入并且通過(guò)池化所接收到的輸入(例如,通過(guò)計(jì)算所接收到的輸入的最大值或均值)來(lái)產(chǎn)生激活的節(jié)點(diǎn)。作為另一示例,其它層可以包括定標(biāo)層,即,從序列中的次最低層接收輸入并且對(duì)每個(gè)接收到的輸入中的每個(gè)元素應(yīng)用標(biāo)量函數(shù)的層。因?yàn)檫@些其它層不具有在CNN的訓(xùn)練期間被修改的權(quán)重,所以它們?cè)谛蛄兄械拇嬖诨虿淮嬖诓挥绊懺谙旅嫠枋龅腃NN訓(xùn)練技術(shù)。因此,為了描述的清楚起見(jiàn)在下面所描述的CNN將被描述為不包括這些其它類(lèi)型的層。然而,本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到其它類(lèi)型的層可以被包括在CNN中,而不影響訓(xùn)練過(guò)程。
系統(tǒng)150包括多個(gè)工作器,即工作器1 100a、工作器2 100b以及工作器3 100c。每個(gè)工作器100a-100c可以是例如計(jì)算機(jī)、具有多個(gè)核心的計(jì)算機(jī)內(nèi)的核心,或計(jì)算機(jī)內(nèi)能夠執(zhí)行用于訓(xùn)練CNN的分區(qū)或副本的計(jì)算的其它硬件或軟件。
工作器100a-100c中的每個(gè)被配置成維護(hù)CNN的每個(gè)卷積層的相應(yīng)的副本。在圖1的示例中,每個(gè)工作器維護(hù)四個(gè)卷積層106a-106c、108a-108c、110a-110c以及112a-112c的副本。每個(gè)卷積層的每個(gè)副本是卷積層的單獨(dú)實(shí)例,即,每個(gè)副本包括卷積層的節(jié)點(diǎn)中的全部。
工作器100a-100c中的每個(gè)還被配置成維護(hù)CNN的全連接層中的每個(gè)的相應(yīng)的分區(qū)。在圖1的示例中,每個(gè)工作器維護(hù)CNN的第一全連接層的相應(yīng)的分區(qū)114a-114c以及CNN的第二全連接層的相應(yīng)的分區(qū)116a-116c。全連接層的每個(gè)分區(qū)包括該全連接層的節(jié)點(diǎn)的不相交分區(qū)。因此,共同地由工作器100a-100c維護(hù)的給定全連接層的分區(qū)組成該全連接層的單個(gè)實(shí)例,即,雖然每個(gè)分區(qū)包括給定層的節(jié)點(diǎn)的僅一部分,但是分區(qū)共同地包括該層的節(jié)點(diǎn)中的全部。
工作器100a-100c在從訓(xùn)練數(shù)據(jù)102中選擇的訓(xùn)練樣例上訓(xùn)練CNN。例如,訓(xùn)練樣例可以是已被分類(lèi)為包括來(lái)自特定類(lèi)別的對(duì)象的圖像的圖像。訓(xùn)練數(shù)據(jù)102包括多個(gè)批量的訓(xùn)練樣例104a-104c,其中每個(gè)批量包括預(yù)定數(shù)目的訓(xùn)練樣例。
為了使用訓(xùn)練樣例來(lái)訓(xùn)練CNN,每個(gè)工作器100a-100c被指派不同批量的訓(xùn)練樣例并且執(zhí)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練技術(shù)以在訓(xùn)練數(shù)據(jù)上訓(xùn)練CNN。例如,訓(xùn)練技術(shù)可以是使用隨機(jī)梯度下降(SGD)來(lái)使CNN的目標(biāo)函數(shù)最小化或最大化的訓(xùn)練技術(shù)。在下面參考圖3更詳細(xì)地描述在具有多個(gè)工作器的系統(tǒng)中在一批訓(xùn)練數(shù)據(jù)上訓(xùn)練CNN。一旦每個(gè)工作器已對(duì)該工作器的指派批量執(zhí)行了訓(xùn)練技術(shù),每個(gè)工作器就能夠被指派新批量的訓(xùn)練樣例并且能夠執(zhí)行訓(xùn)練技術(shù)的附加迭代以在新批量上訓(xùn)練CNN,例如,以繼續(xù)試圖使目標(biāo)函數(shù)最小化或最大化。
圖2是用于訓(xùn)練CNN的示例過(guò)程200的流程圖。過(guò)程200能夠由作為用于訓(xùn)練CNN的技術(shù)的一部分適當(dāng)?shù)鼐幊痰亩鄠€(gè)工作器的每個(gè)工作器(例如,圖1的工作器100a-100c中的每個(gè)工作器)來(lái)執(zhí)行。如上所述,每個(gè)工作器被配置成維護(hù)CNN的卷積層中的每個(gè)卷積層的相應(yīng)的副本以及CNN的全連接層中的每個(gè)全連接層的相應(yīng)的分區(qū)。
工作器接收已被指派給工作器的一個(gè)批量的訓(xùn)練樣例(步驟202)。
工作器通過(guò)由該工作器維護(hù)的卷積層副本的全部來(lái)處理該批量中的每個(gè)訓(xùn)練樣例以針對(duì)該批量中的每個(gè)訓(xùn)練樣例計(jì)算相應(yīng)的卷積激活(步驟204)。也就是說(shuō),工作器通過(guò)最低卷積層副本來(lái)處理每個(gè)訓(xùn)練樣例以為該訓(xùn)練樣例生成初始卷積激活,并且然后通過(guò)序列中的每個(gè)卷積層副本來(lái)處理最低卷積激活以便為該訓(xùn)練樣例計(jì)算卷積激活。
工作器將自己的卷積激活數(shù)據(jù)發(fā)送到正在訓(xùn)練CNN的其它工作器并且從正在訓(xùn)練CNN的其它工作器接收其它卷積激活數(shù)據(jù)(步驟206)。通常,自己的卷積激活數(shù)據(jù)針對(duì)每個(gè)自己的訓(xùn)練樣例(即,針對(duì)指派給工作器的批量中的每個(gè)訓(xùn)練樣例)包括針對(duì)訓(xùn)練樣例的卷積激活。類(lèi)似地,給定的其它訓(xùn)練樣例(即,指派給訓(xùn)練CNN的其它工作器中的一個(gè)工作器的訓(xùn)練樣例)的其它卷積激活數(shù)據(jù)包括由另一個(gè)工作器為該訓(xùn)練樣例所計(jì)算的卷積激活。在下面參考圖5、圖6和圖7描述用于確定要向其它工作器發(fā)送哪些卷積激活數(shù)據(jù)以及卷積激活數(shù)據(jù)何時(shí)將被發(fā)送的示例技術(shù)。
工作器通過(guò)全連接層分區(qū)的全部來(lái)處理自己的訓(xùn)練樣例和其它訓(xùn)練樣例的卷積激活數(shù)據(jù),以計(jì)算每個(gè)自己的訓(xùn)練樣例和每個(gè)其它訓(xùn)練樣例的相應(yīng)的輸出分區(qū)(步驟208)。特別地,訓(xùn)練樣例的輸出分區(qū)包括訓(xùn)練樣例的由工作器維護(hù)的最高全連接層分區(qū)的激活。在下面參考圖3更詳細(xì)地描述處理卷積激活數(shù)據(jù)以計(jì)算輸出分區(qū)。
工作器針對(duì)每個(gè)自己的訓(xùn)練樣例和每個(gè)其它訓(xùn)練樣例獲得相應(yīng)的梯度部分(步驟210)。在一些實(shí)施方式中,每個(gè)工作器將由該工作器計(jì)算的輸出分區(qū)發(fā)送到工作器中的指定工作器。該工作器然后能夠計(jì)算目標(biāo)函數(shù)的梯度并且將適當(dāng)?shù)奶荻炔糠职l(fā)送到工作器中的每個(gè)工作器。在一些其它實(shí)施方式中,每個(gè)工作器針對(duì)每個(gè)訓(xùn)練樣例計(jì)算相應(yīng)的梯度部分。例如,對(duì)于每個(gè)訓(xùn)練樣例,工作器確定由工作器計(jì)算的輸出部分與訓(xùn)練樣例的已知輸出的對(duì)應(yīng)部分之間的誤差,即,應(yīng)該已通過(guò)訓(xùn)練樣例的由工作器維護(hù)的最高全連接層分區(qū)中的節(jié)點(diǎn)來(lái)計(jì)算的激活。工作器然后使用誤差來(lái)計(jì)算訓(xùn)練樣例的目標(biāo)函數(shù)的梯度。因?yàn)楣ぷ髌鲀H維護(hù)最高全連接層的節(jié)點(diǎn)的分區(qū),所以由工作器計(jì)算的梯度是訓(xùn)練樣例的總梯度的僅一部分。
工作器通過(guò)由該工作器維護(hù)的全連接層分區(qū)中的全部來(lái)反向傳播梯度部分并且使用經(jīng)反向傳播的梯度來(lái)計(jì)算由工作器所維護(hù)的最高卷積層副本的梯度部分(步驟212)。在下面參考圖4描述通過(guò)全連接層分區(qū)來(lái)反向傳播梯度部分。
工作器將自己的梯度數(shù)據(jù)(即,由工作器所維護(hù)的最高卷積層副本的梯度部分)發(fā)送到其它工作器并且從其它工作器接收其它梯度數(shù)據(jù)(即,由其它工作器所維護(hù)的最高卷積層副本的分區(qū)的梯度部分)(步驟214)。在下面參考圖5、圖6和圖7描述用于確定要向其它工作器發(fā)送哪些梯度數(shù)據(jù)以及梯度數(shù)據(jù)何時(shí)將被發(fā)送的示例技術(shù)。通常,工作器將給定訓(xùn)練樣例的自己的梯度數(shù)據(jù)發(fā)送到該訓(xùn)練樣例被指派給的工作器。為了這樣做,每個(gè)工作器跟蹤哪一個(gè)數(shù)據(jù)與哪一個(gè)訓(xùn)練樣例相關(guān)聯(lián),并且因此,哪一個(gè)數(shù)據(jù)必須被發(fā)送到哪一個(gè)工作器。在一些實(shí)施方式中,為了讓工作器確定正由工作器處理的哪一個(gè)數(shù)據(jù)對(duì)應(yīng)于哪一個(gè)訓(xùn)練樣例,每個(gè)工作器按照定義哪一個(gè)數(shù)據(jù)對(duì)應(yīng)于哪一個(gè)訓(xùn)練樣例以及哪些訓(xùn)練樣例被指派給哪一個(gè)其它工作器的固定次序維護(hù)從其它工作器接收到的數(shù)據(jù)。在一些其它實(shí)施例中,每當(dāng)工作器向另一工作器發(fā)送訓(xùn)練樣例的數(shù)據(jù)時(shí),該工作器還能夠向該另一個(gè)工作器發(fā)送使數(shù)據(jù)與訓(xùn)練樣例相關(guān)聯(lián)的元數(shù)據(jù)。
一旦被接收到,工作器就能夠?qū)⒂晒ぷ髌鳛橹概山o該工作器的每個(gè)訓(xùn)練樣例所計(jì)算的自己的梯度部分與由其它工作器計(jì)算的訓(xùn)練樣例的其它梯度部分組合,以針對(duì)被指派給工作器的該批量的訓(xùn)練樣例中的每個(gè)訓(xùn)練樣例為最高卷積層副本生成相應(yīng)的全梯度。
工作器通過(guò)由該工作器維護(hù)的剩余卷積層副本中的全部來(lái)反向傳播全梯度(步驟216)。也就是說(shuō),工作器計(jì)算在每個(gè)卷積層副本處的全梯度并且然后將這些全梯度反向傳播到次最低卷積層副本以用于在為該副本計(jì)算全梯度時(shí)使用。
工作器使用每個(gè)副本和分區(qū)的對(duì)應(yīng)梯度來(lái)更新由工作器維護(hù)的卷積層副本和全連接層分區(qū)的權(quán)重值(步驟218)。一般而言,工作器如何更新權(quán)重值取決于正在使用的訓(xùn)練技術(shù)。例如,在一些訓(xùn)練技術(shù)中,使用給定訓(xùn)練樣例的梯度所計(jì)算的給定權(quán)重的新值wn可以滿足:
wn=wo-αΔQ(wo),
其中wo是權(quán)重的當(dāng)前權(quán)重值,α是常數(shù)值,并且ΔQ(wo)是用于訓(xùn)練樣例的權(quán)重的梯度。
通常,因?yàn)閮H一個(gè)工作器維護(hù)給定全連接層中的每個(gè)節(jié)點(diǎn),所以對(duì)于全連接層中的每個(gè)節(jié)點(diǎn),每個(gè)工作器使用由該工作器計(jì)算的梯度部分來(lái)更新由該工作器維護(hù)的節(jié)點(diǎn)的權(quán)重值。
然而,因?yàn)榫矸e層的權(quán)重的值由每個(gè)工作器單獨(dú)地維護(hù),所以在每個(gè)工作器更新卷積層的其副本的權(quán)重之前必須使卷積層的梯度同步。為了使梯度同步,可以給每個(gè)工作器指派要使權(quán)重同步的每個(gè)卷積層的不同部分。每個(gè)其它工作器能夠?qū)⒔o定節(jié)點(diǎn)的梯度發(fā)送到該節(jié)點(diǎn)已被指派給的工作器。受讓方工作器能夠累積梯度并且然后將經(jīng)累積的梯度發(fā)送到每個(gè)其它工作器。每個(gè)工作器然后能夠使用與每個(gè)其它工作器相同的累積梯度來(lái)更新卷積層中的節(jié)點(diǎn)的權(quán)重。
可選地,不是給每個(gè)工作器指派每個(gè)卷積層的不同部分,而是每個(gè)工作器能夠?qū)⒚總€(gè)卷積層副本的每個(gè)節(jié)點(diǎn)的梯度發(fā)送到中央服務(wù)器。中央服務(wù)器能夠累積服務(wù)器從工作器接收到的節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)的梯度,然后將經(jīng)累積的梯度發(fā)送到每個(gè)工作器。
一旦每個(gè)工作器已完成過(guò)程200,每個(gè)工作器就能夠被指派新批量的訓(xùn)練樣例并且能夠?qū)τ谠撔屡恐貜?fù)過(guò)程200。工作器能夠繼續(xù)重復(fù)過(guò)程200,例如,直到已滿足CNN的訓(xùn)練的收斂準(zhǔn)則為止或者直到已執(zhí)行該過(guò)程的預(yù)定次數(shù)迭代為止。
圖3是用于通過(guò)由工作器維護(hù)的全連接層分區(qū)來(lái)處理激活數(shù)據(jù)的示例過(guò)程300的流程圖。然后過(guò)程300能夠由作為用于訓(xùn)練CNN的技術(shù)的一部分適當(dāng)?shù)鼐幊痰亩鄠€(gè)工作器的每個(gè)工作器(例如,圖1的工作器100a-100c中的每個(gè)工作器)來(lái)執(zhí)行。
工作器獲得訓(xùn)練樣例的卷積激活數(shù)據(jù)(步驟302)。
工作器通過(guò)初始全連接層分區(qū)來(lái)處理卷積激活數(shù)據(jù)(步驟304)以針對(duì)激活數(shù)據(jù)中所標(biāo)識(shí)的每個(gè)訓(xùn)練樣例計(jì)算相應(yīng)的初始全連接層部分激活。特別地,工作器通過(guò)激活數(shù)據(jù)中的初始全連接層分區(qū)來(lái)處理每個(gè)樣例的卷積激活,以針對(duì)每個(gè)樣例生成相應(yīng)的初始全連接層部分激活。每個(gè)樣例的初始全連接層部分激活包括通過(guò)由工作器維護(hù)的初始全連接層的分區(qū)中的每個(gè)節(jié)點(diǎn)所生成的相應(yīng)的激活。
工作器將自己的初始全連接層激活數(shù)據(jù)提供給其它工作器并且從其它工作器接收其它初始全連接激活數(shù)據(jù)(步驟306)。也就是說(shuō),工作器針對(duì)每個(gè)訓(xùn)練樣例將該訓(xùn)練樣例的初始全連接層激活提供給每個(gè)其它工作器。工作器也從其它工作器接收每個(gè)訓(xùn)練樣例的初始全連接層激活。因此,在工作器接收到其它激活之后,工作器對(duì)于訓(xùn)練樣例中的每個(gè)訓(xùn)練樣例,具有訓(xùn)練樣例中的每個(gè)訓(xùn)練樣例的完整初始全連接層激活。類(lèi)似地,工作器將自己的初始全連接層激活數(shù)據(jù)提供給每個(gè)其它工作器以允許其它工作器處理針對(duì)訓(xùn)練樣例中的每個(gè)訓(xùn)練樣例的完整初始全連接層激活。
系統(tǒng)通過(guò)由工作器維護(hù)的次最高全連接層分區(qū)來(lái)處理每個(gè)訓(xùn)練樣例的完整初始全連接層激活以生成每個(gè)訓(xùn)練樣例相應(yīng)的后續(xù)全連接層分區(qū)激活(步驟308)。給定工作器的后續(xù)全連接層部分激活包括通過(guò)由工作器維護(hù)的次最高全連接層的分區(qū)中的每個(gè)節(jié)點(diǎn)所生成的相應(yīng)的激活。
如果后續(xù)層是CNN中的最高全連接層,則工作器將后續(xù)全連接層分區(qū)激活視為該工作器的最終全連接激活。如果在序列中存在比后續(xù)層高的一個(gè)或多個(gè)層,則工作器能夠?qū)τ诿總€(gè)更高層重復(fù)步驟304和步驟306,即,通過(guò)將自己的當(dāng)前全連接層分區(qū)激活數(shù)據(jù)提供給其它工作器并且從其它工作器接收其它當(dāng)前全連接層分區(qū)激活數(shù)據(jù)以生成組合的當(dāng)前全連接層激活并且然后使用序列中的次最高層來(lái)處理該組合激活。
圖4是用于通過(guò)由工作器維護(hù)的全連接層分區(qū)來(lái)反向傳播梯度的示例過(guò)程400的流程圖。然后過(guò)程400能夠由作為用于訓(xùn)練CNN的技術(shù)的一部分適當(dāng)?shù)鼐幊痰亩鄠€(gè)工作器的每個(gè)工作器(例如,圖1的工作器100a-100c中的每個(gè)工作器)來(lái)執(zhí)行。
工作器接收最高層梯度數(shù)據(jù)(步驟402)。對(duì)于多個(gè)訓(xùn)練樣例的每個(gè)訓(xùn)練樣例,最高層梯度數(shù)據(jù)包括由工作器維護(hù)的最高全連接層分區(qū)的目標(biāo)函數(shù)的相應(yīng)的梯度。
工作器將自己的最高層梯度數(shù)據(jù)(即,每個(gè)訓(xùn)練樣例的最高層梯度)發(fā)送到其它工作器并且從其它工作器接收其它最高層梯度(步驟404)。對(duì)于每個(gè)訓(xùn)練樣例,工作器能夠?qū)⒂?xùn)練樣例的其它最高層梯度與訓(xùn)練樣例的自己的最高層梯度組合以生成訓(xùn)練樣例的組合最高層梯度。
工作器使用每個(gè)訓(xùn)練樣例的組合最高層梯度來(lái)計(jì)算直接在最高全連接層分區(qū)下面的全連接層分區(qū)的梯度部分(步驟406)。如果直接在最高全連接層分區(qū)下面的全連接層分區(qū)是序列中的最低分區(qū),則工作器將直接在最高分區(qū)下面的該分區(qū)的梯度視為序列中的最低全連接層分區(qū)的梯度。如果存在附加的全連接層分區(qū),則工作器能夠?qū)τ诿總€(gè)更低的全連接層分區(qū)重復(fù)步驟404和406。
工作器使用最低全連接層分區(qū)梯度來(lái)為每個(gè)訓(xùn)練樣例計(jì)算最高卷積層的梯度部分(步驟408)。也就是說(shuō),工作器使用由工作器維護(hù)的最低全連接層分區(qū)的節(jié)點(diǎn)的權(quán)重的值以及已通過(guò)全連接層分區(qū)反向傳播的數(shù)據(jù)來(lái)計(jì)算最高卷積層的梯度部分。
圖5是用于在工作器之間傳送激活數(shù)據(jù)和梯度數(shù)據(jù)的示例過(guò)程500的流程圖。過(guò)程500能夠由作為用于訓(xùn)練CNN的技術(shù)的一部分適當(dāng)?shù)鼐幊痰亩鄠€(gè)工作器的每個(gè)(例如,圖1的工作器100a-100c中的每個(gè))來(lái)執(zhí)行。
工作器將所有自己的卷積激活數(shù)據(jù)(即,針對(duì)指派給工作器的訓(xùn)練樣例的批量中的每個(gè)訓(xùn)練樣例的激活)發(fā)送到正在訓(xùn)練CNN的每個(gè)其它工作器(502)。
工作器從正在訓(xùn)練CNN的每個(gè)其它工作器接收其它卷積激活數(shù)據(jù)(步驟504)。一旦已接收到卷積激活中的全部,工作器就具有針對(duì)在訓(xùn)練技術(shù)的當(dāng)前迭代中被指派給訓(xùn)練CNN的工作器中的任一個(gè)的每個(gè)訓(xùn)練樣例的卷積激活。
工作器通過(guò)全連接層分區(qū)中的全部來(lái)處理自己的激活數(shù)據(jù)和其它激活數(shù)據(jù)來(lái)計(jì)算每個(gè)訓(xùn)練樣例的梯度數(shù)據(jù)(步驟506),例如,如參考圖2、圖3和圖4上面所描述的。
工作器將自己的梯度數(shù)據(jù)發(fā)送到其它工作器(步驟508)。也就是說(shuō),工作器針對(duì)由工作器計(jì)算的每個(gè)最高全連接層副本梯度部分來(lái)識(shí)別所對(duì)應(yīng)的訓(xùn)練樣例以及從其接收到該訓(xùn)練樣例的激活數(shù)據(jù)的工作器。工作器然后將每個(gè)訓(xùn)練樣例的最高全連接層副本梯度部分發(fā)送到從其接收到該訓(xùn)練樣例的激活數(shù)據(jù)的工作器。
工作器從其它工作器接收其它梯度數(shù)據(jù)(步驟510)。也就是說(shuō),對(duì)于指派給工作器的批量中的每個(gè)訓(xùn)練樣例,工作器從正在訓(xùn)練CNN的每個(gè)其它工作器接收訓(xùn)練樣例的最高全連接層副本梯度部分。對(duì)于指派給該工作器的批量中的每個(gè)訓(xùn)練樣例,系統(tǒng)將訓(xùn)練樣例的自己的梯度數(shù)據(jù)以及訓(xùn)練樣例的其它梯度數(shù)據(jù)組合以生成訓(xùn)練樣例的組合梯度。
工作器通過(guò)由該工作器維護(hù)的剩余卷積層副本來(lái)反向傳播指派給該工作器的批量中的訓(xùn)練樣例的組合梯度(步驟512),例如,如參考圖2上面所描述的。
在一些實(shí)施方式中,不是每個(gè)工作器在開(kāi)始通過(guò)由該工作器維護(hù)的全連接層分區(qū)來(lái)處理激活數(shù)據(jù)之前發(fā)送和接收訓(xùn)練樣例中的全部的激活數(shù)據(jù),而是可以使操作中的一些并行化。也就是說(shuō),工作器可以在其它訓(xùn)練樣例的激活數(shù)據(jù)正被工作器接收的同時(shí)處理一些訓(xùn)練樣例的激活數(shù)據(jù)。
圖6是用于在工作器之間傳送激活數(shù)據(jù)和梯度數(shù)據(jù)的另一示例過(guò)程600的流程圖。過(guò)程600能夠由作為用于訓(xùn)練CNN的技術(shù)的一部分適當(dāng)?shù)鼐幊痰亩鄠€(gè)工作器的每個(gè)工作器(例如,圖1的工作器100a-100c中的每個(gè)工作器)來(lái)執(zhí)行。
工作器從訓(xùn)練CNN的另一工作器接收批量的訓(xùn)練樣例的其它卷積激活數(shù)據(jù)或者將指派給工作器的該批量的自己的卷積激活數(shù)據(jù)發(fā)送到訓(xùn)練CNN的每個(gè)其它工作器(步驟602)。訓(xùn)練CNN的每個(gè)工作器被指派工作器的定序中相應(yīng)的位置,在該位置工作器將發(fā)送自己的卷積數(shù)據(jù)而不是接收其它卷積數(shù)據(jù)。如果定序中的當(dāng)前位置是指派給工作器的位置,則工作器發(fā)送自己的數(shù)據(jù)。如果不是,則工作器接收其它數(shù)據(jù)。一旦當(dāng)前工作器已將自己的數(shù)據(jù)發(fā)送到每個(gè)其它工作器,定序中的當(dāng)前位置遞增到下一個(gè)位置。
工作器通過(guò)由該工作器維護(hù)的全連接層分區(qū)來(lái)處理自己的批量或其它批量的卷積激活數(shù)據(jù)并且計(jì)算該批量的最高全連接層副本梯度部分(步驟606),例如,如參考圖2、圖3和圖4上面所描述的。
與工作器處理該批量的激活數(shù)據(jù)并行地,工作器從不同的工作器接收指派給該工作器的批量的其它激活數(shù)據(jù)或者發(fā)送自己的激活數(shù)據(jù)(步驟602)。也就是說(shuō),工作器再次確定定序中的當(dāng)前位置是否和指派給該工作器的位置匹配,并且在當(dāng)前位置匹配的情況下發(fā)送自己的數(shù)據(jù)而在當(dāng)前位置不匹配的情況下接收自己的數(shù)據(jù)。
一旦工作器已計(jì)算了該批量的最高全連接層副本梯度部分,工作器就將自己的梯度數(shù)據(jù)發(fā)送到其它工作器或者從其它工作器接收其它梯度數(shù)據(jù)(步驟606)。
與發(fā)送或者接收梯度數(shù)據(jù)并行地,工作器處理卷積激活數(shù)據(jù)以生成梯度數(shù)據(jù)(步驟604),所述卷積激活數(shù)據(jù)是與該工作器處理先前的激活數(shù)據(jù)并行地發(fā)送或者接收到的。
一旦指派給工作器中的任一個(gè)工作器的批量中的全部批量已被工作器處理并且工作器具有指派給該工作器的批量中的每個(gè)訓(xùn)練樣例的完整梯度數(shù)據(jù),工作器就通過(guò)由該工作器維護(hù)的剩余卷積層副本來(lái)反向傳播該完整梯度數(shù)據(jù),例如,如參考圖2上面所描述的(步驟608)。
圖7是用于在工作器之間傳送激活數(shù)據(jù)和梯度數(shù)據(jù)的另一示例過(guò)程700的流程圖。過(guò)程700能夠由作為用于訓(xùn)練CNN的技術(shù)的一部分適當(dāng)?shù)鼐幊痰亩鄠€(gè)工作器的每個(gè)工作器(例如,圖1的工作器100a-100c中的每個(gè)工作器)來(lái)執(zhí)行。
工作器向每個(gè)其它工作器發(fā)送N/K個(gè)訓(xùn)練樣例的卷積激活數(shù)據(jù),其中N是指派給該工作器的批量中的訓(xùn)練樣例的總數(shù)并且K是訓(xùn)練CNN的工作器的總數(shù)(步驟702)。
工作器從每個(gè)其它工作器接收N/K個(gè)其它訓(xùn)練樣例的其它卷積激活數(shù)據(jù)(步驟704)。因此,工作器接收(N)*(K-1)/K個(gè)總訓(xùn)練樣例的卷積激活數(shù)據(jù)。
工作器通過(guò)由該工作器維護(hù)的全連接層分區(qū)來(lái)處理N個(gè)訓(xùn)練樣例(即,(N)*(K-1)/K個(gè)其它訓(xùn)練樣例以及N/K個(gè)自己的訓(xùn)練樣例)的卷積激活數(shù)據(jù)并且為每個(gè)訓(xùn)練樣例計(jì)算最高全連接層副本梯度部分(步驟706),例如,如參考圖2、圖3和圖4上面所描述的。
與工作器處理N個(gè)訓(xùn)練樣例的卷積激活數(shù)據(jù)并行地,工作器確定是否存在要發(fā)送到其它工作器的更多卷積激活數(shù)據(jù)(步驟708)。特別地,工作器確定在指派給該工作器的批量中是否存在尚未被發(fā)送到訓(xùn)練CNN的其它工作器的訓(xùn)練樣例。
如果存在要發(fā)送到其它工作器的更多卷積激活數(shù)據(jù),則工作器與處理當(dāng)前N個(gè)訓(xùn)練樣例的卷積激活數(shù)據(jù)并行地向每個(gè)其它工作器發(fā)送N/K個(gè)更多訓(xùn)練樣例的卷積激活數(shù)據(jù)(步驟702)并且從每個(gè)其它工作器接收N/K個(gè)更多訓(xùn)練樣例的其它卷積數(shù)據(jù)(步驟704)。
一旦已計(jì)算了當(dāng)前N個(gè)訓(xùn)練樣例的最高全連接層副本梯度部分,工作器就向訓(xùn)練樣例被指派給其的工作器發(fā)送N個(gè)訓(xùn)練樣例中的每個(gè)訓(xùn)練樣例的梯度數(shù)據(jù)(步驟710)并且從其它工作器接收指派給工作器的訓(xùn)練樣例的梯度數(shù)據(jù)(步驟712)。
與發(fā)送和接收梯度數(shù)據(jù)并行地,在工作器在步驟708處確定了存在要發(fā)送的更多卷積激活數(shù)據(jù)的情況下工作器開(kāi)始處理接下來(lái)N個(gè)訓(xùn)練樣例的卷積激活數(shù)據(jù)(步驟706)。
如果工作器在步驟708處確定了不存在要發(fā)送的更多卷積數(shù)據(jù),則一旦接收到指派給該工作器的所有N個(gè)訓(xùn)練樣例的梯度數(shù)據(jù),工作器就通過(guò)由該工作器維護(hù)的剩余卷積層副本來(lái)反向傳播梯度數(shù)據(jù),例如,如參考圖2上面所描述的。
以上描述通常描述了工作器等待更新全連接層的權(quán)重,直到指派給該工作器的訓(xùn)練樣例中的全部訓(xùn)練樣例的梯度數(shù)據(jù)已通過(guò)由工作器維護(hù)的卷積層副本中的全部被反向傳播為止。然而,在一些實(shí)施方式中,工作器能夠以與卷積層的權(quán)重被更新不同的間隔來(lái)更新全連接層的權(quán)重。例如,在過(guò)程700被用來(lái)在卷積層副本與全連接層分區(qū)之間交互數(shù)據(jù)的實(shí)施方式中,每個(gè)工作器能夠在N個(gè)訓(xùn)練樣例的每個(gè)集合的梯度已被計(jì)算之后更新由該工作器維護(hù)的全連接層分區(qū)的權(quán)重,同時(shí)等待更新由工作器維護(hù)的卷積層副本的權(quán)重直到指派給該工作器的批量中的所有N個(gè)訓(xùn)練樣例的梯度已通過(guò)卷積層副本中的全部卷積層副本被反向傳播為止。類(lèi)似地,在過(guò)程600被用來(lái)在卷積層副本與全連接層分區(qū)之間交換數(shù)據(jù)的實(shí)施方式中,每個(gè)工作器能夠在當(dāng)前正由工作器處理的訓(xùn)練樣例的梯度已被計(jì)算之后更新由該工作器維護(hù)的全連接層分區(qū)的權(quán)重,同時(shí)等待更新由該工作器維護(hù)的卷積層副本的權(quán)重直到指派給該工作器的批量中的所有N個(gè)訓(xùn)練樣例的梯度已通過(guò)卷積層副本中的全部卷積層副本被反向傳播為止。
本說(shuō)明書(shū)中所描述的主題和功能操作的實(shí)施例能夠用數(shù)字電子電路、用有形地具體實(shí)現(xiàn)的計(jì)算機(jī)軟件或固件、用計(jì)算機(jī)硬件(包括本說(shuō)明書(shū)中所公開(kāi)的結(jié)構(gòu)及其結(jié)構(gòu)等同物)或者用它們中的一個(gè)或多個(gè)的組合加以實(shí)現(xiàn)。本說(shuō)明書(shū)中所描述的主題的實(shí)施例能夠作為一個(gè)或多個(gè)計(jì)算機(jī)程序(即,在有形非暫時(shí)性程序載體上編碼以用于由數(shù)據(jù)處理設(shè)備執(zhí)行或者控制數(shù)據(jù)處理設(shè)備的操作的計(jì)算機(jī)程序指令的一個(gè)或多個(gè)模塊)被實(shí)現(xiàn)。可替選地或此外,能夠?qū)⒊绦蛑噶罹幋a在人工生成的傳播信號(hào)(例如,被生成來(lái)對(duì)信息進(jìn)行編碼以便傳送到適合的接收器設(shè)備以用于由數(shù)據(jù)處理設(shè)備執(zhí)行的機(jī)器生成的電、光學(xué)或電磁信號(hào))上。計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是機(jī)器可讀存儲(chǔ)裝置、機(jī)器可讀存儲(chǔ)基底、隨機(jī)或串行存取存儲(chǔ)器裝置,或它們中的一個(gè)或多個(gè)的組合。
術(shù)語(yǔ)“數(shù)據(jù)處理設(shè)備”包含用于處理數(shù)據(jù)的所有類(lèi)型的設(shè)備、裝置和機(jī)器,作為示例包括可編程處理器、計(jì)算機(jī)或多個(gè)處理器或計(jì)算機(jī)。設(shè)備能夠包括專(zhuān)用邏輯電路,例如,F(xiàn)PGA(現(xiàn)場(chǎng)可編程門(mén)陣列)或ASIC(專(zhuān)用集成電路)。設(shè)備除了包括硬件之外,還能夠包括為所述的計(jì)算機(jī)程序創(chuàng)建執(zhí)行環(huán)境的代碼,例如,構(gòu)成處理器固件、協(xié)議棧、數(shù)據(jù)庫(kù)管理系統(tǒng)、操作系統(tǒng)或它們中的一個(gè)或多個(gè)的組合的代碼。
計(jì)算機(jī)程序(其還也可以被稱為或者描述為程序、軟件、軟件應(yīng)用、模塊、軟件模塊、腳本或代碼)能夠用任何形式的編程語(yǔ)言(包括編譯或解釋語(yǔ)言)或者描述性或過(guò)程語(yǔ)言編寫(xiě),并且它能夠被以任何形式(包括作為獨(dú)立程序或者作為適合于在計(jì)算環(huán)境中使用的模塊、組件、子例程或其它單元)部署。計(jì)算機(jī)程序可以但不必對(duì)應(yīng)于文件系統(tǒng)中的文件。能夠在保持其它程序或數(shù)據(jù)的文件的一部分(例如,存儲(chǔ)在標(biāo)記語(yǔ)音文檔中的一個(gè)或多個(gè)腳本)中、在專(zhuān)用于所述的程序的單個(gè)文件中或者在多個(gè)協(xié)調(diào)文件(例如,存儲(chǔ)一個(gè)或多個(gè)模塊、子程序或代碼的部分的文件)中存儲(chǔ)程序。能夠?qū)⒂?jì)算機(jī)程序部署成在一個(gè)計(jì)算機(jī)上或者在位于一個(gè)站點(diǎn)處或跨多個(gè)站點(diǎn)分布并通過(guò)通信網(wǎng)絡(luò)互連的多個(gè)計(jì)算機(jī)上執(zhí)行。
本說(shuō)明書(shū)中所描述的過(guò)程和邏輯流程能夠由執(zhí)行一個(gè)或多個(gè)計(jì)算機(jī)程序的一個(gè)或多個(gè)可編程計(jì)算機(jī)來(lái)執(zhí)行以通過(guò)對(duì)輸入數(shù)據(jù)進(jìn)行操作并且生成輸出來(lái)執(zhí)行功能。過(guò)程和邏輯流程還能夠由專(zhuān)用邏輯電路執(zhí)行,并且設(shè)備還能夠作為專(zhuān)用邏輯電路被實(shí)現(xiàn),所述專(zhuān)用邏輯電路例如FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)或ASIC(專(zhuān)用集成電路)。
作為示例,適合于執(zhí)行計(jì)算機(jī)程序的計(jì)算機(jī)能夠基于通用微處理器或?qū)S梦⑻幚砥骰騼烧撸蛉魏纹渌?lèi)型的中央處理單元。通常,中央處理單元將從只讀存儲(chǔ)器或隨機(jī)存取存儲(chǔ)器或兩者接收指令和數(shù)據(jù)。計(jì)算機(jī)的必要元件是用于執(zhí)行或者實(shí)行指令的中央處理單元以及用于存儲(chǔ)指令和數(shù)據(jù)的一個(gè)或多個(gè)存儲(chǔ)器裝置。通常,計(jì)算機(jī)還將包括或者在操作上耦合以從用于存儲(chǔ)數(shù)據(jù)的一個(gè)或多個(gè)大容量存儲(chǔ)裝置(例如,磁盤(pán)、磁光盤(pán)或光盤(pán))接收數(shù)據(jù)或者向一個(gè)或多個(gè)大容量存儲(chǔ)裝置轉(zhuǎn)移數(shù)據(jù)或兩者。然而,計(jì)算機(jī)不必具有這些裝置。而且,能夠?qū)⒂?jì)算機(jī)嵌入在另一裝置(例如,移動(dòng)電話、個(gè)人數(shù)字助理(PDA)、移動(dòng)音頻或視頻播放器、游戲控制臺(tái)、全球定位系統(tǒng)(GPS)接收器或便攜式存儲(chǔ)裝置(例如,通用串行總線(USB)閃存驅(qū)動(dòng)器)等等)中。
適合于存儲(chǔ)計(jì)算機(jī)程序指令和數(shù)據(jù)的計(jì)算機(jī)可讀介質(zhì)包括所有形式的非易失性存儲(chǔ)器、介質(zhì)以及存儲(chǔ)器裝置,作為示例包括:半導(dǎo)體存儲(chǔ)器裝置,例如,EPROM、EEPROM和閃存裝置;磁盤(pán),例如,內(nèi)部硬盤(pán)或可移動(dòng)磁盤(pán);磁光盤(pán);以及CD ROM和DVD-ROM盤(pán)。處理器和存儲(chǔ)器能夠由專(zhuān)用邏輯電路補(bǔ)充或者結(jié)合在專(zhuān)用邏輯電路中。
為了提供與用戶的交互,能夠?qū)⒈菊f(shuō)明書(shū)中所描述的主題的實(shí)施例實(shí)現(xiàn)在具有用于向用戶顯示信息的顯示裝置(例如,CRT(陰極射線管)或LCD(液晶顯示)監(jiān)視器)以及用戶能夠用來(lái)向計(jì)算機(jī)提供輸入的鍵盤(pán)和指示裝置(例如,鼠標(biāo)或軌跡球)的計(jì)算機(jī)上。其它類(lèi)型的裝置也能夠被用來(lái)提供與用戶的交互;例如,提供給用戶的反饋可以是任何形式的感覺(jué)反饋,例如,視覺(jué)反饋、聽(tīng)覺(jué)反饋或觸覺(jué)反饋;并且能夠以包括聲學(xué)輸入、語(yǔ)音輸入或觸覺(jué)輸入的任何形式接收來(lái)自用戶的輸入。此外,計(jì)算機(jī)能夠通過(guò)向由用戶使用的裝置發(fā)送文檔并且從由用戶使用的裝置接收文檔(例如,通過(guò)響應(yīng)于從web瀏覽器接收到的請(qǐng)求而向用戶的客戶端裝置上的web瀏覽器發(fā)送網(wǎng)頁(yè))來(lái)與用戶交互。
本說(shuō)明書(shū)中所描述的主題的實(shí)施例能夠被實(shí)現(xiàn)在計(jì)算系統(tǒng)中,所述計(jì)算系統(tǒng)包括后端組件(例如,作為數(shù)據(jù)服務(wù)器),或者包括中間件組件(例如,應(yīng)用服務(wù)器),或者包括前端組件(例如,具有用戶能夠用來(lái)與本說(shuō)明中所描述的主題的實(shí)施方式交互的圖形用戶界面或web瀏覽器的客戶端計(jì)算機(jī)),或一個(gè)或多個(gè)這些后端組件、中間件組件或前端組件的任何組合。本系統(tǒng)的組件能夠通過(guò)任何形式或介質(zhì)的數(shù)字?jǐn)?shù)據(jù)通信(例如,通信網(wǎng)絡(luò))來(lái)互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(“LAN”)和廣域網(wǎng)(“WAN”),例如,互聯(lián)網(wǎng)。
計(jì)算系統(tǒng)能夠包括客戶端和服務(wù)器??蛻舳撕头?wù)器通常遠(yuǎn)離彼此并且典型地通過(guò)通信網(wǎng)絡(luò)來(lái)交互??蛻舳撕头?wù)器的關(guān)系借助于在相應(yīng)的計(jì)算機(jī)上運(yùn)行并且彼此具有客戶端-服務(wù)器關(guān)系的計(jì)算機(jī)程序而產(chǎn)生。
雖然本說(shuō)明書(shū)包含許多特定實(shí)施方式細(xì)節(jié),但是這些不應(yīng)該被解釋為對(duì)任何發(fā)明的范圍或可能要求保護(hù)的范圍構(gòu)成限制,而是相反被解釋為可能特定于特定發(fā)明的特定實(shí)施例的特征的描述。還能夠在單個(gè)實(shí)施例中相結(jié)合地實(shí)現(xiàn)在本說(shuō)明書(shū)中在單獨(dú)的實(shí)施例背景下所描述的特定特征。相反地,還能夠分離地在多個(gè)實(shí)施例中或在任何適合的子組合中實(shí)現(xiàn)在單個(gè)實(shí)施例背景下所描述的各種特征。而且,盡管特征可以被以上描述為按照特定組合行動(dòng)并且因此甚至最初要求保護(hù),但是來(lái)自要求保護(hù)的組合的一個(gè)或多個(gè)特征在一些情況下能夠被從組合中刪除,并且所要求保護(hù)的組合可以針對(duì)子組合或子組合的變化。
類(lèi)似地,雖然按特定次序在附圖中描述操作,但是這不應(yīng)該被理解為要求這些操作被以所示出的特定次序或者以順序次序執(zhí)行,或者要求所有圖示的操作被執(zhí)行,以實(shí)現(xiàn)所希望的結(jié)果。在特定情況下,多任務(wù)處理和并行處理可能是有利的。而且,上面所描述的實(shí)施例中的各種系統(tǒng)模塊和組件的分離不應(yīng)該被理解為在所有實(shí)施例中要求這種分離,并且應(yīng)該理解的是,所描述的程序組件和系統(tǒng)能夠通常被一起集成在單個(gè)軟件產(chǎn)品中或者封裝到多個(gè)軟件產(chǎn)品中。
已經(jīng)描述了本主題的特定實(shí)施例。其它實(shí)施例在以下權(quán)利要求的范圍內(nèi)。例如,權(quán)利要求中所記載的動(dòng)作能夠被以不同的次序執(zhí)行并且仍然實(shí)現(xiàn)所希望的結(jié)果。作為一個(gè)示例,附圖中所描繪的過(guò)程未必要求所示出的特定次序或順序次序以實(shí)現(xiàn)所希望的結(jié)果。在特定實(shí)施方式中,多任務(wù)處理和并行處理可能是有利的。