本發(fā)明屬于信息技術領域,涉及機器學習和深度學習技術,尤其涉及一種基于k大值的稀疏化(sparsify)神經(jīng)網(wǎng)絡模型后向傳播訓練方法。
背景技術:
神經(jīng)網(wǎng)絡模型的訓練過程分為兩個步驟:前向傳播(forwardpropagation)和后向傳播(backwardpropagation)。前向傳播計算神經(jīng)網(wǎng)絡各層的輸出,后向傳播根據(jù)前向傳播輸出結果的梯度計算模型參數(shù)的梯度,最后神經(jīng)網(wǎng)絡模型利用這些梯度對參數(shù)進行更新。
現(xiàn)有的后向傳播方法需要利用前向傳播的輸出結果的全部梯度信息來計算參數(shù)的梯度,這使得神經(jīng)網(wǎng)絡的訓練耗時很長,計算量和耗電量大,而且會引入大量與實例相關度低的信息,從而使得訓練好的神經(jīng)網(wǎng)絡模型的準確度較低。
技術實現(xiàn)要素:
為了克服上述現(xiàn)有技術的不足,本發(fā)明提供一種基于k大值的稀疏化后向傳播的訓練方法,通過減少更新與實例相關度低的信息來提高神經(jīng)網(wǎng)絡的訓練速度和訓練效果。
本發(fā)明提供的技術方案是:
一種神經(jīng)網(wǎng)絡模型的稀疏化后向傳播訓練方法,在后向傳播過程中通過采用基于k大值的稀疏化方法,減少更新與實例相關度低的信息,提高深度神經(jīng)網(wǎng)絡的訓練速度和訓練效果,包括如下步驟:
1)前向傳播過程:
在前向傳播的過程中,神經(jīng)網(wǎng)絡的每一層接受上層的輸入x,通過給定的線性變換輸出y和非線性變換輸出z,并作為下一層的輸入,最后一層的輸出為整個網(wǎng)絡的輸出結果。前向傳播的網(wǎng)絡可以是前饋神經(jīng)網(wǎng)絡(mlp),循環(huán)神經(jīng)網(wǎng)絡(rnn)或長短時記憶網(wǎng)絡(lstm)等采用后向傳播(圖3)進行梯度計算的神經(jīng)網(wǎng)絡模型。
2)后向傳播過程:
神經(jīng)網(wǎng)絡模型每一層的后向傳播需要利用上一層的輸出梯度
具體地,本發(fā)明通過式1對輸出梯度
其中,σi′是稀疏化處理后的向量;topk代表一個k大值稀疏化操作,即保留輸入向量的所有維度的絕對值中前k大的值(k的大小小于向量z的維度n),剩余的值全部為0,例如
利用經(jīng)式1進行稀疏化處理后的向量σi′計算參數(shù)矩陣w的梯度,計算公式為式2:
利用經(jīng)式1進行稀疏化處理后的向量σi′計算輸入向量x的梯度,計算公式為式3:
其中,{t1,t2,…,tk}(1≤k≤n)代表
當神經(jīng)網(wǎng)絡有多層時,本層的輸入向量x即為下層的輸出向量,因此輸入向量x的梯度可以作為下一層的輸出結果梯度傳遞下去。
采用本發(fā)明方法訓練神經(jīng)網(wǎng)絡模型,由于每一層的梯度都經(jīng)過了topk稀疏化處理(式1),只保留了與訓練實例最相關的信息,可以大幅度地降低計算量和計算時間,并提高模型的準確度。
3)根據(jù)2)中后向傳播求得的稀疏化梯度,對神經(jīng)網(wǎng)絡的參數(shù)進行更新:
本發(fā)明方法適用于所有采用了標準后向傳播(圖3)的訓練算法,例如亞當(adam)訓練算法、自適應次梯度(adagrad)訓練算法、隨機梯度下降算法(sgd)等。由于稀疏化梯度只保留了與實例最相關的信息,因此可以提高模型訓練的可靠性。
本發(fā)明方法適用于所有采用了標準后向傳播(圖3)的神經(jīng)網(wǎng)絡模型,例如前饋神經(jīng)網(wǎng)絡(mlp),循環(huán)神經(jīng)網(wǎng)絡(rnn),長短時記憶網(wǎng)絡(lstm)等。
與現(xiàn)有技術相比,本發(fā)明的有益效果是:
本發(fā)明通過基于k大值的稀疏化后向傳播的訓練方法來降低訓練時間和計算量,以及提高神經(jīng)網(wǎng)絡的準確度。通過本發(fā)明提供的后向傳播方法,減少了神經(jīng)網(wǎng)絡的訓練時間,尤其減少了神經(jīng)網(wǎng)絡模型的計算量和耗電量,稀疏化的過程沒有降低模型的準確度,甚至由于只更新了與實例最相關的信息,神經(jīng)網(wǎng)絡模型的準確度可以得到提高。
附圖說明
圖1是本發(fā)明提供的一種基于k大值的稀疏化后向傳播的訓練方法的流程框圖。
圖2是前向傳播過程;
其中,(a)為前向傳播計算流程;(b)為前向傳播概念示意圖。
圖3是現(xiàn)有方法的后向傳播過程;
其中,(a)為現(xiàn)有后向傳播具體計算流程(參數(shù)矩陣的梯度計算);(b)為現(xiàn)有后向傳播具體計算流程(輸入向量的梯度計算);(c)為現(xiàn)有后向傳播的概念圖。
圖4是本發(fā)明方法中的后向傳播;
其中,(a)為本發(fā)明方法的稀疏化后向傳播具體計算流程(參數(shù)矩陣的稀疏化梯度計算);(b)為本發(fā)明方法的稀疏化后向傳播具體計算流程(輸入向量的稀疏化梯度計算);(c)為本發(fā)明方法的稀疏化后向傳播的概念圖。
具體實施方式
下面結合附圖,通過實施例進一步描述本發(fā)明,但不以任何方式限制本發(fā)明的范圍。
本發(fā)明提供一種神經(jīng)網(wǎng)絡模型的稀疏化后向傳播訓練方法,是一種基于k大值的稀疏化后向傳播的訓練方法,圖1是本發(fā)明方法的流程框圖。
神經(jīng)網(wǎng)絡最基本的計算單元是一個線性變換加上一個非線性變換,因此,具體實施以最基本的神經(jīng)網(wǎng)絡計算單元為例,計算公式如下:
y=wx
z=σ(y)
其中,w是模型的參數(shù)矩陣,x是輸入向量,y是線性變換后的輸出,σ是非線性變換的函數(shù),z是非線性變換后的輸出。
本發(fā)明提供的神經(jīng)網(wǎng)絡模型的稀疏化后向傳播訓練方法包括如下步驟:
1)通過前向傳播過程計算深度神經(jīng)網(wǎng)絡每一層的結果z:
圖2示意了前向傳播過程。給定輸入m維向量x,n乘m維參數(shù)矩陣w,先通過線性變換得到中間結果y(n維),再通過非線性變換函數(shù)σ得到神經(jīng)網(wǎng)絡的輸出z(n維);
2)后向傳播過程:
圖3示意了現(xiàn)有的后向傳播過程,其中,(a)為現(xiàn)有后向傳播具體計算流程(參數(shù)矩陣的梯度計算);(b)為現(xiàn)有后向傳播具體計算流程(輸入向量的梯度計算);(c)為現(xiàn)有后向傳播的概念圖。圖4示意了本發(fā)明方法中的后向傳播過程,其中,(a)為本發(fā)明方法的稀疏化后向傳播具體計算流程(參數(shù)矩陣的稀疏化梯度計算);(b)為本發(fā)明方法的稀疏化后向傳播具體計算流程(輸入向量的稀疏化梯度計算);(c)為本發(fā)明方法的稀疏化后向傳播的概念圖。
本發(fā)明中,后向傳播(如圖4)時需要利用前向傳播的輸出梯度
其中,topk代表一個k大值稀疏化操作,即保留輸入向量的所有維度的絕對值中前k大的值(k的大小小于向量z的維度n),剩余的值全部為0,例如
利用經(jīng)式1進行稀疏化處理后的向量σi′計算參數(shù)矩陣w的梯度,計算公式為式2:
利用經(jīng)式1進行稀疏化處理后的向量σi′計算輸入向量x的梯度,計算公式為式3:
其中,{t1,t2,…,tk}(1≤k≤n)代表
當神經(jīng)網(wǎng)絡有多層時,本層的輸入向量x即為下層的輸出向量,因此輸入向量x的梯度可以作為下一層的輸出結果梯度傳遞下去。
采用本發(fā)明方法訓練神經(jīng)網(wǎng)絡模型,由于每一層的梯度都經(jīng)過了topk稀疏化處理(式1),只保留了與訓練實例最相關的信息,可以大幅度地降低計算量和計算時間,并提高模型的準確度。
c.根據(jù)求得的稀疏化梯度對神經(jīng)網(wǎng)絡的參數(shù)進行更新。
本發(fā)明方法適用于所有采用了標準后向傳播(圖3)的訓練算法,例如亞當(adam)訓練算法、自適應次梯度(adagrad)訓練算法、隨機梯度下降算法(sgd)等。由于稀疏化梯度只保留了與實例最相關的信息,因此可以提高模型訓練的可靠性。
本發(fā)明方法適用于所有采用了標準后向傳播(圖3)的神經(jīng)網(wǎng)絡模型,例如前饋神經(jīng)網(wǎng)絡(mlp),循環(huán)神經(jīng)網(wǎng)絡(rnn),長短時記憶網(wǎng)絡(lstm)等。
需要注意的是,公布實施例的目的在于幫助進一步理解本發(fā)明,但是本領域的技術人員可以理解:在不脫離本發(fā)明及所附權利要求的精神和范圍內(nèi),各種替換和修改都是可能的。因此,本發(fā)明不應局限于實施例所公開的內(nèi)容,本發(fā)明要求保護的范圍以權利要求書界定的范圍為準。