machine-learning computer-vision neural-network dbn autoencoder

machine learning - Deep Belief Networks vs Convolutional Neural Networks



machine-learning computer-vision (2)

En términos generales, los DBN son redes neuronales generativas que acumulan Máquinas Boltzmann Restringidas (RBM). Puede pensar en las GBR como autoencoders generativos; si quiere una red de creencias profunda, debe apilar RBM y no autoencoders simples ya que Hinton y su alumno Yeh demostraron que el apilamiento de RBM da como resultado redes de creencias sigmoideas.

Las redes neuronales convolucionales se han comportado mejor que los DBN por sí mismas en la literatura actual sobre conjuntos de datos de visión por computadora de referencia, como MNIST. Si el conjunto de datos no es uno de visión por computadora, entonces los DBN definitivamente pueden funcionar mejor. En teoría, los DBN deberían ser los mejores modelos, pero es muy difícil estimar las probabilidades conjuntas con precisión en este momento. Usted puede estar interesado en Lee et. el trabajo de al (2009) en Convolutional Deep Belief Networks que busca combinar los dos.

Soy nuevo en el campo de las redes neuronales y me gustaría saber la diferencia entre Deep Belief Networks y Convolutional Networks. Además, ¿existe una Red Convolucional Profunda que es la combinación de Deep Belief y Convolutional Neural Nets?

Esto es lo que he reunido hasta ahora. Por favor, corríjame si estoy equivocado.

Para un problema de clasificación de imágenes, las redes de Deep Belief tienen muchas capas, cada una de las cuales está entrenada usando una estrategia codiciosa basada en capas. Por ejemplo, si el tamaño de mi imagen es 50 x 50, y quiero una red profunda con 4 capas a saber

  1. Capa de entrada
  2. Capa oculta 1 (HL1)
  3. Capa oculta 2 (HL2)
  4. Capa de salida

Mi capa de entrada tendrá 50 x 50 = 2500 neuronas, HL1 = 1000 neuronas (por ejemplo), HL2 = 100 neuronas (por ejemplo) y capa de salida = 10 neuronas, para entrenar los pesos (W1) entre la capa de entrada y HL1, I use un AutoEncoder (2500 - 1000 - 2500) y aprenda W1 de tamaño 2500 x 1000 (Este es un aprendizaje no supervisado). Luego, reenvío todas las imágenes a través de las primeras capas ocultas para obtener un conjunto de características y luego uso otro autoencoder (1000 - 100 - 1000) para obtener el siguiente conjunto de características y finalmente uso una capa de softmax (100 - 10) para la clasificación. (solo aprendiendo los pesos de la última capa (HL2 - Salida que es la capa de softmax) es aprendizaje supervisado).

(Podría usar RBM en lugar de autoencoder).

Si el mismo problema se resolvió utilizando redes neuronales convolucionales , entonces para imágenes de entrada 50x50, desarrollaría una red usando solo 7 x 7 parches (por ejemplo). Mis capas serían

  1. Capa de entrada (7 x 7 = 49 neuronas)
  2. HL1 (25 neuronas para 25 características diferentes) - (capa de convolución)
  3. Pooling Layer
  4. Capa de salida (Softmax)

Y para aprender los pesos, tomo 7 x 7 parches de imágenes de tamaño 50 x 50, y avancen a través de la capa convolucional, por lo que tendré 25 mapas de características diferentes, cada uno de tamaño (50 - 7 + 1) x (50 - 7 + 1) = 44 x 44.

A continuación, utilizo una ventana de, por ejemplo, 11x11 para agrupar la mano, obtengo 25 mapas de características de tamaño (4 x 4) como salida de la capa de agrupación. Yo uso estos mapas de características para la clasificación.

Al aprender los pesos, no utilizo la estrategia de capa inteligente como en Deep Belief Networks (aprendizaje no supervisado), sino que uso el aprendizaje supervisado y aprendo los pesos de todas las capas simultáneamente. ¿Es correcto o hay alguna otra forma de aprender los pesos?

Es lo que he entendido correcto?

Entonces, si quiero usar DBN para la clasificación de imágenes, debería redimensionar todas mis imágenes a un tamaño particular (digamos 200x200) y tener esas muchas neuronas en la capa de entrada, mientras que en el caso de las CNN, entreno solo en un parche más pequeño del entrada (digamos 10 x 10 para una imagen de tamaño 200x200) y convierta los pesos aprendidos en toda la imagen?

¿Los DBN proporcionan mejores resultados que los CNN o son puramente dependientes del conjunto de datos?

Gracias.


Trataré de explicar la situación a través del aprendizaje de zapatos.

Si usa DBN para aprender esas imágenes, aquí está lo malo que sucederá en su algoritmo de aprendizaje

  • habrá zapatos en diferentes lugares.

  • todas las neuronas intentarán aprender no solo los zapatos, sino también el lugar de los zapatos en las imágenes, ya que no tendrá el concepto de "parche de imagen local" dentro de las pesas.

  • DBN tiene sentido si todas las imágenes están alineadas por tamaño, traslación y rotación.

la idea de las redes convolucionales es que existe un concepto llamado reparto de peso. Si trato de extender este concepto de ''peso compartido''

  • primero miraste parches de 7x7, y de acuerdo con tu ejemplo, como ejemplo de 3 de tus neuronas en la primera capa, puedes decir que aprendieron las partes delantera, ''trasera'' y ''trasera superior'' de los zapatos como estos se vería igual para un parche de 7x7 en todos los zapatos.

    • Normalmente, la idea es tener múltiples capas de convolución una tras otra para aprender

      • líneas / bordes en la primera capa,
      • arcos, esquinas en la segunda capa,
      • Conceptos más elevados en capas superiores como frente de zapatos, ojo en una cara, rueda en un automóvil o triángulos de conos rectángulos como primitivos, pero combinaciones de salidas de capas anteriores.
    • Puedes pensar en estas 3 cosas diferentes que te dije como 3 neuronas diferentes. Y esas áreas / neuronas en sus imágenes se dispararán cuando haya zapatos en alguna parte de la imagen.

    • La agrupación protegerá sus activaciones superiores mientras submuestrea sus imágenes y crea un espacio de dimensiones inferiores para que las cosas sean más fáciles y factibles desde el punto de vista informático.

    • Entonces en la última capa cuando miras tu 25X4x4, en otras palabras, 400 vectores dimensionales, si hay un zapato en alguna parte de la imagen, tu ''neurona del zapato'' estará activa, mientras que las neuronas que no sean del zapato estarán cerca de cero.

    • Y para comprender qué neuronas son para zapatos y cuáles no, colocarás ese vector de 400 dimensiones en otro clasificador supervisado (puede ser algo así como SVM de clase múltiple o, como dijiste, una capa soft-max)

Puedo aconsejarle que eche un vistazo al artículo de Fukushima 1980 para comprender lo que trato de decir sobre la invarianza de traducción y la línea -> arco -> semicírculo -> frente de zapato -> idea de zapato ( http://www.cs.princeton.edu/courses/archive/spr08/cos598B/Readings/Fukushima1980.pdf ). Incluso el simple hecho de mirar las imágenes en el periódico le dará una idea.