¿Cómo se pueden usar los codificadores automáticos para la agrupación?

9

Supongamos que tengo un conjunto de señales en el dominio del tiempo sin absolutamente ninguna etiqueta . Quiero agruparlos en 2 o 3 clases. Los codificadores automáticos son redes sin supervisión que aprenden a comprimir las entradas. Entonces dado una entradax(i)pesas W1 y W2sesgos b1 y b2y salida x^(i), podemos encontrar las siguientes relaciones:

z(i)=W1x(i)+b1
x^(i)=W2z(i)+b2

Entonces z(i) sería una forma comprimida de x(i)y x^(i)La reconstrucción de este último. Hasta aquí todo bien.

Lo que no entiendo es cómo se podría usar esto para la agrupación (si hay alguna forma de hacerlo). Por ejemplo, en la primera figura de este documento , hay un diagrama de bloques que no estoy seguro de entender. Utiliza elz(i)como las entradas a la red de alimentación, pero no se menciona cómo se entrena esa red. No sé si hay algo que estoy ignorando o si el papel está incompleto. Además, este tutorial al final muestra los pesos aprendidos por el codificador automático, y parecen ser núcleos que una CNN aprendería a clasificar imágenes. Entonces ... Supongo que los pesos del codificador automático se pueden usar de alguna manera en una red de avance para la clasificación, pero no estoy seguro de cómo.

Mis dudas son:

  1. Si x(i) es una señal de longitud en el dominio del tiempo N (es decir x(i)R1×N), lata z(i)¿solo ser un vector también? En otras palabras, ¿tendría sentido paraz(i)ser una matriz con una de sus dimensiones mayor que1? Creo que no lo haría, pero solo quiero comprobarlo.
  2. ¿Cuál de estas cantidades sería la entrada a un clasificador? Por ejemplo, si quiero usar un MLP clásico que tiene tantas unidades de salida como clases en las que quiero clasificar las señales, ¿qué debo poner en la entrada de esta red totalmente conectada (z(i),x^(i), alguna otra cosa)?
  3. ¿Cómo puedo usar los pesos y sesgos aprendidos en este MLP? Recuerde que asumimos que no hay etiquetas disponibles, por lo que es imposible capacitar a la red. Creo que el aprendidoWi y bi debería ser útil de alguna manera en la red totalmente conectada, pero no veo cómo usarlos.

Observación: tenga en cuenta que usé un MLP como ejemplo porque es la arquitectura más básica, pero la pregunta se aplica a cualquier otra red neuronal que pueda usarse para clasificar las señales en el dominio del tiempo.

Tendero
fuente

Respuestas:

11

La agrupación es difícil de realizar en grandes dimensiones porque la distancia entre la mayoría de los pares de puntos es similar. El uso de un codificador automático le permite volver a representar puntos de alta dimensión en un espacio de menor dimensión. No hace la agrupación en sí, pero es un paso de preprocesamiento útil para un paso de agrupación secundario. Mapearía cada vector de entradaxi a un vector zi (no una matriz ...) con una dimensionalidad más pequeña, digamos 2 o 3. Luego, usaría algún otro algoritmo de agrupación en todos los zi valores.

Tal vez alguien más pueda intervenir en el uso de codificadores automáticos para series de tiempo, porque nunca lo he hecho. Sospecharía que querrías que una de las capas sea una capa convolucional 1D, pero no estoy seguro.

Algunas personas también usan codificadores automáticos como un paso de preprocesamiento de datos para la clasificación. En este caso, primero usaría un autoencoder para calcular elx-a-z mapeo, y luego tirar el z-a-x^ separar y usar el x-a-z mapeo como la primera capa en el MLP.

tom
fuente
Y en el último caso, ¿cómo se aprenderían los pesos de las otras capas en el MLP si los datos están totalmente sin etiquetar? ¿O ese enfoque (es decir, combinación autoencoder-MLP) solo tendría sentido si las etiquetas están disponibles?
Tendero
Sí, un MLP (también conocido como red neuronal de alimentación directa) solo se usa realmente si los datos están etiquetados. De lo contrario, no tiene información para usar para actualizar los pesos. Un autoencoder es una especie de 'truco' para usar redes neuronales porque está intentando predecir la entrada original y no necesita etiquetas.
tom
Entonces, la única forma de usar un NN para hacer clustering sería el método que mencionaste, ¿verdad? A saber, use un autoencoder y luego ejecute un algoritmo de agrupación estándar como K-means.
Tendero
Esa es la única forma en que lo sé. Si alguien más tiene una idea, me encantaría escucharla. Sin embargo, puede probar otros algoritmos además de K-means, ya que hay algunas suposiciones bastante estrictas asociadas con ese algoritmo en particular (pero aún así es bueno probar primero b / c, es rápido y fácil).
tom
1

Antes de preguntar '¿cómo se puede usar el codificador automático para agrupar datos?' primero debemos preguntarnos '¿Pueden los autoencoders agrupar datos?'


Dado que un autoencoder aprende a recrear los puntos de datos del espacio latente. Si suponemos que el codificador automático mapea el espacio latente de una "manera continua", los puntos de datos que son del mismo grupo deben mapearse juntos. Por lo tanto, de alguna manera, el codificador agrupará puntos similares "juntos", los agrupará "juntos". Hemos visto en la literatura que los codificadores automáticos no pueden mantener esta suposición de continuidad en el espacio latente.

Pero para nuestro beneficio, los autoencoders variacionales funcionan exactamente de esta manera. Los codificadores variacionales aprenden las asignaciones de espacio latente con las dos propiedades principales: continuidad, integridad1.
  • La propiedad de continuidad asegura que dos puntos cercanos entre sí en el espacio latente no den dos salidas completamente diferentes cuando se decodifican.
  • La propiedad de integridad asegura que al muestrear un punto del espacio latente dará una salida significativa cuando se decodifique.

Por lo tanto, usar una lata de codificación de autoencoders puede ser suficiente. Sin embargo, se ha trabajado para improvisar / aprender el agrupamiento explícitamente. El algoritmo propuesto por Xie et al. (2016) 2 es un ejemplo que "refina iterativamente los clústeres con una distribución de destino auxiliar derivada de una asignación actual de clúster blando".

Parth Shah
fuente