# Mezcla de expertos

La mezcla de expertos (MoE) es una técnica de aprendizaje automático en la que se utilizan múltiples redes de expertos (learners) para dividir un espacio de problemas en regiones homogéneas. Se diferencia de las técnicas de ensemble en que, en el caso de las MoE, normalmente solo se ejecutan uno o unos pocos modelos expertos para cada entrada, mientras que en las técnicas de ensemble todos los modelos se ejecutan para cada entrada.

## Teoría básica

En la mezcla de expertos, siempre tenemos los siguientes ingredientes, pero se construyen y combinan de forma diferente.
* Hay expertos $f_{1},...,f_{n}$, cada uno tomando la misma entrada $x$ y produce resultados $f_{1}(x),...,f_{n}(x)$.
* Hay una única función de ponderación (también conocida como función de compuerta) $w$, que toma en $x$ y produce un vector de salidas $(w(x)_{1},...,w(x)_{n})$.
* $\theta =(\theta _{0},\theta _{1},...,\theta _{n})$ es el conjunto de parámetros. El parámetro $\theta _{0}$ es para la función de ponderación.
* Dada una entrada $x$, la mezcla de expertos produce un único resultado combinado al combinar $f_{1}(x),...,f_{n}(x)$ según los pesos $w(x)_{1},...,w(x)_{n}$ de alguna manera.
Tanto los expertos como la función de ponderación se entrenan minimizando algún tipo de función de pérdida, generalmente por descenso gradiente. Hay mucha libertad a la hora de elegir la forma precisa de los expertos, la función de ponderación y la función de pérdida.

## Red Meta-pi

La red meta-pi, documentada por Hampshire y Waibel, utiliza $f(x)=\sum _{i}w(x)_{i}f_{i}(x)$ como salida. El modelo se entrena realizando un descenso de gradiente sobre la pérdida de error cuadrático medio. $L:={\frac {1}{N}}\sum _{k}\|y_{k}-f(x_{k})\|^{2}$. Los peritos podrán tener funciones arbitrarias.
En su publicación original, resolvían el problema de clasificar fonemas en señales de habla de 6 hablantes japoneses diferentes, 2 mujeres y 4 hombres. Entrenaron a 6 expertos, cada uno de los cuales era una «red neuronal retardada» (esencialmente una red de convolución multicapa sobre el espectrograma mel). Comprobaron que la mezcla de expertos resultante dedicaba 5 expertos a 5 de los hablantes, pero el 6º hablante (varón) no tiene un experto dedicado, sino que su voz fue clasificada por una combinación lineal de los expertos de los otros 3 hablantes varones.

## Mezclas adaptativas de expertos locales

