Aprendizaje profundo: comprensión del recorte de gradiente

En el campo del aprendizaje profundo, el recorte de gradiente es una técnica común que se utiliza para evitar que el gradiente sea demasiado pequeño o demasiado grande. La siguiente es una breve introducción al principio y método de recorte de degradado.

Introducción al recorte de degradado

Durante el proceso de entrenamiento del modelo de aprendizaje profundo, los parámetros de la red se actualizan a través del algoritmo de descenso de gradiente. Generalmente, el algoritmo de descenso de gradiente se divide en dos etapas: propagación hacia adelante y actualización hacia atrás.
En la etapa de propagación directa, cada capa de neuronas calcula el vector de entrada para obtener el vector de salida, suponiendo que la red puede usar una función abstracta fff significa, la fórmula es:
Error de análisis KaTeX: No existe tal entorno: ecuación en la posición 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ y = f(x) \end{...
Después de calcular el valor estimado de la red, use un método similar error cuadrático medio El método para calcular la brecha entre el valor verdadero y el valor estimado, es decir, la función de pérdida pérdida:
error de análisis de KaTeX: no existe tal entorno: ecuación en la posición 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ loss = \frac{ 1…
Actualizar en etapa inversa, ajustar los parámetros de redθ \thetaθ incluye pesosWWW y desviaciónbbsegundo _ Para actualizar los parámetros de la red, primero calcule el gradiente de la función de pérdida para los parámetros∂ loss ∂ θ \frac{\parcial loss}{\parcial \theta}θl o s s, y luego use algún algoritmo de actualización de gradiente para realizar un paso de descenso de gradiente para reducir el valor de la función de pérdida. La siguiente fórmula:
KaTeX parse error: No such environment: ecuación en la posición 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \theta_{t+1} =...Nota:
De la fórmula anterior, se puede ver que a veces, reduciendo el la tasa de aprendizaje y el recorte de gradiente son equivalentes.
Durante el proceso de entrenamiento anterior, puede haber situaciones en las que el valor del gradiente se vuelve extremadamente pequeño o extremadamente grande o incluso se desborda. Esta es la llamada "desaparición del gradiente" y "explosión del gradiente". En este momento, el entrenamiento es difícil de converger. . La explosión del gradiente generalmente ocurre cuando la pérdida calculada por el peso inicial es particularmente grande. Un valor de gradiente grande conducirá a una cantidad excesiva de actualizaciones de parámetros y, finalmente, el descenso del gradiente divergirá y no podrá converger al óptimo global. Además, a medida que aumenta el número de capas de red, el problema de la "explosión de gradiente" puede volverse cada vez más evidente. Considere la fórmula de la regla de la cadena con una red de capas ocultas de tres capas.Si la derivada parcial de la salida de cada capa con respecto a la entrada es > 1, a medida que aumenta el número de capas de la red, el gradiente se hará cada vez más grande y puede ocurrir una "explosión de gradiente".
Error de análisis de KaTeX: No existe tal entorno: ecuación en la posición 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \frac{\partial...

Se puede considerar que ha ocurrido una explosión de gradiente cuando: los parámetros cambian drásticamente entre iteraciones , o los parámetros del modelo y los valores de la función de pérdida se vuelven NaN .

Si ocurre una "explosión de gradiente", la solución óptima se omitirá directamente durante el proceso de aprendizaje de la red, e incluso puede divergir (incapaz de converger), por lo que es necesario realizar un recorte de gradiente para evitar que la red cruce la solución óptima durante el proceso. proceso de aprendizaje. Método de recorte de gradiente: establece el recorte del valor del rango y el recorte según la norma L2.

Establecer recorte de valor de rango

El método de recorte para establecer el valor del rango es simple, y el gradiente del parámetro está limitado a un rango. Si excede este rango, se recortará (mayor que el umbral es el umbral superior max ⁡ \ maxmax ; menos que el umbral es el umbral inferiormin ⁡ \minmin ), pero el umbral suele ser difícil de determinar uno adecuado.
Error de análisis de KaTeX: No existe tal entorno: ecuación en la posición 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ y=\left\{ \beg…

Recorte por norma L2

Recortar por la norma L2 es limitar la norma L2 del vector de gradiente con un umbral, recortando así el gradiente.

Error de análisis de KaTeX: No existe tal entorno: ecuación en la posición 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ y=\left\{ \beg…

adjunto

Se produce un error durante el entrenamiento del modelo:

ValueError: la matriz contiene entradas numéricas no válidas

Al imprimir la variable correspondiente a la posición del error, puede encontrar que aparece el valor nan:

tensor([[nan, nan, nan,  ..., nan, nan, nan],
        [nan, nan, nan,  ..., nan, nan, nan],
        [nan, nan, nan,  ..., nan, nan, nan],
        ...,
        [nan, nan, nan,  ..., nan, nan, nan],
        [nan, nan, nan,  ..., nan, nan, nan],
        [nan, nan, nan,  ..., nan, nan, nan]], device='cuda:0',

Razones para este problema:
(1) Explosión de gradiente
(2) Entrada incorrecta
(3) Diseño de modelo inadecuado
Soluciones:
(1) Reducir la tasa de aprendizaje;
(2) Agregar norma normalizada;
(3) Agregar recorte de gradiente recorte de gradiente;
(4) Hay datos sucios en los datos y deben limpiarse;
(5) Verifique si hay errores en el diseño de la red.

Supongo que te gusta

Origin blog.csdn.net/weixin_43603658/article/details/131959569
Recomendado
Clasificación