La pérdida no reduce las razones y soluciones.

Cuando entrenamos un modelo de red neuronal, a menudo nos encontramos con un dolor de cabeza, es decir, el valor de pérdida del modelo de red neuronal no disminuye, por lo que no podemos entrenar o no podemos obtener un modelo mejor. Hay muchas razones por las que la pérdida no disminuye durante el entrenamiento y, en términos más generales, la pérdida no disminuye generalmente dividida en tres tipos, a saber: la pérdida no disminuye en el conjunto de entrenamiento, la pérdida no disminuye en la verificación conjunto, y la pérdida no disminuye en el conjunto de prueba. Aquí, en primer lugar, se supone que todo el mundo puede entender los conceptos de overfitting y underfitting.

La pérdida del conjunto de entrenamiento no disminuye.

La pérdida del conjunto de entrenamiento no disminuye durante el proceso de entrenamiento, lo que generalmente es causado por estos aspectos.

1. Hay problemas con la estructura del modelo y la ingeniería de funciones.

Si hay un problema con la estructura de un modelo, será difícil de entrenar. Por lo general, la estructura de red diseñada por uno mismo "investigación y desarrollo independientes" puede ser difícil de adaptar a problemas prácticos. Al referirse a la estructura que otros tienen diseñado, implementado y probado, e ingeniería de características El programa se puede mejorar y adaptar para completar la tarea objetivo más rápido y mejor. Cuando la estructura del modelo no es buena o la escala es demasiado pequeña, y hay problemas en la ingeniería de características, su capacidad para ajustar los datos es insuficiente, que es el primer gran problema que encuentran muchas personas al realizar una nueva investigación o aplicación de ingeniería.

Por ejemplo, cuando estaba construyendo wavnet, la salida de res_block era incorrecta, lo que dificultaba el entrenamiento de la red.

2. Hay un problema con el esquema de inicialización de peso

Antes de entrenar la red neuronal, debemos darle un valor inicial, pero cómo elegir este valor inicial, debemos consultar la literatura relevante para elegir el esquema de inicialización más adecuado. Los esquemas de inicialización comúnmente utilizados incluyen la inicialización de todos ceros, la inicialización de distribución normal aleatoria y la inicialización de distribución uniforme aleatoria. Un esquema de inicialización adecuado es muy importante, si se usa correctamente, se obtendrá el doble de resultado con la mitad de esfuerzo, si no se usa correctamente, el estado de entrenamiento del modelo no puede soportar ser visto directamente. El blogger entrenó un modelo antes, pero el esquema de inicialización era incorrecto. Después de medio día de entrenamiento, el valor de pérdida se mantuvo alto. Finalmente, se cambió el esquema de inicialización y el valor de pérdida cayó como un precipicio.

Se recomienda inicializar el descerebrado xaiver normal o el normal

3. Regularización excesiva

L1 L2 y Dropout se utilizan para evitar el sobreajuste, cuando no se puede obtener la pérdida del conjunto de entrenamiento, es necesario considerar si la regularización es excesiva y el modelo está infraajustado. Generalmente, no se requiere regularización al principio, y luego del sobreajuste, se ajusta de acuerdo a la situación de entrenamiento. Si regulariza desde el principio, es difícil determinar si la estructura del modelo actual está diseñada correctamente y es aún más difícil de depurar.

Sugiera bn, él también tiene cierta habilidad para evitar el sobreajuste.

4. Seleccione la función de activación y la función de pérdida adecuadas

No solo la inicialización, sino también la selección de la función de activación y la función de pérdida de la red neuronal también deben seleccionarse de acuerdo con el tipo de tarea.

Por ejemplo, en la red neuronal convolucional, la salida de la capa convolucional generalmente usa ReLu como función de activación, porque puede evitar efectivamente la desaparición del gradiente, y la función lineal tiene más ventajas en el rendimiento informático. La capa recurrente en la red neuronal recurrente generalmente es tanh, o ReLu, y la capa completamente conectada también usa ReLu. Solo cuando la capa de salida de la red neuronal se clasifica usando la capa completamente conectada, se usará la función de activación softmax.

En cuanto a la función de pérdida, para algunas tareas de clasificación se suele utilizar la función de pérdida de entropía cruzada, el error cuadrático medio para tareas de regresión y la pérdida CTC para tareas con alineación automática. La función de pérdida equivale a un índice de evaluación del grado de ajuste del modelo, y cuanto menor sea el resultado de este índice, mejor. Una buena función de pérdida puede producir mejores parámetros del modelo al optimizar la red neuronal.