Las mezclas adaptativas de los expertos locales utilizan un modelo de mezcla gaussiana. Cada experto simplemente predice una distribución gaussiana, e ignora totalmente la entrada. Específicamente, el $i$ -ésimo experto predice que la salida es $y\sim N(\mu _{i},I)$, donde $\mu _{i}$ es un parámetro que se puede aprender. La función de ponderación es una función lineal-softmax:$w(x)_{i}={\frac {e^{k_{i}^{T}x+b_{i}}}{\sum _{j}e^{k_{j}^{T}x+b_{j}}}}$La mezcla de expertos predice que la salida se distribuye según la función de densidad de probabilidad:$f_{\theta }(y|x)=\ln \left[\sum _{i}{\frac {e^{k_{i}^{T}x+b_{i}}}{\sum _{j}e^{k_{j}^{T}x+b_{j}}}}N(y|\mu _{i},I)\right]=\ln \left[(2\pi )^{-d/2}\sum _{i}{\frac {e^{k_{i}^{T}x+b_{i}}}{\sum _{j}e^{k_{j}^{T}x+b_{j}}}}e^{-{\frac {1}{2}}\|y-\mu _{i}\|^{2}}\right]$Se entrena mediante estimación de máxima verosimilitud, es decir, ascenso de gradiente en $f(y|x)$. El gradiente para el $i$ -ésimo experto es$\nabla _{\mu _{i}}f_{\theta }(y|x)={\frac {w(x)_{i}N(y|\mu _{i},I)}{\sum _{j}w(x)_{j}N(y|\mu _{j},I)}}\;(y-\mu _{i})$y el gradiente de la función de ponderación es$\nabla _{[k_{i},b_{i}]}f_{\theta }(y|x)={\begin{bmatrix}x\\1\end{bmatrix}}{\frac {w(x)_{i}}{\sum _{j}w(x)_{j}N(y|\mu _{j},I)}}(f_{i}(x)-f_{\theta }(y|x))$Para cada par $(x,y)$ de entrada-salida, la función de ponderación se modifica para aumentar la ponderación de todos los expertos que obtuvieron resultados por encima de la media y disminuir la ponderación de todos los expertos que obtuvieron resultados por debajo de la media. Esto anima a la función de ponderación a aprender a seleccionar solo a los expertos que hacen las predicciones correctas para cada entrada.
El $i$ -ésimo experto se cambia para acercar su predicción a $y$, pero la cantidad de cambio es proporcional a $w(x)_{i}N(y|\mu _{i},I)$. Esto tiene una interpretación bayesiana. Dada la entrada $x$, la probabilidad previa de que el experto $i$ es el correcto es $w(x)_{i}$, y $N(y|\mu _{i},I)$ es la probabilidad de evidencia $y$. Entonces, ${\frac {w(x)_{i}N(y|\mu _{i},I)}{\sum _{j}w(x)_{j}N(y|\mu _{j},I)}}$ es la probabilidad posterior para el experto $i$, y, por lo tanto, la tasa de cambio para el $i$ -ésimo experto es proporcional a su probabilidad posterior.
En otras palabras, a los expertos que, en retrospectiva, parecían buenos expertos a los que consultar, se les pide que aprendan con el ejemplo. A los expertos que, en retrospectiva, no lo eran, se les deja solos.
El efecto combinado es que los expertos se especializan: Supongamos que dos expertos son buenos prediciendo un determinado tipo de información, pero uno de ellos es ligeramente mejor. Cuando esto ocurra, el menos experto será incapaz de obtener una señal de gradiente alta y será aún peor en la predicción de ese tipo de entrada. A la inversa, el menos experto puede mejorar en la predicción de otros tipos de entrada y alejarse cada vez más hacia otra región. Esto tiene un efecto de retroalimentación positiva, que hace que cada experto se aparte del resto y se ocupe en solitario de una región local (de ahí el nombre de "expertos locales").

### MoE jerárquico

Las mezclas jerárquicas de expertos utilizan múltiples niveles de gating en un árbol. Cada puerta es una distribución de probabilidad sobre el siguiente nivel de puertas, y los expertos están en los nodos de las hojas del árbol. Son similares a los árboles de decisión.
Por ejemplo, un MoE jerárquico de 2 niveles tendría una función de activación de primer orden. $w_{i}$ y funciones de control de segundo orden $w_{j|i}$ y expertos $f_{j|i}$. La predicción total es entonces $\sum _{i}w_{i}(x)\sum _{j}w_{j|i}(x)f_{j|i}(x)$.

### Variantes

