深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法、處理器和深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實施方式涉及神經(jīng)網(wǎng)絡(luò)領(lǐng)域,更具體地,本發(fā)明的實施方式涉及一種深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法、處理器和深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)系統(tǒng)。
【背景技術(shù)】
[0002]本部分旨在為權(quán)利要求書中陳述的本發(fā)明的實施方式提供背景或上下文。此處的描述不因為包括在本部分中就承認(rèn)是現(xiàn)有技術(shù)。
[0003]深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)作為機器學(xué)習(xí)研宄中的一個新的領(lǐng)域,它通過模仿人腦的機制來解釋數(shù)據(jù),是一種通過建立和模擬人腦進行分析學(xué)習(xí)的智能模型。
[0004]如圖1所示為深度神經(jīng)網(wǎng)絡(luò)模型示意圖,一般訓(xùn)練數(shù)據(jù)會被依次送入該模型進行訓(xùn)練。然而,當(dāng)待訓(xùn)練數(shù)據(jù)較多時,如果采用單一的處理器進行訓(xùn)練則需要很長的訓(xùn)練時間,因此一般會將待訓(xùn)練數(shù)據(jù)分成兩份或兩份以上,采用兩個或者兩個以上處理器并行訓(xùn)練的方式以提高訓(xùn)練的效率。
[0005]在具體實現(xiàn)的過程中,在反向處理時,為了實現(xiàn)模型參數(shù)的更新,每個處理器都需要獲取一份完整的訓(xùn)練數(shù)據(jù)所對應(yīng)的參數(shù)修正量(即,不僅需要自身得到的參數(shù)修正量,還需要獲取其他并行處理的處理器得到的參數(shù)修正量),才能實現(xiàn)對模型參數(shù)的更新。為此,現(xiàn)有的處理方式是在反向處理完成后,增加一個參數(shù)修正量的傳輸過程,從而使得每個處理器都可以獲得一份完整的訓(xùn)練數(shù)據(jù)所對應(yīng)的參數(shù)修正量以實現(xiàn)模型參數(shù)的更新。
[0006]然而,因為這個參數(shù)修正量的傳輸過程的加入使得模型訓(xùn)練的時間被延長,訓(xùn)練效率也相應(yīng)降低,這顯然與最初并行處理以提高訓(xùn)練效率的目的是相悖的。
【發(fā)明內(nèi)容】
[0007]由于在并行進行深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的過程中,需要增加參數(shù)修正量的傳遞過程,占用了一定的時間,從而無法有效提高深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的效率,在現(xiàn)有技術(shù)中,也無法很好地縮短參數(shù)修正量傳遞所占用的時間,這事非常令人煩惱的過程。
[0008]為此,非常需要一種改進的深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方法,以有效縮短參數(shù)修正量傳遞所占用的時間,提高神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的效率。
[0009]在本上下文中,本發(fā)明實施方式期望提供一種深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法、處理器和深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)系統(tǒng)。
[0010]在本發(fā)明實施方式的第一方面中,提供了一種深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法,例如,可以包括:多個處理器并行地對分配至自身的數(shù)據(jù),在深度神經(jīng)網(wǎng)絡(luò)模型的多個層上從首層到末層逐層進行正向處理、并在正向處理結(jié)束時獲得誤差信息;所述多個處理器對所述誤差信息從所述末層到所述首層逐層進行反向處理,其中,所述多個處理器中的每個處理器在其深度神經(jīng)網(wǎng)絡(luò)模型的當(dāng)前層的反向處理產(chǎn)生參數(shù)修正量后,隨即向其他處理器傳遞所述參數(shù)修正量。
[0011]在本發(fā)明實施方式的第二方面中,提供了一種處理器,例如,可以包括:正向處理單元,用于對分配至自身的數(shù)據(jù),在深度神經(jīng)網(wǎng)絡(luò)模型的多個層上從首層到末層逐層進行正向處理、并在正向處理結(jié)束時獲得誤差信息;反向處理單元,用于對所述誤差信息從所述末層到所述首層逐層進行反向處理,其中,在深度神經(jīng)網(wǎng)絡(luò)模型的當(dāng)前層的反向處理產(chǎn)生參數(shù)修正量后,隨即向并行運算的其他處理器傳遞所述參數(shù)修正量。
[0012]在本發(fā)明實施方式的第三方面中,提供了一種深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)系統(tǒng),例如,可以包括:并行運算的多個上述的處理器。
[0013]通過本發(fā)明上述實施方式的深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法、處理器和深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)系統(tǒng),減少了參數(shù)修正量傳遞所需的時間,有效提高了深度神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的效率,尤其對于訓(xùn)練數(shù)據(jù)比較多、深度神經(jīng)網(wǎng)絡(luò)模型層數(shù)比較多的情況,這種方式可以大幅減少用時,有效節(jié)省模型訓(xùn)練的時間。
【附圖說明】
[0014]通過參考附圖閱讀下文的詳細描述,本發(fā)明示例性實施方式的上述以及其他目的、特征和優(yōu)點將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實施方式,其中:
[0015]圖1示意性地示出了根據(jù)本發(fā)明實施方式的深度神經(jīng)網(wǎng)絡(luò)模型示意圖;
[0016]圖2示意性地示出了現(xiàn)有技術(shù)中深度神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練流程示意圖;
[0017]圖3示意性地示出了根據(jù)本發(fā)明實施方式的應(yīng)用場景;
[0018]圖4示意性地示出了根據(jù)本發(fā)明實施方式的服務(wù)器的設(shè)備結(jié)構(gòu)示意圖;
[0019]圖5示意性地示出了根據(jù)本發(fā)明實施方式的處理器的設(shè)備結(jié)構(gòu)示意圖;
[0020]圖6示意性地示出了根據(jù)本發(fā)明實施方式的一種深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法的交互示意圖;
[0021]圖7示意性地示出了根據(jù)本發(fā)明實施方式的另一種深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法的交互示意圖;
[0022]圖8示意性地示出了現(xiàn)有的反向處理的邏輯流程示意圖;
[0023]圖9示意性地示出了根據(jù)本發(fā)明實施方式的反向處理的邏輯流程示意圖;
[0024]圖10示意性地示出了根據(jù)本發(fā)明實施方式的深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法的流程示意圖。
[0025]在附圖中,相同或?qū)?yīng)的標(biāo)號表不相同或?qū)?yīng)的部分。
【具體實施方式】
[0026]下面將參考若干示例性實施方式來描述本發(fā)明的原理和精神。應(yīng)當(dāng)理解,給出這些實施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進而實現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。相反,提供這些實施方式是為了使本申請公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達給本領(lǐng)域的技術(shù)人員。
[0027]本領(lǐng)域技術(shù)技術(shù)人員知道,本發(fā)明的實施方式可以實現(xiàn)為一種系統(tǒng)、裝置、設(shè)備、方法或計算機程序產(chǎn)品。因此,本申請公開可以具體實現(xiàn)為以下形式,即:完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等),或者硬件和軟件結(jié)合的形式。
[0028]根據(jù)本發(fā)明的實施方式,提出了一種深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法、處理器和深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)系統(tǒng)。
[0029]在本文中,需要理解的是,所涉及的術(shù)語中:
[0030]1、深度神經(jīng)網(wǎng)絡(luò)模型中的層:指代深度神經(jīng)網(wǎng)絡(luò)模型不同層的節(jié)點之間的線性層和非線性層,這里的線性層和非線性層是在不同層的節(jié)點之間,對數(shù)據(jù)進行映射、運算的處理層,其中線性層對輸入數(shù)據(jù)進行的處理包括權(quán)重矩陣處理,還可以包括偏置向量處理等,非線性層則包括sigmoid層、softmax層、relu層等類型。
[0031]2、參數(shù)修正量:在深度神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的反向處理過程中,所產(chǎn)生的用于更新深度神經(jīng)網(wǎng)絡(luò)模型參數(shù)的修正量,主要包括權(quán)重矩陣修正量和偏置向量修正量。在進行模型參數(shù)的更新時,對反向處理過程產(chǎn)生的所述參數(shù)修正量進行處理,并根據(jù)處理結(jié)果對模型參數(shù)進行更新。其中,權(quán)重矩陣修正量用于更新線性層中的權(quán)重矩陣的參數(shù),而偏置向量修正量用于更新線性層中偏置向量的參數(shù)。
[0032]線性層中權(quán)重矩陣和偏置向量對不同層節(jié)點之間的數(shù)值映射處理方式是現(xiàn)有技術(shù),不再贅述。
[0033]此外,附圖中的任何元素數(shù)量均用于示例而非限制,以及任何命名都僅用于區(qū)分,而不具有任何限制含義。
[0034]下面參考本發(fā)明的若干代表性實施方式,詳細闡釋本發(fā)明的原理和精神。
[0035]發(fā)曰月概沐
[0036]為了對本發(fā)明進行更為清楚的描述,下面將對現(xiàn)有的深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法進行具體說明。常規(guī)上,數(shù)據(jù)被依次送入深度神經(jīng)網(wǎng)絡(luò)進行學(xué)習(xí),每一批數(shù)據(jù)的計算是通過一個深度神經(jīng)網(wǎng)絡(luò)模型在處理器上完成的,其中該處理器可以是圖形處理器(GPU),例如,對如圖1所示為深度神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練主要是按照以下三個步驟執(zhí)行的:
[0037]步驟1:數(shù)據(jù)從首層到末層逐層進行正向處理、并在正向處理結(jié)束時獲得誤差信息;
[0038]步驟2:將誤差信息從末層到首層逐層進行反向處理;
[0039]步驟3:通過在反向處理過程中得到的參數(shù)修正量對模型中需要進行參數(shù)更新的層進行參數(shù)更新。
[0040]具體的,在實現(xiàn)的過程中,在上述步驟3參數(shù)更新的過程并非對深度神經(jīng)網(wǎng)絡(luò)模型中的每個層都是必須的,一般僅模型中的線性層可能需要進行參數(shù)更新,非線性層一般是不需要進行參數(shù)更新的。為了使得描述更為清楚簡單,在下文的文字描述以及附圖所示意性的內(nèi)容中,所涉及的深度神經(jīng)網(wǎng)絡(luò)模型中的層指代的都是模型中需要進行參數(shù)更新的層,對于不需要進行參數(shù)更新的層,將不再贅述。
[0041]由于在大數(shù)據(jù)時代,數(shù)據(jù)非常多,如果僅通過一個處理器,將這些數(shù)據(jù)分批依次送入深度神經(jīng)網(wǎng)絡(luò)進行學(xué)習(xí),則訓(xùn)練過程需要很長的時間(設(shè)置可能一次訓(xùn)練好幾個月),為了縮短模型的訓(xùn)練時間,提出了可以使用多個處理器來共同進行數(shù)據(jù)計算以實現(xiàn)快速的模型訓(xùn)練。以2個處理器為例進行說明:
[0042]把每一批數(shù)據(jù)分成2份,將這2份數(shù)據(jù)同時送給2個處理器,每個處理器上仍舊按照上述的三個步驟執(zhí)行,因為這兩個處理器是相互獨立的計算單元,因此它們各自的計算是可以同時進行的。對每一批數(shù)據(jù)而言,2個處理器上的步驟I和步驟2是可以同時進行的,這樣相對于每一個處理器而言,完成步驟I和步驟2所需的時間與原本的僅通過