5. Elija el optimizador y la tasa de aprendizaje correctos

La selección del optimizador de la red neuronal generalmente selecciona a Adam, pero en algunos casos Adam es difícil de entrenar y es necesario usar otros optimizadores como SGD en este momento. La tasa de aprendizaje determina la velocidad del entrenamiento de la red, pero cuanto mayor no sea la tasa de aprendizaje, mejor. Cuando la red se acerca a la convergencia, se debe seleccionar una tasa de aprendizaje más pequeña para garantizar que se encuentre un mejor punto óptimo. Por lo tanto, necesitamos ajustar manualmente la tasa de aprendizaje. Primero, elija una tasa de aprendizaje inicial adecuada. Después de que el entrenamiento no se detenga, reduzca ligeramente la tasa de aprendizaje y luego entrene por un período de tiempo. En este momento, básicamente converge completamente . Los ajustes generales de la tasa de aprendizaje se multiplican/dividen por múltiplos de 10. Sin embargo, también existen algunas soluciones para ajustar automáticamente la tasa de aprendizaje.Sin embargo, también necesitamos saber cómo ajustar manualmente la tasa de aprendizaje adecuada.

6. No hay suficiente tiempo de entrenamiento

A veces me encuentro con personas que hacen preguntas como por qué he entrenado durante varias horas, por qué la pérdida no ha disminuido mucho o por qué no ha convergido. ¡Más prisa menos velocidad! Varios entrenamientos de aprendizaje profundo tienen cálculos diferentes. Cuando los cálculos requeridos son grandes, ¿cómo se puede completar el entrenamiento en unas pocas horas, especialmente si todavía está usando la CPU de su propia computadora personal para entrenar el modelo? La solución general es usar hardware más rápido para acelerar el entrenamiento, como GPU.Cuando se trata de tareas de visión por computadora, el efecto de aceleración es significativo, principalmente debido a la red convolucional. Cuando no hay forma de usar la aceleración de hardware, la única solución es esperar.

7. La formación de modelos encuentra un cuello de botella

Los cuellos de botella aquí generalmente incluyen: desaparición del gradiente, inactivación de un gran número de neuronas, explosión y difusión del gradiente, tasa de aprendizaje demasiado grande o demasiado pequeña, etc.

Cuando desaparece el gradiente, la pérdida del modelo es difícil de disminuir, al igual que caminar en una meseta, casi cualquier lugar es una gran altitud, y el estado actual del modelo se puede verificar a través de la prueba de gradiente. A veces, la actualización de degradado y el código de propagación hacia atrás tienen errores, y también surge este problema.

Al usar la función de activación Relu, cuando la entrada X de cada neurona es negativa, la salida de la neurona siempre será 0, lo que resultará en la inactivación. Dado que el gradiente es 0 en este momento, no se puede restaurar. Una solución es usar LeakyRelu.En este momento, la línea izquierda del gráfico del eje Y tendrá un pequeño gradiente positivo, de modo que la red neuronal se pueda recuperar después de un cierto período de tiempo. Sin embargo, LeakyRelu no es de uso común, ya que la desactivación de algunas neuronas no afecta los resultados, al contrario, esta salida es 0 y tiene muchos efectos positivos. Porque cuando la entrada de la ecuación de Relu es negativa, el valor de salida es 0. Con esta función, la información de correlación negativa que genera el kernel de convolución puede ignorarse y conservar la información relevante.

La causa fundamental de la explosión de gradientes y la dispersión de gradientes es que, según la regla de la cadena, los gradientes en el aprendizaje profundo se acumulan capa por capa. Por ejemplo, 1,1 elevado a la n-ésima potencia es infinitamente grande y 0,9 elevado a la n-ésima potencia es infinitamente pequeño. La salida excesivamente grande de algunas capas en la red también causará una explosión de gradiente.En este momento, se debe tomar un límite superior para la salida, que puede estar limitado por la norma máxima.

En cuanto a la tasa de aprendizaje, se puede ajustar de acuerdo con el ítem 5.

8. El tamaño del lote es demasiado grande