La mezcla de expertos, al ser similar al modelo de mezcla gaussiano, también puede entrenarse mediante el algoritmo esperanza-maximización, al igual que los modelos de mezcla gaussianos. Específicamente, durante el paso de expectativa, la "carga" para explicar cada punto de datos se asigna a los expertos, y durante el paso de maximización, los expertos se entrenan para mejorar las explicaciones para las que obtuvieron una alta carga, mientras que la puerta se entrena para mejorar su asignación de carga. Esto puede converger más rápido que el ascenso gradiente en la log-verosimilitud.
La elección de la función de compuerta suele ser una compuerta softmax. Aparte de eso, se propone el uso de distribuciones gaussianas, y se propone el uso de familias exponenciales.
En lugar de realizar una suma ponderada de todos los expertos, en el MoE duro solo se elige al experto mejor clasificado. Eso es, $f(x)=f_{\arg \max _{i}w_{i}(x)}(x)$. Esto puede acelerar el tiempo de entrenamiento e inferencia
Los expertos pueden utilizar formas más generales de distribuciones gaussianas multivariantes. Por ejemplo, propuso $f_{i}(y|x)=N(y|A_{i}x+b_{i},\Sigma _{i})$, dónde $A_{i},b_{i},\Sigma _{i}$ son parámetros que se pueden aprender. En palabras, cada experto aprende a realizar una regresión lineal, con una estimación de incertidumbre que se puede aprender.
Se pueden utilizar expertos distintos de las distribuciones gaussianas. Por ejemplo, se puede utilizar la distribución de Laplace o la distribución t de Student. Para la clasificación binaria, también propuso expertos de regresión logística, con$f_{i}(y|x)={\begin{cases}{\frac {1}{1+e^{\beta _{i}^{T}x+\beta _{i,0}}}},&y=0\\1-{\frac {1}{1+e^{\beta _{i}^{T}x+\beta _{i,0}}}},&y=1\end{cases}}$donde $\beta _{i},\beta _{i,0}$ son parámetros que se pueden aprender. Posteriormente, esto se generaliza para la clasificación de clases múltiples, con expertos en regresión logística multinomial.

## Aprendizaje profundo

La sección anterior describía MoE tal y como se utilizaba antes de la era del aprendizaje profundo. Después del aprendizaje profundo, MoE encontró aplicaciones en la ejecución de los modelos más grandes, como una forma sencilla de realizar cálculos condicionales: solo se utilizan partes del modelo, las partes elegidas en función de cuál sea la entrada.
El primer artículo que aplica MoE al aprendizaje profundo es el que propone utilizar una red de compuertas diferente en cada capa de una red neuronal profunda. En concreto, cada gating es una red lineal-ReLU-lineal-softmax, y cada experto es una red lineal-ReLU.
El desiderátum de diseño clave para MoE en el aprendizaje profundo es reducir el coste computacional. En consecuencia, para cada consulta, solo debe consultarse un pequeño subconjunto de expertos. Esto hace que el MoE en el aprendizaje profundo sea diferente del MoE clásico. En el MoE clásico, el resultado de cada consulta es una suma ponderada de los resultados de todos los expertos. En el MoE de aprendizaje profundo, el resultado de cada consulta solo puede incluir los resultados de unos pocos expertos. En consecuencia, la elección de diseño clave en MoE se convierte en enrutamiento: dado un lote de consultas, cómo dirigir las consultas a los mejores expertos.

### Capa de MoE dispersa

La capa MoE escasamente cerrada, publicada por investigadores de Google Brain, utiliza redes de avance como expertos y puerta lineal-softmax. De manera similar al MoE duro propuesto anteriormente, logran escasez mediante una suma ponderada de solo los k expertos principales, en lugar de la suma ponderada de todos ellos. Específicamente, en una capa MoE, existen redes de retroalimentación $f_{1},...,f_{n}$ y una red de puertas $w$ . La red de puertas está definida por $w(x)=\mathrm {softmax} (\mathrm {top} _{k}(Wx+{\text{noise}}))$, donde $\mathrm {top} _{k}$ es una función que mantiene iguales las entradas k superiores de un vector, pero establece todas las demás entradas en $-\infty$. La adición de ruido ayuda con el equilibrio de carga.
La elección de $k$ es un hiperparámetro que se elige en función de la aplicación. Los valores típicos son $k=1,2$. La versión $k=1$ también se denomina transformador de conmutación.
Como demostración, entrenaron una serie de modelos para traducción automática con capas alternas de MoE y LSTM, y los compararon con modelos LSTM profundos. La tabla 3 muestra que los modelos MoE emplearon menos tiempo de cálculo de inferencia, a pesar de tener 30 veces más parámetros.
Los MoE de vainilla tienden a tener problemas de equilibrio de carga: algunos expertos son consultados con frecuencia, mientras que otros expertos rara vez o nunca. Para animar a la puerta a seleccionar a cada experto con la misma frecuencia (equilibrio de carga adecuado) dentro de cada lote, cada capa de MoE tiene dos funciones de pérdida auxiliares. Esto se mejora con una única función de pérdida auxiliar. En concreto, si $n$ es el número de expertos, para un conjunto determinado de consultas $\{x_{1},x_{2},...,x_{T}\}$, la pérdida auxiliar del conjunto es
$n\sum _{i=1}^{n}f_{i}P_{i}$
Aquí, $f_{i}={\frac {1}{T}}\#({\text{queries sent to expert }}i)$ es la fracción de tiempo en la que el experto $i$ ocupa el puesto más alto, y $P_{i}={\frac {1}{T}}\sum _{j=1}^{T}w_{i}(x_{j})$ es la fracción de peso en experto $i$. Esta pérdida se minimiza en $1$, precisamente cuando cada experto tiene el mismo peso $1/n$ en todas las situaciones.

