[Aprendizaje automático] ¿Cuál es un método eficaz para la convergencia de modelos?

Hola a todos, la normalización de datos juega un papel crucial en la convergencia de modelos ¿Cómo evolucionan paso a paso los métodos de normalización de datos desde el aprendizaje automático clásico hasta el aprendizaje profundo? ¿Por qué es el medio más eficaz de convergencia de modelos de aprendizaje profundo?

Primero, el método de normalización del aprendizaje automático clásico

Hay dos algoritmos principales de normalización de datos en el campo del aprendizaje automático clásico, a saber, la normalización 0-1 y la normalización Z-Score. Hay poca diferencia en el efecto de uso de los dos, y ambos procesan los datos de entrada columna por columna.

1.1 0-1 Normalización

La normalización 0-1 es el método más simple y fácil de pensar, y también es el método de normalización más utilizado en el campo del aprendizaje automático clásico:

Este método atraviesa cada dato en la función de entrada columna por columna, registra el máximo y el mínimo de cada columna y luego escala los datos entre 0 y 1 de acuerdo con la fórmula:

import torch
t = torch.arange(12).reshape(6, 2).float()
print(t)

# tensor([[ 0.,  1.],
#         [ 2.,  3.],
#         [ 4.,  5.],
#         [ 6.,  7.],
#         [ 8.,  9.],
#         [10., 11.]])

def min_max(t):
    # 提取每列最大值
    t_max = t.max(0)[0]
    # 提取每列最小值
    t_min = t.min(0)[0]
    # 计算0-1标准化后结果
    zo_ans = (t - t_min) / (t_max - t_min)
    return zo_ans
    
zo_ans = min_max(t)
print(zo_ans)
# tensor([[0.0000, 0.0000],
#         [0.2000, 0.2000],
#         [0.4000, 0.4000],
#         [0.6000, 0.6000],
#         [0.8000, 0.8000],
#         [1.0000, 1.0000]])

1.2 Estandarización de puntuación Z

A diferencia de la normalización 0-1, la normalización de puntuación Z utiliza la media y la desviación estándar de los datos originales para normalizar los datos. Lo mismo se hace columna por columna, y cada dato se resta de la media de la columna actual y se divide por la desviación estándar de la columna actual.

Después de procesar de esta manera, se convertirán en datos simétricos de punto cero, y si los datos originales obedecen a una distribución normal, obedecerán a una distribución normal estándar después de ser procesados ​​por Z-Score.

def z_score(t):
    std = t.std(0)
    mean = t.mean(0)
    ans = (t - mean) / std
    return ans 
    
zs_ans = z_score(t)
print(zs_ans)
# tensor([[-1.2649, -1.2649],
#         [-0.6325, -0.6325],
#         [ 0.0000,  0.0000],
#         [ 0.6325,  0.6325],
#         [ 1.2649,  1.2649]])

1.3 Limitaciones de Z-Score

Aunque la normalización de Z-Score puede garantizar un gradiente estable hasta cierto punto, mejorando así la velocidad de convergencia del modelo e incluso mejorando el efecto del modelo, pero debido a que es solo una modificación del "valor inicial", destruirá gradualmente el cero simetría de punto cero a medida que aumenta el número de iteraciones Una condición que hace desaparecer la condición de simetría de punto cero .

Este problema también puede verse como una limitación de los métodos clásicos de normalización del aprendizaje automático cuando se aplican a redes neuronales profundas.

2. La idea de la normalización del aprendizaje profundo

Repasemos la fórmula de cálculo del gradiente de la tercera capa en la red neuronal de tres capas (el principio de cada capa es el mismo, porque la fórmula de la tercera capa es simple, está representada por la tercera capa):

Se puede encontrar que el gradiente se ve afectado por la función de activación F(), los datos de entrada de cada capa Xy los parámetros w.

2.1 Parámetros

Presenté la condición de Glorot en un artículo anterior, que consiste en hacer que el degradado de cada capa sea lo más suave posible durante el proceso de cálculo al establecer hábilmente el valor inicial de los parámetros.

Sin embargo, debido a la particularidad del parámetro en sí, es el objetivo de nuestro aprendizaje final, por lo que solo podemos establecer su valor inicial. Una vez que el modelo comience a iterar, los parámetros comenzarán a ajustarse "sin control". la configuración es difícil durante mucho tiempo Asegúrese de que el gradiente sea estable, lo cual es consistente con el problema de Z-Score al inicializar los datos.

2.2 Función de activación

Cuando se habló de la desaparición y explosión de gradientes, se mencionó que las funciones de activación sigmoide y tanh son fáciles de causar gradientes y explosiones, por lo que los grandes inventaron relu. Cuando la entrada es mayor que 0, el gradiente es constante a 1. El propósito es hacer que el modelo complejo se degrade cuando se actualice y permanezca equilibrado.

imagen

2.3 Entrada

输入XEn este punto, solo queda una forma de garantizar la estabilidad del gradiente . En la actualidad, el método de normalización de datos más utilizado y probado con el mejor efecto práctico es la normalización por lotes [1]. Este método mejora la estabilidad del gradiente de cada capa del modelo al modificar la distribución de datos en cada lote, mejorando así la eficiencia de aprendizaje del modelo y los resultados del entrenamiento del modelo.

2.4 ¿Son solo múltiples usos de Z-Score?

Se diferencia del aprendizaje automático clásico en dos formas principales:

  • El propósito es diferente:

La normalización del aprendizaje automático clásico es principalmente para eliminar la influencia dimensional de diferentes características, por lo que la distribución de datos de cada columna se ajusta y no todos los modelos de aprendizaje automático requieren normalización de datos.

El objetivo de la normalización del aprendizaje profundo es garantizar que los gradientes sean estables, que el modelo se pueda entrenar de manera eficiente y que sea un método de optimización necesario aplicable a todos los modelos.

  • diferentes métodos de cálculo

artículo recomendado

Intercambio de Tecnología

¡Bienvenido a reimprimir, coleccionar, dar me gusta y apoyar!

inserte la descripción de la imagen aquí

En la actualidad, se ha abierto un grupo de intercambio técnico, con más de 2000 miembros . La mejor manera de comentar al agregar es: fuente + dirección de interés, que es conveniente para encontrar amigos de ideas afines.

  • Método 1. Envíe la siguiente imagen a WeChat, mantenga presionada para identificarla y responda en segundo plano: agregar grupo;
  • Método ②, agregar microseñal: dkl88191 , nota: de CSDN
  • Método ③, cuenta pública de búsqueda de WeChat: aprendizaje de Python y extracción de datos , respuesta en segundo plano: agregar grupo

pulsación larga seguir

Supongo que te gusta

Origin blog.csdn.net/weixin_38037405/article/details/124167209
Recomendado
Clasificación