L'optimisation est une branche des mathématiques appliquées qui cherche à trouver les points pour lesquels une fonction réalise un certain nombre d'exigences. Le lecteur pourra se référer par exemple au livre de Phillipe G. Ciarlet \textit{Introduction à l'analyse numérique matricielle et à l'optimisation}~\cite{ciarlet} pour une présentation très complète d'un grand nombre de techniques. Dans ce manuscrit nous ne nous intéresserons qu'a deux types de problèmes liés à l'apprentissage automatique et surtout aux réseaux de neurones. Le premier de ces problèmes est la minimisation sans contrainte d'une fonctionnelle convexe. Cela permet l'entraînement de modèles d'apprentissage automatique à l'aide de fonctions de coûts. Le second problème reprend le premier mais y ajoute des contraintes. C'est-à-dire, comment minimise-t'on le coût tout en garantissant certaines conditions ? \subsubsection{Optimisation sans contrainte : descente de gradient} \label{sec:background-opti-sgd} Nous appelons fonctionnelles les fonctions de $\mathbb{R}^n$ dans $\mathbb{R}$. Soit $J$ une fonctionnelle convexe, nous cherchons à trouver $x\in\mathbb{R}^n$ tel que $J(x) = \text{inf}\{J(t)\mid t\in\mathbb{R}^n\}$. Pour simplifier cette rapide présentation, nous supposerons que $J$ a toujours les conditions de régularité (différentiabilité) suffisantes pour les opérations que nous appliquerons. Pour trouver $x$ qui minimise $J$ une des méthodes les plus utilisées en apprentissage automatique est la descente de gradient. Il s'agit de construire une suite $(x_k)_{k\in\mathbb{N}}$ telle qu'à chaque étape la direction de descente soit optimale. L'idée pour arriver à cela est de considérer une approximation de l'accroissement de $J$ en utilisant la définition du gradient. On cherche $h$ tel que $||h||=1$ et $J(x_k+h)$ soit minimal. D'après la définition du gradient \begin{equation*} J(x_k+h) = J(x_k) + \langle\nabla J(x_k),h\rangle + ||h||\epsilon(h) \end{equation*} On cherche alors à résoudre (*) : $min_{||h||=1}\langle\nabla J(x_k),h\rangle$. D'après l'inégalité de Cauchy-Schwartz \begin{equation*} \forall h~||h||=1\implies~|\langle\nabla J(x_k),h\rangle |\leq ||\nabla J(x_k)|| \end{equation*} Et aussi \begin{equation*} \forall h~||h||=1\implies~\left(|\langle\nabla J(x_k),h\rangle | =||\nabla J(x_k)|| \iff h = \pm \frac{\nabla J(x_k)}{||\nabla J(x_k)||}\right) \end{equation*} $h=-\frac{\nabla J(x_k)}{||\nabla J(x_k)||}$ est donc solution de (*) pour que $\langle\nabla J(x_k),h\rangle$ soit négatif. Ainsi la méthode de descente de gradient est définie par la suite $x_{k+1}=x_k-l_k\nabla J(x_k)$. $l_k$ est appelé le pas. En théorie, nous pouvons lire dans le livre de Ciarlet qu'il existe de multiples manières de trouver un pas optimal ou approprié à la fonctionnelle $J$. Cependant, en apprentissage automatique les hypothèses nécessaires pour obtenir l'optimale sont souvent absentes, en pratique le pas est souvent choisi constant $\exists c\forall k~l_k=c$. Nous montrons dans la Figure~\ref{fig:background-opti-gd} le fonctionnement de la méthode de gradient à pas fixe en dimension un pour une fonctionnelle convexe avec une illustration de la convergence de l'écart entre $J(x_k)$ et le minimum. \begin{figure} \centering \begin{subfigure}{0.45\linewidth} \centering \includegraphics[width=0.66\linewidth]{background/figure/opti/f.pdf} \caption{La suite $u$ approche un minimum local de la fonction $f$.} \end{subfigure} \hspace{1cm} \begin{subfigure}{0.45\linewidth} \centering \includegraphics[width=0.66\linewidth]{background/figure/opti/conv.pdf} \caption{Convergence de l'écart entre $u$ et le minimum vers $0$ en fonction des itérations.} \end{subfigure} \caption{Convergence de la méthode de gradient.} \label{fig:background-opti-gd} \end{figure} \subsubsection{Optimisation sous contraintes : multiplicateurs de Lagrange} \label{sec:background-opti-sous} Pour expliquer ce qu'est l'optimisation sous contraintes, reprenons les mots de Philipe G. Ciarlet : \textquote{On s'intéresse au problème suivant : trouver des conditions \emph{nécessaires}, et des conditions \emph{suffisantes}, pour qu'un point d'un ensemble $U$ soit un extremum relatif de la restriction à l'ensemble $U$ d'une fonction $J$ définie sur un ensemble "plus grand". [...] Un premier exemple est celui des \emph{extremums relatifs liés}, où l'ensemble $U$ est de la forme \begin{equation*} U=\{v\in V \mid \forall i\in m-1~\varphi_i(v)\leq 0\} \end{equation*} } On introduit le lagrangien de ce problème par la formule suivante: \begin{equation*} L:\left\{ \begin{matrix} V\times\mathbb{R}^m_+\\ (v,\mu)\mapsto J(v)+\sum_{i=0}^{m-1}\mu_i\varphi_i(v) \end{matrix} \right. \end{equation*} Pour respecter les contraintes du problème, la méthode consiste à chercher un point selle de $L$, c'est-à-dire, un point $(u,\lambda)\in V\times \mathbb{R}^m_+$ tel que \begin{equation*} sup L(\square,\lambda)=L(u,\lambda)\wedge inf L(u,\square)=L(u,\lambda) \end{equation*} $u$ est alors solution du problème. Il est donc suffisant de connaître $\lambda$ appelé \emph{multiplicateurs de Lagrange} pour pouvoir trouver $u$ en se ramenant au cas sans contraintes de la section précédente. Trouver $\lambda$ s'appelle le \emph{problème dual} en contrepartie de la recherche de $u$ qui est le \emph{problème primal}. Le problème dual bénéficie du fait que les contraintes sont plus simples car il s'agit uniquement de la positivité des multiplicateurs de Lagrange. Le problème dual s'écrit donc $sup (inf_{v\in V}L(v,\square))$. Pour une présentation plus complète des multiplicateurs de Lagrange et de la dualité voir les Sections 7.2 et 9.3 du livre de Ciarlet~\cite{ciarlet}