Red de conocimiento informático - Problemas con los teléfonos móviles - Entropía cruzada de Patok

Entropía cruzada de Patok

La cantidad de información está estrechamente relacionada con la incertidumbre de la información. Se dice que una declaración es informativa si requiere una gran cantidad de información externa para confirmarla. Por ejemplo, si escucha "Nieva en Xishuangbanna, Yunnan", debe verificar el pronóstico del tiempo, preguntar a los lugareños, etc. (porque nunca nieva en Xishuangbanna, Yunnan). Por otro lado, si alguien te dice “la gente necesita tres comidas al día”, entonces esa información no es muy informativa porque es muy cierta.

Entonces podemos definir el contenido de información de un evento de la siguiente manera (aquí representa la probabilidad de que ocurra un evento):

El contenido de información es para un solo evento, pero de hecho, hay muchas posibilidades de que ocurra un evento. Por ejemplo, hay seis situaciones posibles al lanzar un dado, y el clima de mañana puede ser soleado, nublado o lluvioso, etc. La entropía es una medida de incertidumbre en una variable aleatoria, la cantidad de información que se espera de todos los eventos posibles. La fórmula es la siguiente:

La curva es la siguiente:

Combinando la fórmula de entropía (2) y la curva, cuando la probabilidad de todas estas los eventos posibles son pequeños (cerca de 0) o Cuando es grande (cerca de 1), la entropía es pequeña; cuando la probabilidad del evento está lejos de 0 o 1, la entropía es grande;

Por ejemplo, compare los siguientes tres grupos de eventos:

1) Las probabilidades de eventos son iguales, lo que indica que la muestra pertenece a la primera categoría, y generalmente se usa para expresar la distribución de predicción, por ejemplo, [0,7, 0,1, 0,1, 0,1]. Obviamente, usar q(x) para describir la muestra no es tan preciso y se requiere un aprendizaje continuo para ajustar una distribución precisa.

La fórmula de cálculo de la dispersión KL es la siguiente:

Cuanto menor sea el valor de la dispersión KL, más cercanas estarán las dos distribuciones.

Deformamos la fórmula de divergencia KL y obtenemos:

La primera mitad es entropía y la segunda mitad es nuestra entropía cruzada:

En el aprendizaje automático, a menudo usamos la divergencia KL para evaluar la diferencia entre predicciones y etiquetas, pero dado que la primera mitad de la divergencia KL es una constante, a menudo usamos entropía cruzada La segunda mitad de Se utiliza como función de pérdida, pero de hecho las dos son iguales.

La función de coste de entropía cruzada es un método para medir el valor previsto de una red neuronal artificial (RNA) frente al valor real. Facilita el entrenamiento de redes neuronales artificiales de manera más efectiva que la función de costo cuadrática. Antes de presentar la función de costo de entropía cruzada, este artículo presenta brevemente la función de costo cuadrático y sus deficiencias.

Uno de los propósitos del diseño de ANN es permitir que las máquinas aprendan conocimientos como los humanos. Cuando las personas aprenden a analizar cosas nuevas, descubrirán que cuanto mayores sean los errores que cometan, mayores serán los esfuerzos para corregirlos. Por ejemplo, el tiro: cuando un deportista se da cuenta de que cuanto más se aleja de la dirección correcta está tirando, más debe ajustar el ángulo del tiro para que la pelota entre más fácilmente en la canasta. De manera similar, esperamos que si el error entre el valor predicho y el valor real es grande al entrenar ANN, entonces el rango de ajuste de varios parámetros debería ser mayor durante el proceso de entrenamiento de retropropagación, de modo que el entrenamiento converja mejor y más rápido. Sin embargo, si se utiliza una función de costo cuadrática para entrenar una RNA, el efecto neto es que cuanto mayor sea el error, menores serán los ajustes de parámetros y el entrenamiento será más lento.

Tomando como ejemplo las neuronas de entrenamiento para la clasificación de dos categorías, realizamos dos experimentos (la función de activación comúnmente utilizada en ANN es la función sigmoidea, que también se usó en este experimento): ingrese los mismos datos de muestra x = 1.0 (correspondiente a la clasificación real y = 0); los dos experimentos inicializaron aleatoriamente los parámetros para obtener diferentes valores de salida después de su primera propagación hacia adelante. En el Experimento 1, los parámetros se inicializaron aleatoriamente para obtener la primera salida. El valor es 0,82 (el valor real correspondiente a esta muestra es 0); después de 300 iteraciones de entrenamiento, el valor de salida cae de 0,82 a 0,09, que está cerca del valor real.

En el Experimento 2, el primer valor de salida fue 0,98 y, después de 300 iteraciones de entrenamiento, el valor de salida solo cayó a 0,20.

