¿Por qué los pesos de los modelos se vuelven menos explicables con más entrenamiento?
Por ejemplo, estaba usando una regresión logística en el conjunto de datos Fashion-MNIST. Esto está usando sklearn, que usa un enfoque de entrenamiento iterativo, y estaba experimentando con el número de iteraciones. (Esto es sin regularización y usando el enfoque "multinomial" para multiclase, aunque uno contra el resto produce lo mismo). Así es como se ven los coeficientes para cada clase, para diferentes números de iteraciones de entrenamiento:
El rango de coeficientes aumenta con el número de iteraciones:
Y aquí están las precisiones de entrenamiento y validación en cada número de iteraciones:
Lo que me sorprende es que los coeficientes se vuelven menos explicables e intuitivos con más iteraciones de entrenamiento. Por ejemplo, para camisetas, después de una iteración de entrenamiento, los coeficientes toman la forma de una camiseta. Tiene sentido intuitivo que el producto escalar de esto con la imagen de una camisa resulte en un valor alto. Sin embargo, con más iteraciones de entrenamiento, esta forma se desvanece hasta que los coeficientes se ven como un ruido ininterpretable. Uno podría sospechar que el modelo simplemente está sobreajustado, pero la precisión de la validación no comienza a disminuir hasta después de la iteración 200, momento en el cual la forma de la camiseta es indistinguible, e incluso entonces el sobreajuste es leve después de ese punto.
¿Cuál es la explicación de este fenómeno? ¿Se ha discutido el efecto en la literatura (tiene un nombre)?
Los coeficientes después de una gran cantidad de iteraciones me recuerdan los coeficientes que suelen aprender las redes neuronales; ¿Hay una conexión allí?
Respuestas
Hay dos fenómenos sucediendo aquí:
- Este modelo aprende primero las características típicas antes de aprender características más particulares.
- El sobreajuste se manifiesta como ruido. (Comenzando alrededor de 100 iteraciones)
Las imágenes de peso se vuelven "menos explicables" al principio porque comienzan a incluir características menos típicas. El peso de cada píxel se inicializa de manera que todas las clases sean igualmente probables. Como resultado, en la primera iteración, se superponen todas las imágenes de entrenamiento de la clase correcta y se restan todas las imágenes de las clases de entrenamiento incorrectas. El resultado en este caso parece un ejemplo típico de la clase. Mira los pantalones por ejemplo. ¡Parece un promedio de todos los pantalones porque eso es realmente lo que es! [1] (Ignorando la contribución de los ejemplos que no son pantalones) El problema es que no identifica muchos ejemplos de entrenamiento, por ejemplo, pantalones cortos.
A medida que se entrena el modelo, los ejemplos típicos pronto se predicen con precisión, por lo que tienen menos influencia en el gradiente de la función de costo. En cambio, el gradiente de la función de costos está dictado por ejemplos que son más difíciles de predecir. Por lo tanto, los cambios en las imágenes de peso se deben a características menos comunes. A menos que estudie el conjunto de entrenamiento cuidadosamente, sería difícil explicar los pesos de los píxeles porque están entrenando en características menos típicas.
A partir de 100 iteraciones, tiene un sobreajuste que es evidente por la disminución de la precisión de la validación y el aumento del ruido en las imágenes de peso. Sin regularización, cualquier píxel puede tener un efecto arbitrariamente grande en la activación de alguna clase. Sabemos que esto está mal, pero el modelo no lo sabe a menos que impongamos la regularización.
[1] Nota al pie
Para ver que la primera iteración da como resultado una superposición igual de todas las imágenes en los pesos, compruebe cómo$\theta_j$, el peso del píxel j depende del valor del píxel j$x_j$después de la primera iteración:
$$\theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}$$
$\alpha$es la tasa de aprendizaje para el descenso de gradiente y la derivada parcial$\partial J(\theta)/\partial \theta_j$dicta cuánto peso$\theta_j$cambios.
$J: \mathbb{R}^n \to \mathbb{R}$es el costo de los datos de entrenamiento dados los parámetros en el vector de columna$\theta$. En el caso de regresión logística sin regularización usamos el log-verosimilitud negativo. Esto da como resultado la derivada parcial:
$$\frac{\partial J(\theta)}{\partial \theta_j} = \sum_{i\in\text{training data}} \left[\text{sigmoid}(\theta^T x^{(i)} - y^{(i)}) \right] x^{(i)}_j$$
En la primera iteración,$\text{sigmoid}(\theta^T x^T{(i)}) = 0.5$, y dado que todo$y^{(i)}$debe ser igual a 1 o 0 para ejemplos positivos o negativos, respectivamente, la derivada parcial para cada píxel es$-0.5 x_j^{(i)}$o$0.5x_j^{(i)}$, de modo que cada imagen se suma o se resta de los pesos por igual en la primera iteración.
$$\theta_{\text{iteration 1}} = 0.5 \alpha \left( \sum_{i \in \text{positive examples}} x^{(i)} - \sum_{i \in \text{negative examples}} x^{(i)} \right)$$
Esto muestra que en la primera iteración, cada imagen de ejemplo tiene la misma influencia en la imagen de peso en la dirección positiva o negativa. Después de la primera iteración, la probabilidad de algunos ejemplos estará más cerca de la verdad y esos ejemplos ejercerán menos influencia en la derivada.