Función de pérdida correcta para entrenar las redes neuronales.

Comprender las funciones de pérdida para entrenar redes neuronales

El aprendizaje automático es muy práctico y cada uno traza su propio camino. No existe un conjunto estándar de cursos a seguir, como era el caso tradicionalmente. No existe un ‘aprendizaje automático 101’, por así decirlo. Sin embargo, esto a veces deja lagunas en la comprensión. Si eres como yo, estos espacios pueden resultar incómodos. Por ejemplo, antes me molestaban las cosas que hacemos de manera casual, como la elección de una función de pérdida. Admito que algunas prácticas se aprenden mediante la heurística y la experiencia, pero la mayoría de los conceptos tienen sus raíces en sólidos fundamentos matemáticos. Por supuesto, no todo el mundo tiene el tiempo o la motivación para profundizar en esos fundamentos, a menos que sea un investigador.

He intentado presentar algunas ideas básicas sobre cómo abordar un problema de aprendizaje automático. Comprender estos antecedentes ayudará a los profesionales a sentirse más seguros en sus elecciones de diseño. Los conceptos que cubrí incluyen:

  • Cuantificar la diferencia en distribuciones de probabilidad mediante entropía cruzada.
  • Una visión probabilística de los modelos de redes neuronales.
  • Derivar y comprender las funciones de pérdida para diferentes aplicaciones.

En teoría de la información, la entropía es una medida de la incertidumbre asociada con los valores de una variable aleatoria. En otras palabras, se utiliza para cuantificar la dispersión de la distribución. Cuanto más estrecha es la distribución, menor es la entropía y viceversa. Matemáticamente, entropía de distribución. pag(x) se define como;

Es común utilizar log con base 2 y en ese caso la entropía se mide en bits. La siguiente figura compara dos distribuciones: la azul con alta entropía y la naranja con baja entropía.

Ejemplos de visualización de distribuciones con alta y baja entropía, creados por el autor utilizando Python.

También podemos medir la entropía entre dos distribuciones. Por ejemplo, consideremos el caso en el que hemos observado que algunos datos tienen la distribución pag(x) y una distribución q(x) que potencialmente podría servir como modelo para los datos observados. En ese caso podemos calcular la entropía cruzada. Hpq​(X) entre la distribución de datos pag(x) y la distribución del modelo q(x). Matemáticamente la entropía cruzada se escribe de la siguiente manera:

Usando la entropía cruzada podemos comparar diferentes modelos y el que tiene la entropía cruzada más baja se ajusta mejor a los datos. Esto se muestra en el ejemplo artificial de la siguiente figura. Tenemos dos modelos candidatos y queremos decidir cuál es mejor modelo para los datos observados. Como podemos ver, el modelo cuya distribución coincide exactamente con la de los datos tiene una entropía cruzada más baja que el modelo que está ligeramente fuera de lugar.

Comparación de la entropía cruzada de la distribución de datos p(x) con dos modelos candidatos. (a) el modelo candidato coincide exactamente con la distribución de datos y tiene una entropía cruzada baja. (b) el modelo candidato no coincide con la distribución de datos, por lo que tiene una alta entropía cruzada, creado por el autor utilizando Python.

Hay otra manera de decir lo mismo. A medida que la distribución del modelo se desvía de la distribución de datos, la entropía cruzada aumenta. Al intentar ajustar un modelo a los datos, es decir, entrenar un modelo de aprendizaje automático, nos interesa minimizar esta desviación. Este aumento en la entropía cruzada debido a la desviación de la distribución de datos se define como entropía relativa comúnmente conocida como Divergencia Kullback-Leibler de simplemente KL-Divergencia.

Por lo tanto, podemos cuantificar la divergencia entre dos distribuciones de probabilidad utilizando entropía cruzada o KL-Divergencia. Para entrenar un modelo podemos ajustar los parámetros del modelo de manera que minimicen la entropía cruzada o KL-Divergencia. Tenga en cuenta que minimizar la entropía cruzada o KL-Divergencia logra la misma solución. KL-Divergencia tiene una mejor interpretación ya que su mínimo es cero, ese será el caso cuando el modelo coincida exactamente con los datos.

Otra consideración importante es ¿cómo elegimos la distribución del modelo? Esto viene dictado por dos cosas: el problema que intentamos resolver y nuestro enfoque preferido para resolverlo. Tomemos el ejemplo de un problema de clasificación donde tenemos (X,Y) pares de datos, con incógnita representando las características de entrada y Y que representan las verdaderas etiquetas de clase. Queremos entrenar un modelo para clasificar correctamente las entradas. Hay dos maneras en que podemos abordar este problema.

El enfoque generativo se refiere a modelar la distribución conjunta. pag(X,Y) de modo que aprende el proceso de generación de datos, de ahí el nombre “generativo”. En el ejemplo que estamos analizando, el modelo aprende la distribución previa de etiquetas de clase. pag(Y) y para la etiqueta de clase dada Yaprende a generar características incógnita usando pag(X|Y).

Debe quedar claro que el modelo aprendido es capaz de generar nuevos datos. (X,Y). Sin embargo, lo que podría ser menos obvio es que también se puede utilizar para clasificar las características dadas. incógnita utilizando la regla de Bayes, aunque esto puede no siempre ser factible dependiendo de la complejidad del modelo. Baste decir que usar esto para una tarea como la clasificación podría no ser una buena idea, por lo que deberíamos adoptar el enfoque directo.