Si el tamaño del lote es demasiado pequeño, el modelo fluctuará en la etapa posterior y será difícil converger. Si es demasiado grande, la velocidad de convergencia será demasiado lenta debido al gradiente promedio en la etapa inicial del modelo. En general, el tamaño del lote suele seleccionarse como 32 o 16. Para algunas tareas, como NLP, se puede seleccionar 8 como el número de lotes de datos. Sin embargo, a veces, para reducir la relación entre la sobrecarga de comunicación y la sobrecarga informática, también se puede ajustar a un valor muy grande, especialmente en paralelo y distribuido.

9. El conjunto de datos no se mezcla

Si el conjunto de datos no se altera, hará que la red tenga ciertos problemas de sesgo durante el proceso de aprendizaje. Por ejemplo, Zhang San y Li Si a menudo aparecen en el mismo lote de datos, por lo que el resultado es que la red neuronal "recordará" a Li Si cuando vea a Zhang San. La razón principal es que cuando se actualiza el gradiente, los gradientes de Zhang San y Li Si siempre se promedian, lo que da como resultado una tendencia de gradiente fija, lo que reduce la riqueza del conjunto de datos. Después de que se interrumpan los datos, Zhang San promediará con Wang Wu, y Li Si también promediará con Wang Wu, de modo que la dirección del gradiente sea más rica y la información implícita más útil se pueda aprender mejor de todo el conjunto de datos. característica

10. Hay un problema con el conjunto de datos

Cuando un conjunto de datos tiene demasiado ruido, o hay una gran cantidad de errores en el etiquetado de datos, será difícil para la red neuronal aprender información útil de él, lo que resultará en inestabilidad. Al igual que cuando alguien te dice 1+1=2 y otra persona te dice 1+1=3, te confundirás. O puede ser causado por errores en la lectura de datos.En este momento, la situación real es la misma que la de los errores de etiquetado de datos. Además, el desequilibrio de categorías también dificultará que menos categorías adquieran características esenciales debido a la información insuficiente.

11. No normalizado

Si no se normaliza, se producirán desequilibrios de escala, como desequilibrios de 1 km y 1 cm, lo que dará lugar a errores mayores, o al mismo ritmo de aprendizaje, el modelo se balanceará a un ritmo de cinco centímetros por segundo, izquierda y derecha, Avanza 1 km. . A veces, el desequilibrio es causado por diferentes unidades de medida, como kg y m, como todos sabemos, no hay comparación entre 1 kg y 1 m, aunque los números son ambos 1. Por lo tanto, podemos acercar la distribución numérica de las características escalando.

Comparación antes y después de la normalización

12. Hay un problema con la selección de características de datos en la ingeniería de características

La selección irrazonable de las características de los datos, al igual que el etiquetado incorrecto de los datos, dificultará que la red neuronal encuentre las características esenciales de los datos para el aprendizaje. La esencia del aprendizaje automático es hacer ingeniería de características y datos limpios (escape).

La pérdida del conjunto de verificación no disminuye

La pérdida del conjunto de verificación no se reduce a dos tipos. Una es que la pérdida en el conjunto de entrenamiento no disminuye. En este momento, el problema radica principalmente en la pérdida del conjunto de entrenamiento. Primero debe consultar los métodos anteriores para resolverlo. La otra es que la pérdida en el conjunto de entrenamiento se puede reducir, pero la pérdida en el conjunto de verificación no ha disminuido, aquí explicamos principalmente el problema en este caso.

Dado que el conjunto de verificación se divide del mismo lote de datos de entrenamiento, generalmente no hay ningún problema con el conjunto de datos, por lo que se trata principalmente de un sobreajuste. Resolver el sobreajuste en realidad no es muy complicado. Solo hay unos pocos métodos, pero los requisitos para los propios ingenieros son relativamente altos.

1. Regularización adecuada y reducción de dimensionalidad

La regularización es un medio muy importante para resolver el problema del sobreajuste del modelo. Por ejemplo, al agregar un elemento de regularización y dar artificialmente un coeficiente de regularización lambda, se realiza una disminución del peso y se atenúan los parámetros de algunos elementos de características con poca correlación. A casi 0, es equivalente a eliminar esta característica, lo que es similar a la reducción de dimensionalidad, que es equivalente a reducir la dimensión de la característica. Y elimine la dimensión básicamente irrelevante, luego evite el sobreajuste del modelo a las características de esta dimensión. Además, agregar Dropout y Normal entre las dos capas de la red neuronal también desempeña un papel en la supresión del sobreajuste.