De las curvas de costos de los dos experimentos, podemos ver: El costo del Experimento 1 disminuye rápidamente a medida que aumenta el número de tiempos de entrenamiento, pero el costo del Experimento 2 disminuye muy lentamente al principio Eso; es decir, cuanto mayor sea el error inicial, menor será la velocidad de convergencia.

De hecho, la razón por la que grandes errores conducen a un entrenamiento lento es el uso de una función de costo cuadrática. La fórmula para la función de costo cuadrática es la siguiente:

Donde, costo, muestra, valor real, valor de producción y número total de muestras. Para simplificar, tomando la misma muestra como ejemplo, cuando la función de costo cuadrática es:

El algoritmo más eficaz para entrenar ANN es el algoritmo de retropropagación. En resumen, entrenar una ANN consiste en ajustar parámetros mediante retropropagación para reducir costos. Estos parámetros incluyen principalmente: los pesos de conexión entre neuronas y el sesgo de cada neurona. El método para ajustar los parámetros es utilizar el algoritmo de descenso de gradiente para ajustar el tamaño del parámetro a lo largo de la dirección del gradiente. El gradiente de y se deriva de la siguiente manera:

Entre ellos, representa la entrada de la neurona y representa la función de activación. Como se puede ver en la fórmula anterior, el gradiente de la suma es proporcional al gradiente de la función de activación. Cuanto mayor es el gradiente de la función de activación, más rápido se ajusta el tamaño de la suma y más rápido converge el entrenamiento. La función de activación comúnmente utilizada en las redes neuronales es la función sigmoidea y su curva es la siguiente:

Como se muestra en la figura, el gradiente correspondiente al valor de salida inicial del Experimento 2 (0,98) es significativamente menor que el gradiente del Experimento 1 (0,82). Por lo tanto, el gradiente del parámetro en el Experimento 2 disminuyó más lentamente que en el Experimento 1. Es por eso que cuanto mayor sea el costo inicial (error), menor será la velocidad de entrenamiento. Esto es diferente de lo que esperábamos, es decir, no puede ser como los humanos, donde cuanto mayor es el error, mayor es la corrección y, por tanto, más rápido aprende.

Algunas personas pueden decir que elegir una función de activación con un gradiente constante o un pequeño cambio puede resolver el problema, ¿verdad? Esto resolverá el problema de una manera simple y cruda, pero puede causar otros problemas más problemáticos. Además, funciones como la función sigmoidea (como la función tanh) tienen muchas ventajas y son ideales para usar como funciones de activación, así que búsquelas en Google usted mismo.

En otras palabras, en lugar de cambiar la función de activación, es mejor cambiar la función de costo cuadrático y usar la función de costo de entropía cruzada:

donde, por ejemplo, representa el número de muestra, por ejemplo, representa el número total de muestras. Luego, se vuelve a calcular el gradiente de los parámetros:

Por lo tanto, se elimina el original en la fórmula de gradiente. Además, la fórmula de gradiente en la fórmula de gradiente representa el error entre la salida; valor y el valor real. Por lo tanto, cuanto mayor sea el error, mayor será el gradiente, más rápido será el ajuste de parámetros y más rápida será la velocidad de entrenamiento. La práctica ha demostrado que la función de costo de entropía cruzada a menudo brinda mejores resultados de entrenamiento que la función de costo cuadrática.

En tareas de clasificación reales, el valor de salida de la capa de salida primero debe pasar por la función Softmax, luego por la función logarítmica y, finalmente, se utiliza la función de pérdida de entropía cruzada para calcular la pérdida.

Pytorch tiene una interfaz F.cross_entropy() para calcular la pérdida de entropía cruzada, pero esta interfaz contiene la función Softmax, la función de registro y la función de pérdida de entropía cruzada. Es decir, F.cross_entropy() = F.softmax() torch.log() F.nnl_loss(). Aun así, utilice F.cross_entropy(), no sólo por su sencillez, sino también porque garantiza valores estables.

El proceso de aprendizaje automático consiste en esperar que la distribución aprendida por el modelo de entropía de datos de entrenamiento sea lo más cercana posible a la distribución real. Sabemos que la dispersión de KL puede mostrar la diferencia entre dos distribuciones.

Pero no tenemos la distribución de los datos reales, por lo que solo podemos conformarnos con la siguiente mejor opción, esperando que la distribución aprendida por el modelo sea la misma que la distribución de los datos de entrenamiento, es decir es decir, tratar los datos de entrenamiento como modelo y datos reales entre agentes. Suponiendo que los datos de entrenamiento se muestrean a partir del muestreo general independiente e idénticamente distribuido, entonces podemos reducir el error de generalización del modelo minimizando el error empírico de los datos de entrenamiento. En resumen:

El resultado ideal de esto es que si el modelo (izquierda) aprende la distribución de los datos de entrenamiento (centro), entonces debería aprender aproximadamente la distribución de los datos reales (derecha): casi Aproximación

Entropía cruzada simple, ¿realmente la entiendes?

Función de pérdida de entropía cruzada