Cómo se entrena la capa de incrustación en la capa de incrustación de Keras


8

¿Cómo se entrena la capa de incrustación en la capa de incrustación de Keras? (por ejemplo, usando el backend de tensorflow, lo que significa que es similar a word2vec, glove o fasttext)

Supongamos que no utilizamos una incrustación preentrenada.

Respuestas:


6

Ambas respuestas son incorrectas.

Una capa de incrustación es una capa entrenable que contiene 1 matriz de incrustación, que es bidimensional, en un eje el número de valores únicos que puede tomar la entrada categórica (por ejemplo, 26 en el caso del alfabeto en minúsculas) y en el otro eje la dimensionalidad de tu espacio de incrustación. El papel de la capa de incrustación es mapear una categoría en un espacio denso de una manera que sea útil para la tarea en cuestión, al menos en una tarea supervisada. Esto generalmente significa que hay un valor semántico en los vectores de incrustación y las categorías que están cerca en este espacio tendrán un significado cercano para la tarea.

Esto está relacionado con la codificación de uno en caliente en el sentido de que mapea una categoría discreta en una representación de entidad vectorial. Todavía podría hacer esto para una red neuronal, pero si usa esto en una capa densa, crearía una enorme cantidad de pesos, de los cuales la mayoría de ellos no se usan regularmente. Poner una capa de incrustación en el medio reduce la cantidad de pesos aprendibles antes de alimentarlos para interactuar con otras partes de su entrada. Otra ventaja es que la matriz de incrustación básicamente funciona como una tabla de búsqueda, por lo que realmente puede usar la escasez del índice de su categoría para buscar cuál es el valor actual de la incrustación y cuando aplica la propagación hacia atrás solo adapta esa entrada de la matriz de peso .

http://colah.github.io/posts/2014-07-NLP-RNNs-Representations -> esta publicación de blog explica claramente cómo se forma la capa de incrustación en la capa de incrustación de Keras. Espero que esto ayude.


Finalmente una buena respuesta, gracias. Podríamos agregar que Word2Vec está entrenado como un objetivo de modelado de lenguaje que lo hace diferente de las incrustaciones entrenadas para una tarea específica como usted dijo.
Elliot

0

Por lo que yo entiendo, es un autoencoder simple, lo que significa que todo lo que hace es tratar de asignar la entrada a otro espacio, por lo que no es un entrenamiento sofisticado, solo un poco de retroalimentación y retroalimentación. Por eso es bastante rápido entrenar.

Si quieres usar incrustaciones pre-entrenadas, puedes hacerlo de esa manera


Un autoencoder es un modelo que se predice a sí mismo. ¿Es eso lo que querías decir?
kbrose

De hecho, para que pueda verlo como una red neuronal con una sola capa oculta, y donde la entrada y la salida son idénticas, no estoy seguro de que sea lo que usa Keras, pero dada la velocidad y la documentación, tendré a pensar que way
Valentin Calomme

La capa de incrustación en sí misma no hace eso. Solo asigna un vector a cada entrada entera única. Podría crear un modelo de codificación automática alrededor de eso para entrenar las incrustaciones, pero no es parte de la capa de incrustación.
kbrose

Estaba confundido porque su respuesta coincide con mi comprensión de lo que hace la capa de incrustación, aparte de llamarla "autoencoder".
kbrose

0

La capa de incrustación utiliza una matriz de incrustación para mapear datos y nunca se actualiza durante el entrenamiento . No hay parámetros entrenables en la capa de incrustación de Keras. Puede consultar los documentos de la capa de incrustación de Keras para obtener una comprensión detallada.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.