En el entrenamiento de mini lotes de una red neuronal, escuché que una práctica importante es mezclar los datos de entrenamiento antes de cada época. ¿Alguien puede explicar por qué ayuda el arrastrar los pies en cada época?
En la búsqueda de google, encontré las siguientes respuestas:
- ayuda a que el entrenamiento converja rápido
- evita cualquier sesgo durante el entrenamiento
- evita que el modelo aprenda el orden de la capacitación
Pero, tengo la dificultad de entender por qué alguno de esos efectos es causado por la combinación aleatoria. ¿Alguien puede proporcionar una explicación intuitiva?
fuente
Desde un punto de vista muy simplista, los datos se introducen secuencialmente, lo que sugiere que, como mínimo, es posible que el orden de los datos tenga un efecto en la salida. Si el orden no importa, la aleatorización ciertamente no hará daño. Si el orden es importante, la aleatorización ayudará a suavizar esos efectos aleatorios para que no se conviertan en sesgos sistemáticos. En resumen, la aleatorización es barata y nunca está de más, ya menudo minimizará los efectos de ordenar datos.
fuente
Nota: a lo largo de esta respuesta me refiero a la minimización de la pérdida de entrenamiento y no discuto los criterios de detención como la pérdida de validación. La elección de los criterios de detención no afecta el proceso / conceptos que se describen a continuación.
El proceso de entrenamiento de una red neuronal es encontrar el valor mínimo de una función de pérdida , donde representa una matriz (o varias matrices) de pesos entre las neuronas y representa el conjunto de datos de entrenamiento. Utilizo un subíndice para para indicar que nuestra minimización de ocurre solo sobre los pesos (es decir, estamos buscando tal manera que se minimice) mientras está fijo.WXX ℒ WW ℒ XLX(W) W X X L W W L X
Ahora, si suponemos que tenemos elementos en (es decir, hay pesos en la red), es una superficie en un espacio dimensional . Para dar un análogo visual, imagine que tenemos solo dos pesos de neuronas ( ). Entonces tiene una interpretación geométrica fácil: es una superficie en un espacio tridimensional. Esto surge del hecho de que para cualquier matriz dada de pesos , la función de pérdida se puede evaluar en y ese valor se convierte en la elevación de la superficie.W P ℒ P + 1 P = 2 ℒ W XP W P L P+1 P=2 L W X
Pero existe el problema de la no convexidad; la superficie que describí tendrá numerosos mínimos locales y, por lo tanto, los algoritmos de descenso de gradiente son susceptibles de quedar "atascados" en esos mínimos, mientras que una solución más profunda / más baja / mejor puede estar cerca. Es probable que esto ocurra si no cambia en todas las iteraciones de entrenamiento, porque la superficie está fija para una dada ; Todas sus características son estáticas, incluidos sus diversos mínimos.XX X
Una solución a esto es el entrenamiento de mini lotes combinado con barajar. Al barajar las filas y entrenar solo en un subconjunto de ellas durante una iteración dada, cambia con cada iteración, y en realidad es bastante posible que no se realicen dos iteraciones sobre la secuencia completa de iteraciones y épocas de entrenamiento exactamente en la misma . El efecto es que el solucionador puede "rebotar" fácilmente desde un mínimo local. Imagine que el solucionador está atascado en un mínimo local en la iteración con el mini-lote de entrenamiento . Este mínimo local corresponde a evaluado a un valor particular de pesos; lo llamaremosX i X i ℒ ℒ X i ( W i ) X i + 1 ℒ X i + 1 ( W i ) ℒ X i ( W i ) ℒ X i + 1 ℒ X i ℒ X W WX X i Xi L LXi(Wi) . En la próxima iteración, la forma de nuestra superficie de pérdida cambia realmente porque estamos usando , es decir, puede tomar un valor muy diferente de y es muy posible que no corresponda a un mínimo local. Ahora podemos calcular una actualización de gradiente y continuar con la capacitación. Para ser claros: la forma de será, en general, diferente de la de . Tenga en cuenta que aquí me refiero a la función de pérdida evaluada en un conjunto de entrenamiento ; Es una superficie completa definida sobre todos los valores posibles deXi+1 LXi+1(Wi) LXi(Wi) LXi+1 LXi L X W , En lugar de la evaluación de que la pérdida (que es sólo un escalar) para un valor específico de . Tenga en cuenta también que si se usan mini lotes sin barajar, todavía hay un grado de "diversificación" de las superficies de pérdida, pero habrá un número finito (y relativamente pequeño) de superficies de error únicas vistas por el solucionador (específicamente, verá el mismo conjunto exacto de mini lotes (y, por lo tanto, superficies de pérdida) durante cada época).W
Una cosa que evité deliberadamente fue una discusión sobre los tamaños de mini lotes, porque hay un millón de opiniones sobre esto y tiene implicaciones prácticas significativas (se puede lograr una mayor paralelización con lotes más grandes). Sin embargo, creo que vale la pena mencionar lo siguiente. Debido a que se evalúa calculando un valor para cada fila de (y sumando o tomando el promedio; es decir, un operador conmutativo) para un conjunto dado de matrices de peso , la disposición de las filas de no tiene efecto cuando se usa full- Descenso de gradiente por lotes (es decir, cuando cada lote es la completa , y las iteraciones y las épocas son lo mismo). X W X XL X W X X
fuente
Imagine que sus últimas etiquetas de minibatch tienen más ruido. Luego, estos lotes tirarán de los pesos finales aprendidos en la dirección incorrecta. Si baraja cada vez, las posibilidades de que los últimos lotes sean desproporcionadamente ruidosos se reducen.
fuente
Cuando entrena su red utilizando un conjunto de datos fijo, es decir, datos que nunca baraja durante el entrenamiento. Es muy probable que obtenga pesos muy altos y muy bajos, como 40,70, -101,200 ... etc. Esto simplemente significa que su red no ha aprendido los datos de entrenamiento pero ha aprendido el ruido de sus datos de entrenamiento. Estuche clásico de un modelo sobreajustado. Con dicha red obtendrá predicciones de los datos que ha utilizado para el entrenamiento. Si usa otras entradas para probarlo, su modelo se vendrá abajo. Ahora, cuando baraja los datos de entrenamiento después de cada época (iteración del conjunto general), simplemente alimenta diferentes entradas a las neuronas en cada época y eso simplemente regula los pesos, lo que significa que es más probable que obtenga pesos "más bajos" que están más cerca de cero , y eso significa que su red puede hacer mejores generalizaciones.
Espero que haya quedado claro.
fuente
Aquí hay una explicación más intuitiva:
Cuando se utiliza el descenso de gradiente, queremos que la pérdida se reduzca en una dirección de gradiente. El gradiente se calcula mediante los datos de un único mini lote para cada ronda de actualización de peso. Lo que queremos que suceda es que este gradiente basado en mini lotes es aproximadamente el gradiente de población, porque se espera que esto produzca una convergencia más rápida. (Imagínese si alimenta la red 100 datos de clase 1 en un mini lote y 100 datos de clase 2 en otro, la red se desplazará. Una mejor manera es alimentarlo con 50 clase 1 + 50 clase 2 en cada mini lote).
¿Cómo lograr esto ya que no podemos usar los datos de población en un mini lote? El arte de las estadísticas nos dice: barajar la población, y los primeros datos de tamaño de lote pueden representar la población. Es por eso que necesitamos barajar a la población.
Tengo que decir que la mezcla no es necesaria si tiene otro método para muestrear datos de la población y asegurarse de que las muestras puedan producir un gradiente razonable.
Esa es mi comprensión. Espero eso ayude.
fuente