### Enrutamiento

En el método MoE sparsely-gated, solo se consulta a los mejores expertos k y sus resultados se suman ponderadamente. Existen otros métodos.
En el MoE Hash, el enrutamiento se realiza de forma determinista mediante una función hash, fijada antes de comenzar el aprendizaje. Por ejemplo, si el modelo es un Transformador de 4 capas, y la entrada es un token para la palabra "comer", y el hash de "comer" es $(1,4,2,3)$, entonces el token se enrutaría al primer experto de la capa 1, al cuarto experto de la capa 2, etc. A pesar de su simplicidad, alcanza un rendimiento competitivo como el MoE con $k=1$.
En MoE suave, supongamos que en cada conjunto, cada experto puede procesar $p$ consultas, entonces hay $n\times p$ consultas que se pueden asignar por conjunto. Ahora, para cada lote de consultas$\{x_{1},x_{2},...,x_{T}\}$, la capa suave MoE calcula una matriz $w_{i,j,k}$, tal que $(w_{i,j,1},...,w_{i,j,T})$ es una distribución de probabilidad sobre consultas, y la $i$ -ésimo experto $j$ -ésima consulta es $\sum _{k}w_{i,j,k}x_{k}$. Sin embargo, esto no funciona con el modelado autorregresivo, ya que los pesos $w_{i,j,k}$ sobre un token depende de todos los demás tokens.
Otros enfoques incluyen resolverlo como un problema de programación lineal con restricciones, haciendo que cada experto elija las primeras k consultas que desea (en lugar de que cada consulta elija a los primeros k expertos para ella), utilizando el aprendizaje por refuerzo para entrenar el algoritmo de enrutamiento (ya que elegir a un experto es una acción discreta, como en la RL).

### Factor de capacidad

Supongamos que hay $n$ expertos en una capa. Para un determinado lote de consultas $\{x_{1},x_{2},...,x_{T}\}$, cada consulta se dirige a uno o más expertos. Por ejemplo, si cada consulta se enruta a un experto como en Transformadores de conmutación, y si los expertos están equilibrados en carga, entonces cada experto debería esperar por término medio $T/n$consultas por lote. En la práctica, los expertos no pueden esperar un equilibrio perfecto de la carga: en algunos lotes, un experto podría tener poco trabajo, mientras que en otros, tendría demasiado. Como las entradas no pueden moverse por la capa hasta que todos los expertos de la capa hayan terminado las consultas que tienen asignadas, el equilibrio de la carga es importante. El factor de capacidad es una restricción estricta del equilibrio de carga: cada experto solo puede procesar un máximo de $c\cdot T/n$consultas por lote, encontrado $c\in [1.25,2]$ que funcionan en la práctica.

### Aplicaciones a modelos de transformadores

