¿Cuál es su proceso de pensamiento al elegir una arquitectura de red neuronal?

Voy a ir con más de una respuesta abstracta. Menos “hacer esto o esto” y más “Creo esto, pero puedo estar equivocado”.

Primero y ante todo; Qué esperar del entrenamiento. Desde mi experiencia, las redes neuronales tienden a no hacer lo que esperas. En mi cabeza, he pensado “esta es obviamente la mejor manera de resolver este problema, por lo tanto, debería aprender cómo hacerlo”. Pero la mejor manera de minimizar la pérdida en un pequeño ejemplo no es necesariamente la mejor en general, por lo que a veces se pierde en el camino. Algo que he visto en las redes neuronales propias y ajenas es una función funky de pérdida. Especialmente en una escala de tiempo más pequeña, no bajan suavemente como en todos los diagramas. A veces simplemente se agitan un poco (a veces arriba, a veces abajo, quién sabe a dónde va) antes de calmarse y realmente bajar y salir bien en las pruebas.

Entonces, con todo eso en mente, se hace muy difícil evaluar diferentes arquitecturas. Tal vez, para esta arquitectura, funcione, pero para esta otra arquitectura no, y tal vez sea solo por este problema . O tal vez en realidad no importa tanto, y la diferencia sería insignificante. Quién sabe. ¿No vas a pasar toda la eternidad tratando de evaluar la diferencia entre 5 capas medianas y 10 capas pequeñas (y todas las combinaciones intermedias)? Ni siquiera empiece a tratar de encontrar la tasa de aprendizaje y el factor de normalización correctos. Hay una mejor configuración, pero no vale la pena intentar encontrarla si tienes una buena configuración.

Esta es la razón por la cual la mayoría de la gente realmente no piensa demasiado en la arquitectura, a menos que su objetivo sea idear una mejor. Tiendes a copiar algo que sabes que funciona bien para la tarea en cuestión para otras personas.

Dicho esto, puede ser divertido intentar hacer el tuyo. En cuyo caso, tal vez considere estos:

  • Si nos fijamos en las CNN que han ganado la competencia ImageNet, tienen un patrón que puedes copiar.
    • Kernel 3 × 3 con zancada de 1 para capas de convolución
    • Use relleno para mantener el tamaño de la imagen igual para varias capas en una fila.
    • Cuando reduzca la muestra de la imagen, aumente el número de mapas.
  • Tus últimas capas son las más importantes; debe asegurarse de que coincidan con lo que desea de la red. El otro día tuve una situación en la que quería una salida de tamaño arbitrario, pero me quedé con un Tanh en el extremo, lo que significaba que la red inmediatamente se estrelló en la salida 1 o -1 y todavía me decían: “¡hazlo más grande! ”
    • Tanh para números entre 1 y -1
    • Sigmoide para números entre 0 y 1
    • Softmax para un solo máximo en un vector
  • La elección de la función de pérdida tiene un impacto mucho mayor que cambiar algunas capas.
  • Considera cuán difícil crees que es el problema. ¿Quieres una red más grande porque es difícil? Bueno, necesitará mucha más información y mucho más tiempo para entrenar (y más por iteración de entrenamiento). Si crees que es fácil, pero solo necesita encontrar lo correcto, entonces puedes optar por una red más pequeña y entrenarla para más iteraciones.

A continuación, tengo algunas cosas que podrían considerarse opiniones más personales de las que no tengo ninguna evidencia disponible (existe, pero no la tengo):

  • Use capas de convolución con una zancada de> 1 para el muestreo descendente (puede aprender lo que necesita). Esto es en lugar de agrupación máxima o agrupación promedio
  • ELU tiene más sentido como función de activación que ReLU.
  • Batch Normalization (BN) es amor. La normalización por lotes es la vida. Ponlo en todas partes. Es mejor que la deserción (de hecho, con ReLU, BN básicamente está cayendo la mitad de los valores).
  • Adadelta funciona => No necesitas una tasa de aprendizaje si solo quieres algo que funcione. Sin embargo, generalmente lo hace un poco peor, así que uso Adamax o Adagrad.
  • MSE es la función de pérdida más natural. Pero, debido a cómo funciona, use MSE para predecir valores reales (cualquier cosa de 0 a 1) y entropía cruzada para clasificación (0 o 1, solo).
  • Agregar más capas proporciona rendimientos decrecientes muy rápidamente.

Y, por último, solo ten esto en cuenta (sí, sé que me estoy repitiendo). El hecho de que un modelo funcione mejor en una prueba no significa que sea mejor para todo; es simplemente alguna evidencia que lo sugiere. Tal vez su tarea es diferente (pero probablemente no)

Si data_type = Imágenes, entonces Inception

Si data_type = Text entonces LSTM

Si data_type = Series temporales, entonces LSTM

De lo contrario, lagrimear_hair_y_ intentar_algo_random_that_magically_works

Sí, eso está simplificado, pero está realmente muy cerca de mi enfoque inicial para un problema de DL. (Y sí, sé que esto no es una pitón adecuada, pero la sangría es difícil en quora, ¿de acuerdo?)

More Interesting

¿Por qué la memoria en las redes neuronales no está contenida en los nodos individuales de cada red neuronal?

¿Qué campo será bueno para elegir, inteligencia artificial, análisis de big data o piratería?

¿Es la ética una consecuencia de la inteligencia? ¿Cuáles son las implicaciones de esta relación para el surgimiento de la inteligencia artificial?

¿Crees que la inteligencia artificial representa una amenaza para la humanidad? Si es así, ¿cómo crees que podría abordarse?

¿Cuáles son las diferencias entre la 'respuesta a preguntas' al estilo AI, el 'debate' automatizado al estilo AI y lo que hacen los humanos?

Para 2037, ¿la mayoría de los trabajos serán realizados por máquinas e IA?

¿Qué debe hacer un gerente / líder de control de calidad exitoso para ayudar a una startup? haciendo aprendizaje automático, aprendizaje profundo, big data, ubicando o residiendo en diferentes lugares?

¿Las computadoras reemplazarán a los intérpretes / traductores humanos en 10 años?

¿Son los sistemas de IA de alguna manera estúpidos? ¿Cómo define la estupidez artificial?

Como contador público, ¿debería preocuparme que la inteligencia artificial eventualmente reemplace los servicios que proporciono?

¿Podemos cambiar la forma en que pensamos entrenando nuestra red neuronal biológica?

¿Es realmente necesario comprender todas las matemáticas detrás de las redes neuronales para usarlas?

¿Cuál es la mejor manera de aprender robótica completa? ¿Cómo obtengo los conocimientos básicos de robótica para poder construir cualquier tipo de robot?

En el aprendizaje automático, ¿cómo podemos interpretar una situación en la que los errores de entrenamiento y prueba son altos? ¿Qué debemos informar a nuestros clientes?

¿Hay una lógica detrás de cómo se creó el juego 2048? Si es así, ¿qué es?