Detailed Description
The technical solutions in the embodiments of the present disclosure will be clearly and completely described below with reference to the drawings in the embodiments of the present disclosure, and it is obvious that the described embodiments are only a part of the embodiments of the present disclosure, and not all of the embodiments. All other embodiments obtained by a person skilled in the art based on the embodiments in the present specification without any inventive step should fall within the scope of protection of the present specification. It should be understood that although the terms first, second, third, etc. may be used herein to describe various information, these information should not be limited to these terms. These terms are only used to distinguish one type of information from another. For example, the first information may also be referred to as second information, and similarly, the second information may also be referred to as first information, without departing from the scope of the present specification.
multi-Party Secure computing (MPC) is an algorithm that protects data privacy and security. The multi-party security computation can enable a plurality of data parties participating in computation to perform collaborative computation on the premise of not exposing own data.
Secret Sharing (SS) is an algorithm for protecting data privacy and security, and can be used to implement multi-party secure computing. Specifically, multiple data parties can perform cooperative calculation by using a secret sharing algorithm on the premise of not leaking own data, so as to obtain secret information. Each data party may obtain a share of the secret information. The secret information cannot be recovered by a single data party. Only if multiple data parties cooperate together can the secret information be recovered. E.g. data side P1Holding data x1Data side P2Holding data x2. Using secret sharing algorithms, the data side P1And the data side P2Can carry out cooperative calculation to obtain secret information y-y1+y2=x1x2. Data side P1after calculation, the share y of the secret information y can be obtained1Data side P2After calculation, the share y of the secret information y can be obtained2。
Garbled Circuit (Garbled Circuit) is a secure computing protocol that protects data privacy and can be used to implement multi-party secure computing. In particular, a given computational task (e.g., a function) may be converted into a logic circuit, which may be comprised of at least one operational gate, which may include an and gate, an or gate, an xor gate, and so on. The logic circuit may comprise at least two input lines and at least one output line, the garbled circuit being obtainable by encrypting the input lines and/or the output lines of the logic circuit. And a plurality of data parties can use the garbled circuit to perform cooperative calculation on the premise of not leaking self data to obtain the execution result of the calculation task.
Oblivious Transfer (OT), also known as casual Transfer, is a privacy-preserving two-party communication protocol that enables two communicating parties to communicate data in a selective obfuscation manner. The sender may have a plurality of data. One or more of the plurality of data can be obtained by the recipient via an inadvertent transmission. In this process, the sender does not know which data the receiver receives; and the receiver cannot obtain any data other than the data it receives. The inadvertent transport protocol is the underlying protocol for the garbled circuit. In the use of garbled circuits for cooperative computing, an inadvertent transport protocol is typically used.
An example of an application scenario for a garbled circuit is described below.
Data side P1Holding data x1And data x3Data side P2holding data x2. Function y ═ f (x)1,x2,x3)=x1x2x3May be represented as a logic circuit as shown in fig. 1. The logic circuit is composed of an AND gate 1 and an AND gate 2. The logic circuit may include an input line a, an input line b, an input line d, an output line c, and an output line s.
The data party P is introduced below1The process of generating the obfuscation truth table for AND gate 1.
the truth table corresponding to gate 1 may be as shown in table 1.
TABLE 1
a
|
b
|
c
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
1 |
Data side P1Two random numbers can be generatedAndTwo input values 0 and 1 respectively corresponding to the input line a; two random numbers can be generatedAndTwo input values 0 and 1 respectively corresponding to the input line b; two random numbers can be generatedAndare respectively provided withCorresponding to the two output values 0 and 1 of the output line c. A randomized truth table as shown in table 2 can thus be obtained.
TABLE 2
Data side P1Can respectively convert random numbersAndAs a key, to random numbersEncrypting to obtain random number ciphertextcan respectively convert random numbersAndAs a key, to random numbersEncrypting to obtain random number ciphertextCan respectively convert random numbersandAs a key, to random numbersIs encrypted to obtainTo random number cipher textCan respectively convert random numbersAndAs a key, to random numbersEncrypting to obtain random number ciphertextthis results in an encrypted randomized truth table as shown in table 3.
TABLE 3
Data side P1the arrangement order of the rows in table 3 can be scrambled to obtain an aliasing truth table as shown in table 4.
TABLE 4
Data side P1The obfuscation truth table of and gate 2 may also be generated, and the specific process is similar to the process of generating the obfuscation truth table of and gate 1, and will not be described in detail herein.
Data side P1The obfuscation truth table of AND gate 1 and the obfuscation truth table of AND gate 2 may be sent to the data party P separately2. Data side P2An obfuscation truth table for and gate 1 and an obfuscation truth table for and gate 2 may be received.
data side P1Can convert data x1Is sent to the data side P at the random number corresponding to the input line a2(ii) a Can convert data x3In each bit (bit) ofThe random number corresponding to the input line d is transmitted to the data side P2. Data side P2Can receive data x1And data x3a random number corresponding to each bit of (a). For example, data x1=b0×20+b1×21+...+bi×2i+.... For data x1ith bit b ofiWhen b isiwhen the value of (1) is 0, the data side P1Can be combined withiRandom number corresponding to input line aTo the data side P2(ii) a When b isiWhen the value of (1) is 1, the data side P1Can be combined withirandom number corresponding to input line aTo the data side P2。
Data side P1Can be random numberandAs input, the data side P2Can be represented by data x2As inputs, both are inadvertently transmitted. Data side P2Data x can be obtained2A random number corresponding to each bit of (a). In particular, the data side P1Two random numbers can be generatedAndCorresponding to the two input values 0 and 1, respectively, of the input line d. Thus for data x2per bit, data side P1Can be random numberAndas secret information entered during the inadvertent transmission, the data side P2the bit may be used as selection information input during the inadvertent transmission to perform the inadvertent transmission. By inadvertent transmission, the data side P2The corresponding random number for that bit at input line d can be obtained. Specifically, when the value of the bit is 0, the data side P2Can obtain random numberWhen the value of this bit is 1, the data side P2Can obtain random numberAccording to the nature of the inadvertent transmission, the data side P1Not knowing the data side P2The particular random number, party P, selected is2Nor can any other random number than the selected random number be known.
through the above process, the data side P2Data x are obtained1Data x2And data x3A random number corresponding to each bit of (a). Such as data party P2Can use the data x1Each bit of (a) at the input line a, and data x2the random number corresponding to the corresponding bit in the input line b tries to decrypt the 4 random number ciphertexts in the confusion truth table of the AND gate 1; data side P2Only one of the random number ciphertexts can be successfully decrypted, so that one random number of the output line c is obtained. Next, the data side P2can use the data x3The random number corresponding to the corresponding bit in the input line d and the decrypted random number in the output line c try to decrypt 4 random number ciphertexts in the confusion truth table of the AND gate 2; data side P2only one random number ciphertext can be successfully decrypted to obtain one random number of the output line s. Data side P2The decrypted random number of the output line s may be sent to the data side P1. Number ofAccording to party P1A random number that can receive the output line s; the output value of the output line s can be obtained from the random number of the output line s and the correspondence between the random number and the output value.
Each output value of the output line s may be viewed as a function y ═ f (x)1,x2,x3)=x1x2x3One bit of value. Such as data party P1The function y ═ f (x) can be determined from a plurality of output values of the output line s1,x2,x3)=x1x2x3The value of (a).
A Loss Function (Loss Function) may be used to measure the degree of inconsistency between predicted and true values of the data processing model. The smaller the value of the loss function, the better the robustness of the representation data processing model. The Loss Function includes, but is not limited to, a Logarithmic Loss Function (Logarithmic Loss Function), a Square Loss Function (Square Loss), and the like.
A Hessian Matrix (also called a blackplug Matrix, a hatse Matrix, or a sea plug Matrix) is a square Matrix formed by second-order partial derivatives of a loss function and used for representing a local curvature of the loss function.
An incentive Function (also known as an Activation Function) may be used to construct the data processing model. The excitation function defines the output at a given input. The excitation function is typically a non-linear function. Nonlinear factors can be added into the data processing model through the excitation function, and the expression capacity of the data processing model is improved. The excitation function may include a Sigmoid function, a Tanh function, a ReLU function, and the like. The data processing model may include a logistic regression model, a neural network model, and the like.
In a scenario of cooperative security modeling, in consideration of protecting data privacy, a plurality of data parties may perform cooperative training on a data processing model based on data held by themselves without revealing the data held by themselves. The data processing model includes, but is not limited to, a logistic regression model, a neural network model, and the like. In the process of training the data processing model, model parameters of the data processing model can be optimized and adjusted by using a model parameter optimization method. The model parameter optimization method may include a gradient descent method, a newton method, and the like. The Newton method can include an original Newton method and various deformation methods based on the original Newton method (such as a damped Newton method, a regularized Newton method and the like; the regularized Newton method refers to a Newton method with regularization terms attached; regularization can reduce the complexity and instability degree of a model, thereby reducing the risk of overfitting). Compared with the gradient descent method, the Newton method has a faster convergence rate. Therefore, if all the cooperative modeling parties collaboratively determine the model parameters of the data processing model by using a Newton method through multi-party safe calculation, the data privacy of all the cooperative modeling parties can be protected, the times of optimizing and adjusting the model parameters can be reduced, and the training efficiency of the data processing model is improved.
The multi-party secure computation can be realized by secret sharing and can also be realized by a garbled circuit. Because the excitation function in the data processing model is usually a nonlinear function, the involved operation is nonlinear operation, and the value of the excitation function cannot be directly calculated by using a secret sharing algorithm. Thus, if newton's method is used to cooperatively determine model parameters of a data processing model by secret sharing alone, then a polynomial may need to be used to fit the excitation function. The problem of boundary crossing exists when a polynomial is used for fitting an excitation function (when the input of the polynomial exceeds a certain range, the output of the polynomial becomes large or small), and the data processing model can not be trained. In addition, since the complexity of the garbled circuit is high, if the model parameters of the data processing model are cooperatively determined by using the newton method through the garbled circuit, the training process of the data processing model becomes complicated. Based on the above consideration, if a secret sharing and a garbled circuit are combined, the problem of boundary crossing can be avoided, and the complexity of the training process of the data processing model can be reduced.
The present specification provides embodiments of a model parameter determination system.
Please refer to fig. 2. In this embodiment, the model parameter determination system may include a first data Party, a second data Party, and a Trusted Third Party (TTP).
The third party may be a server; alternatively, it may be a server cluster including a plurality of servers. The third party is configured to provide the random number to the first and second data parties. In particular, the third party may generate a random number matrix, each random number in the random number matrix may be split into two shares, one of which may be a first share and the other of which may be a second share. The third party may use a matrix formed by a first share of each random number in the random number matrix as a first share of the random number matrix, and use a matrix formed by a second share of each random number in the random number matrix as a second share of the random number matrix; a first share of the random number matrix may be sent to the first data party and a second share of the random number matrix may be sent to the second data party. Wherein a sum of the first share of the random number matrix and the second share of the random number matrix is equal to the random number matrix. In addition, the third party may also generate a first OT random number and a second OT random number in view of the first data party and the second data party involving inadvertent transmission in the calculation based on the garbled circuit; the first OT nonce may be sent to the first data party; the second OT random number may be transmitted to the second data party. The OT random number may be a random number used during an inadvertent transmission.
The first data side and the second data side are two sides of the cooperative security modeling respectively. The first data party may be a data party holding the characteristic data, and the second data party may be a data party holding the tag. For example, the first data party may hold the complete feature data and the second data party may hold a tag for the feature data. Alternatively, the first data party may hold a part of the data items of the feature data, and the second data party may hold another part of the data items of the feature data and the tag of the feature data. Specifically, for example, the characteristic data may include a deposit amount and a loan amount of the user. The first data party may hold the deposit amount of the user and the second data party may hold the debit amount of the user and a label for the characteristic data. The tags may be used to distinguish between different types of characteristic data, and specific values may be taken from 0 and 1, for example. It should be noted that the data side here may be an electronic device. The electronic devices may include personal computers, servers, hand-held devices, portable devices, tablet devices, multi-processor devices; or, a cluster formed by any of the above apparatuses or devices, etc. may also be included. In addition, the feature data and the corresponding label together constitute sample data, and the sample data can be used for training the data processing model.
In a scenario of collaborative security modeling, the first and second data parties may each obtain a share of the original model parameters. The first data partner may obtain shares as a first share of the original model parameters, and the second data partner may obtain shares as a second share of the original model parameters. The sum of the first share of the original model parameters and the second share of the original model parameters is equal to the original model parameters.
The first data party may receive a first share of a random number matrix and a first OT random number. The second data party may receive a second share of the random number matrix and a second OT random number. In this way, the first data party may determine the new model parameter based on the first share of the original model parameter, the feature data, the first share of the random number matrix, and the first OT random number, and the second data party may determine the new model parameter based on the second share of the original model parameter, the tag value, the second share of the random number matrix, and the second OT random number in a cooperative manner by using a secret sharing and obfuscation circuit. The first data party and the second data party may each obtain a share of the new model parameters. The specific process can be seen in the following embodiment of the model parameter determination method.
The present specification also provides an embodiment of a model parameter determination method.
This embodiment may use newton's method to determine the model parameters. Please refer to fig. 3. This embodiment may include the following steps.
Step S11: the first data party communicates based on the garbled circuit to which the stimulus function corresponds according to a first share of the first product and the second data party according to a second share of the first product. The first data party obtains a first share of values of the excitation function, and the second data party obtains a second share of values of the excitation function.
Step S13: and the first data party secretly shares the gradient of the loss function according to the characteristic data and the first share of the value of the excitation function, and the second data party secretly shares the gradient of the loss function according to the label and the second share of the value of the excitation function. The first data party obtains a first share of the gradient of the loss function and the second data party obtains a second share of the gradient of the loss function.
Step S15: and the first data party secretly shares the Hessian matrix according to the characteristic data and the first share of the value of the excitation function, and the second data party secretly shares the Hessian matrix according to the second share of the value of the excitation function. The first data party obtains a first share of the hessian matrix and the second data party obtains a second share of the hessian matrix.
Step S17: the first data party shares the first inverse matrix secretly according to the first share of the hessian matrix and the second data party shares the first inverse matrix secretly according to the second share of the hessian matrix. The first data side obtains a first share of the first inverse matrix and the second data side obtains a second share of the first inverse matrix. The first inverse matrix is an inverse of the hessian matrix.
Step S19: the first data party secretly shares the new model parameters according to the first share of the original model parameters, the first share of the first inverse matrix and the first share of the loss function gradient, and the second data party secretly shares the new model parameters according to the second share of the original model parameters, the second share of the first inverse matrix and the second share of the loss function gradient. The first data party obtains a first share of the new model parameters and the second data party obtains a second share of the new model parameters.
Some terms referred to in the embodiments are described below.
first, first product, second product and third product. The first product may be a product between the original model parameters and the feature data. The second product may be a product between a random number matrix and a hessian matrix. The third product may be a product between an inverse of the hessian matrix and a gradient of a loss function.
In some scenario examples, the first product may be represented as XW; wherein, W represents the original model parameters, in particular to the vector formed by the original model parameters; x represents feature data, specifically a matrix formed by the feature data.
The second product may be represented as HR, where H represents a hessian matrix and R represents a random number matrix.
The third product can be represented as H-1dW, wherein, H-1denotes the inverse of the hessian matrix, dW denotes the gradient of the loss function, dW is the vector.
(ii) a first inverse matrix and a second inverse matrix. Since the hessian matrix is a square matrix, the hessian matrix may be subjected to inversion processing, and an inverse matrix of the hessian matrix may be used as the first inverse matrix. The second product may be a square matrix, and thus the second product may be subjected to inversion processing, and an inverse matrix of the second product may be used as a second inverse matrix.
Continuing with the previous scenario example, the first inverse matrix may be represented as H-1The second inverse matrix can be expressed as (HR)-1。
in some embodiments, prior to step S11, the first data party may secretly share the first product based on the held feature data and the first share of the original model parameters, and the second data party may secretly share the first product based on the held second share of the original model parameters. The first and second data parties may each obtain a share of the first product. For convenience of description, the share obtained by the first data party may be taken as a first share of the first product, and the share obtained by the second data party may be taken as a second share of the first product. The sum of the first share of the first product and the second share of the first product is equal to the first product.
Continuing with the previous scenario example, the first quota of original model parameters may be expressed as < W >)0Second fraction of original model parametersCan be expressed as < W >)1,<W>0+<W>1W. The first data party may be according to X and < W >)0the second data party may be according to < W >)1The secret shares the first product XW. The first data party may obtain a first share of the first product < XW > (X [ ])0The second data party may obtain a second share of the first product < XW >1。
<XW>0+<XW>1=XW。
In some embodiments, a corresponding logic circuit may be constructed from the stimulus function. The logic circuit may be constructed by the first data party; alternatively, the second data party may construct the data; or it may be constructed by other devices, such as a trusted third party. The logic circuit may be formed by at least one operational gate, which may include an and gate, an or gate, an xor gate, and the like. The logic circuit may comprise at least two input lines and at least one output line, the garbled circuit being obtainable by encrypting the input lines and/or the output lines of the logic circuit. The obfuscation circuit may include an obfuscation truth table for each operation gate in the logic circuit. It is worth mentioning that the logic circuit can be constructed directly from the excitation function; alternatively, various appropriate transformations may be performed on the excitation function, and a logic circuit may be constructed from the transformed excitation function; alternatively, another function may be generated based on the excitation function, and a logic circuit may be constructed from the other function. Accordingly, the excitation function corresponding to the garbled circuit herein can be understood as: the garbled circuit is generated from the logic circuit of the excitation function, or the garbled circuit is generated from the garbled circuit of the transformed excitation function, or the garbled circuit is generated from the logic circuit of other functions.
The first data side and the second data side can both hold the garbled circuit corresponding to the excitation function. In some embodiments, the garbled circuit may be generated by the first data party. The first data party may send the generated garbled circuit to the second data party. The second data party may receive the garbled circuit. In other embodiments, the garbled circuit may also be generated by the second data party. The second data party may send the generated garbled circuit to the first data party. The first data party may receive the garbled circuit.
In step S11, the first data party may communicate based on the first share of the first product and the second data party may communicate based on the garbled circuit to which the excitation function corresponds based on the second share of the first product. The first data party and the second data party can obtain a share of the value of the excitation function respectively. For convenience of description, the share obtained by the first data party may be used as a first share of the value of the incentive function, and the share obtained by the second data party may be used as a second share of the value of the incentive function. The sum of the first contribution of the value of the excitation function and the second contribution of the value of the excitation function is equal to the value of the excitation function.
please refer to fig. 4. An example scenario in which the first and second data parties perform calculations based on the garbled circuit is described below.
Can be based on an excitation function f (x)1,x2) Constructing the function y ═ f1(x1,x2,x3)=f(x1,x2)-x3. Wherein x is1for representing a first fraction, x, of the first product2Second fraction, x, for representing the first product3for representing a share of the value of the excitation function (hereinafter referred to as a second share of the value of the excitation function), f1(x1,x2,x3) Is used to represent another share of the value of the excitation function (hereinafter referred to as the first share of the value of the excitation function).
Can construct the function f1(x1,x2,x3)=f(x1,x2)-x3The corresponding logic circuit can obtain the garbled circuit by encrypting the input line and/or the output line of the logic circuit. The garbled circuit may be held by both the first and second data parties. It is worth mentioning that it is possible to show,Function y ═ f1(x1,x2,x3)=f(x1,x2)-x3And its corresponding logic circuitry may be constructed by the first data party; alternatively, the second data party may construct the data; or it may be constructed by other devices, such as a trusted third party.
the second data party may generate a share of the value of the incentive function as the second share. The first data party may thus communicate with a first share of the first product as an input to the garbled circuit, and the second data party may communicate with a second share of the first product and a second share of the stimulus function value as inputs to the garbled circuit. The first data party may calculate another share of the value of the excitation function as the first share based on the garbled circuit. The specific calculation process can be seen in the above scenario example related to the introduction of the garbled circuit, and is not described in detail here.
In some embodiments, to reduce the complexity of the garbled circuit, a piecewise linear function may also be used to fit the excitation function. In this way, a corresponding logic circuit can be constructed according to the piecewise linear function, and the garbled circuit can be obtained by encrypting the input line and/or the output line of the logic circuit. The garbled circuit may be held by both the first and second data parties. For example, the excitation function may be a Sigmoid function, and the piecewise linear function may bek denotes the coefficients of the piecewise linear function.
The first data party may communicate based on the garbled circuit according to a first share of the first product and the second data party may communicate based on the garbled circuit according to a second share of the first product. The first data party and the second data party can respectively obtain a share of the values of the piecewise linear function. For convenience of description, the share obtained by the first data party may be taken as a first share of a piecewise linear function value, and the share obtained by the second data party may be taken as a second share of the piecewise linear function value. The sum of the first fraction of the piecewise linear function value and the second fraction of the piecewise linear function value is equal to the value of the piecewise linear function. In this way, the first data party may use the first share of the piecewise linear function value as the first share of the excitation function value. The second data party may use the second share of the piecewise linear function value as the second share of the excitation function value.
In some embodiments, in step S13, the first data party may take a first share of values according to the feature data and the excitation function, and the second data party may also take a second share of values according to the tag and the excitation function, and share the gradient of the loss function. The first data party and the second data party may obtain a share of the gradient of the loss function, respectively. For convenience of description, the share obtained by the first data party may be taken as a first share of the loss function gradient, and the share obtained by the second data party may be taken as a second share of the loss function gradient. The sum of the first contribution of the loss function gradient and the second contribution of the loss function gradient is equal to the gradient of the loss function.
Continuing with the previous scenario example, the first data party may be based on X and < a >)0The second data party may be according to labels Y and < a >)1The secret shares the gradient dW (specifically the vector) of the loss function. The first data party may obtain a first share of the gradient of the loss function < dW >)0The second data party may obtain a second share of the gradient of the loss function < dW >)1. The following describes a detailed procedure of the secret sharing loss function dW between the first data party and the second data party.
the first data party may be according to X, and the second data party may be according to < a >)1Secret sharing XT<a>1. The first data party may obtain < [ X >T<a>1]>0The second data party may obtain < [ X >T<a>1]>1。<[XT<a>1]>0+<[XT<a>1]>1=XT<a>1。
the first data party can also share X in secret according to X, and the second data party can also share X in secret according to tag Y (specifically, a vector formed by tags)TAnd Y. The first data party may obtain < XTY>0The second data party may obtain < XTY>1。<XTY>0+<XTY>1=XTY。
the first data party may calculate XT<a>0(ii) a Can calculate XT<a>0+<[XT<a>1]>0-<XTY>0First contribution < dW > -of gradient dW as a loss function0. The second data party may calculate < [ X [ ]T<a>1]>1-<XTY>1Second contribution < dW > -of gradient dW as a loss function1。
in some embodiments, in step S15, the first data party may take a first share of values according to the characteristic data and the incentive function, and the second data party may secretly share the hessian matrix according to a second share of values according to the incentive function. The first data party and the second data party may obtain a share of the hessian matrix, respectively. For convenience of description, the share obtained by the first data party may be taken as a first share of the hessian matrix, and the share obtained by the second data party may be taken as a second share of the hessian matrix. The sum of the first share of the hessian matrix and the second share of the hessian matrix is equal to the hessian matrix.
Specifically, the first data party may secretly share the diagonal matrix according to the first share of the value of the excitation function, and the second data party may secretly share the diagonal matrix according to the second share of the value of the excitation function. The first and second data parties may each obtain a share of the diagonal matrix. For convenience of description, the share obtained by the first data party may be taken as a first share of the diagonal matrix, and the share obtained by the second data party may be taken as a second share of the diagonal matrix. The sum of the first share of the diagonal matrix and the second share of the diagonal matrix is equal to the diagonal matrix. The first data party may thus share the hessian matrix secretly based on the feature data and the first share of the diagonal matrix, and the second data party may share the hessian matrix secretly based on the second share of the diagonal matrix. The first data party may obtain a first share of the hessian matrix and the second data party may obtain a second share of the hessian matrix.
continuing with the previous scenario example, the first data party may be according to < a >)0The second data party may be according to < a >)1secret sharing diagonal matrix RNN. The first data party may obtain a first share RNN of a diagonal matrix0The second party may obtain a second share RNN of the diagonal matrix1. The following describes a detailed procedure of secret sharing of the diagonal matrix RNN by the first data party and the second data party.
the first data party may be according to < a >)0The second data party may be according to < a >)1secret sharing < a >0·<a>1. The first data party may obtain < a >0·<a>1]>0The second data party may obtain < a >0·<a>1]>1。<[<a>0·<a>1]>0+<[<a>0·<a>1]>1=<a>0·<a>1. Where, denotes a bitwise multiplication operation. For example, the vector m ═ (m)1,m2,m3) The vector n is (n)1,n2,n3). Then, m · n ═ m (m)1n1,m2n2,m3n3)。
The first data party may calculate < r >)0=<a>0-<[<a>0·<a>1]>0-<a>0·<a>0The second data party may calculate < r >)1=<a>1-<[<a>0·<a>1]>0-<a>1·<a>1。
<r>0、<r>1And r are vectors, respectively. Thus, the first data side can be according to < r >0Generating a first share RNN of a diagonal matrix RNN diag (r)0=diag(<r>0) The second data party may be according to < r >)1Generating a second share RNN of the diagonal matrix RNN ═ diag (r)1=diag(<r>1)。RNN0+RNN1RNN. Wherein the first share RNN of the diagonal matrix RNN0And a second share of RNN1May be a diagonal matrix. During actual processing, the first data party may be to convert < r >0As the RNN0Data elements on the main diagonal, thus realizing the method according to < r >0Generating RNN0(ii) a Can make < r >)1As the RNN1Data elements on the main diagonal, thus realizing the method according to < r >1Generating RNN1。
the first data party may be according to X and RNN0the second data party may be according to RNN1The secrets share the hessian matrix H. The first data party may obtain a first share of the Hessian matrix < H >)0The second data party may obtain a second share of the Hessian matrix < H >)1. The detailed process of the first data party and the second data party for secret sharing of the hessian matrix H is described below.
The first data party may be according to X and the second data party may be according to RNN1secret sharing XTRNN1. The first data party may obtain < XTRNN1>0The second data party may obtain < XTRNN1>1。<XTRNN1>0+<XTRNN1>1=XTRNN1。
The first data party may be further based on X, and the second data party may be further based on < XTRNN1>1Secret sharing < XTRNN1>1And (4) X. The first data party may obtain < XTRNN1>1X]>0The second data party may obtain < XTRNN1>1X]>1。<[<XTRNN1>1X]>0+<[<XTRNN1>1X]>1=<XTRNN1>1X。
The first data party may calculate XTRNN0X+<XTRNN1>0X+<[<XTRNN1>1X]>0First share < H > -as Hessian matrix H0. The second data party may be [ < X [ ]TRNN1>1X]>1Second share < H > -as Hessian matrix H0。
In some embodiments, the third party may issue a first share of the random number matrix to the first data party; a second share of the random number matrix may be issued to a second data party. The sum of the first share of the random number matrix and the second share of the random number matrix is equal to the random number matrix. The first data party may receive a first share of a random number matrix and the second data party may receive a second share of the random number matrix. As such, in step S17, the first data party may share the second product secretly based on the first share of the random number matrix and the first share of the hessian matrix, and the second data party may share the second product secretly based on the second share of the random number matrix and the second share of the hessian matrix. The first and second data parties may each obtain a share of the second product. For ease of description, the share obtained by the first data party may be taken as a first share of the second product, and the share obtained by the second data party may be taken as a second share of the second product. The sum of the first contribution of the second product and the second contribution of the second product is equal to the second product.
In some implementations of this embodiment, the second product may be inverted by the second data party. In particular, the first data party may send a first share of the second product to the second data party. The second data party may receive a first share of the second product; the first contribution of the second product may be added to the second contribution of the second product itself to obtain the second product. Considering that the second product is a square matrix, the second data party may perform an inversion process on the second product to obtain an inverse matrix of the second product as a second inverse matrix; the second inverse matrix may be transmitted to the first data party. The first data party may receive the second inverse matrix. Alternatively, in other embodiments of this embodiment, the first data party may further perform an inversion process on the second product. In particular, the second data party may send a second share of the second product to the first data party. The first data party may receive a second share of the second product; the second contribution of the second product may be added to the first contribution of the second product held by itself to obtain the second product. Considering that the second product is a square matrix, the first data party may perform an inversion process on the second product to obtain an inverse matrix of the second product as a second inverse matrix; the second inverse matrix may be transmitted to the second data party. The second data party may receive the second inverse matrix.
the first data party may multiply the first share of the random number matrix with the second inverse matrix to obtain a first share of a first inverse matrix. The second data partner may multiply the second share of the random number matrix with the second inverse matrix to obtain a second share of the first inverse matrix. The sum of the first share of the first inverse matrix and the second share of the first inverse matrix is equal to the first inverse matrix.
continuing with the previous scenario example, the first quota of the random number matrix may be expressed as < R >)0The second share of the random number matrix can be expressed as < R >)1,<R>0+<R>1r. The first data party may be according to < R >)0and < H >0The second data party may be according to < R >)1and < H >1The secret shares the second product HR. The first data party may obtain a first share < HR > -of the second product0The second data party may obtain a second product with a second share < HR > (HR >1. The detailed procedure of the secret sharing of the second product HR by the first data party and the second data party is described below.
The first data party may be according to < H >)0The second data party may be according to < R >)1Secret sharing < H >0<R>1. The first data party may obtain < H >0<R>1]>0The second data party can obtain < H >0<R>1]>1。<[<H>0<R>1]>0+<[<H>0<R>1]>1=<H>0<R>1。
The first data party may also be according to < R >)0The second data party may also be according to < H >)1Secret sharing < H >1<R>0. The first data party may obtain < H >1<R>0]>0The second data party can obtain < H >1<R>0]>1。<[<H>1<R>0]>0+<[<H>1<R>0]>1=<H>1<R>0。
The first data party may calculate < H >)0<R>0+<[<H>0<R>1]>0+<[<H>1<R>0]>0First quotient < HR > as second product0. The second data party may calculate < H >)1<R>1+<[<H>0<R>1]>1+<[<H>1<R>0]>1Second quotient < HR > as second product1。
The second product HR is here inverted by the second data partner. In particular, the first data party may send a first share of the second product < HR > -to the second data party0. The second data party may receive a first share of the second product < HR > (HR >0(ii) a The first fraction < HR > -of the second product may be set0Second share < HR > of second product with self-holding1adding to obtain a second product HR; the second product HR may be inverted to obtain a second inverse matrix (HR)-1(ii) a A second inverse matrix (HR) may be transmitted to the first data party-1. The first data party may receive a second inverse matrix (HR)-1。
The first data party may apply a second inverse matrix (HR)-1With a first share of the random number matrix < R >)0Multiplying to obtain a first inverse matrix H-1First fraction of (A) < H-1>0. The second data party may be a second inverse matrix (HR)-1And a second share of the random number matrix < R >)1Multiplying to obtain a first inverse matrix H-1First fraction of (A) < H-1>1。H-1=<H-1>0+<H-1>1=<R>0(HR)-1+<R>1(HR)-1=R×(HR)-1。
In some embodiments, in step S19, the first data party may secretly share the third product according to the first share of the first inverse matrix and the first share of the loss function gradient, and the second data party may secretly share the third product according to the second share of the first inverse matrix and the second share of the loss function gradient. The first and second data parties may each obtain a share of the third product. For convenience of description, the share obtained by the first data party may be taken as a first share of the third product, and the share obtained by the second data party may be taken as a second share of the third product. The sum of the first contribution of the third product and the second contribution of the third product is equal to the third product.
The first data party may subtract the first share of the original model parameter from the first share of the third product to obtain a first share of the new model parameter. The second data partner may subtract the second share of the original model parameter from the second share of the third product to obtain a second share of the new model parameter.
It should be noted that, in practical applications, the steps S11, S13, S15, S17 and S19 may be repeatedly executed with the new model parameters as new original model parameters. By repeatedly executing the model parameter determination method of the embodiment, iterative optimization and adjustment of the model parameters of the data processing model can be realized.
Continuing with the previous scenario example, the first data party may be based on < H-1>0And < dW >0Said second data party may be according to < H-1>1And < dW >1Secret sharing the third product H-1X dW. The first data party may obtain a first share of the third product < H-1×dW>0The second data party may obtain a second share of the third product < H-1×dW>1. The secret sharing of the third product H by the first and second data parties is described below-1Detailed procedure for XdW.
the first data party may be according to < H-1>0The second data party may be according to < dW >)1Secret sharing < H-1>0<dW>1. The first data party may obtain < H-1>0<dW>1]>0The second data party may obtain < H-1>0<dW>1]>1。<[<H-1>0<dW>1]>0+<[<H-1>0<dW>1]>1=<H-1>0<dW>1。
the first data party may also be according to < dW >)0The second data party may be further based on < H-1>1Secret sharing < H-1>1<dW>0. The first data party may obtain < H-1>1<dW>0]>0The second data party may obtain < H-1>1<dW>0]>1。<[<H-1>1<dW>0]>0+<[<H-1>1<dW>0]>1=<H-1>1<dW>0。
The first data party may calculate < H-1>0<dW>0+<[<H-1>0<dW>1]>0+<[<H-1>1<dW>0]>0First fraction < H as third product-1×dW>0. The second data party may calculate < H-1>1<dW>1+<[<H-1>0<dW>1]>1+<[<H-1>1<dW>0]>1second fraction < H as third product-1×dW>1。
H-1×dW=<H-1×dW>0+<H-1×dW>1
=<H-1>0<dW>0+<[<H-1>0<dW>1]>0+<[<H-1>1<dW>0]>0+
<H-1>1<dW>1+<[<H-1>0<dW>1]>1+<[<H-1>1<dW>0]>1
=<H-1>0<dW>0+<H-1>0<dW>1+<H-1>1<dW>0+<H-1>1<dW>1
=(<H-1>0+<H-1>1)(<dW>0+<dW>1)
The first data party may calculate < W' >0=<W>0-<H-1×dW>0the second data party may calculate < W' >1=<W>1-<H-1×dW>1,<W'>0Represents a first share of a new model parameter, < W' >1Represents the second share of the new model parameter, and W' represents the new model parameter.
W'=<W'>0+<W'>1=<W>0-<H-1×dW>0+<W>1-<H-1×dW>1=W-H-1×dW。
in this embodiment, the first data party and the second data party may cooperatively determine the model parameters of the data processing model by adopting a manner of combining secret sharing and a garbled circuit without leaking data held by the first data party and the second data party. In addition, due to the use of the newton method, the model parameter determination method of the embodiment has a faster convergence rate, so that the number of times of optimization and adjustment of the model parameters can be reduced, and the training efficiency of the data processing model can be improved.
Based on the same inventive concept, the present specification also provides another embodiment of a model parameter determination method. This embodiment is subject to execution by a first data party, which may hold the feature data and shares of the original model parameters. Please refer to fig. 5. This embodiment may include the following steps.
Step S21: and communicating with a partner according to the share of the first product and the garbled circuit corresponding to the excitation function to obtain the share of the value of the excitation function, wherein the first product is the product of the characteristic data and the original model parameter.
In some embodiments, the partner may be understood as a data partner that performs collaborative security modeling with the first data partner, and may specifically be the second data partner above. Specifically, the first data party may share a first product with the partner secret according to the share of the feature data and the original model parameters, so as to obtain a share of the first product; the contribution of the value of the excitation function may be obtained based on the contribution of the first product and the garbled circuit corresponding to the excitation function communicating with the partner. The specific process may refer to the related description of step S11, and is not described herein again.
step S23: and sharing the gradient of the loss function with the partner secret according to the share of the characteristic data and the value of the excitation function, so as to obtain the share of the gradient of the loss function.
in some embodiments, the first data party may obtain a share of the gradient of the loss function according to the feature data and the share of the value of the excitation function and the share of the secret sharing of the partner with the partner. The specific process may refer to the related description of step S13, and is not described herein again.
Step S25: and sharing the Hessian matrix with the partner secretly according to the share of the characteristic data and the value of the excitation function, so as to obtain the share of the Hessian matrix.
In some embodiments, the first data party may share the diagonal matrix with the partner secret according to the share of the stimulus function value, to obtain the share of the diagonal matrix; the Hessian matrix can be shared with the partner secretly according to the feature data and the share of the diagonal matrix, and the share of the Hessian matrix is obtained. The specific process may refer to the related description of step S15, and is not described herein again.
Step S27: and sharing the first inverse matrix with the partner secret according to the share of the Hessian matrix to obtain the share of the first inverse matrix, wherein the first inverse matrix is the inverse matrix of the Hessian matrix.
In some embodiments, the first data party may share a second product with the partner secret based on the shares of the random number matrix and the shares of the hessian matrix, resulting in shares of the second product. The second product may be a product between a random number matrix and a hessian matrix. The first data party may send the share of the second product to the partner; a second inverse matrix that may receive the partner feedback, the second inverse matrix being an inverse of the second product; the second inverse matrix may be multiplied by the shares of the random number matrix to obtain the shares of the first inverse matrix. The specific process may refer to the related description of step S17, and is not described herein again.
Alternatively, in other embodiments, the first data party may share the second product with the partner secret based on the shares of the random number matrix and the shares of the hessian matrix, resulting in a first share of the second product. The second product may be a product between a random number matrix and a hessian matrix. The first data party may receive a second share of the second product from the partner; a second inverse matrix may be determined from the first share of the second product and the second share of the second product, the second inverse matrix being an inverse of the second product; the second inverse matrix may be multiplied by the shares of the random number matrix to obtain the shares of the first inverse matrix. The specific process may refer to the related description of step S17, and is not described herein again.
Step S29: and sharing the new model parameters with the partner secret according to the shares of the original model parameters, the shares of the first inverse matrix and the shares of the loss function gradient, so as to obtain the shares of the new model parameters.
in some embodiments, the first data party may share a third product with the partner secret according to the share of the first inverse matrix and the share of the loss function gradient, resulting in a share of the third product. The third product may be a product between the first inverse matrix and the gradient of the loss function. The first data party may subtract the share of the original model parameter from the share of the third product to obtain a new share of the model parameter. The specific process may refer to the related description of step S19, and is not described herein again.
In this embodiment, the first data party may determine the model parameters of the data processing model in cooperation with the partner by using a method of combining secret sharing and a garbled circuit without leaking own data, so as to obtain a share of new model parameters.
Based on the same inventive concept, the present specification also provides another embodiment of a model parameter determination method. This embodiment takes a second data party as the executing agent, which can hold the share of the label and the original model parameters. Please refer to fig. 6. This embodiment may include the following steps.
step S31: and communicating with a partner according to the share of the first product and the garbled circuit corresponding to the excitation function to obtain the share of the value of the excitation function, wherein the first product is the product of the characteristic data and the original model parameter.
in some embodiments, the partner may be understood as a data partner that performs collaborative security modeling with the second data partner, and may specifically be the first data partner. Specifically, the second data party may share the first product with the partner secret according to the share of the original model parameter, to obtain a share of the first product; the contribution of the value of the excitation function may be obtained based on the contribution of the first product and the garbled circuit corresponding to the excitation function communicating with the partner. The specific process may refer to the related description of step S11, and is not described herein again.
Step S33: and obtaining the share of the gradient of the loss function according to the share of the values of the label and the excitation function and the gradient of the secret sharing loss function of the partner.
In some embodiments, the second data party may obtain the share of the gradient of the loss function according to the share of the values of the tag and the excitation function and the share of the secret sharing of the partner with the partner. The specific process may refer to the related description of step S13, and is not described herein again.
Step S35: and sharing the Hessian matrix with the partner secret according to the share of the value of the excitation function to obtain the share of the Hessian matrix.
In some embodiments, the second data party may share the diagonal matrix with the partner secret according to the share of the value of the excitation function, to obtain the share of the diagonal matrix; the Hessian matrix shares can be obtained by secretly sharing the Hessian matrix with the partners according to the shares of the diagonal matrix. The specific process may refer to the related description of step S15, and is not described herein again.
Step S37: and sharing the first inverse matrix with the partner secret according to the share of the Hessian matrix to obtain the share of the first inverse matrix, wherein the first inverse matrix is the inverse matrix of the Hessian matrix.
In some embodiments, the second data party may share a second product with the partner secret based on the shares of the random number matrix and the shares of the hessian matrix, resulting in shares of the second product. The second product may be a product between a random number matrix and a hessian matrix. The second data party may send the share of the second product to the partner; a second inverse matrix that may receive the partner feedback, the second inverse matrix being an inverse of the second product; the second inverse matrix may be multiplied by the shares of the random number matrix to obtain the shares of the first inverse matrix. The specific process may refer to the related description of step S17, and is not described herein again.
Alternatively, in other embodiments, the second data party may share the second product with the partner secret based on the shares of the random number matrix and the shares of the hessian matrix, resulting in a first share of the second product. The second product may be a product between a random number matrix and a hessian matrix. The second data party may receive a second share of the second product from the partner; a second inverse matrix may be determined from the first share of the second product and the second share of the second product, the second inverse matrix being an inverse of the second product; the second inverse matrix may be multiplied by the shares of the random number matrix to obtain the shares of the first inverse matrix. The specific process may refer to the related description of step S17, and is not described herein again.
Step S39: and sharing the new model parameters with the partner secret according to the shares of the original model parameters, the shares of the first inverse matrix and the shares of the loss function gradient, so as to obtain the shares of the new model parameters.
In some embodiments, the second data party may share a third product with the partner secret according to the share of the first inverse matrix and the share of the loss function gradient, resulting in a share of the third product. The third product may be a product between the first inverse matrix and the gradient of the loss function. The second data party may subtract the contribution of the original model parameter from the contribution of the third product to obtain a new contribution of the model parameter. The specific process may refer to the related description of step S19, and is not described herein again.
in this embodiment, the second data party may determine the model parameters of the data processing model in cooperation with the partner by using a method of combining secret sharing and a garbled circuit without leaking own data, so as to obtain a share of new model parameters.
Based on the same inventive concept, the present specification also provides an embodiment of a model parameter determination apparatus. Please refer to fig. 7. This embodiment may be applied to the first data side and may include the following elements.
An excitation function value share obtaining unit 41, configured to communicate with a partner according to a share of a first product and a garbled circuit corresponding to an excitation function, to obtain a share of an excitation function value, where the first product is a product of feature data and an original model parameter;
A loss function gradient share obtaining unit 43, configured to obtain a share of the loss function gradient according to the feature data, the share of the excitation function value, and the share of the partner secret sharing the gradient of the loss function;
the hessian matrix share obtaining unit 45 is used for sharing the hessian matrix with the partner secretly according to the feature data and the share of the value of the excitation function, and obtaining the share of the hessian matrix;
A first inverse matrix share obtaining unit 47, configured to share a first inverse matrix with a partner secret according to a share of the hessian matrix to obtain a share of the first inverse matrix, where the first inverse matrix is an inverse matrix of the hessian matrix;
And the model parameter share obtaining unit 49 is configured to share the new model parameter with the partner secret according to the share of the original model parameter, the share of the first inverse matrix, and the share of the loss function gradient, so as to obtain the share of the new model parameter.
Based on the same inventive concept, the present specification also provides an embodiment of a model parameter determination apparatus. Please refer to fig. 8. This embodiment may be applied to the second data side and may include the following elements.
An excitation function value share obtaining unit 51, configured to communicate with a partner according to a share of a first product and a garbled circuit corresponding to an excitation function, to obtain a share of an excitation function value, where the first product is a product of feature data and an original model parameter;
A loss function gradient share obtaining unit 53, configured to obtain a share of the loss function gradient according to a share of the tag and the excitation function value and a share of the partner secret sharing the gradient of the loss function;
A hessian matrix share obtaining unit 55, configured to share the hessian matrix with the partner secret according to the share of the excitation function value, to obtain the share of the hessian matrix;
A first inverse matrix share obtaining unit 57, configured to share a first inverse matrix with a partner secret according to a share of the hessian matrix to obtain a share of the first inverse matrix, where the first inverse matrix is an inverse matrix of the hessian matrix;
And the model parameter share obtaining unit 59 is configured to share the new model parameter with the partner secret according to the share of the original model parameter, the share of the first inverse matrix, and the share of the loss function gradient, so as to obtain the share of the new model parameter.
An embodiment of an electronic device of the present description is described below. Fig. 9 is a schematic diagram of a hardware structure of an electronic device in this embodiment. As shown in fig. 9, the electronic device may include one or more processors (only one of which is shown), memory, and a transmission module. Of course, it is understood by those skilled in the art that the hardware structure shown in fig. 9 is only an illustration, and does not limit the hardware structure of the electronic device. In practice the electronic device may also comprise more or fewer component elements than shown in fig. 9; or have a different configuration than that shown in fig. 9.
The memory may comprise high speed random access memory; alternatively, non-volatile memory, such as one or more magnetic storage devices, flash memory, or other non-volatile solid-state memory may also be included. Of course, the memory may also comprise a remotely located network memory. The remotely located network storage may be connected to the electronic device through a network such as the internet, an intranet, a local area network, a mobile communications network, or the like. The memory may be used to store program instructions or modules of application software, such as the program instructions or modules of the embodiment corresponding to fig. 5 in this specification; and/or program instructions or modules of the embodiments corresponding to fig. 6 in this specification.
The processor may be implemented in any suitable way. For example, the processor may take the form of, for example, a microprocessor or processor and a computer-readable medium that stores computer-readable program code (e.g., software or firmware) executable by the (micro) processor, logic gates, switches, an Application Specific Integrated Circuit (ASIC), a programmable logic controller, an embedded microcontroller, and so forth. The processor may read and execute the program instructions or modules in the memory.
The transmission module may be used for data transmission via a network, for example via a network such as the internet, an intranet, a local area network, a mobile communication network, etc.
It should be noted that, in the present specification, each embodiment is described in a progressive manner, and the same or similar parts in each embodiment may be referred to each other, and each embodiment focuses on differences from other embodiments. In particular, as for the device embodiment and the electronic apparatus embodiment, since they are substantially similar to the method embodiment, the description is relatively simple, and the relevant points can be referred to the partial description of the method embodiment. In addition, it is understood that one skilled in the art, after reading this specification document, may conceive of any combination of some or all of the embodiments listed in this specification without the need for inventive faculty, which combinations are also within the scope of the disclosure and protection of this specification.
In the 90 s of the 20 th century, improvements in a technology could clearly distinguish between improvements in hardware (e.g., improvements in circuit structures such as diodes, transistors, switches, etc.) and improvements in software (improvements in process flow). However, as technology advances, many of today's process flow improvements have been seen as direct improvements in hardware circuit architecture. Designers almost always obtain the corresponding hardware circuit structure by programming an improved method flow into the hardware circuit. Thus, it cannot be said that an improvement in the process flow cannot be realized by hardware physical modules. For example, a Programmable Logic Device (PLD), such as a Field Programmable Gate Array (FPGA), is an integrated circuit whose Logic functions are determined by programming the Device by a user. A digital system is "integrated" on a PLD by the designer's own programming without requiring the chip manufacturer to design and fabricate application-specific integrated circuit chips. Furthermore, nowadays, instead of manually making an integrated Circuit chip, such Programming is often implemented by "logic compiler" software, which is similar to a software compiler used in program development and writing, but the original code before compiling is also written by a specific Programming Language, which is called Hardware Description Language (HDL), and HDL is not only one but many, such as abel (advanced Boolean Expression Language), ahdl (alternate Language Description Language), traffic, pl (core unified Programming Language), HDCal, JHDL (Java Hardware Description Language), langue, Lola, HDL, laspam, hardsradware (Hardware Description Language), vhjhd (Hardware Description Language), and vhigh-Language, which are currently used in most popular applications. It will also be apparent to those skilled in the art that hardware circuitry that implements the logical method flows can be readily obtained by merely slightly programming the method flows into an integrated circuit using the hardware description languages described above.
The systems, devices, modules or units illustrated in the above embodiments may be implemented by a computer chip or an entity, or by a product with certain functions. One typical implementation device is a computer. In particular, the computer may be, for example, a personal computer, a laptop computer, a cellular telephone, a camera phone, a smartphone, a personal digital assistant, a media player, a navigation device, an email device, a game console, a tablet computer, a wearable device, or a combination of any of these devices.
From the above description of the embodiments, it is clear to those skilled in the art that the present specification can be implemented by software plus a necessary general hardware platform. Based on such understanding, the technical solutions of the present specification may be essentially or partially implemented in the form of software products, which may be stored in a storage medium, such as ROM/RAM, magnetic disk, optical disk, etc., and include instructions for causing a computer device (which may be a personal computer, a server, or a network device, etc.) to execute the methods described in the embodiments or some parts of the embodiments of the present specification.
The description is operational with numerous general purpose or special purpose computing system environments or configurations. For example: personal computers, server computers, hand-held or portable devices, tablet-type devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
This description may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The specification may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
While the specification has been described with examples, those skilled in the art will appreciate that there are numerous variations and permutations of the specification that do not depart from the spirit of the specification, and it is intended that the appended claims include such variations and modifications that do not depart from the spirit of the specification.