Enfoque de modelado discriminativo versus generativo: creado por el autor utilizando Python.

El enfoque discriminativo se refiere a modelar la relación entre las características de entrada. incógnita y etiquetas de salida Y directamente, es decir, modelando la distribución condicional pag(Y|X). El modelo así aprendido no necesita capturar los detalles de las características. incógnita pero sólo los aspectos discriminatorios de clase. Como vimos anteriormente, es posible aprender los parámetros del modelo minimizando la entropía cruzada entre los datos observados y la distribución del modelo. La entropía cruzada de un modelo discriminativo se puede escribir como:

Donde la suma más a la derecha es el promedio de la muestra y se aproxima a la distribución de datos esperada. Dado que nuestra regla de aprendizaje es minimizar la entropía cruzada, podemos llamarla nuestra función de pérdida general.

El objetivo del aprendizaje (entrenamiento del modelo) es minimizar esta función de pérdida. Matemáticamente, podemos escribir el mismo enunciado de la siguiente manera:

Consideremos ahora ejemplos específicos de modelos discriminativos y apliquemos la función de pérdida general a cada ejemplo.

Como sugiere el nombre, la etiqueta de clase Y para este tipo de problema es 0 o 1. Ese podría ser el caso de un detector de rostros, un clasificador de gato versus perro o un modelo que predice la presencia o ausencia de una enfermedad. ¿Cómo modelamos una variable aleatoria binaria? Así es, es una variable aleatoria de Bernoulli. La distribución de probabilidad de una variable de Bernoulli se puede escribir de la siguiente manera:

dónde π es la probabilidad de obtener 1 es decir p(Y=1) = π.

Ya que queremos modelar pag(Y|X)hagamos π una función de incógnita es decir, la salida de nuestro modelo π(X) depende de las características de entrada incógnita. En otras palabras, nuestro modelo incorpora características incógnita y predice la probabilidad de Y=1. Tenga en cuenta que para obtener una probabilidad válida en la salida del modelo, debe limitarse a ser un número entre 0 y 1. Esto se logra aplicando una no linealidad sigmoidea en la salida.

Para simplificar, reescribamos esto explícitamente en términos de etiqueta verdadera y etiqueta predicha de la siguiente manera:

Podemos escribir la función de pérdida general para esta distribución condicional específica de la siguiente manera:

Esta es la pérdida comúnmente conocida como pérdida de entropía cruzada binaria (BCE).

Para un problema de clases múltiples, el objetivo es predecir una categoría a partir de do clases para cada característica de entrada incógnita. En este caso podemos modelar la salida. Y como variable aleatoria categórica, una variable aleatoria que adopta un estado c de todos los posibles do estados. Como ejemplo de variable aleatoria categórica, pensemos en un dado de seis caras que puede adoptar uno de los seis estados posibles en cada tirada.

Podemos ver la expresión anterior como una extensión sencilla del caso de una variable aleatoria binaria a una variable aleatoria que tiene múltiples categorías. Podemos modelar la distribución condicional. pag(Y|X) haciendo λ‘s en función de las características de entrada incógnita. Con base en esto, escribamos la distribución categórica condicional de Y en términos de probabilidades predichas de la siguiente manera:

Usando este modelo de distribución condicional podemos escribir la función de pérdida usando la función de pérdida general derivada anteriormente en términos de entropía cruzada de la siguiente manera:

Esto se conoce como pérdida de entropía cruzada en PyTorch. Lo que hay que tener en cuenta aquí es que he escrito esto en términos de probabilidad prevista de cada clase. Para tener una distribución de probabilidad válida sobre todos do clases, se aplica una no linealidad softmax en la salida del modelo. La función Softmax se escribe de la siguiente manera:

Consideremos el caso de los datos. (X,Y) dónde incógnita representa las características de entrada y Y representa una salida que puede tomar cualquier valor de número real. Desde Y tiene un valor real, podemos modelar su distribución utilizando una distribución gaussiana.

Nuevamente, dado que estamos interesados ​​en modelar la distribución condicional pag(Y|X). Podemos captar la dependencia de incógnita haciendo la media condicional de Y una función de incógnita. Para simplificar, igualamos la varianza a 1. La distribución condicional se puede escribir de la siguiente manera:

Ahora podemos escribir nuestra función de pérdida general para este modelo de distribución condicional de la siguiente manera:

Ésta es la famosa pérdida de MSE para entrenar el modelo de regresión. Tenga en cuenta que el factor constante es irrelevante aquí ya que solo nos interesa encontrar la ubicación de los mínimos y se puede eliminar.

En este breve artículo, presenté los conceptos de entropía, entropía cruzada y KL-Divergencia. Estos conceptos son esenciales para calcular similitudes (o divergencias) entre distribuciones. Utilizando estas ideas, junto con una interpretación probabilística del modelo, podemos definir la función de pérdida general, también conocida como función objetivo. Entrenar el modelo, o “aprender”, se reduce a minimizar la pérdida con respecto a los parámetros del modelo. Esta optimización generalmente se lleva a cabo mediante el descenso de gradiente, que se maneja principalmente mediante marcos de aprendizaje profundo como PyTorch. Espero que esto ayude: ¡feliz aprendizaje!