神經(jīng)網(wǎng)絡(luò)系統(tǒng)及神經(jīng)網(wǎng)絡(luò)系統(tǒng)的訓練裝置和方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及信息處理領(lǐng)域,更具體地涉及一種神經(jīng)網(wǎng)絡(luò)系統(tǒng)及神經(jīng)網(wǎng)絡(luò)系統(tǒng)的訓 練裝置和方法。
【背景技術(shù)】
[0002] 近來,深度學習技術(shù)被廣泛應(yīng)用于分類及識別的任務(wù)。與其他傳統(tǒng)方法相比,深度 學習能夠得到更高的識別率。然而,一個深度學習系統(tǒng)通常需要大量的計算資源以及存儲 空間,因此大部分深度學習的應(yīng)用是使用服務(wù)器實現(xiàn)的,很難將其應(yīng)用在獨立設(shè)備上。
[0003] 因此,需要一種能夠節(jié)省計算資源的神經(jīng)網(wǎng)絡(luò)系統(tǒng)及該神經(jīng)網(wǎng)絡(luò)系統(tǒng)的訓練裝置 和方法。
【發(fā)明內(nèi)容】
[0004] 在下文中給出關(guān)于本發(fā)明的簡要概述,以便提供關(guān)于本發(fā)明的某些方面的基本理 解。應(yīng)當理解,這個概述并不是關(guān)于本發(fā)明的窮舉性概述。它并不是意圖確定本發(fā)明的關(guān) 鍵或重要部分,也不是意圖限定本發(fā)明的范圍。其目的僅僅是以簡化的形式給出某些概念, 以此作為稍后論述的更詳細描述的前序。
[0005] 本發(fā)明的一個主要目的在于,提供一種神經(jīng)網(wǎng)絡(luò)系統(tǒng),包括:二值神經(jīng)網(wǎng)絡(luò),二值 神經(jīng)網(wǎng)絡(luò)被配置為當輸入數(shù)據(jù)是二值數(shù)據(jù)時,將其直接輸入二值神經(jīng)網(wǎng)絡(luò),其中對于二值 神經(jīng)網(wǎng)絡(luò)的每一層,通過對該層的節(jié)點的值和其對應(yīng)的權(quán)重進行二值運算來得到下一層的 節(jié)點,其中二值神經(jīng)網(wǎng)絡(luò)每層節(jié)點的值和其對應(yīng)的權(quán)重都是二值數(shù)據(jù)。
[0006] 根據(jù)本發(fā)明的一個方面,提供了對上述神經(jīng)網(wǎng)絡(luò)系統(tǒng)進行訓練的訓練裝置,包括: 神經(jīng)網(wǎng)絡(luò)系統(tǒng)訓練單元,被配置為通過梯度下降算法使用浮點數(shù)據(jù)來訓練神經(jīng)網(wǎng)絡(luò)系統(tǒng), 其中,在二值神經(jīng)網(wǎng)絡(luò)的訓練過程中,將下一層節(jié)點值隨當前層節(jié)點值變化的離散函數(shù)近 似為連續(xù)函數(shù),用連續(xù)函數(shù)分別對當前層節(jié)點值以及對應(yīng)的權(quán)重求偏導數(shù);二值轉(zhuǎn)換單元, 被配置為在訓練結(jié)束后將得到的浮點值的各個權(quán)重轉(zhuǎn)換為二值數(shù)據(jù)。
[0007] 根據(jù)本發(fā)明的再一個方面,提供了對上述神經(jīng)網(wǎng)絡(luò)系統(tǒng)進行訓練的訓練方法,包 括:通過梯度下降算法使用浮點數(shù)據(jù)來訓練神經(jīng)網(wǎng)絡(luò)系統(tǒng),其中,在二值神經(jīng)網(wǎng)絡(luò)的訓練過 程中,將下一層節(jié)點值隨當前層節(jié)點值變化的離散函數(shù)近似為連續(xù)函數(shù),用連續(xù)函數(shù)分別 對當前層節(jié)點值以及對應(yīng)的權(quán)重求偏導數(shù);在訓練結(jié)束后將得到的浮點值的各個權(quán)重轉(zhuǎn)換 為二值數(shù)據(jù)。
[0008] 另外,本發(fā)明的實施例還提供了用于實現(xiàn)上述方法的計算機程序。
[0009] 此外,本發(fā)明的實施例還提供了至少計算機可讀介質(zhì)形式的計算機程序產(chǎn)品,其 上記錄有用于實現(xiàn)上述方法的計算機程序代碼。
[0010] 通過以下結(jié)合附圖對本發(fā)明的最佳實施例的詳細說明,本發(fā)明的這些以及其他優(yōu) 點將更加明顯。
【附圖說明】
[0011] 參照下面結(jié)合附圖對本發(fā)明實施例的說明,會更加容易地理解本發(fā)明的以上和其 它目的、特點和優(yōu)點。附圖中的部件只是為了示出本發(fā)明的原理。在附圖中,相同的或類似 的技術(shù)特征或部件將采用相同或類似的附圖標記來表示。
[0012] 圖1示出了根據(jù)本發(fā)明的一個實施例的神經(jīng)網(wǎng)絡(luò)系統(tǒng)100的示例性配置的框圖;
[0013] 圖2示出了根據(jù)本發(fā)明的一個實施例的二值化深度神經(jīng)網(wǎng)絡(luò)模型的示意圖;
[0014] 圖3示出了根據(jù)本發(fā)明的另一個實施例的神經(jīng)網(wǎng)絡(luò)系統(tǒng)100'的示例性配置的框 圖;
[0015] 圖4示出了根據(jù)本發(fā)明的一個實施例的混合二值深度神經(jīng)網(wǎng)絡(luò)模型的示意圖;
[0016] 圖5示出了根據(jù)本發(fā)明的一個實施例的對神經(jīng)網(wǎng)絡(luò)系統(tǒng)進行訓練的方法500的流 程圖;
[0017] 圖6A示出了下一層節(jié)點值隨當前層節(jié)點值變化的離散函數(shù)的曲線圖;
[0018] 圖6B示出了圖6A中的離散函數(shù)的曲線圖近似為連續(xù)函數(shù)的曲線圖;
[0019] 圖7示出了根據(jù)本發(fā)明的一個實施例的對神經(jīng)網(wǎng)絡(luò)系統(tǒng)進行訓練的訓練裝置700 的示例性配置的框圖;
[0020] 圖8是示出可以用于實施本發(fā)明的對神經(jīng)網(wǎng)絡(luò)系統(tǒng)進行訓練的裝置和方法的計 算設(shè)備的示例性結(jié)構(gòu)圖。
【具體實施方式】
[0021] 下面參照附圖來說明本發(fā)明的實施例。在本發(fā)明的一個附圖或一種實施方式中描 述的元素和特征可以與一個或更多個其它附圖或?qū)嵤┓绞街惺境龅脑睾吞卣飨嘟Y(jié)合。應(yīng) 當注意,為了清楚的目的,附圖和說明中省略了與本發(fā)明無關(guān)的、本領(lǐng)域普通技術(shù)人員已知 的部件和處理的表示和描述。
[0022] 本發(fā)明提出了一種二值化深度神經(jīng)網(wǎng)絡(luò)系統(tǒng)(BDNN),即該深度神經(jīng)網(wǎng)絡(luò)中的所有 節(jié)點與計算均是二值化的。因此,相比傳統(tǒng)的深度神經(jīng)網(wǎng)絡(luò),BDNN能夠節(jié)約大量的計算資 源與存儲空間并被應(yīng)用于獨立設(shè)備上。BDNN具有以下特點 :
[0023] 首先,在BDNN中,所有的網(wǎng)絡(luò)節(jié)點均為二值數(shù)據(jù)。本發(fā)明同時設(shè)計了對應(yīng)的線性 二值化計算。通過這些,網(wǎng)絡(luò)的前向傳播中將基本只包含二值化計算。在傳統(tǒng)深度神經(jīng)網(wǎng) 絡(luò)中,這些計算都是浮點計算。顯然,在進行識別任務(wù)時BDNN能夠節(jié)省更多的計算資源。
[0024] 其次,本發(fā)明同時為BDNN設(shè)計了訓練方法。在訓練中,本發(fā)明將二值化的節(jié)點轉(zhuǎn) 換為浮點值。通過這樣做,傳統(tǒng)的梯度下降算法將能夠用于訓練BDNN。同時,雖然在訓練中 各個節(jié)點為浮點值,但是整個網(wǎng)絡(luò)的前向傳播結(jié)果與二值化時保持一致。
[0025] BDNN是深度神經(jīng)網(wǎng)絡(luò)的一種,因此它滿足深度神經(jīng)網(wǎng)絡(luò)的基本定義。根據(jù)定義,一 個深度神經(jīng)網(wǎng)絡(luò)需要包含線性和非線性計算。在BDNN中,這兩種計算結(jié)合在神經(jīng)網(wǎng)絡(luò)的基 本運算中:使用本層多個神經(jīng)元節(jié)點通過運算來得到下一層的某個節(jié)點。
[0026] 下面將結(jié)合附圖來具體說明根據(jù)本發(fā)明的一個實施例的神經(jīng)網(wǎng)絡(luò)系統(tǒng)。
[0027] 圖1示出了根據(jù)本發(fā)明的一個實施例的神經(jīng)網(wǎng)絡(luò)系統(tǒng)100的示例性配置的框圖。
[0028] 如圖1所示,神經(jīng)網(wǎng)絡(luò)系統(tǒng)100包括二值神經(jīng)網(wǎng)絡(luò)102,二值神經(jīng)網(wǎng)絡(luò)102被配置 為如果輸入數(shù)據(jù)是二值數(shù)據(jù),則將其直接輸入二值神經(jīng)網(wǎng)絡(luò),其中對于二值神經(jīng)網(wǎng)絡(luò)的每 一層,通過對該層的節(jié)點的值和其對應(yīng)的權(quán)重進行二值運算來得到下一層的節(jié)點,其中二 值神經(jīng)網(wǎng)絡(luò)每層節(jié)點的值和其對應(yīng)的權(quán)重都是二值數(shù)據(jù)。
[0029] 圖2示出了根據(jù)本發(fā)明的一個實施例的二值化深度神經(jīng)網(wǎng)絡(luò)模型的示意圖。如圖 2所示,假丨
表示神經(jīng)網(wǎng)絡(luò)中某一層的幾個節(jié)點,它們都與下一層的節(jié) 點y相連。令
表示對應(yīng)連接的權(quán)重。因為所有的節(jié)點都為二值數(shù) 據(jù),可以用1和-1表示二值的兩個取值,那么就有
[0030] 本領(lǐng)域技術(shù)人員可以理解,二值數(shù)據(jù)的兩個取值不限于1和-1,也可以例如是1和 〇,或者其他二值數(shù)據(jù),為了方便說明,下文中都以二值數(shù)據(jù)取值為1和-1來進行說明。
[0031] 這里通過函數(shù)f來計算y的值,其中包含了線性及非線性運算。在一個實施例中, 可以定義運算:
[0032]
[0033] 其中?代表了二值數(shù)據(jù)的異或運算。對于某個X和w,共有四種取值情況:
[0034] X,w = {_1,-1},{_1,1},{1,-1},{1,1}〇
[0035] 如果用
作為例子,則xXw將針對不同的取值情況產(chǎn)生兩種結(jié)果:
[0036] xXw = 1,_1,_1,1。
[0037] 很明顯,對于四種取值情況,兩種結(jié)果是均衡的,-1和1各有兩個結(jié)果。然后,如 果把-1和1當成整數(shù)并可以進行加減運算,則可以定義 :
[0038]
[0039] 最后,f可以與作:
[0040]
CD
[0041] 明顯地,函數(shù)y最后的結(jié)果依然是一個二值數(shù)據(jù),屬于{-1,1}。通過f可以看出, X · W是線性運算部分,而其中的函數(shù)分段部分則可視為非線性運算。事實上,f起到的作用 是在{XiXWi, x2Xw2, x3Xw3,…,xnXwn}中清點-1和1的個數(shù)并返回其中數(shù)量較多的那個。
[0042] 通過上述BDNN的基本運算(1),可以設(shè)計不同的網(wǎng)絡(luò)結(jié)構(gòu)來構(gòu)建BDNN,比如全連 接的神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)等。
[0043] 上面說明了根據(jù)本發(fā)明的一個實施例的神經(jīng)網(wǎng)絡(luò)系統(tǒng)在輸入數(shù)據(jù)是二值數(shù)據(jù)的 情況下所進行的處理,如果神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)不是二值數(shù)據(jù),比如灰