  Algorithmic decision making driven by neural networks has become very
prominent in applications that directly affect people's quality of life. In
this paper, we study the problem of verifying, training, and guaranteeing
individual fairness of neural network models. A popular approach for enforcing
fairness is to translate a fairness notion into constraints over the parameters
of the model. However, such a translation does not always guarantee fair
predictions of the trained neural network model. To address this challenge, we
develop a counterexample-guided post-processing technique to provably enforce
fairness constraints at prediction time. Contrary to prior work that enforces
fairness only on points around test or train data, we are able to enforce and
guarantee fairness on all points in the input domain. Additionally, we propose
an in-processing technique to use fairness as an inductive bias by iteratively
incorporating fairness counterexamples in the learning process. We have
implemented these techniques in a tool called FETA. Empirical evaluation on
real-world datasets indicates that FETA is not only able to guarantee fairness
on-the-fly at prediction time but also is able to train accurate models
exhibiting a much higher degree of individual fairness.
