本公開的實施例涉及機器學習領域,并且更具體地涉及用于訓練混合模型的方法和設備。
背景技術:
混合模型是一種使用混合分布的用于密度估計的概率模型,混合模型可以包括多個子模型。混合模型的示例包括但不限于高斯混合模型、分段線性混合模型,等等。這些模型已被廣泛應用于多種領域,諸如圖像分類、文檔分類、模糊圖像分割等。
數據降維(dimensionalityreduction)是指通過線性或非線性映射將高維空間中的數據映射到低維空間中,從而獲得高維數據的低維表示,數據降維能夠減少原始數據的冗余性。在機器學習領域中,常見的數據降維方式包括主成分分析(principalcomponentanalysis,pca)、線性判別分析(lineardiscriminantanalysis,lda)、局部線性嵌入(locallylinearembedding,lle)、拉普拉斯特征映射(laplacianeigenmaps),等等。
混合概率主成分分析(mixturesofprobabilisticprinciplecomponentanalyzers,mppca)是一種適用于大規模數據的降維方法。mppca方法例如可以應用到數據壓縮、圖像分析、時間序列預測、異常點檢測,等等。mppca方法通常需要采用交叉驗證的組合循環或者利用先驗分布來估計混合模型中的每個子模型的子空間維度。
技術實現要素:
本公開的實施例提供了一種用于訓練混合模型的方法和設備,能夠實現自動學習用于降維的混合模型。
根據本公開的一個方面,提供了一種用于訓練混合模型的方法,該混合模型包括多個子模型。該方法包括:響應于接收到第一數據集,確定第一數據集相對于多個子模型的第一分布。該方法還包括:迭代執行以下操作至少一次,直至收斂條件被滿足:基于第一分布,降低多個子模型中的第一子模型的第一子空間維度;以及基于降低后的第一子空間維度,更新第一分布。
根據本公開的另一方面,提供了一種用于訓練混合模型的設備,該混合模型包括多個子模型。該設備包括至少一個處理單元,其被配置為:響應于接收到第一數據集,確定第一數據集相對于多個子模型的第一分布;以及迭代執行以下操作至少一次,直至收斂條件被滿足:基于第一分布,降低多個子模型中的第一子模型的第一子空間維度;以及基于降低后的第一子空間維度,更新第一分布。
根據本公開的又一方面,提供了一種計算機可讀存儲介質。該計算機可讀存儲介質具有存儲在其上的計算機可讀程序指令。這些計算機可讀程序指令可以用于執行根據本公開中的各個實施例所描述的方法的步驟。
提供發明內容部分是為了簡化的形式來介紹對概念的選擇,它們在下文的具體實施方式中將被進一步描述。發明內容部分無意標識本公開的關鍵特征或主要特征,也無意限制本公開的各個實施例的范圍。
附圖說明
通過結合附圖對本公開示例性實施例進行更詳細的描述,本公開的上述以及其它目的、特征和優勢將變得更加明顯,其中,在本公開示例性實施例中,相同的參考標號通常代表相同部件。
圖1示出了根據本公開的實施例的用于訓練混合模型的架構100的框圖;
圖2示出了根據本公開的實施例的用于訓練混合模型的方法200的流程圖;
圖3示出了根據本公開的實施例的用于訓練針對數據流的混合模型的方法300的流程圖;以及
圖4示出了可以用來實施本公開的實施例的示例設備400的示意性框圖。
具體實施例
下面將參照附圖更詳細地描述本公開的優選實施例。雖然附圖中顯示了本公開的優選實施例,然而應該理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了使本公開更加透徹和完整,并且能夠將本公開的范圍完整地傳達給本領域的技術人員。
在本文中使用的術語“包括”及其變形表示開放性包括,即“包括但不限于”。除非特別申明,術語“或”表示“和/或”。術語“基于”表示“至少部分地基于”。術語“一個示例實施例”和“一個實施例”表示“至少一個示例實施例”。術語“另一實施例”表示“至少一個另外的實施例”。術語“第一”、“第二”等可以指代不同的或相同的對象。下文還可能包括其他明確的和隱含的定義。
在本公開實施例中,“隱變量”可以表示不能被直接觀測到、而需要通過樣本數據推導得出的變量。隱變量的變分分布可以用于描述樣本數據被分布到對應類別的概率。應當注意的是,在本發明實施例中,“隱變量”并不限于一種變量,而是可以包含“隱變量的變分分布”和/或其他適當的信息。在本公開中,隱變量可以包括初始化隱變量、更新后的隱變量等,其中初始化隱變量表示用于進行訓練的隱變量,而更新的隱變量表示訓練后得到隱變量。
在本公開的實施例中,“模型”一般是指混合模型,例如候選模型、中間模型以及目標模型等。模型可以基于初始化隱變量通過對樣本數據進行訓練來生成。如此生成的模型可以包括更新的隱變量的變分分布、模型參數、模型結構等。模型參數可以根據混合模型的類型不同而不同,混合模型通常是一類模型的總稱。一個混合模型可由多個子模型組合而成,子模型也可以被稱為組件(component)。由此,模型參數與具體的混合模型的類型相關聯。
舉例而言,對于混合概率主成分分析模型而言,模型參數可以包括子空間維度、轉換矩陣、均值以及方差。對于高斯混合模型而言,模型參數可以包括每個子模型所服從的高斯分布的均值和方差。對于分片線性模型而言,模型參數則可以包括門節點的條件控制參數和葉子節點的回歸系數及偏差。模型結構也與混合模型的類型相關聯。舉例而言,對于混合概率主成分分析模型而言,模型結構可以包括子模型的個數及子模型混合比率等。應當理解,上述示例僅僅是出于討論之目的,無意以任何方式限制本公開的范圍。
如上文提及,混合概率主成分分析(mppca)方法通常需要采用交叉驗證的組合循環或者利用先驗分布來估計混合模型中的每個子模型的子空間維度。然而,在采用交叉驗證的組合循環的情況下,需要大量的計算來確定混合模型中的每個子模型的子空間維度;在利用先驗分布的情況下,需要使用自動相關性(automaticrelevancevalidation,ard)先驗來估計每個子模型的子空間維度,然而,該先驗超參數的調整需要人工干預。因此,現有的mppca的模型選擇方法需要指定降低后的子空間維度或者需要手動調整大量超參數,因而不能夠快速地訓練用于降維的混合模型。
分解漸進貝葉斯推理(factorizedasymptoticbayesianinference,fab)是一種模型貝葉斯近似推理方法,其通過迭代優化來計算隱變量的變分分布和模型參數以最大化目標函數的下界。在線分解漸進貝葉斯推理(onlinefactorizedasymptoticbayesianinference,ofab)是一種支持在線處理的fab,能夠適應針對流數據的混合模型選擇。分解信息范式(fic)是邊際對數似然的漸進近似,其表示混合模型的目標函數。
此外,fab以及其他傳統的模型訓練方法均無法有效地為流數據等新型數據模式選擇模型。流數據是指連續到達的數據序列,它已經逐漸成為大數據時代的常態數據模式。流數據的出現為模型選擇帶來了諸多新挑戰。例如,流數據可被視為一個隨時間延續而增長的動態數據集合,它動態出現、數據量大、到達速度快。而且,通常無法對全部流數據進行本地存儲。這導致數據是一次通過的。換言之,對于流數據中以不同批次到達的數據集通常只能進行一次處理,已經處理過的流數據不能再次被訪問和處理。又如,生成流數據的數據源往往是動態變化的,這使得新的數據模型可能動態出現,而先前的數據模型則會失效。
為了能夠自動學習用于降維的混合模型,本公開的實施例提供了一種用于訓練混合模型的方法。根據本公開的一些實施例,能夠對數據進行自動降維,而不需要任何先驗概率分布知識。另外,根據本公開的另一些實施例,能夠執行針對流數據的自動降維處理,而無需本地存儲所有流數據,實現了針對流數據的在線混合模型訓練。此外,根據本公開的又一些實施例,用于訓練混合模型的方法還能夠快速地發現數據集中的新的模式或概念。
圖1示出了根據本公開的實施例的用于訓練混合模型的架構100的框圖。如圖1所示,架構100可以包括混合模型訓練系統120,其用于訓練混合模型以便對數據進行降維。應當理解,本公開的實施例適用于能夠降維的各種混合模型,包括但不限于主成分分析(pca)模型、線性判別分析(lda)模型、局部線性嵌入(lle)模型或者拉普拉斯特征映射模型,等等。實際上,任何目前已知或者將來開發的包括多個子模型的用于降維的混合模型均可利用本公開的實施例來加以訓練。僅僅出于討論方便之目的,下文的某些實施例可能參考mppca模型來描述,但這并非以任何方式限制本公開的范圍。
混合模型訓練系統120可以接收數據集110,為討論方便起見,數據集110可以表示為b={x1,x2,…,xn},其中xi表示第i個樣本,n表示樣本的數目。數據集110將被用來訓練混合模型以便對數據進行降維,從而輸出混合模型130和混合模型130的模型參數。模型參數可以表示為
數據分布確定模塊122被配置為接收數據集110,并且確定數據集110相對于混合模型中多個子模型的分布(表示為q(zb))。為討論方便,現在考慮一個示例。在此示例中,數據集110可以是由n副圖像構成的圖像集合,xi表示第i個圖像樣本。在一個實施例中,xi=(x1,…,xd),其表示一個向量,d表示向量的初始維度,其中每一維可以是圖像中的一個像素的值。在一些實施例中,數據集110可以表示由多個數據集組成的流數據,數據分布確定模塊122可以連續地接收數據集110中的第一數據集b(m-1)(m=1,2,3……)和在第一數據集b(m-1)之后的第二數據集b(m),并且順序地對第一數據集b(m-1)和第二數據集b(m)進行混合模型訓練。例如,當數據集110為圖像集合時,混合模型訓練系統120基于原始圖像數據學習出一個混合模型,用以對圖像集合進行壓縮。由于混合模型包括多個子模型,每個子模型具有各自的子空間維度,因此針對不同類型的圖像可以執行不同程度的壓縮。因此,當數據集110為圖像集合時,數據分布確定模塊122可以接收圖像集合并且確定這些圖像的相對于子模型的初始分布。
模型參數更新模塊124被配置為基于數據集110相對于混合模型中多個子模型的分布q(zb)來更新多個子模型的模型參數θ,其中模型參數θ包括每個子模型的子空間維度。例如,模型參數更新模塊124可以迭代地更新分布q(zb)和模型參數θ。例如,可以基于分布q(zb)來更新模型參數θ,并且基于更新后的模型參數θ來更新分布q(zb)。在一些實施例中,在迭代完成更新分布q(zb)和模型參數θ之后,混合模型訓練系統120可以輸出混合模型130的結構和混合模型130的模型參數θ,其中模型參數θ包括混合模型130中每個子模型的子空間維度。
圖2示出了根據本公開的實施例的用于訓練混合模型的方法200的流程圖,該混合模型包括多個子模型。方法200可以由如圖1所示的混合模型訓練系統120來執行。應當理解的是,方法200還可以包括未示出的附加步驟和/或可以省略所示出的步驟。本公開的范圍在此方面不受限制。
方法200以步驟202開始。在步驟202中,響應于接收到第一數據集,確定第一數據集相對于多個子模型的分布(稱為“第一分布”)。例如,第一數據集可以表示為b(m-1)={xi,xi+1,…,xi+j},m=1,2,……,xi表示第一數據集b(m-1)中的樣本,j表示第一數據集b(m-1)中的樣本的數目,xi=(xi1,…,xid)表示一個向量,d表示向量的子空間維度。在一些實施例中,每個樣本都具有初始維度,并且初始維度可以相同。在一個實施例中,數據集110可以為固定數據集,其僅包括第一數據集b(m-1)。在另一個實施例中,數據集110可以為動態流數據,其還包括除了第一數據集b(m-1)之外的其他數據集,例如第二數據集b(m)。
在一個實施例中,響應于接收到第一數據集b(m-1),數據分布確定模塊122可以確定第一數據集相對于多個子模型的第一分布。例如,在一個實施例中,第一數據集相對于子模型的分布可以由第一數據集b(m-1)的隱變量的變分分布來表示。第一數據集b(m-1)的隱變量的變分分布可以表示為q(zb)(m-1)={q(zi),q(zi+1),……q(zi+j)},其中z∈{0,1}c,其表示z在c維向量上每個元素的值為0或1,c表示混合模型中的現有的子模型的數目。例如,在一個實施例中,當xn屬于第c個子模型時,znc可以被設置為1,當xn不屬于第c個子模型時,znc可以被設置為0。
仍然考慮上文描述上的數據集110為圖像集合的示例。此時,第一數據集b(m-1)可以為多幅圖像,每副圖像表示為一個多維向量,其中每一維可以是圖像中的一個像素。在一些實施例中,在接收到第一數據集b(m-1)之后,可以基于混合模型中的當前的子模型來隨機地初始化隱變量的變分分布q(zb)(m-1),例如,可以將第一數據集b(m-1)中的所有樣本隨機地分布到c個子模型中。
接下來,方法200進行到步驟204,基于第一分布,降低多個子模型中的第一子模型的第一子空間維度,其中所述第一子模型可以為一個或多個。例如,模型參數更新模塊124可以降低混合模型中的至少一個子模型的子空間維度。在一些實施例中,模型參數更新模塊124還可以更新多個子模型的其他模型參數,例如子模型的轉換矩陣、均值和方差。
在一個實施例中,混合模型的模型參數可以表示為
其中n表示第一數據集中的樣本總數,xn表示第n個樣本,zn表示樣本xn的隱變量,c表示混合模型中的第c個子模型,c表示混合模型中的子模型的數目,dc表示第c個子模型的子空間維度,wc表示第c個子模型的轉換矩陣,μc表示第c個子模型的均值,σc2表示第c個子模型的方差,d表示每個子模型的初始維度,
在更新混合模型的模型參數θ的過程中,例如可以通過以下公式(2)來設定第c個子模型的混合比率αc和第c個子模型的均值μc。
其中n表示第一數據集中的樣本總數,xn表示第n個樣本。
此外,例如,還可以通過對以下公式(3)中的矩陣sc進行特征值分解來確定第c個子模型的轉換矩陣wc,第c個子模型的子空間維度dc以及第c個子模型的方差σc2。
其中q(zn)表示樣本xn的隱變量的變分分布,xn表示第n個樣本,αc表示第c個子模型的混合比率,μc表示第c個子模型的均值。
對矩陣sc的特征分解可表示為公式(4)。
sc=vcdiag(λ1,…,λd)vct(4)
其中,λ1≥…≥λd,vc是sc的特征向量矩陣,λi(i=1,…,d)是sc的特征值。
通過以上公式(4)可以得出公式(5)中的維度dc和公式(6)中的方差σc2和轉換矩陣wc:
其中n表示第一數據集中的樣本總數,αc表示第c個子模型的混合比率,d表示每個子模型的初始維度dc表示第c個子模型的子空間維度,λi是sc的特征值,v1,vdc表示sc的特征向量。
接下來,方法200進行到步驟206,基于降低后的第一子空間維度,更新第一分布。例如,如以下公式(7)所示,數據分布確定模塊122根據降低后的第一子空間維度以及其他模型參數(例如,以上所描述的子模型的轉換矩陣wc、均值μc以及方差σc2)來更新初始化隱變量的變分分布q(zb)(m-1)。
其中αc表示第c個子模型的混合比率,xn表示第n個樣本,μc表示第c個子模型的均值,wc表示第c個子模型的轉換矩陣,wct表示第c個子模型的轉置矩陣,i表示單位矩陣,d表示每個子模型的初始維度,dc表示第c個子模型的子空間維度。
在步驟208,判斷是否滿足收斂條件。在一些實施例中,收斂條件可以是迭代的次數已經達到預定次數。也就是說,步驟204和206已經重復執行預定次數,例如10次。備選地或附加地,在一些實施例中,收斂條件可以為隱變量的變分分布的變化量低于第一預定閾值。又如,收斂條件也可以為第一子空間維度的變化量低于第二預定閾值。備選地或附加地,收斂條件還可以為混合模型的目標函數的變化量低于第三預定閾值。也就是說,當隱變量的變分分布、第一子空間維度和混合模型的目標函數中的一個或多個開始收斂時,可以確定滿足收斂條件。
在一些實施例中,通過以上所描述的步驟204和206迭代地更新第一分布q(zb)(m-1)和模型參數θ,可以實現第一數據集b(m-1)相對于多個子模型的分布q(zb)(m-1)并且對混合模型中的子模型進行子空間維度降維。在一些實施例中,當數據集110為圖像集合時,例如可以將圖像初始分布到不同類型的子模型中,并且針對不同類型的圖像執行不同程度的壓縮。
如果在步驟208確定沒有滿足收斂條件,則方法200返回步驟204和206繼續下一輪迭代,直到滿足收斂條件。如果在步驟208確定已經滿足收斂條件,則方法200進行到步驟210,完成針對第一數據集的混合模型訓練。
在用于訓練混合模型的方法200中,通過迭代更新隱變量的變分分布并且降低子模型的子空間維度,能夠實現自動學習用于降維的混合模型。此外,通過收斂條件的靈活設置,能夠保證模型訓練的高準確性,也能夠在高準確性和快處理速度之間進行平衡。
圖3示出了根據本公開的實施例的用于訓練針對數據流的混合模型的方法300的流程圖。將會理解,方法300可以視作上文參考圖2描述的方法200中的步驟210之后執行的方法步驟。
在數據集110為流數據的情況下,例如數據集110還包括除了第一數據集b(m-1)之外的第二數據集b(m),在完成針對第一數據集b(m-1)的混合模型訓練之后,步驟302開始執行。在步驟302中,在響應于接收到流數據中在第一數據集之后的第二數據集,確定第二數據集相對于多個子模型的分布(稱為“第二分布”)。與第一分布類似,第二分布例如可以由隱變量的變分分布q(zb)(m)來表示。在一些實施例中,在數據分布確定模塊122接收到第二數據集b(m)之后,可以基于混合模型中的當前的子模型來隨機地初始化隱變量的變分分布q(zb)(m),例如,可以將第二數據集b(m)中的所有樣本隨機地分布到c個子模型中。
方法300繼續進行到步驟304,基于第二分布,降低多個子模型中的第二子模型的第二子空間維度,其中所述第二子模型可以為一個或多個,并且第二子模型可以與第一子模型相同、不同或者部分相同。例如,模型參數更新模塊124可以降低多個子模型中的第二子模型的第二子空間維度。在一些實施例中,模型參數更新模塊124還可以更新多個子模型的其他模型參數,例如子模型的轉換矩陣、均值和方差。
在一個實施例中,可以以類似于針對第一數據集b(m-1)的處理方式來處理第二數據集b(m),模型參數更新模塊124可以通過最大化混合模型的目標函數的邊際對數似然來實現對模型結構和模型參數的估計。在一個實施例中,可以由如下公式(8)來表示針對流數據的混合模型的目標函數的邊際對數似然。
其中n表示已經接收到的數據集中的樣本總數,xn表示第n個樣本,zn表示樣本xn的隱變量,c表示混合模型中的第c個子模型,c表示混合模型中的子模型的數目,dc表示第c個子模型的子空間維度,wc表示第c個子模型的轉換矩陣,μc表示第c個子模型的均值,σc2表示第c個子模型的方差,d表示每個子模型的初始維度,
在更新針對流數據的混合模型的模型參數θ的過程中,可以將中間矩陣pc定義為公式(9):
其中
vctvc=i,(t-1)表示上一次迭代,(t)表示當前迭代,εt表示超參數,αc(t-1)表示上一次迭代時第c個子模型的混合比率,αc(t)表示當前迭代時第c個子模型的混合比率,wc(t-1)表示上一次迭代時第c個子模型的轉換矩陣,wc(t)表示當前迭代時第c個子模型的轉換矩陣,wct(t-1)表示上一次迭代時第c個子模型的轉置矩陣,μc(t-1)表示上一次迭代時第c個子模型的均值,μc(t)表示當前迭代時第c個子模型的均值,σc2(t-1)表示上一次迭代時第c個子模型的方差,σc2(t)表示當前迭代時第c個子模型的方差,i表示單位矩陣。
基于以下公式(11)所示的對中間矩陣pc的特征值分解,可以得出每個子模型的模型參數,例如當前迭代時第c個子模型的均值μc(t)、當前迭代時第c個子模型的子空間維度dc(t)、當前迭代時第c個子模型的方差σc2(t)以及當前迭代時第c個子模型的轉換矩陣wc(t)。
pc=vcdiag(λ1,…,λd)vct(11)
其中,λ1,…,λd為pc的特征值,,λ1≥λ2≥…≥λd,vc=[v1,…,vd]∈rd×d為pc的特征向量。
公式(12)展示了基于pc的特征值分解來更新模型參數的方法。
其中q(znc)表示樣本xn在第c個子模型上的變分分布,dc表示第c個子模型的子空間維度,vdc表示pc的特征向量,d表示子空間維度變量。
方法300繼續進行到步驟306,基于降低后的第二子空間維度,更新第二分布。例如,數據分布確定模塊122根據降低后的第二子空間維度以及其他模型參數(例如,以上所描述的子模型的轉換矩陣、均值和方差)來更新初始化隱變量的變分分布。例如,可以通過以下公式(13)來確定當前迭代時的隱變量的變分分布q(znc)(t)。
其中,αc(t)表示當前迭代時第c個子模型的混合比率,xn表示第n個樣本,μc(t)表示當前迭代時第c個子模型的均值,wc(t)表示當前迭代時第c個子模型的轉換矩陣,wct(t)表示當前迭代時第c個子模型的轉置矩陣,σc2(t)表示當前迭代時第c個子模型的方差,n表示已經接收到的數據集中的樣本總數,dc表示第c個子模型的子空間維度,d表示每個子模型的初始維度。
在步驟308,判斷是否滿足收斂條件。在一些實施例中,收斂條件可以是迭代的次數已經達到預定次數。在另一些實施例中,當隱變量的變分分布、第二子空間維度和混合模型的目標函數中的一個或多個開始收斂時,可以確定滿足收斂條件。
如果在步驟308確定沒有滿足收斂條件,則方法300返回步驟304和306繼續下一輪迭代,直到滿足收斂條件。如果在步驟308確定已經滿足收斂條件,則方法300繼續進行到步驟310,判斷流數據中是否還有其他的數據集。如果流數據中還有其他的數據集,則在步驟312,接收下一數據集,例如第三數據集b(m+1),并且采用與第二數據集b(m)的相同的處理方式來處理第三數據集b(m+1),例如執行與步驟302-306類似的步驟。如果流數據中的所有數據集都已經被處理完或者收到模型輸出請求,則可以在步驟314,輸出混合模型130和混合模型的模型參數,例如,模型參數包括每個子模型的降低后的子空間維度。
根據用于訓練混合模型的方法300,混合模型訓練系統120順序地接收數據流中的數據集,并且通過針對當前數據集進行混合模型訓練,來估計混合模型的子模型結構和子模型參數(例如,子模型的降低后的子空間維度),從而能夠實現在線訓練針對流數據的混合模型。
在某些實施例中,可選地,可以在模型訓練之后或者過程中對模型進行收縮。例如,在某些實施例中,當混合模型130被調用時,可以確定該混合模型中是否存在不活躍子模型。在此使用的術語“不活躍子模型”是指在其上分布的數據量小于閾值量的子模型。例如,通過移除不活躍子模型來收縮混合模型,并且輸出經收縮的混合模型。在一些實施例中,可以設置閾值δ,并且如果以下公式(14)成立,則確定混合模型中的第c個子模型是不活躍的子模型。
其中znc表示樣本xn對第c個子模型的隸屬度,znc∈{0,1},q(znc)表示隱變量znc的變分分布,εt表示超參數,αc(t)表示當前迭代時子模型c的混合比率,δ表示閾值。
圖4示出了可以用來實施本公開的實施例的示例設備400的示意性框圖。如圖所示,設備400包括中央處理單元(cpu)401,其可以根據存儲在只讀存儲器(rom)402中的計算機程序指令或者從存儲單元408加載到隨機訪問存儲器(ram)403中的計算機程序指令,來執行各種適當的動作和處理。在ram403中,還可存儲設備400操作所需的各種程序和數據。cpu401、rom402以及ram403通過總線404彼此相連。輸入/輸出(i/o)接口405也連接至總線404。
設備400中的多個部件連接至i/o接口405,包括:輸入單元406,例如鍵盤、鼠標等;輸出單元407,例如各種類型的顯示器、揚聲器等;存儲單元408,例如磁盤、光盤等;以及通信單元409,例如網卡、調制解調器、無線通信收發機等。通信單元409允許設備400通過諸如因特網的計算機網絡和/或各種電信網絡與其他設備交換信息/數據。
上文所描述的各個過程和處理,例如方法200和/或300,可由cpu401執行。例如,在一些實施例中,方法200和/或300可以被實現為計算機軟件程序,其被有形地包含于機器可讀介質,例如存儲單元408。在一些實施例中,計算機程序的部分或者全部可以經由rom402和/或通信單元409而被載入和/或安裝到設備400上。當計算機程序被加載到ram403并由cpu401執行時,可以執行上文描述的方法200和/或300中的一個或多個步驟。
本公開可以是系統、方法和/或計算機程序產品。計算機程序產品可以包括計算機可讀存儲介質,其上載有用于執行本公開的各個方面的計算機可讀程序指令。
計算機可讀存儲介質可以是可以保持和存儲由指令執行設備使用的指令的有形設備。計算機可讀存儲介質例如可以是――但不限于――電存儲設備、磁存儲設備、光存儲設備、電磁存儲設備、半導體存儲設備或者上述的任意合適的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、靜態隨機存取存儲器(sram)、便攜式壓縮盤只讀存儲器(cd-rom)、數字多功能盤(dvd)、記憶棒、軟盤、機械編碼設備、例如其上存儲有指令的打孔卡或凹槽內凸起結構、以及上述的任意合適的組合。這里所使用的計算機可讀存儲介質不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸的電信號。
這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質下載到各個計算/處理設備,或者通過網絡、例如因特網、局域網、廣域網和/或無線網下載到外部計算機或外部存儲設備。網絡可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網關計算機和/或邊緣服務器。每個計算/處理設備中的網絡適配卡或者網絡接口從網絡接收計算機可讀程序指令,并轉發該計算機可讀程序指令,以供存儲在各個計算/處理設備中的計算機可讀存儲介質中。
用于執行本公開操作的計算機程序指令可以是匯編指令、指令集架構(isa)指令、機器指令、機器相關指令、微代碼、固件指令、狀態設置數據、或者以一種或多種編程語言的任意組合編寫的源代碼或目標代碼,所述編程語言包括面向對象的編程語言—諸如smalltalk、c++等,以及常規的過程式編程語言—諸如“c”語言或類似的編程語言。計算機可讀程序指令可以完全地在用戶計算機上執行、部分地在用戶計算機上執行、作為一個獨立的軟件包執行、部分在用戶計算機上部分在遠程計算機上執行、或者完全在遠程計算機或服務器上執行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡—包括局域網(lan)或廣域網(wan)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網服務提供商來通過因特網連接)。在一些實施例中,通過利用計算機可讀程序指令的狀態信息來個性化定制電子電路,例如可編程邏輯電路、現場可編程門陣列(fpga)或可編程邏輯陣列(pla),該電子電路可以執行計算機可讀程序指令,從而實現本公開的各個方面。
這里參照根據本公開實施例的方法、裝置(系統)和計算機程序產品的流程圖和/或框圖描述了本公開的各個方面。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機可讀程序指令實現。
這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理單元,從而生產出一種機器,使得這些指令在通過計算機或其它可編程數據處理裝置的處理單元執行時,產生了實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質中,這些指令使得計算機、可編程數據處理裝置和/或其他設備以特定方式工作,從而,存儲有指令的計算機可讀介質則包括一個制造品,其包括實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作的各個方面的指令。
也可以把計算機可讀程序指令加載到計算機、其它可編程數據處理裝置、或其它設備上,使得在計算機、其它可編程數據處理裝置或其它設備上執行一系列操作步驟,以產生計算機實現的過程,從而使得在計算機、其它可編程數據處理裝置、或其它設備上執行的指令實現流程圖和/或框圖中的一個或多個方框中規定的功能/動作。
附圖中的流程圖和框圖顯示了根據本公開的多個實施例的系統、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現規定的邏輯功能的可執行指令。在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發生。例如,兩個連續的方框實際上可以基本并行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或動作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。
以上已經描述了本公開的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術領域的普通技術人員來說許多修改和變更都是顯而易見的。本文中所用術語的選擇,旨在最好地解釋各實施例的原理、實際應用或對市場中技術的技術改進,或者使本技術領域的其它普通技術人員能理解本文披露的各實施例。