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 X
y 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.
2.3 Entrada
输入X
En 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
-
El curso de mandarín "Aprendizaje automático" de Li Hongyi (2022) ya está aquí
-
Alguien hizo una versión china del aprendizaje automático y el aprendizaje profundo del Sr. Wu Enda
-
Soy adicto, y recientemente le di a la compañía una gran pantalla visual (con código fuente)
-
Tan elegantes, los artefactos de análisis de datos automáticos de 4 Python son realmente fragantes
Intercambio de Tecnología
¡Bienvenido a reimprimir, coleccionar, dar me gusta y apoyar!
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