Is it possible to train an Encrypted convolution network on encrypted image data?
Dear author: we are working on a project which require model capable of doing image classification. We would like to train it with encrypted convolution network on encrypted image data. On tutorial 4, You demonstrated how to train a plain PyTorch model, then evaluate it on encrypted data。Do you think it is possible to take one step (or maybe several steps) further? Thank you
Hi ! What do you mean by encrypted convolutional network ? Do you mean you want to train the network then encrypt the weights after training ? If this is what you mean then the computation done between two homomorphically encrypted ciphers exist but it's inefficient( require special settings and produces larger ciphers). I believe there are some cool works done in this area of Multi-Key Homomorphic Encryption.
Hi, thank you for reply
I mean we encrypt image data, then train a convolutional network on those. we do not want encrypt weights
Since input data are encypted, I guess weights will not be the same as those trained in plain data, so I call it Encrypted convolution network on title, sorry for misunderstanding.
theroticall I think it is possible as long as activation functions are handled corretly. How many layers do you think the network can have? How accurate the output can we expect comparing to unencrpted data.
Thank you.
At 2021-05-29 07:07:19, "Soumia Zohra El Mestari" @.***> wrote:
Hi ! What do you mean by encrypted convolutional network ? Do you mean you want to train the network then encrypt the weights after training ? If this is what you mean then the computation done between two homomorphically encrypted ciphers exist but it's inefficient( require special settings and produces larger ciphers). I believe there are some cool works done in this area of Multi-Key Homomorphic Encryption.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
This is possible but it's a big challenge in terms of computation ( needs efficient ways of doing the matrix/vector multiplication + efficient way of computing non linearities...). To the best of my knowledge the existing works doing this used networks with 2 or 3 layers with a square activation function. The final accuracy was good compared the version trained on plain data( you can check this paper as an example, if you implement a training using TenSeal ping me we may add it as tutorial
Is this work?Training on encrypted data
I also want to train a CNN by encrypted data as you think,but now there are some problems to implement the process of backward in PyTorch. Have you implemented the whole training process?