2. Reducir adecuadamente la escala del modelo

Una de las razones importantes para el sobreajuste es que la complejidad del modelo es demasiado alta, como si solo se plantara un trigo en un acre de tierra, la maleza crecería en otros lugares, por lo que se sobreajustaría algo de ruido. Por lo tanto, además del método de regularización, también es muy importante reducir adecuadamente el tamaño del modelo e intentar hacer coincidir el espacio de hipótesis de la estructura de la red neuronal con la cantidad de información que el modelo de destino esperado necesita almacenar.

3. Obtenga más conjuntos de datos

Esta es la solución definitiva, el aprendizaje profundo se desarrolla sobre la base de una gran cantidad de datos. El traje de tres piezas del aprendizaje profundo: datos, modelos y hardware. El modelo se puede usar directamente y el hardware se puede comprar con dinero, pero los datos deben recopilarse poco a poco y la solución a muchos problemas depende de una gran cantidad de datos. Sin datos, no hay nada.

La pérdida del conjunto de prueba no disminuye

El conjunto de prueba generalmente son datos nuevos que el modelo nunca ha visto antes del entrenamiento, o datos reales en el escenario de la aplicación de destino. Dado que la pérdida del conjunto de entrenamiento y el conjunto de verificación no disminuye, debe clasificarse como el contenido de las dos secciones anteriores, por lo que en esta sección, por defecto, la pérdida del conjunto de entrenamiento y el conjunto de verificación es normal. Por lo tanto, si la pérdida del conjunto de prueba es muy alta, o la tasa correcta es muy baja, generalmente se debe a que los escenarios de distribución y aplicación de los datos de entrenamiento son inconsistentes con los escenarios de distribución y aplicación de los datos de prueba.

1. Escenarios de aplicación inconsistentes

Por ejemplo, para un modelo de reconocimiento de voz, el conjunto de datos de entrada son todas las grabaciones de audio femeninas, por lo que las voces masculinas no se pueden reconocer bien. Este es también un caso real encontrado por el blogger cuando estaba haciendo reconocimiento de voz antes.La solución es aumentar el conjunto de datos que contiene una gran cantidad de grabaciones de audio masculinas para el entrenamiento.

2. Problema de ruido'

El problema del ruido es un problema frecuente en escenarios de aplicación práctica. Un caso directo y fácil de entender es que en el reconocimiento de voz, los conjuntos de datos de voz estándar se recopilan en un entorno silencioso, pero en aplicaciones prácticas, habrá más o menos ruido cuando grabamos, por lo que debemos lidiar con el ruido especialmente Por ejemplo, realice un proceso de reducción de ruido, o agregue ruido a los datos de entrenamiento, etc. En el reconocimiento de imágenes, es necesario considerar cuestiones como la oclusión, la neblina, la rotación, la imagen especular y el tamaño de la imagen.

Resumir

También hay un resumen sobre Zhihu que también es bastante clásico.

La pérdida del tren sigue disminuyendo y la pérdida de prueba sigue disminuyendo, lo que indica que la red todavía está aprendiendo;

La pérdida del tren continúa disminuyendo y la pérdida de prueba tiende a permanecer sin cambios, lo que indica que la red se está sobreajustando;

La pérdida del tren tiende a permanecer sin cambios y la pérdida de la prueba sigue disminuyendo, lo que indica que el conjunto de datos es 100 % problemático;

La pérdida de tren tiende a permanecer sin cambios, y la pérdida de prueba tiende a permanecer sin cambios, lo que indica que el aprendizaje encuentra un cuello de botella y la tasa de aprendizaje o el número de lote debe reducirse;

La pérdida del tren sigue aumentando y la pérdida de prueba sigue aumentando, lo que indica que la estructura de la red no está diseñada correctamente, los hiperparámetros de entrenamiento no están configurados correctamente y el conjunto de datos se ha limpiado.

https://zhuanlan.zhihu.com/p/136786657 Hay varios tipos de problemas de pérdida escritos en detalle

Grábalo para evitar perderte

https://www.cnblogs.com/XDU-Lakers/p/10557496.html Es útil registrar sobre la función de activación

Supongo que te gusta

Origin blog.csdn.net/ZauberC/article/details/127754817
Recomendado
Clasificación