¿Cuál es una explicación intuitiva para los parámetros de la red neuronal?

Ancho de red: representa el tamaño de cada capa de la red y podrá proporcionarle más potencia de cálculo. Esto permite más permutaciones de posibles representaciones de los datos, porque puede codificar más información dentro de 20 nodos ocultos que, por ejemplo, 2.

Profundidad de la red: representa el número de capas dentro de la red y también amplía la potencia computacional de la red. El propósito de esto es permitir que la red cambie y manipule sus datos más veces, de modo que pueda construir características jerárquicas y usarlas para crear características mucho más fáciles de entender.

Tasa de aprendizaje: decide cuánto actualizaremos los pesos de la red neuronal por sus gradientes. Demasiado alto significa que podríamos aprender más rápido, a costa de la divergencia y nunca alcanzar un buen mínimo local / global. Demasiado bajo significa que aprendemos demasiado lento, y nos llevará días llegar a cualquier parte.

Maravillosa ilustración proporcionada por Andrej Karpathy

Optimizador: esto va de la mano con la tasa de aprendizaje, y decide cómo debe usar los gradientes de peso actuales, junto con los gradientes de peso anteriores para decidir la tasa de aprendizaje. Por lo general, lo más fácil es SGD regular, que es solo para reducir los pesos por el gradiente multiplicado por la tasa de aprendizaje. Algunos más complicados como RMSProp (http://www.cs.toronto.edu/~tijme… diapositiva 29), Momentum y Adam usan los gradientes para encontrar una tasa de aprendizaje adaptable para cada peso individual.

Tamaño de minibatch: cuántas muestras tomamos del conjunto de datos a la vez para realizar SGD. Si este número es pequeño, obtendremos una muestra realmente ruidosa de la distribución de entrada real, por lo que el gradiente no será tan preciso. De hecho, estoy bastante seguro de que la gente incluso ha utilizado esto como regularización para evitar que la red se sobreajuste (porque el gradiente es ruidoso). Si el número es realmente grande, se vuelve un poco lento. Para ilustrar esto, digamos que tenemos un conjunto de datos de tamaño 10000, y realizamos SGD con un tamaño de lote de 10000. Esto nos lleva, digamos, 10 minutos para realizarlo. En esos diez minutos, solo hemos realizado una actualización. Si nuestro tamaño de lote era 100, por otro lado, y cada uno nos tomó 0.2 minutos, habremos realizado 100 actualizaciones en 20 minutos. Claramente, aunque perdimos algo de tiempo para revisar todo el conjunto de datos, aún hemos realizado más actualizaciones, y con 100 muestras, obtienes una generalización bastante buena para la distribución de entrada real.

Decadencia de peso: se usa para regularizadores como l2. Básicamente, L2 toma la norma L2 de todos los pesos en la red y luego la multiplica por un pequeño número. Este pequeño número es la pérdida de peso. Cuanto más grande sea esta disminución de peso, más pequeños serán los pesos. Esto evita que los pesos súper grandes hagan que la red se sobreajuste.

Inicialización de peso: esto es muy importante en las redes neuronales, y una buena inicialización puede reducir mucho el tiempo del tren. No inicialice los pesos a una constante o 0, porque entonces todos los pesos aprenderán exactamente de la misma manera. Desea “romper la simetría”, para que la red pueda aprender un conjunto diverso de características. Intente inicializar pesos a números pequeños. Las personas han utilizado una distribución normal multiplicada por pequeños números para inicializar sus pesos, así como métodos más especializados para funciones de activación ocultas específicas. Si está utilizando ReLU, que debería, hay un fantástico método de inicialización de peso propuesto por He et al, https://arxiv.org/pdf/1502.01852… que hace que el entrenamiento sea mucho mejor.

Conjunto: por lo general, para una mayor precisión, querrá entrenar múltiples modelos al azar y luego, en el momento de la prueba, evaluar cada una de las redes en la misma entrada, luego promediar sus salidas. Esto generalmente otorga un aumento de precisión de ~ 1–3%. Cuanto más grande es el conjunto, más precisión obtienes, pero más lenta se vuelve una evaluación.

Abandono: método fantástico de regularización, pero no siempre es útil y, a veces, dados otros métodos de regularización (como Batch Norm), es posible que ni siquiera lo necesite. La deserción no funciona con redes neuronales recurrentes, y hay versiones especiales que sí lo hacen. La deserción es más efectiva en las capas densas de una red neuronal, y esencialmente establece algunas de las activaciones de la capa densa en cero con una cierta probabilidad. Durante el tiempo de prueba, usa todas las activaciones, pero ahora tiene que reducirlas en cierta cantidad para que sea similar a las activaciones que obtendría en el momento del tren. Esto desalienta el sobreajuste, ya que debe usar un pequeño subconjunto de las características para realizar la clasificación. Otra ilustración intuitiva de esto es imaginar que en realidad está entrenando una gran cantidad de pequeñas subredes (como un conjunto), y luego, en el momento de la prueba, promedia todos sus resultados. Cuanto mayor sea el valor de deserción, menor será el sobreajuste de la red, pero eso también podría afectar la precisión del tiempo de prueba. Una vez que su valor de deserción se convierte en cero, es solo una red neuronal normal.

La última cosa importante: encontrar los malditos hiperparámetros. Por lo general, las personas usarán la búsqueda aleatoria, que es solo inicializar redes con diferentes hiperparámetros al azar, y solo ver cuál funciona mejor. Obviamente, este espacio de búsqueda aleatorio estará dentro de valores razonables (por ejemplo, no pruebe que su valor de caída de peso sea como 100000. Manténgalo dentro de 0.002 – 0.0001, por ejemplo). La razón por la cual las personas usan la búsqueda aleatoria de hiperparámetros en lugar de la búsqueda de cuadrícula (incrementando cada hiperparámetro en ciertos valores establecidos), es que puede perderse combinaciones de hiperparámetros realmente buenas porque su búsqueda de cuadrícula no es lo suficientemente precisa. La foto al final de este párrafo ilustra esto muy bien. Dicho esto, las personas generalmente no cambian al azar los hiperparámetros como el ancho y la profundidad de la red, la inicialización del peso, el optimizador o el tamaño del conjunto. Estos (por lo general) deben ser ajustados por el profesional de aprendizaje profundo (usted), y no por búsqueda aleatoria.

Búsqueda de hiperparámetro aleatorio vs cuadrícula

También ha habido algunos documentos locos que intentan usar redes neuronales para proporcionar estos hiperparámetros, [1606.04474] Aprendiendo a aprender por gradiente descendente por gradiente descendente, así como (aún no he leído este), pudiendo diferenciar realmente con respeto a los hiperparámetros … muy extraño https://hips.seas.harvard.edu/fi….

Estos son todos los hiperparámetros que se me ocurren. Agregaré más si pienso en otra cosa.

Estos chicos hacen ajustes de parámetros y tienen varias presentaciones. SigOpt: amplifique su investigación