¿Cómo decide un ingeniero de aprendizaje automático qué arquitectura de red neuronal (feed-forward, recurrente o CNN) usar para resolver su problema?

CNN:

Las CNN aprovechan la información estructural para reducir el número de parámetros necesarios para obtener resultados comparables a una red neuronal estándar (que probablemente no sería computacionalmente inviable).

Si sus datos tienen estructura (sus características de entrada tienen una definición significativa de adyacencia), entonces un CNN puede ser muy útil. Esto incluye imágenes, series de tiempo, datos de mapas, etc.

NN recurrentes:

Los NN recurrentes son maravillosos si no sabes cuánta entrada tendrás y tienes un sentido de adyacencia unidimensional.

Los ejemplos estándar son series de tiempo (nuevamente) y lenguaje escrito.

También puede crear una red neuronal convolucional recurrente si le gusta escribir nombres realmente largos. Supongamos que quieres procesar un video. No desea limitar la cantidad de fotogramas que puede procesar. Puede crear una red que sea convolucional a lo largo de los ejes de la imagen y recurrente a lo largo de los marcos.

NN de alimentación directa estándar:

Y para todo lo demás, está MasterCard (léase: NN de retroalimentación). Una red neuronal estándar puede manejar casi cualquier cosa que le arrojes. De hecho, eso ha sido probado (teorema de aproximación universal). Si sus datos no tienen ninguna estructura especial para aprovechar, aún puede confiar en un NN de retroalimentación.

No soy un ingeniero de ML pero es una cosa muy simple. todo depende del tipo de entrada que tenga el tipo de salida que desea.

Recurrente: para cosas como el procesamiento del lenguaje natural, es mejor usar una red recursiva ya que el discurso o el archivo de audio cambiará con el tiempo y es importante que conozca la salida anterior para perdonar la siguiente.

CNN: para aplicaciones relacionadas con imágenes, lo mejor es usar una CNN, en realidad está modelada a partir de la corteza visual humana, lo que lo hace sorprendentemente bueno en tareas relacionadas con imágenes.

Feed-Forward: feed forward es, con mucho, el método más simple y más diverso. Funciona en situaciones en las que sus entradas son discretas (no dependen del valor anterior). son bastante versátiles e incluso se usan para trabajos relacionados con imágenes (Hurray para versatilidad). como tal, puede incluir muchas aplicaciones.

Requiere algo de experiencia (después de eso habrías desarrollado una intuición). En el proceso de obtener esta experiencia, fallarías muchas veces, pero después de eso comenzarías a ver una tendencia de lo que funciona con qué. Una tendencia general (debido al tipo de datos de entrada (su estructura)) es:

  1. si los datos son tales que la estructura espacial juega un papel clave, por ejemplo. imágenes y videos, utiliza CNN 2D / 3D
  2. Si la estructura espacial de los datos no tiene mucho significado, busque redes neuronales simples (perceptrones de múltiples capas)
  3. si los datos tienen una estructura temporal, opta por los recurrentes
  4. Si los datos tienen una estructura espacio-temporal, vaya a CNN seguido de RNN
  5. Use GAN, si desea generar datos artificiales
  6. Para comparar, use una red siamesa. Para una mejor inserción, use triplete.

Hay algunas respuestas realmente buenas que explican los fundamentos de estas arquitecturas. Sin embargo, al preguntar cómo decide un ‘ ingeniero ‘, mi respuesta sería usar ‘ experiencia ‘.

Trabajar con CNN y otras arquitecturas similares es más como un arte , y la práctica y el conocimiento de las últimas investigaciones que se están llevando a cabo en este campo es todo lo que necesita decidir 😉