This paper reviews gradient-based techniques to solve bilevel optimization
problems. Bilevel optimization is a general way to frame the learning of
systems that are implicitly defined through a quantity that they minimize. This
characterization can be applied to neural networks, optimizers, algorithmic
solvers and even physical systems, and allows for greater modeling flexibility
compared to an explicit definition of such systems. Here we focus on
gradient-based approaches that solve such problems. We distinguish them in two
categories: those rooted in implicit differentiation, and those that leverage
the equilibrium propagation theorem. We present the mathematical foundations
that are behind such methods, introduce the gradient-estimation algorithms in
detail and compare the competitive advantages of the different approaches