Las capas MoE se utilizan en modelos de transformadores muy grandes, para los que aprender e inferir sobre el modelo completo resulta demasiado costoso. Suelen tener un sparsely-gated, con sparsity 1 o 2. En los modelos de transformador, las capas MoE se utilizan a menudo para seleccionar las capas prealimentadas (normalmente una red lineal-ReLU-lineal), que aparecen en cada bloque de transformador después de la atención multicabezal. Esto se debe a que las capas prealimentadas ocupan una parte cada vez mayor del coste computacional a medida que los modelos se hacen más grandes. Por ejemplo, en el modelo Palm-540B, el 90% de los parámetros se encuentran en sus capas prealimentadas.
Por lo general, los MoE se utilizan cuando los modelos densos se han vuelto demasiado costosos, lo que significa que se suelen utilizar para los modelos más grandes. A partir de 2023, estos modelos suelen ser modelos de lenguaje grandes. Fuera de estos, Vision MoE es un modelo Transformer con capas MoE. Lo demostraron entrenando un modelo con 15.000 millones de parámetros.
Una serie de grandes modelos lingüísticos de Google utilizan MoE. GShard utiliza MoE con un máximo de 2 expertos por capa. En concreto, siempre se selecciona el primer experto y el segundo con una probabilidad proporcional a su peso según la función de compuerta. Más tarde, GLaM demostró un modelo lingüístico con 1,2 billones de parámetros, en el que cada capa MoE utiliza top-2 de 64 expertos. Switch Transformers utiliza top-1 en todas las capas MoE.
El NLLB-200 de Meta AI es un modelo de traducción automática para 200 idiomas. Cada capa MoE utiliza un MoE jerárquico con dos niveles. En el primer nivel, la función de compuerta elige entre utilizar una capa prealimentada «compartida» o utilizar a los expertos. Si se utilizan los expertos, otra función de compuerta calcula los pesos y elige a los 2 mejores expertos.
Los grandes modelos lingüísticos de MoE pueden adaptarse a tareas posteriores mediante el ajuste de instrucciones.
En diciembre de 2023, Mistral AI publicó Mixtral 8x7B bajo licencia Apache 2.0. Se trata de un modelo de lenguaje MoE con 46,7B parámetros, 8 expertos y sparsity 2. Se trata de un modelo de lenguaje MoE con 46.7B parámetros, 8 expertos, y sparsity 2. También publicaron una versión ajustada para el seguimiento de instrucciones.

## Otras lecturas

* Antes de la era del aprendizaje profundo:
** McLachlan, Geoffrey J.; Peel, David (2000). Finite mixture models. Wiley series in probability and statistics applied probability and statistics section. New York Chichester Weinheim Brisbane Singapore Toronto: John Wiley & Sons, Inc. ISBN 978-0-471-00626-8.
** Yuksel, S. E.; Wilson, J. N.; Gader, P. D. (August 2012). «Twenty Years of Mixture of Experts». IEEE Transactions on Neural Networks and Learning Systems 23 (8): 1177-1193. ISSN 2162-237X. PMID 24807516. S2CID 9922492. doi:10.1109/TNNLS.2012.2200299.
** Masoudnia, Saeed; Ebrahimpour, Reza (12 de mayo de 2012). «Mixture of experts: a literature survey». Artificial Intelligence Review 42 (2): 275-293. S2CID 3185688. doi:10.1007/s10462-012-9338-y.
** Nguyen, Hien D.; Chamroukhi, Faicel (July 2018). «Practical and theoretical aspects of mixture-of-experts modeling: An overview». WIREs Data Mining and Knowledge Discovery (en inglés) 8 (4). ISSN 1942-4787. S2CID 49301452. doi:10.1002/widm.1246.
* Era del aprendizaje profundo
** Zoph, Barret; Bello, Irwan; Kumar, Sameer; Du, Nan; Huang, Yanping; Dean, Jeff; Shazeer, Noam; Fedus, William (2022). «ST-MoE: Designing Stable and Transferable Sparse Expert Models». arXiv:2202.08906
[cs.CL].