下面將結合本說明書實施例中的圖式,對本說明書實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本說明書一部分實施例,而不是全部的實施例。基於本說明書中的實施例,本發明所屬技術領域中具有通常知識者在沒有作出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本說明書保護的範圍。
多方安全計算(Secure Muti-Party Computation,MPC)是一種保護資料隱私安全的演算法。多方安全計算能讓參與計算的多個資料方在不暴露自身資料的前提下進行協作計算。
秘密分享(SS,Secret Sharing)是一種保護資料隱私安全的演算法,可以用於實現多方安全計算。具體地,多個資料方可以在不洩漏自身資料的前提下,使用秘密分享演算法進行協作計算,得到秘密資訊。每個資料方可以獲得該秘密資訊的一份份額。單個資料方無法恢復該秘密資訊。只有多個資料方一同協作才能恢復該秘密資訊。例如資料方
P 1
持有資料
x 1
,資料方
P 2
持有資料
x 2
。採用秘密分享演算法,資料方
P 1
和資料方
P 2
可以進行協作計算,得到秘密資訊
。資料方
P 1
在計算後可以獲得秘密資訊
y
的份額
y 1
,資料方
P 2
在計算後可以獲得秘密資訊
y
的份額
y 2
。
混淆電路(Garbled Circuit)是一種保護資料隱私的安全計算協定,可以用於實現多方安全計算。具體地,可以將給定的計算任務(例如函數)轉換為邏輯電路,所述邏輯電路可以由至少一個運算閘構成,所述運算閘可以包括及閘、或閘、異或閘等等。所述邏輯電路可以包括至少兩個輸入線和至少一個輸出線,透過對所述邏輯電路的輸入線和/或輸出線進行加密便可以得到混淆電路。多個資料方可以在不洩漏自身資料的前提下,使用所述混淆電路進行協作計算,得到所述計算任務的執行結果。
不經意傳輸(Oblivious Transfer,OT),又稱為茫然傳輸,是一種可以保護隱私的雙方通訊協議,能夠使通訊雙方以一種選擇模糊化的方式傳遞資料。發送方可以具有多個資料。經由不經意傳輸接收方能夠獲得所述多個資料中的一個或多個資料。在此過程中,發送方不知曉接收方接收的是哪些資料;而接收方不能夠獲得其所接收資料之外的其它任何資料。不經意傳輸協定是混淆電路的基礎協定。在使用混淆電路進行協作計算的過程中,通常會使用到不經意傳輸協定。
以下介紹混淆電路的一個應用場景示例。
資料方
P 1
持有資料
x 1
和資料
x 3
,資料方
P 2
持有資料
x 2
。函數
可以表示為如圖1所示的邏輯電路。所述邏輯電路由及閘1和及閘2構成。所述邏輯電路可以包括輸入線
a
、輸入線
b
、輸入線
d
、輸出線
c
和輸出線
s
。
以下介紹資料方
P 1
產生及閘1的混淆真值表的過程。
及閘1對應的真值表可以如表1所示。
資料方
P 1
可以產生兩個亂數
和
,分別對應輸入線
a
的兩個輸入值0和1;可以產生兩個亂數
和
,分別對應輸入線
b
的兩個輸入值0和1;可以產生兩個亂數
和
,分別對應輸出線
c
的兩個輸出值0和1。由此可以得到如表2所示的隨機化真值表。
資料方
P 1
可以分別將亂數
和
作為金鑰,對亂數
進行加密,得到亂數密文
;可以分別將亂數
和
作為金鑰,對亂數
進行加密,得到亂數密文
;可以分別將亂數
和
作為金鑰,對亂數
進行加密,得到亂數密文
;可以分別將亂數
和
作為金鑰,對亂數
進行加密,得到亂數密文
。由此可以得到如表3所示的加密的隨機化真值表。
資料方
P 1
可以打亂表3中各行的排列順序,得到如表4所示的混淆真值表。
資料方
P 1
還可以產生及閘2的混淆真值表,具體過程與產生及閘1的混淆真值表的過程相類似,在此不再詳述。
資料方
P 1
可以分別將及閘1的混淆真值表和及閘2的混淆真值表發送給資料方
P 2
。資料方
P 2
可以接收及閘1的混淆真值表和及閘2的混淆真值表。
資料方
P 1
可以將資料
x 1
的各個比特(bit)在輸入線a對應的亂數發送給資料方
P 2
;可以將資料
x 3
的各個比特(bit)在輸入線d對應的亂數發送給資料方
P 2
。資料方
P 2
可以接收資料
x 1
和資料
x 3
的各個比特對應的亂數。例如,資料
。對於資料
的第
i
個比特
,當
的值為0時,資料方
P 1
可以將
在輸入線a對應的亂數
發送給資料方
P 2
;當
的值為1時,資料方
P 1
可以將
在輸入線a對應的亂數
發送給資料方
P 2
。
資料方
P 1
可以以亂數
和
作為輸入,資料方
P 2
可以以資料
x 2
的各個比特作為輸入,二者進行不經意傳輸。資料方
P 2
可以獲得資料
x 2
的各個比特對應的亂數。具體地,資料方
P 1
可以產生兩個亂數
和
,分別對應輸入線
d
的兩個輸入值0和1。如此針對資料
x 2
的每個比特,資料方
P 1
可以以亂數
和
作為在不經意傳輸過程中輸入的秘密資訊,資料方
P 2
可以以該比特作為在不經意傳輸過程中輸入的選擇資訊,進行不經意傳輸。透過不經意傳輸,資料方
P 2
可以獲得該比特在輸入線
d
對應的亂數。具體地,當該比特的值為0時,資料方
P 2
可以獲得亂數
;當該比特的值為1時,資料方
P 2
可以獲得亂數
。根據不經意傳輸的特性,資料方
P 1
並不知曉資料方
P 2
具體選擇的是哪個亂數,資料方
P 2
也不能夠知曉除了所選擇的亂數以外的其它亂數。
透過以上過程,資料方
P 2
獲得了資料
x 1
、資料
x 2
和資料
x 3
的各個比特對應的亂數。如此資料方
P 2
可以使用資料
x 1
的每個比特在輸入線a對應的亂數、以及資料
x 2
的對應比特在輸入線
b
對應的亂數,嘗試對及閘1的混淆真值表中的4個亂數密文進行解密;資料方
P 2
僅能夠成功解密其中的一個亂數密文,從而得到輸出線
c
的一個亂數。接下來,資料方
P 2
可以使用資料
x 3
的對應比特在輸入線
d
對應的亂數、以及解密出的輸出線
c
的亂數,嘗試對及閘2的混淆真值表中的4個亂數密文進行解密;資料方
P 2
僅能夠成功解密其中的一個亂數密文,得到輸出線
s
的一個亂數。資料方
P 2
可以將解密出的輸出線
s
的亂數發送給資料方
P 1
。資料方
P 1
可以接收輸出線
s
的亂數;可以根據輸出線
s
的亂數、以及亂數和輸出值的對應關係,獲得輸出線
s
的輸出值。
輸出線
s
的每個輸出值可以視作函數
取值的一個比特。如此資料方
P 1
可以根據輸出線
s
的多個輸出值,確定出函數
![Figure 02_image003](https://patentimages.storage.googleapis.com/95/e0/c0/fb197d82fc7421/02_image003.png)
的取值。
損失函數(Loss Function)可以用於衡量資料處理模型的預測值與真實值之間不一致的程度。損失函數的值越小,表示資料處理模型的穩健性越好。所述損失函數包括但不限於對數損失函數(Logarithmic Loss Function)、平方損失函數(Square Loss)等。
激勵函數(Activation Function),又稱為啟動函數,可以用於構建資料處理模型。激勵函式定義了在給定輸入下的輸出。激勵函數通常為非線性函數。透過激勵函數可以在所述資料處理模型中加入非線性因素,提高所述資料處理模型的表達能力。所述激勵函數可以包括Sigmoid函數、Tanh函數和ReLU函數等。所述資料處理模型可以包括邏輯回歸模型和神經網路模型等。
在合作安全建模的場景中,出於保護資料隱私的考慮,多個資料方可以在不洩漏自身所持有的資料的前提下,基於自身持有的資料,對資料處理模型進行協作訓練。所述資料處理模型包括但不限於邏輯回歸模型、神經網路模型等。在對資料處理模型進行訓練的過程中,可以使用模型參數最佳化方法對資料處理模型的模型參數進行最佳化調整。模型參數最佳化方法可以包括梯度下降法。所述梯度下降法可以包括原始梯度下降法以及基於原始梯度下降法的各種變形方法(諸如批量梯度下降法、正則化梯度下降法等等;正則化梯度下降法是指附帶了正則化項的梯度下降法;正則化可以降低模型的複雜度和不穩定程度,從而降低過擬合的危險)。因此若合作建模各方透過多方安全計算,使用梯度下降法協作確定資料處理模型的模型參數,則可以在保護合作建模各方資料隱私的前提下,實現對所述資料處理模型進行訓練。
多方安全計算可以採用秘密分享來實現,也可以採用混淆電路來實現。由於資料處理模型中的激勵函數通常為非線性函數,涉及的運算為非線性運算,導致其取值無法直接使用秘密分享演算法進行計算。因此若僅透過秘密分享,使用梯度下降法協作確定資料處理模型的模型參數,則需要使用多項式來擬合所述激勵函數。使用多項式來擬合激勵函數存在越界的問題(多項式的輸入超過一定範圍時,其輸出會變得很大或者很小),有可能造成資料處理模型無法完成訓練。另外由於混淆電路的複雜程度較高,因此若僅透過混淆電路,使用梯度下降法協作確定資料處理模型的模型參數,會造成資料處理模型的訓練過程變得複雜。基於以上考慮,若透過秘密分享和混淆電路相結合的方式,不僅可以避免越界的問題,還可以降低資料處理模型訓練過程的複雜程度。
本說明書提供一種模型參數確定系統的實施例。
請參閱圖2。在該實施例中,所述模型參數確定系統可以包括第一資料方、第二資料方和可信任的第三方(TTP,Trusted Third Party)。
所述第三方可以為一個伺服器;或者,還可以為包括多個伺服器的伺服器集群。所述第三方用於向所述第一資料方和所述第二資料方提供亂數。具體地,所述第三方可以產生亂數矩陣,可以將所述亂數矩陣中的各個亂數拆分為兩個份額,可以將其中一個份額作為第一份額,將其中另一個份額作為第二份額。所述第三方可以將所述亂數矩陣中各個亂數的第一份額形成的矩陣作為所述亂數矩陣的第一份額,將所述亂數矩陣中各個亂數的第二份額形成的矩陣作為所述亂數矩陣的第二份額;可以向所述第一資料方發送所述亂數矩陣的第一份額,可以向所述第二資料方發送所述亂數矩陣的第二份額。其中,所述亂數矩陣的第一份額和所述亂數矩陣的第二份額的和等於所述亂數矩陣。另外,鑒於所述第一資料方和所述第二資料方在基於混淆電路進行計算的過程中涉及到不經意傳輸,所述第三方還可以產生第一OT亂數和第二OT亂數;可以向所述第一資料方發送所述第一OT亂數;可以向所述第二資料方發送所述第二OT亂數。OT亂數可以為在不經意傳輸過程中所使用到的亂數。
所述第一資料方和所述第二資料方分別為合作安全建模的雙方。所述第一資料方可以為持有特徵資料的資料方,所述第二資料方可以為持有標籤的資料方。例如,所述第一資料方可以持有完整的特徵資料,所述第二資料方可以持有特徵資料的標籤。或者,所述第一資料方可以持有特徵資料的一部分資料項目,所述第二資料方可以持有特徵資料的另一部分資料項目和特徵資料的標籤。具體地,例如,特徵資料可以包括使用者的儲蓄金額和借貸金額。所述第一資料方可以持有使用者的儲蓄金額,所述第二資料方可以持有使用者的借貸金額和特徵資料對應的標籤。所述標籤可以用於區分不同類型的特徵資料,具體數值例如可以取自0和1。值得說明的是,這裡的資料方可以為電子設備。所述電子設備可以包括個人電腦、伺服器、手持設備、可攜式設備、平板型設備、多處理器裝置;或者,還可以包括由以上任何多個裝置或設備所構成的集群等。另外,特徵資料及其對應的標籤共同構成了樣本資料,樣本資料可以用於對資料處理模型進行訓練。
在合作安全建模的場景中,所述第一資料方和所述第二資料方可以分別獲得原始模型參數的一份份額。這裡可以將所述第一資料方獲得份額作為原始模型參數的第一份額,可以將所述第二資料方獲得份額作為原始模型參數的第二份額。原始模型參數的第一份額和原始模型參數的第二份額的和等於原始模型參數。
所述第一資料方可以接收亂數矩陣的第一份額和第一OT亂數。所述第二資料方可以接收亂數矩陣的第二份額和第二OT亂數。如此所述第一資料方可以基於原始模型參數的第一份額、特徵資料、亂數矩陣的第一份額和第一OT亂數,所述第二資料方可以基於原始模型參數的第二份額、標籤值、亂數矩陣的第二份額和第二OT亂數,採用秘密分享和混淆電路相結合的方式,協作確定新的模型參數。所述第一資料方和所述第二資料方可以分別獲得新的模型參數的一份份額。具體過程可以參見後面的模型參數確定方法實施例。
本說明書還提供一種模型參數確定方法的實施例。該實施例可以使用梯度下降法來確定模型參數。請參閱圖3。該實施例可以包括以下步驟。
步驟S11:第一資料方根據特徵資料和原始模型參數的第一份額,第二資料方根據原始模型參數的第二份額,秘密分享第一乘積。第一資料方獲得第一乘積的第一份額,第二資料方獲得第一乘積的第二份額。
步驟S13:第一資料方根據第一乘積的第一份額,第二資料方根據第一乘積的第二份額,基於激勵函數對應的混淆電路進行通訊。第一資料方獲得激勵函數取值的第一份額,第二資料方獲得激勵函數取值的第二份額。
步驟S15:第一資料方根據特徵資料和激勵函數取值的第一份額,第二資料方根據標籤和激勵函數取值的第二份額,秘密分享損失函數的梯度。第一資料方獲得損失函數梯度的第一份額,第二資料方獲得損失函數梯度的第二份額。
步驟S17:第一資料方根據原始模型參數的第一份額、損失函數梯度的第一份額和預設步長,計算新的模型參數的第一份額。
步驟S19:第二資料方根據原始模型參數的第二份額、損失函數梯度的第二份額和預設步長,計算新的模型參數的第二份額。
在一些實施例中,所述第一乘積可以為原始模型參數和特徵資料之間的乘積。在一些場景示例中,所述第一乘積可以表示為
XW
;其中,
W
表示原始模型參數,具體為原始模型參數構成的向量;
X
表示特徵資料,具體為特徵資料構成的矩陣。
在步驟S11中,所述第一資料方可以根據持有的特徵資料和原始模型參數的第一份額,所述第二資料方可以根據持有的原始模型參數的第二份額,秘密分享第一乘積。所述第一資料方和所述第二資料方可以分別獲得所述第一乘積的一份份額。為了便於描述,可以將所述第一資料方獲得的份額作為第一乘積的第一份額,可以將所述第二資料方獲得的份額作為第一乘積的第二份額。原始模型參數的第一份額和原始模型參數的第二份額的和等於原始模型參數。第一乘積的第一份額和第一乘積的第二份額的和等於第一乘積。
延續前面的場景示例,原始模型參數的第一份額可以表示為
,原始模型參數的第二份額可以表示為
,
。所述第一資料方可以根據
X
和
,所述第二資料方可以根據
,秘密分享第一乘積
XW
。所述第一資料方可以獲得第一乘積的第一份額
,所述第二資料方可以獲得第一乘積的第二份額
。
。
在一些實施例中,可以根據所述激勵函數構建對應的邏輯電路。所述邏輯電路可以由所述第一資料方構建;或者,也可以由所述第二資料方構建;又或者,還可以由其它設備(例如可信任的第三方)構建。所述邏輯電路可以由至少一個運算閘構成,所述運算閘可以包括及閘、或閘、異或閘等等。所述邏輯電路可以包括至少兩個輸入線和至少一個輸出線,透過對所述邏輯電路的輸入線和/或輸出線進行加密便可以得到混淆電路。所述混淆電路可以包括所述邏輯電路中各個運算閘的混淆真值表。值得說明的是,這裡可以直接根據激勵函數構建邏輯電路;或者,也可以對激勵函數進行各種適當的變形,可以根據變形後的激勵函數構建邏輯電路;又或者,還可以以所述激勵函數為基礎產生其它函數,可以根據其它函數構建邏輯電路。對應地,這裡激勵函數與混淆電路相對應可以理解為:混淆電路是根據激勵函數的邏輯電路產生的,或者,混淆電路是根據變形後的激勵函數的混淆電路產生的,又或者,混淆電路是根據其它函數的邏輯電路產生的。
所述第一資料方和所述第二資料方均可以持有激勵函數對應的混淆電路。在一些實施方式中,所述混淆電路可以由所述第一資料方產生。所述第一資料方可以將產生的混淆電路發送給所述第二資料方。所述第二資料方可以接收所述混淆電路。在另一些實施方式中,所述混淆電路也可以由所述第二資料方產生。所述第二資料方可以將產生的混淆電路發送給所述第一資料方。所述第一資料方可以接收所述混淆電路。
在步驟S13中,第一資料方可以根據第一乘積的第一份額,第二資料方可以根據第一乘積的第二份額,基於激勵函數對應的混淆電路進行通訊。所述第一資料方和所述第二資料方可以分別獲得激勵函數取值的一份份額。為了便於描述,可以將所述第一資料方獲得的份額作為激勵函數取值的第一份額,可以將所述第二資料方獲得的份額作為激勵函數取值的第二份額。激勵函數取值的第一份額和激勵函數取值的第二份額的和等於激勵函數的取值。
請參閱圖4。以下介紹第一資料方和第二資料方基於混淆電路進行計算的一個場景示例。
可以根據激勵函數
構建函數
。其中,
用於表示第一乘積的第一份額,
用於表示第一乘積的第二份額,
用於表示激勵函數取值的一份份額(以下稱為激勵函數取值的第二份額),
的取值用於表示激勵函數取值的另一份份額(以下稱為激勵函數取值的第一份額)。
可以構建與函數
相對應的邏輯電路,透過對該邏輯電路的輸入線和/或輸出線進行加密便可以得到混淆電路。所述第一資料方和所述第二資料方均可以持有該混淆電路。值得說明的是,函數
及其對應的邏輯電路可以由所述第一資料方構建;或者,也可以由所述第二資料方構建;又或者,還可以由其它設備(例如可信任的第三方)構建。
所述第二資料方可以產生激勵函數取值的一份份額作為第二份額。如此所述第一資料方可以以第一乘積的第一份額作為該混淆電路的輸入,所述第二資料方可以以第一乘積的第二份額以及激勵函數取值的第二份額作為該混淆電路的輸入,進行通訊。所述第一資料方可以基於該混淆電路計算得到激勵函數取值的另一份份額作為第一份額。具體的計算過程可以參見前面有關介紹混淆電路的場景示例,在此不再詳述。
在一些實施方式中,為了降低混淆電路的複雜程度,還可以使用分段線性函數擬合所述激勵函數。這樣便可以根據所述分段線性函數構建對應的邏輯電路,透過對該邏輯電路的輸入線和/或輸出線進行加密便可以得到混淆電路。所述第一資料方和所述第二資料方均可以持有該混淆電路。例如,所述激勵函數可以為Sigmoid函數,所述分段線性函數可以為
。
第一資料方可以根據第一乘積的第一份額,第二資料方可以根據第一乘積的第二份額,基於該混淆電路進行通訊。所述第一資料方和所述第二資料方可以分別獲得分段線性函數取值的一份份額。為了便於描述,可以將所述第一資料方獲得的份額作為分段線性函數取值的第一份額,可以將所述第二資料方獲得的份額作為分段線性函數取值的第二份額。分段線性函數取值的第一份額和分段線性函數取值的第二份額的和等於分段線性函數的取值。如此所述第一資料方可以將分段線性函數取值的第一份額作為激勵函數取值的第一份額。所述第二資料方可以將分段線性函數取值的第二份額作為激勵函數取值的第二份額。
在一些實施例中,在步驟S15中,所述第一資料方可以根據特徵資料和激勵函數取值的第一份額,所述第二資料方還可以根據標籤和激勵函數取值的第二份額,秘密分享損失函數的梯度。所述第一資料方和所述第二資料方可以分別獲得所述損失函數梯度的一份份額。為了便於描述,可以將所述第一資料方獲得的份額作為損失函數梯度的第一份額,可以將所述第二資料方獲得的份額作為損失函數梯度的第二份額。損失函數梯度的第一份額和損失函數梯度的第二份額的和等於損失函數的梯度。
延續前面的場景示例,所述第一資料方可以根據
X
和
,所述第二資料方可以根據標籤Y和
,秘密分享損失函數的梯度
dW
(具體為向量)。所述第一資料方可以獲得損失函數梯度的第一份額
,所述第二資料方可以獲得損失函數梯度的第二份額
。下面介紹所述第一資料方和所述第二資料方秘密分享損失函數
dW
的詳細過程。
所述第一資料方可以根據
X
,所述第二資料方可以根據
,秘密分享
。所述第一資料方可以獲得
,所述第二資料方可以獲得
。
。
所述第一資料方還可以根據
X
,所述第二資料方還可以根據標籤Y(具體為標籤構成的向量),秘密分享
。所述第一資料方可以獲得
,所述第二資料方可以獲得
。
。
所述第一資料方可以計算
;可以計算
作為損失函數梯度
的第一份額
。所述第二資料方可以計算
作為損失函數梯度
的第二份額
。
。
在一些實施例中,所述預設步長可以用於控制梯度下降法的反覆運算速度。所述預設步長可以為任意適當正實數。例如,當預設步長過大時,反覆運算速度會過快,導致有可能無法獲得最優模型參數。當預設步長過小時,導致反覆運算速度會過慢,導致花費的時間較長。所述預設步長具體可以為經驗值;或者,也可以採用機器學習的方式得到。當然,所述預設步長還可以採用其它方式得到。所述第一資料方和所述第二資料方均可以持有所述預設步長。
在步驟S17中,所述第一資料方可以將損失函數梯度的第一份額與預設步長相乘,得到第二乘積;可以將原始模型參數的第一份額與第二乘積相減,得到新的模型參數的第一份額。
在步驟S19中,所述第二資料方可以將損失函數梯度的第二份額與預設步長相乘,得到第三乘積;可以將原始模型參數的第二份額與第三乘積相減,得到新的模型參數的第二份額。新的模型參數的第一份額和新的模型參數的第二份額的和等於新的模型參數。
延續前面的場景示例,所述第一資料方可以將損失函數梯度的第一份額
(具體為向量)與預設步長
G
相乘(具體為向量的數乘),得到第二乘積
;可以將原始模型參數的第一份額
與第二乘積
相減,得到新的模型參數的第一份額
。
所述第二資料方可以將損失函數梯度的第二份額
(具體為向量)與預設步長
G
相乘(具體為向量的數乘),得到第二乘積
;可以將原始模型參數的第二份額
與第二乘積
相減,得到新的模型參數的第二份額
。其中,
,
![Figure 02_image141](https://patentimages.storage.googleapis.com/92/0f/30/f02af1bb4b9499/02_image141.png)
表示新的模型參數。
值得說明的是,在實際應用中,還可以將新的模型參數作為新的原始模型參數,重複執行步驟S11、步驟S13、步驟S15、步驟S17和步驟S19。透過重複執行本實施例的模型參數確定方法,可以實現對資料處理模型的模型參數進行反覆運算最佳化調整。
在本實施例中,第一資料方和第二資料方可以採用秘密分享和混淆電路相結合的方式,在不洩漏自身所持有的資料的前提下,使用梯度下降法,協作確定資料處理模型的模型參數。
基於同樣的發明構思,本說明書還提供另一種模型參數確定方法的實施例。該實施例以第一資料方為執行主體,所述第一資料方可以持有特徵資料和原始模型參數的份額。請參閱圖5。該實施例可以包括以下步驟。
步驟S21:根據特徵資料和原始模型參數的份額與合作方秘密分享第一乘積,得到第一乘積的份額。
在一些實施例中,所述合作方可以理解為與所述第一資料方進行合作安全建模的資料方,具體可以為前面的第二資料方。所述第一乘積可以為特徵資料和原始模型參數的乘積。具體地,所述第一資料方可以根據特徵資料和原始模型參數的份額與合作方秘密分享第一乘積,得到第一乘積的份額。具體過程可以參見前面步驟S11的相關描述,在此不再贅述。
步驟S23:根據第一乘積的份額和激勵函數對應的混淆電路與合作方進行通訊,得到激勵函數取值的份額。
在一些實施例中,所述第一資料方可以根據第一乘積的份額和激勵函數對應的混淆電路與合作方通訊,得到激勵函數取值的份額。具體過程可以參見前面步驟S13的相關描述,在此不再贅述。
步驟S25:根據特徵資料和激勵函數取值的份額與合作方秘密分享損失函數的梯度,得到損失函數梯度的份額。
在一些實施例中,所述第一資料方可以根據特徵資料和激勵函數取值的份額與合作方秘密分享損失函數的梯度,得到損失函數梯度的份額。具體過程可以參見前面步驟S15的相關描述,在此不再贅述。
步驟S27:根據原始模型參數的份額、損失函數梯度的份額和預設步長,計算新的模型參數的份額。
在一些實施例中,所述預設步長可以用於控制梯度下降法的反覆運算速度。所述預設步長可以為任意適當正實數。例如,當預設步長過大時,反覆運算速度會過快,導致有可能無法獲得最優模型參數。當預設步長過小時,導致反覆運算速度會過慢,導致花費的時間較長。所述預設步長具體可以為經驗值;或者,也可以採用機器學習的方式得到。當然,所述預設步長還可以採用其它方式得到。所述第一資料方可以將損失函數梯度的份額與預設步長相乘,得到第二乘積;可以將原始模型參數的份額與第二乘積相減,得到新的模型參數的份額。具體過程可以參見前面步驟S17的相關描述,在此不再贅述。
在本實施例中,第一資料方可以採用秘密分享和混淆電路相結合的方式,在不洩漏自身所擁有的資料的前提下,與合作方協作確定資料處理模型的模型參數,得到新的模型參數的份額。
基於同樣的發明構思,本說明書還提供另一種模型參數確定方法的實施例。該實施例以第二資料方為執行主體,所述第二資料方可以持有標籤和原始模型參數的份額。請參閱圖6。該實施例可以包括以下步驟。
步驟S31:根據原始模型參數的份額與合作方秘密分享第一乘積,得到第一乘積的份額。
在一些實施例中,所述合作方可以理解為與所述第二資料方進行合作安全建模的資料方,具體可以為前面的第一資料方。所述第一乘積可以為特徵資料和原始模型參數的乘積。具體地,所述第二資料方可以根據原始模型參數的份額與合作方秘密分享第一乘積,得到第一乘積的份額。具體過程可以參見前面步驟S11的相關描述,在此不再贅述。
步驟S33:根據第一乘積的份額和激勵函數對應的混淆電路與合作方進行通訊,得到激勵函數取值的份額。
在一些實施例中,所述第二資料方可以根據第一乘積的份額和激勵函數對應的混淆電路與合作方通訊,得到激勵函數取值的份額。具體過程可以參見前面步驟S13的相關描述,在此不再贅述。
步驟S35:根據標籤和激勵函數取值的份額與合作方秘密分享損失函數的梯度,得到損失函數梯度的份額。
在一些實施例中,所述第二資料方可以根據標籤和激勵函數取值的份額與合作方秘密分享損失函數的梯度,得到損失函數梯度的份額。具體過程可以參見前面步驟S15的相關描述,在此不再贅述。
步驟S37:根據原始模型參數的份額、損失函數梯度的份額和預設步長,計算新的模型參數的份額。
在一些實施例中,所述預設步長可以用於控制梯度下降法的反覆運算速度。所述預設步長可以為任意適當正實數。例如,當預設步長過大時,反覆運算速度會過快,導致有可能無法獲得最優模型參數。當預設步長過小時,導致反覆運算速度會過慢,導致花費的時間較長。所述預設步長具體可以為經驗值;或者,也可以採用機器學習的方式得到。當然,所述預設步長還可以採用其它方式得到。所述第二資料方可以將損失函數梯度的份額與預設步長相乘,得到第二乘積;可以將原始模型參數的份額與第二乘積相減,得到新的模型參數的份額。具體過程可以參見前面步驟S17的相關描述,在此不再贅述。
在本實施例中,第二資料方可以採用秘密分享和混淆電路相結合的方式,在不洩漏自身所擁有的資料的前提下,與合作方協作確定資料處理模型的模型參數,得到新的模型參數的份額。
基於同樣的發明構思,本說明書還提供一種模型參數確定裝置的實施例。請參閱圖7。該實施例可以應用於第一資料方,可以包括以下單元。
第一乘積份額獲取單元41,用於根據特徵資料和原始模型參數的份額與合作方秘密分享第一乘積,得到第一乘積的份額,所述第一乘積為特徵資料和原始模型參數的乘積;
激勵函數取值份額獲取單元43,用於根據第一乘積的份額和激勵函數對應的混淆電路與合作方進行通訊,得到激勵函數取值的份額;
損失函數梯度份額獲取單元45,用於根據特徵資料和激勵函數取值的份額與合作方秘密分享損失函數的梯度,得到損失函數梯度的份額;
模型參數份額計算單元47,用於根據原始模型參數的份額、損失函數梯度的份額和預設步長,計算新的模型參數的份額。
基於同樣的發明構思,本說明書還提供一種模型參數確定裝置的實施例。請參閱圖8。該實施例可以應用於第二資料方,可以包括以下單元。
第一乘積份額獲取單元51,用於根據原始模型參數的份額與合作方秘密分享第一乘積,得到第一乘積的份額,所述第一乘積為特徵資料和原始模型參數的乘積;
激勵函數取值份額獲取單元53,用於根據第一乘積的份額和激勵函數對應的混淆電路與合作方進行通訊,得到激勵函數取值的份額;
損失函數梯度份額獲取單元55,用於根據標籤和激勵函數取值的份額與合作方秘密分享損失函數的梯度,得到損失函數梯度的份額;
模型參數份額計算單元57,用於根據原始模型參數的份額、損失函數梯度的份額和預設步長,計算新的模型參數的份額。
下面介紹本說明書電子設備的一個實施例。圖9是該實施例中一種電子設備的硬體結構示意圖。如圖9所示,所述電子設備可以包括一個或多個(圖中僅示出一個)處理器、記憶體和傳輸模組。當然,本發明所屬技術領域中具有通常知識者可以理解,圖9所示的硬體結構僅為示意,其並不對上述電子設備的硬體結構造成限定。在實際中所述電子設備還可以包括比圖9所示更多或者更少的元件單元;或者,具有與圖9所示不同的配置。
所述記憶體可以包括高速隨機記憶體;或者,還可以包括非易失性記憶體,例如一個或者多個磁性儲存裝置、快閃記憶體、或者其他非易失性固態記憶體。當然,所述記憶體還可以包括遠端設置的網路記憶體。所述遠端設置的網路記憶體可以透過諸如網際網路、企業內部網、區域網路、行動通訊網等網路連接至所述電子設備。所述記憶體可以用於儲存應用軟體的程式指令或模組,例如本說明書圖5所對應實施例的程式指令或模組;和/或,本說明書圖6所對應實施例的程式指令或模組。
所述處理器可以按任何適當的方式實現。例如,所述處理器可以採取例如微處理器或處理器以及儲存可由該(微)處理器執行的電腦可讀程式碼(例如軟體或韌體)的電腦可讀媒體、邏輯閘、開關、特殊應用積體電路(Application Specific Integrated Circuit,ASIC)、可程式設計邏輯控制器和嵌入微控制器的形式等等。所述處理器可以讀取並執行所述記憶體中的程式指令或模組。
所述傳輸模組可以用於經由網路進行資料傳輸,例如經由諸如網際網路、企業內部網、區域網路、行動通訊網等網路進行資料傳輸。
需要說明的是,本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同或相似的部分互相參見即可,每個實施例重點說明的都是與其它實施例的不同之處。尤其,對於裝置實施例和電子設備實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。另外,可以理解的是,本領域技術人員在閱讀本說明書檔之後,可以無需創造性勞動想到將本說明書列舉的部分或全部實施例進行任意組合,這些組合也在本說明書揭露和保護的範圍內。
在20世紀90年代,對於一個技術的改進可以很明顯地區分是硬體上的改進(例如,對二極體、電晶體、開關等電路結構的改進)還是軟體上的改進(對於方法流程的改進)。然而,隨著技術的發展,當今的很多方法流程的改進已經可以視為硬體電路結構的直接改進。設計人員幾乎都透過將改進的方法流程程式設計到硬體電路中來得到對應的硬體電路結構。因此,不能說一個方法流程的改進就不能用硬體實體模組來實現。例如,可程式設計邏輯裝置(Programmable Logic Device,PLD)(例如現場可程式設計閘陣列(Field Programmable Gate Array,FPGA))就是這樣一種積體電路,其邏輯功能由使用者對裝置程式設計來確定。由設計人員自行程式設計來把一個數位系統“整合”在一片PLD上,而不需要請晶片製造廠商來設計和製作特殊應用的積體電路晶片。而且,如今,取代手工地製作積體電路晶片,這種程式設計也多半改用“邏輯編譯器(logic compiler)”軟體來實現,它與程式開發撰寫時所用的軟體編譯器相類似,而要編譯之前的原始代碼也得用特定的程式設計語言來撰寫,此稱之為硬體描述語言(Hardware Description Language,HDL),而HDL也並非僅有一種,而是有許多種,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)與Verilog2。本領域技術人員也應該清楚,只需要將方法流程用上述幾種硬體描述語言稍作邏輯程式設計並程式設計到積體電路中,就可以很容易得到實現該邏輯方法流程的硬體電路。
上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦。具體地,電腦例如可以為個人電腦、膝上型電腦、蜂巢式電話、相機電話、智慧型電話、個人數位助理、媒體播放器、導航設備、電子郵件設備、遊戲控制台、平板電腦、穿戴式設備或者這些設備中的任何設備的組合。
透過以上的實施方式的描述可知,本領域的技術人員可以清楚地瞭解到本說明書可借助軟體加必需的通用硬體平台的方式來實現。基於這樣的理解,本說明書的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該電腦軟體產品可以儲存在儲存儲存媒體中,如ROM/RAM、磁碟、光碟等,包括若干指令用以使得一台電腦設備(可以是個人電腦、伺服器、或者網路設備等)執行本說明書各個實施例或者實施例的某些部分所述的方法。
本說明書可用於眾多通用或專用的電腦系統環境或配置中。例如:個人電腦、伺服器電腦、手持設備或可攜式設備、平板型設備、多處理器系統、基於微處理器的系統、置頂盒、可程式設計的消費電子設備、網路PC、小型電腦、大型電腦、包括以上任何系統或設備的分散式運算環境等等。
本說明書可以在由電腦執行的電腦可執行指令的一般上下文中描述,例如程式模組。一般地,程式模組包括執行特定任務或實現特定抽象資料類型的常式、程式、物件、元件、資料結構等等。也可以在分散式運算環境中實踐本說明書,在這些分散式運算環境中,由透過通訊網路而被連接的遠端處理設備來執行任務。在分散式運算環境中,程式模組可以位於包括存放裝置在內的本地和遠端電腦儲存儲存媒體中。
雖然透過實施例描繪了本說明書,本發明所屬技術領域中具有通常知識者知道,本說明書有許多變形和變化而不脫離本說明書的精神,希望所附的申請專利範圍包括這些變形和變化而不脫離本說明書的精神。