¿Cuál es la diferencia entre una incrustación y la capa oculta de un autoencoder?


Respuesta 1:

Una incrustación es realmente un término matemático. Creo que proviene de la topología.

La idea básica es que tienes algún tipo de objeto complejo (espacio), pero de alguna manera lo pones dentro (también conocido como incrustarlo) en un espacio euclidiano. Lo que esto significa en la práctica es que cada punto en ese espacio original tiene coordenadas dentro de este espacio euclidiano. Puedes imaginarlo literalmente tomando una cosa en forma de estrella y arrojándola al plano cartesiano. Ahora cada vértice de la estrella tiene coordenadas. Obviamente, estas coordenadas no son intrínsecas, porque podría haber soltado ese objeto en un lugar diferente y haberlo rotado de manera diferente. Pero hay algo intrínseco en esto. Por ejemplo, las distancias entre vértices ahora se pueden calcular utilizando estas coordenadas, y no cambiarían sin importar cómo incrustara el objeto. Entonces aprendes algo sobre el objeto haciendo esto.

Probablemente conozcas la famosa historia de Arquímedes descubriendo que una corona que le pidieron examinar no estaba hecha de oro macizo. Lo "embebió" en líquido y leyó su volumen. El volumen no cambiaría si lo incrustara de una manera diferente. Usamos nuestras incrustaciones de la misma manera.

Eso es todo teórico, pero ¿cómo se incrusta realmente un objeto computacional? Supongamos que tenemos una imagen y queremos incrustarla. Eso es fácil, porque una imagen es solo un conjunto de números (en forma de 3d, si es de color, 2d si es de escala de grises), y podemos convertir eso en un solo vector, y listo. La imagen ahora es un vector euclidiano. Esto es una incrustación, pero no útil, porque si calcula cosas de tipo euclidiano (distancias y ángulos) entre imágenes, no significan nada útil. Si estamos haciendo aprendizaje automático, realmente nos gustaría incrustar algo donde los objetos cercanos son similares de alguna manera, y los objetos que están lejos son diferentes. Si tiene una inserción de este tipo, a menudo es sencillo convertirlo en un sistema de clasificación, regresión o clasificación para cualquier tarea que respete este tipo de similitud. Lo realmente complicado es definir qué significa similitud en un caso dado.

(Tenga en cuenta que también puede incrustar objetos discretos, como palabras, comenzando con la denominada codificación de un punto)

Una forma de obtener tal incrustación es a través de un codificador automático.

Una capa oculta de un codificador automático es obviamente un vector, por lo que es una incrustación. Además, contiene información sobre la reproducción del objeto original, pero se almacena de forma compacta. Normalmente, el codificador automático se optimiza para el error de reconstrucción, por lo que uno podría esperar que esta capa oculta obedezca a esta propiedad donde un pequeño cambio en la capa conduce a un pequeño cambio en la salida, y viceversa. ¿Es esta una mejor inserción que la entrada original? Eso es subjetivo, pero al menos es una incrustación de menor dimensión que el original, porque normalmente usaría una capa oculta de menor dimensión en tal caso.

¿Es esto realmente una buena integración en la práctica? Yo diría que no realmente. Puede ser lo mejor que puede hacer en algunos casos. La razón por la que no es tan bueno es simplemente porque dice que dos objetos son similares si su representación original es cercana en el sentido de distancia euclidiana. En otras palabras, supone que su implementación original es una incrustación, y solo encuentra otra incrustación de menor dimensión que se aproxima, y ​​esperamos que esto nos brinde algo útil. Tal vez sí, pero no hay garantía. Depende en gran medida de si su representación original ya era susceptible de mediciones de distancia euclidiana.

Por lo general, las incrustaciones más exitosas se entrenan en tareas discriminatorias. Allí podría decir que dos objetos son similares si pertenecen a la misma clase en la tarea de clasificación, o dan resultados cercanos en caso de regresión.

Entonces, para resumir, la capa oculta del codificador automático es un tipo de incrustación, pero generalmente no es lo mejor que puede hacer.


Respuesta 2:

Dmitriy ya explicó la diferencia claramente en su respuesta. No hay mucho que agregar ...

  • El término "incrustación" utilizado en este contexto generalmente se refiere a un vector que tiene una representación de dimensión reducida de algunos datos originales, donde un modelo supervisado / no supervisado realiza la reducción de dimensionalidad. La reducción de dimensionalidad a menudo produce un vector que captura algunas propiedades semánticas a través de los datos de entrada. Por ejemplo, en una salida del modelo word2vec de incrustaciones / vectores, el vector para las palabras "gatos" probablemente estaría más cerca (por ejemplo, la distancia del coseno) al vector para "perros" que a la palabra "planos" (esto es suponiendo que el corpus de entrenamiento de entrada menciona gatos y perros juntos ya sea directa / indirectamente con más frecuencia que “gatos” y “planos”) Una lista no exhaustiva de modelos que pueden generar incrustaciones / vectores con dimensiones reducidas, modelos de codificadores automáticos como word2vec, texto rápido, etc. . un modelo de secuencia como LSTM (el estado oculto es una representación de todas las entradas vistas hasta ese punto, por lo que podría servir como incrustación de oraciones. Por ejemplo, en el caso de la traducción automática, puede servir como una codificación de la entrada oración de idioma que luego se alimenta a un decodificador en otro idioma).