Spaces:
Running
Running
![No Maintenance Intended](https://img.shields.io/badge/No%20Maintenance%20Intended-%E2%9C%95-red.svg) | |
![TensorFlow Requirement: 1.x](https://img.shields.io/badge/TensorFlow%20Requirement-1.x-brightgreen) | |
![TensorFlow 2 Not Supported](https://img.shields.io/badge/TensorFlow%202%20Not%20Supported-%E2%9C%95-red.svg) | |
# Learning to Protect Communications with Adversarial Neural Cryptography | |
This is a slightly-updated model used for the paper | |
["Learning to Protect Communications with Adversarial Neural | |
Cryptography"](https://arxiv.org/abs/1610.06918). | |
> We ask whether neural networks can learn to use secret keys to protect | |
> information from other neural networks. Specifically, we focus on ensuring | |
> confidentiality properties in a multiagent system, and we specify those | |
> properties in terms of an adversary. Thus, a system may consist of neural | |
> networks named Alice and Bob, and we aim to limit what a third neural | |
> network named Eve learns from eavesdropping on the communication between | |
> Alice and Bob. We do not prescribe specific cryptographic algorithms to | |
> these neural networks; instead, we train end-to-end, adversarially. | |
> We demonstrate that the neural networks can learn how to perform forms of | |
> encryption and decryption, and also how to apply these operations | |
> selectively in order to meet confidentiality goals. | |
This code allows you to train encoder/decoder/adversary network triplets | |
and evaluate their effectiveness on randomly generated input and key | |
pairs. | |
## Prerequisites | |
The only software requirements for running the encoder and decoder is having | |
TensorFlow installed. | |
Requires TensorFlow r0.12 or later. | |
## Training and evaluating | |
After installing TensorFlow and ensuring that your paths are configured | |
appropriately: | |
``` | |
python train_eval.py | |
``` | |
This will begin training a fresh model. If and when the model becomes | |
sufficiently well-trained, it will reset the Eve model multiple times | |
and retrain it from scratch, outputting the accuracy thus obtained | |
in each run. | |
## Model differences from the paper | |
The model has been simplified slightly from the one described in | |
the paper - the convolutional layer width was reduced by a factor | |
of two. In the version in the paper, there was a nonlinear unit | |
after the fully-connected layer; that nonlinear has been removed | |
here. These changes improve the robustness of training. The | |
initializer for the convolution layers has switched to the | |
`tf.contrib.layers default` of `xavier_initializer` instead of | |
a simpler `truncated_normal`. | |
## Contact information | |
This model repository is maintained by David G. Andersen | |
([dave-andersen](https://github.com/dave-andersen)). | |