專利名稱:基于gpu的條件隨機場模型的數(shù)據(jù)分類方法
技術(shù)領(lǐng)域:
本發(fā)明涉及ー種數(shù)據(jù)分類方法,具體涉及ー種基于GPU的并行條件隨機場模型的數(shù)據(jù)分類方法。
背景技術(shù):
條件隨機場(Conditional Random Field,簡稱CRF)是機器學(xué)習(xí)中的重要判別式模型之一,最早應(yīng)用于自然語言處理過程,由此逐漸被引入數(shù)據(jù)挖掘、生物信息學(xué)、圖像智能識別及搜索引擎等熱門領(lǐng)域中。它解決了其他傳統(tǒng)判別式模型(例如極大熵馬爾科夫模 型,簡稱MEMMS)的標(biāo)記偏置問題,并且有更加精準(zhǔn)的訓(xùn)練預(yù)測效果。然而,隨著分類應(yīng)用的廣泛,串行CRF面臨了ー些問題。實際應(yīng)用中,訓(xùn)練集數(shù)量快速增長,數(shù)據(jù)分析序列越來越長(例如ー個DNA中就包含了上千氨基酸對),特征數(shù)量越來越多(圖形圖像處理的特征可以達到十萬甚至百萬數(shù)量級),而CRF對于多特征綜合建模的迭代訓(xùn)練過程計算復(fù)雜,耗時久。通常為了調(diào)優(yōu)學(xué)習(xí)模型,會重復(fù)訓(xùn)練過程。由此造成了串行CRF嚴(yán)重耗時。實踐中,對于45個特征標(biāo)簽的1,000,000個單詞利用一階串行CRF進行語義分割耗時,甚至需要100小吋。如此高昂的計算代價使得CRF無法有效的應(yīng)用到需要實時處理的系統(tǒng)中,因此CRF的并行化成為ー個直觀的需求。當(dāng)前有效的CRF并行方法主要是劃分樣本集,通過消息傳遞接ロ(MessagePassing Interface,簡稱MPI)利用大規(guī)模計算機分布式處理子任務(wù),最后匯總處理計算結(jié)果。這種方法在一定范圍內(nèi)獲得了線性加速比,但相比于消耗的計算資源而言,性價比不高;另ー方面,圖像處理器(Graphic Process Units,簡稱GPU)以其顯存帶寬大、執(zhí)行單元多、浮點運算能力強且成本功耗低等特點,在通用并行計算領(lǐng)域逐漸有所作為,但GPU也有其自身的局限性和處理的特殊性單個處理器性能低,需要大量計算單元同時并行提升性能;內(nèi)存IO消耗存在分級開銷特點;并行讀取共享內(nèi)存效率問題等。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于GPU的并行條件隨機場模型的數(shù)據(jù)分類方法,其具有耗時短、能有效處理線性依賴性數(shù)據(jù)、過多過長觀察序列、過多特征序列特性的優(yōu)點。本發(fā)明是通過以下技術(shù)方案實現(xiàn)的一種基于GPU的條件隨機場并行實現(xiàn)方法,包括步驟 讀取學(xué)習(xí)數(shù)據(jù),包括觀察數(shù)據(jù)序列X的長度值N,特征序列Y的長度值M,所有觀察數(shù)據(jù)-特征對集合{(X,y)} (X為X中任意元素,y為Y中任意元素)、特征轉(zhuǎn)移概率數(shù)組F[M] [Μ]、特征出現(xiàn)概率數(shù)組G[M] [N],并初始化特征權(quán)重數(shù)組λ 口、μ []、似然函數(shù)值lh、似然函數(shù)緩存值IhTemp為O ;獲取顯存容量GPUMem,并初始化觀察數(shù)據(jù)序列X和特征序列Y的分割數(shù)組divX[]、divY[],以及其有效長度divXLen、divYLen為0,初始化分割數(shù)據(jù)標(biāo)志ds為O ;判斷N或者M是否大于(GPUMem)1/4 ;
如果是,則設(shè)置分割數(shù)據(jù)標(biāo)志ds = 1,分割所述觀察數(shù)據(jù)序列X,以獲得分割位數(shù)組divX[]及其有效長度divXLen ;定義數(shù)據(jù)分割塊計數(shù)器i = 1,Xi為X[l]到X[divX[l]]之間的觀察數(shù)據(jù)塊;傳遞觀察數(shù)據(jù)塊Xi進入GPU,以獲取Xi的似然函數(shù)值IhTemp ;判斷i是否大于等于divXLen ;如果是,貝1J設(shè)置Ih = Ih+IhTemp ;CPU根據(jù)Ih更新特征權(quán)重向量λ、μ,以求取似然函數(shù)梯度值; 判斷似然函數(shù)梯度值是否為O ;如果是,則CPU讀取新的觀察數(shù)據(jù)序列X’,其長度值為N’,初始化矩陣R □口和L[][]為0,初始化X’的分割數(shù)組divX’ □、分割長度divXLen’為0,初始化最優(yōu)狀態(tài)序列state []為 O ;判斷N’或者M是否大于(GPUMem)1/4 ;如果是,則設(shè)置分割數(shù)據(jù)標(biāo)志ds’ = 1,分割觀察數(shù)據(jù)X’,以獲得分割位數(shù)組divX,[]及其有效長度divXLen,;定義數(shù)據(jù)分割塊計數(shù)器j = 1,X,j為V [I]到V [divX[l]]之間的觀察數(shù)據(jù)塊;GPU根據(jù)特征權(quán)重向量λ、μ,計算觀察數(shù)據(jù)-特征對集合{(X’,y)}的最大概率值,X ‘為X’ j中的任意元素,y為Y中任意元素,將概率值存入R□口,將最大概率值對應(yīng)的上一觀察數(shù)據(jù)對應(yīng)的特征數(shù)據(jù)編號存入L[][];判斷j是否大于等于divXLen’ ;如果是,GPU返回矩陣結(jié)果R口 []、L[] □至CPU ;CPU選取矩陣R最后一列中的最大概率值,根據(jù)關(guān)聯(lián)矩陣L獲取該最大概率值對應(yīng)的上一觀察數(shù)據(jù)對應(yīng)的特征數(shù)據(jù)編號,在L中重復(fù)獲取上一觀察數(shù)據(jù)對應(yīng)的特征數(shù)據(jù)編號,對應(yīng)特征依次存入最優(yōu)狀態(tài)序列state口 ;CPU輸出最優(yōu)狀態(tài)序列state []。本發(fā)明的方法還包括步驟若N 或者 M 沒有大于(GPUMem)1/4,則 divXLen = 1,divX[l] = N ;若N’ 或者 M 沒有超過(GPUMem)1/4,則 divXLen,= 1,divX,[I] = N。本發(fā)明的方法還包括步驟若i < divXLen,則設(shè)置 Ih = lh+lhTemp, i = i+1, Xi 為 X[divX[i_l]]到X[divX[i]]之間的觀察數(shù)據(jù)塊;返回傳遞觀察數(shù)據(jù)塊Xi進入GPU,以獲取Xi似然函數(shù)值IhTemp的步驟;若j < divXLen’,則設(shè)置 j = j+l,X,j 為 X,[divX,[j_l]]到 X,[divX,[j]]之間的觀察數(shù)據(jù)塊;返回GPU根據(jù)特征權(quán)重向量λ、μ,計算觀察數(shù)據(jù)-特征對集合{(x’,y)}的最大概率值,X ‘為X’ j中的任意元素,y為Y中任意元素,將概率值存入R□口,該最大概率值對應(yīng)的上一觀察數(shù)據(jù)對應(yīng)的特征數(shù)據(jù)編號存入L[][]的步驟。本發(fā)明的方法還包括步驟若似然函數(shù)梯度值不為0,則返回判斷N或者M是否大于(GPUMem)1/4的步驟。獲取Xi的似然函數(shù)值IhTemp的步驟包括設(shè)置分割標(biāo)志ds = 2,分割特征序列Y得到divY口和divYLen。定義變量k,并初始化為I。初始化矩陣狀態(tài)轉(zhuǎn)移概率子數(shù)組f[][]和狀態(tài)出現(xiàn)概率子數(shù)組g[][]為O,初始化矩陣 divf []、difg[]為 O ;GPU獲取Y[divY[k_l]]到Y(jié)[divY[k]]之間特征數(shù)據(jù)塊,標(biāo)記Yk,k = I時,Yk為Y[l]到Y(jié)[divY[l]]之間的特征數(shù)據(jù)塊;按照Yk內(nèi)容,設(shè)置ds = 3。分割特征轉(zhuǎn)移概率矩陣F[M] [Μ],獲得狀態(tài)轉(zhuǎn)移子數(shù)組 f 口 □,矩陣 divf 口 ;從Yk中的第一個特征開始,即初始化j = I ;GPU開辟M個線程,每個線程計算ー個特征的前向向量,線程標(biāo)號tid表示處理的特征編號,結(jié)果存入前向數(shù)組alpha[tid] [j];設(shè)置j = j+1,指向Yk中的下ー特征數(shù)據(jù);判斷是否處理完Yk中所有特征數(shù)據(jù),即j是否大于Yk長度;如果是,設(shè)置k = k+Ι,處理下一個特征序列塊;判斷是否已處理完所有特征序列塊,即k是否大于divYLen ;如果是,GPU獲取當(dāng)前等待處理的第i塊觀察數(shù)據(jù),標(biāo)記為Xi,并從觀察數(shù)據(jù)-特征對(x,y)集合中找到Xi中所有觀察數(shù)據(jù)對應(yīng)的特征,組成給定特征數(shù)據(jù)塊Yi ;分別設(shè)置ds = 3,ds = 4,根據(jù) Xi,Yi,分害 I] F[M] [Μ]、G[M] [N],GPU 先后獲取 f[][]、g[] []、divf []、divg[];GPU利用前向數(shù)組和f[] []、g[] []、divf []、divg[]求取給定Xi-Yi序列對概率值之和,以及序列歸ー化量兩者相減,獲得觀察數(shù)據(jù)塊Xi部分的似然函數(shù)值,存入lhTemp。 獲取Xi的似然函數(shù)值IhTemp的步驟還包括若j < = Yk長度吋,則返回GPU開辟M個線程,每個線程計算ー個特征的前向向量,線程標(biāo)號tid表示處理的特征編號,結(jié)果存入前向數(shù)組alpha[tid] [j]的步驟。獲取Xi的似然函數(shù)值IhTemp的步驟還包括若k< = divYLen 時,則返回 GPU 獲取 Y[divY[k_l]]到 Y[divY[k]]之間特征數(shù)據(jù)塊,標(biāo)記Yk,k= I吋,Yk為Y[l]到Y(jié)[divY[l]]之間的特征數(shù)據(jù)塊的步驟。分割觀察數(shù)據(jù)序列X,以獲得分割位數(shù)組divX[]及其有效長度divXLen的步驟包括讀取給定分割數(shù)據(jù)標(biāo)志ds值;傳輸最大值tmax設(shè)定為(GPUMem)17level-(GPUMem)1/level % threadsPerBlock ;level 為用戶給定 GPU 顯存使用程度,默認(rèn)為 5 ;threadsPerBlock為每個block中線程數(shù),默認(rèn)設(shè)置為256 ;判斷ds是否等于I ;如果是,以X序列在tmax長度處開始,向前搜索語義結(jié)束符的位置,將此位置的值存入X分割位數(shù)組divX[]中,從當(dāng)前分割位開始再向后循環(huán)上述搜索過程直至X結(jié)束,獲得divX[]及其有效長度divXLen ;判斷ds是否等于2 ;如果是,從Y序列在tmax長度處,每tmax獲取ー個分割位置的值,存入Y分割位數(shù)組divY □,獲得divY[]及其有效長度寫入divYLen ;判斷ds是否等于3 ;如果是,按照當(dāng)前待處理狀態(tài)序列段Yi中所有元素值,從特征轉(zhuǎn)移概率數(shù)組F[M][Μ]中抽取對應(yīng)列,存入狀態(tài)轉(zhuǎn)移概率子數(shù)組f[][]中,并將f[][]列號與抽取列在F[M][N]中列號的對應(yīng)關(guān)系寫入數(shù)組divfロ。分割觀察數(shù)據(jù)序列X,以獲得分割位數(shù)組divX[]及其有效長度divXLen的步驟還包括若ds不等于1,則返回判斷ds是否等于2的步驟;若ds不等于2,則返回判斷ds是否等于3的步驟;若ds不等于3,則按照當(dāng)前待處理觀察數(shù)據(jù)序列段Xi中所有觀察數(shù)據(jù),從特征出現(xiàn)概率數(shù)組G[M] [N]中抽取對應(yīng)列,存入特征出現(xiàn)概率子數(shù)組g[][],并將g[][]列號與抽取列在G[M] [N]中列號的對應(yīng)關(guān)系寫入數(shù)組divgロ。本發(fā)明具有以下的優(yōu)點和技術(shù)效果 (I)針對不同粒度、不同類型的模型數(shù)據(jù)采用不同分割策略進行分割,充分發(fā)揮GPU的并行性,提高模型學(xué)習(xí)和推導(dǎo)過程速度;(2)在采用分割策略的基礎(chǔ)上,適當(dāng)調(diào)整了 GPU并行計算的步驟以適應(yīng)分段似然函數(shù)值計算的需要,有效保證了模型的準(zhǔn)確性。
圖I是本發(fā)明基于GPU的并行條件隨機場模型的數(shù)據(jù)分類方法的流程圖。圖2是本發(fā)明步驟(7)的細(xì)化流程圖。圖3是本發(fā)明分割觀察數(shù)據(jù)序列的細(xì)化流程圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明進行詳細(xì)說明。如圖I所示,本發(fā)明基于GPU的并行條件隨機場模型的數(shù)據(jù)分類方法包括以下步驟(I)讀取學(xué)習(xí)數(shù)據(jù),包括觀察數(shù)據(jù)序列X的長度值N,特征序列Y的長度值M,所有觀察數(shù)據(jù)-特征對集合{(X,y)} (X為X中任意元素,y為Y中任意元素)、特征轉(zhuǎn)移概率數(shù)組F[M] [Μ]、特征出現(xiàn)概率數(shù)組G [Μ] [N],并初始化特征權(quán)重數(shù)組λ []、μ []、似然函數(shù)值lh、似然函數(shù)緩存值IhTemp為O ;根據(jù)給定的觀察序列X,給定觀察數(shù)據(jù)-特征對集合概率可以通過如下公式ー進行計算PCflx; = -=T7Tevpi 'S+βτGlyitX) J
\ =1プ
Ζ( )定文為 ;=Y : I〉.'rGi V;ハ·:一t,+ Pr .—,Λ·))
1. I=■■■■■ノ其中,N為觀察數(shù)據(jù)序列X長度。F、G分別對應(yīng)特征轉(zhuǎn)移概率數(shù)組和特征出現(xiàn)概率數(shù)組。λ、μ為權(quán)重值向量。Z(X)為歸ー化量,定義為X給定時所有可能出現(xiàn)的y的概率之和,即求取I的邊緣分布。對于給定包含若干個x、y的X-Y序列對,可以根據(jù)上式分別求出其出子序列對χ-y概率表達式,其中包含了 λ、μ系數(shù)。
(2)獲取顯存容量GPUMem,并初始化觀察數(shù)據(jù)序列X和特征序列Y的分割數(shù)組divX[]、divY[],以及其有效長度divXLen、divYLen為0,初始化分割數(shù)據(jù)標(biāo)志ds為O ;(3)判斷N或者M是否大于(GPUMem)1/4 ;如果是,轉(zhuǎn)到步驟(5),否則轉(zhuǎn)到步驟
(4);(4) divXLen = I, divX[l] = N。轉(zhuǎn)到步驟(6);(5)設(shè)置分割數(shù)據(jù)標(biāo)志ds = 1,分割所述觀察數(shù)據(jù)序列X,以獲得分割位數(shù)組divX[]及其有效長度divXLen ;在元素X給定分割后,觀察數(shù)據(jù)-特征對集合可以表示成{(xd,yd)}
d = [I, dimXLen] ° 厶
式ー此時可以看成關(guān)于λ、μ為未知參數(shù)的多項式函數(shù)P (yd I xd,λ, μ),即似然函數(shù)。模
型學(xué)習(xí)的過程此時等價于對于給定,學(xué)習(xí)過程找到滿足
it
Γγ\γ\οο %eriRifis f / ^I r-s-. - ,-,
L0082」 a = 9、L{A,m = 9 <r-- v. l\ ,
&=1
Ai · · V 翁·ψ -vf= ·ΓΙβ ** 口 θ Ρ(^Τ^'*[*h ■ χ^) * <Γ ム'λ— α;:: J
i=—"Is-I其中f、g分別表示對應(yīng)F、G的子數(shù)組。為了便于計算,常用方法是對上面的公式進行取以e為底的對數(shù),在保證函數(shù)性質(zhì)基礎(chǔ)上,將大量的乘法,轉(zhuǎn)換成加法計算,減少計算量,轉(zhuǎn)換后公式如下,η為每個觀察數(shù)據(jù)序列分塊中觀察數(shù)據(jù)的個數(shù)
HvXlmk TlPrtfers= 2, ::2/:,/( レ^i)+ デ邊·、:.·卜
嫌 λ對于離散型隨機變量,log似然函數(shù)的最大值求解過程可以轉(zhuǎn)換成了對應(yīng)的梯度求解過程當(dāng)函數(shù)梯度為O吋,P(Ylx)可以取得最大值。接下來的詳細(xì)描述過程將以λ為例,說明函數(shù)梯度的求解過程,μ計算過程與之一祥。對λ求取梯度后得到函數(shù)
r;ηη^iap)= ;'レ)(ΡΟΙν,;) /;:vひ),へ—*Λ 雇
ImZy對于々JΣ;=._/;:—Vd.:.)進ー步進行化簡后可得到
__ /5\... —\POIλI = 2 I〉I
y、! * ,\ = \ \ い/
,·· \
η I __\
II= > I > /v;. Iri 1>,\χ ) I
i=\ い.::こべ/其中有如下定義
^ …e:-;D{7.J V-, V ,λ . ; -t ο ;; V..:,^- Y e.':::丨..............丫 て................:.........む.....;:ν...........................マ.マ=α .:.U: )α ( ,y^) = exp ( λ Tf (^i,,xd) + μ Tg (Ji,xd))這里的a (yi y^)可視為前向向量。根據(jù)上面的描述可以得到最終的梯度求解過程公式ニ如下IiLftll)論% e_-J麻Λ-Λ))。
(6)定義數(shù)據(jù)分割塊計數(shù)器i = l,Xi為X[l]到X[divX[l]]之間的觀察數(shù)據(jù)塊;(7)傳遞觀察數(shù)據(jù)塊Xi進入GPU,以獲取Xi的似然函數(shù)值IhTemp ;邊緣分布的變換求取過程中,涉及到大量可并行化的前向向量計算。為了提高模型學(xué)習(xí)速度,所以在獲取Xi的似然函數(shù)值IhTemp的過程中,先按后續(xù)描述子步驟(7_1) (7-9)描述求取所有的前向向量值,存入前向矩陣。然后按照子步驟(7-10) (7-12)描述計算分段似然函數(shù)值。步驟(7-10) (7-12)的詳細(xì)實現(xiàn)過程如下描述。GPU 計算公式 二中的
權(quán)利要求
1.一種基于GPU的條件隨機場并行實現(xiàn)方法,其特征在于,包括步驟 讀取學(xué)習(xí)數(shù)據(jù),包括觀察數(shù)據(jù)序列X的長度值N,特征序列Y的長度值M,所有觀察數(shù)據(jù)-特征對集合{(x,y)} (X為X中任意元素,y為Y中任意元素)、特征轉(zhuǎn)移概率數(shù)組F[M][M]、特征出現(xiàn)概率數(shù)組G[M] [N],并初始化特征權(quán)重數(shù)組X []、ii []、似然函數(shù)值lh、似然函數(shù)緩存值IhTemp為O ; 獲取顯存容量GPUMem,并初始化觀察數(shù)據(jù)序列X和特征序列Y的分割數(shù)組divX[]、divY[],以及其有效長度divXLen、divYLen為O,初始化分割數(shù)據(jù)標(biāo)志ds為O ; 判斷N或者M是否大于(GPUMem)1/4 ; 如果是,則設(shè)置分割數(shù)據(jù)標(biāo)志ds = I,分割觀察數(shù)據(jù)序列X,以獲得分割位數(shù)組divX[]及其有效長度divXLen ; 定義數(shù)據(jù)分割塊計數(shù)器i = l,Xi為X[l]到X[divX[l]]之間的觀察數(shù)據(jù)塊; 傳遞觀察數(shù)據(jù)塊Xi進入GPU,以獲取Xi的似然函數(shù)值IhTemp ; 判斷i是否大于等于divXLen ; 如果是,則設(shè)置Ih = Ih+IhTemp ; CPU根據(jù)Ih更新特征權(quán)重向量X、ii,以求取似然函數(shù)梯度值; 判斷似然函數(shù)梯度值是否為O ; 如果是,則CPU讀取新的觀察數(shù)據(jù)序列X’,其長度值為N’,初始化矩陣R[][]和L[][]為O,初始化X’的分割數(shù)組divX’ []、分割長度divXLen’為O,初始化最優(yōu)狀態(tài)序列state []為O ; 判斷N’或者M是否大于(GPUMem)1/4 ; 如果是,則設(shè)置分割數(shù)據(jù)標(biāo)志ds’ = 1,分割觀察數(shù)據(jù)X’,以獲得分割位數(shù)組divX’ []及其有效長度divXLen’ ; 定義數(shù)據(jù)分割塊計數(shù)器j = 1,X’ j為X’ [I]到X’ [divX[l]]之間的觀察數(shù)據(jù)塊;GPU根據(jù)特征權(quán)重向量\U,計算觀察數(shù)據(jù)-特征對集合Kx’,y)}的最大概率值,X ‘為X’ j中的任意元素,y為Y中任意元素,將概率值存入R[][],將最大概率值對應(yīng)的上一觀察數(shù)據(jù)對應(yīng)的特征數(shù)據(jù)編號存入L[][]; 判斷j是否大于等于divXLen’ ; 如果是,GPU返回矩陣結(jié)果R[] []、L□□至CPU ; CPU選取矩陣R最后一列中的最大概率值,根據(jù)關(guān)聯(lián)矩陣L獲取該最大概率值對應(yīng)的上一觀察數(shù)據(jù)對應(yīng)的特征數(shù)據(jù)編號,在L中重復(fù)獲取上一觀察數(shù)據(jù)對應(yīng)的特征數(shù)據(jù)編號,對應(yīng)特征依次存入最優(yōu)狀態(tài)序列state 口 ; CPU輸出最優(yōu)狀態(tài)序列state []。
2.根據(jù)權(quán)利要求I所述的條件隨機場并行實現(xiàn)方法,其特征在于,還包括步驟 若 N 或者 M 沒有大于(GPUMem)1/4,則 divXLen = 1,divX[l] = N ; 若 N,或者 M 沒有超過(GPUMem)1/4,則 divXLen,= 1,divX,[I] = N。
3.根據(jù)權(quán)利要求I所述的條件隨機場并行實現(xiàn)方法,其特征在于,還包括步驟若 i < divXLen,則設(shè)置 Ih = lh+lhTemp, i = i+1,Xi 為 X[divX[i_l]]到 X[divX[i]]之間的觀察數(shù)據(jù)塊;返回傳遞觀察數(shù)據(jù)塊Xi進入GPU,以獲取Xi似然函數(shù)值IhTemp的步驟;若 j < divXLen’,則設(shè)置 j = j+l,X,j 為 X,[divX,[j_l]]到 X,[divX,[j]]之間的觀察數(shù)據(jù)塊;返回GPU根據(jù)特征權(quán)重向量X、ii,計算觀察數(shù)據(jù)-特征對集合{(x’,y)}的最大概率值,X ‘為X’ j中的任意元素,y為Y中任意元素,將概率值存入R[][],該最大概率值對應(yīng)的上一觀察數(shù)據(jù)對應(yīng)的特征數(shù)據(jù)編號存入L[][]的步驟。
4.根據(jù)權(quán)利要求I所述的條件隨機場并行實現(xiàn)方法,其特征在于,還包括步驟 若似然函數(shù)梯度值不為O,則返回判斷N或者M是否大于(GPUMem)1/4的步驟。
5.根據(jù)權(quán)利要求I所述的條件隨機場并行實現(xiàn)方法,其特征在于,獲取Xi的似然函數(shù)值IhTemp的步驟包括 設(shè)置分割標(biāo)志ds = 2,分割特征序列Y得到divY[]和divYLen。定義變量k,并初始化為I。初始化矩陣狀態(tài)轉(zhuǎn)移概率子數(shù)組f[][]和狀態(tài)出現(xiàn)概率子數(shù)組g[][]為O,初始化矩陣 divf []、difg[]為 O ; GPU獲取Y[divY[k-l]]到Y(jié)[divY[k]]之間特征數(shù)據(jù)塊,標(biāo)記Yk,k = I時,Yk為Y[I]到Y(jié)[divY[l]]之間的特征數(shù)據(jù)塊; 按照Yk內(nèi)容,設(shè)置ds = 3。分割特征轉(zhuǎn)移概率矩陣F[M] [M],獲得狀態(tài)轉(zhuǎn)移子數(shù)組f[]□,矩陣 divf 口 ; 從Yk中的第一個特征開始,即初始化j = I ; GPU開辟M個線程,每個線程計算一個特征的前向向量,線程標(biāo)號tid表示處理的特征編號,結(jié)果存入前向數(shù)組alpha[tid] [j]; 設(shè)置j = j+1,指向Yk中的下一特征數(shù)據(jù); 判斷是否處理完Yk中所有特征數(shù)據(jù),即j是否大于Yk長度; 如果是,設(shè)置k = k+1,處理下一個特征序列塊; 判斷是否已處理完所有特征序列塊,即k是否大于divYLen ; 如果是,GPU獲取當(dāng)前等待處理的第i塊觀察數(shù)據(jù),標(biāo)記為Xi,并從觀察數(shù)據(jù)-特征對(x,y)集合中找到Xi中所有觀察數(shù)據(jù)對應(yīng)的特征,組成給定特征數(shù)據(jù)塊Yi ; 分別設(shè)置 ds = 3,ds = 4,根據(jù) Xi,Yi,分害I] F[M] [M]、G[M] [N],GPU 先后獲取 f [][]、g[] []、divf []、divg[]; GPU利用前向數(shù)組和f[] []、g[] []、divf []、divg[]求取給定Xi-Yi序列對概率值之和,以及序列歸一化量兩者相減,獲得觀察數(shù)據(jù)塊Xi部分的似然函數(shù)值,存入lhTemp。
6.根據(jù)權(quán)利要求5所述的條件隨機場并行學(xué)習(xí)方法,其特征在于,獲取Xi的似然函數(shù)值IhTemp的步驟還包括 若j < = Yk長度時,則返回GPU開辟M個線程,每個線程計算一個特征的前向向量,線程標(biāo)號tid表示處理的特征編號,結(jié)果存入前向數(shù)組alpha[tid] [j]的步驟。
7.根據(jù)權(quán)利要求5所述的條件隨機場并行學(xué)習(xí)方法,其特征在于,獲取Xi的似然函數(shù)值IhTemp的步驟還包括 若k < = divYLen時,則返回GPU獲取Y[divY[k_l]]到Y(jié)[divY[k]]之間特征數(shù)據(jù)塊,標(biāo)記Yk, k = I時,Yk為Y[I]到Y(jié)[divY[l]]之間的特征數(shù)據(jù)塊的步驟。
8.根據(jù)權(quán)利要求I所述的條件隨機場并行學(xué)習(xí)方法,其特征在于,分割觀察數(shù)據(jù)序列X,以獲得分割位數(shù)組divX[]及其有效長度divXLen的步驟包括 讀取給定分割數(shù)據(jù)標(biāo)志ds值;傳輸最大值tmax設(shè)定為(GPUMem)1/1 evel-(GPUMem)17level% threadsPerBlock ;level 為用戶給定 GPU 顯存使用程度,默認(rèn)為 5 ;threadsPerBlock為每個block中線程數(shù),默認(rèn)設(shè)置為256 ; 判斷ds是否等于I ; 如果是,以X序列在tmax長度處開始,向前搜索語義結(jié)束符的位置,將此位置的值存A X分割位數(shù)組divX[]中,從當(dāng)前分割位開始再向后循環(huán)上述搜索過程直至X結(jié)束,獲得divX[]及其有效長度divXLen ; 判斷ds是否等于2; 如果是,從Y序列在tmax長度處,每tmax獲取一個分割位置的值,存入Y分割位數(shù)組divY □,獲得divY 口及其有效長度寫入divYLen ; 判斷ds是否等于3; 如果是,按照當(dāng)前待處理狀態(tài)序列段Yi中所有元素值,從特征轉(zhuǎn)移概率數(shù)組F[M] [M]中抽取對應(yīng)列,存入狀態(tài)轉(zhuǎn)移概率子數(shù)組f[][]中,并將f[][]列號與抽取列在F[M] [N]中列號的對應(yīng)關(guān)系寫入數(shù)組divf []。
9.根據(jù)權(quán)利要求8所述的條件隨機場并行實現(xiàn)方法,其特征在于,分割觀察數(shù)據(jù)序列X,以獲得分割位數(shù)組divX[]及其有效長度divXLen的步驟還包括 若ds不等于1,則返回判斷ds是否等于2的步驟; 若ds不等于2,則返回判斷ds是否等于3的步驟; 若ds不等于3,則按照當(dāng)前待處理觀察數(shù)據(jù)序列段Xi中所有觀察數(shù)據(jù),從特征出現(xiàn)概率數(shù)組G[M] [N]中抽取對應(yīng)列,存入特征出現(xiàn)概率子數(shù)組g[][],并將g[][]列號與抽取列在G[M] [N]中列號的對應(yīng)關(guān)系寫入數(shù)組divg[]。
全文摘要
本發(fā)明提供了一種基于GPU的條件隨機場模型的數(shù)據(jù)分類方法,包括以下步驟CPU讀取訓(xùn)練數(shù)據(jù)集,根據(jù)匹配模板定義法則,生成特征集。CPU初始化相關(guān)矩陣和向量,先計算出觀察序列的起始結(jié)點對應(yīng)所有特征的初始概率。CPU判斷是否數(shù)據(jù)分割處理。傳遞參數(shù)后,GPU根據(jù)處理數(shù)據(jù)規(guī)模自動選擇合適并行計算方法,并行計算每個觀察點對應(yīng)每個特征的最大概率值。計算結(jié)束后,返回結(jié)果由CPU判斷數(shù)據(jù)處理完成情況和最后的輸出。本方法具有通用性好、訓(xùn)練速度快、有效處理大規(guī)模序列數(shù)據(jù)、自適應(yīng)力的特點。
文檔編號G06K9/62GK102663415SQ201210072409
公開日2012年9月12日 申請日期2012年3月19日 優(yōu)先權(quán)日2012年3月19日
發(fā)明者馮曉文, 章勤, 鄭然 , 金海 , 韓丹 申請人:華中科技大學(xué)