¿Cómo se entrena la capa de incrustación en la capa de incrustación de Keras? (digamos que usa el tensorflow backend, lo que significa que es similar a word2vec, glove o fasttext)
Supongamos que no utilizamos una incrustación preentrenada.
¿Cómo se entrena la capa de incrustación en la capa de incrustación de Keras? (digamos que usa el tensorflow backend, lo que significa que es similar a word2vec, glove o fasttext)
Supongamos que no utilizamos una incrustación preentrenada.
Respuestas:
Las capas de incrustación en Keras se entrenan como cualquier otra capa en su arquitectura de red: se ajustan para minimizar la función de pérdida mediante el método de optimización seleccionado. La principal diferencia con otras capas es que su salida no es una función matemática de la entrada. En cambio, la entrada a la capa se usa para indexar una tabla con los vectores de incrustación [1]. Sin embargo, el motor de diferenciación automática subyacente no tiene problemas para optimizar estos vectores para minimizar la función de pérdida ...
Por lo tanto, no puede decir que la capa de incrustación en Keras está haciendo lo mismo que word2vec [2]. Recuerde que word2vec se refiere a una configuración de red muy específica que intenta aprender una incrustación que captura la semántica de las palabras. Con la capa de incrustación de Keras, solo está tratando de minimizar la función de pérdida, por lo que si, por ejemplo, está trabajando con un problema de clasificación de sentimientos, la incrustación aprendida probablemente no capturará la semántica completa de las palabras, sino solo su polaridad emocional ...
Por ejemplo, la siguiente imagen tomada de [3] muestra la incrustación de tres oraciones con una capa de incrustación de Keras entrenada desde cero como parte de una red supervisada diseñada para detectar titulares de clickbait (izquierda) e incrustaciones de word2vec pre-entrenadas (derecha). Como puede ver, las incorporaciones de word2vec reflejan la similitud semántica entre las frases b) yc). Por el contrario, las incrustaciones generadas por la capa de incrustación de Keras pueden ser útiles para la clasificación, pero no capturan la similitud semántica de b) yc).
Esto explica por qué cuando tiene una cantidad limitada de muestras de entrenamiento, puede ser una buena idea inicializar su capa de incrustación con pesos word2vec , por lo que al menos su modelo reconoce que "Alps" y "Himalaya" son cosas similares, incluso si no Ambos ocurren en oraciones de su conjunto de datos de entrenamiento.
[1] ¿Cómo funciona la capa de 'incrustación' de Keras?
[2] https://www.tensorflow.org/tutorials/word2vec
[3] https://link.springer.com/article/10.1007/s10489-017-1109-7
NOTA: En realidad, la imagen muestra las activaciones de la capa después de la capa de Incrustación, pero para el propósito de este ejemplo no importa ... Ver más detalles en [3]
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.
La capa de incrustación es solo una proyección de un vector caliente discreto y disperso en un espacio latente continuo y denso. Es una matriz de (n, m) donde n es el tamaño del vocabulario yn las dimensiones del espacio latente deseado. Solo en la práctica, no es necesario hacer la multiplicación de la matriz, y en su lugar puede ahorrar en el cálculo utilizando el índice. Entonces, en la práctica, es una capa que mapea enteros positivos (índices correspondientes a palabras) en vectores densos de tamaño fijo (los vectores incorporados).
Puede entrenarlo para crear una incrustación de Word2Vec utilizando Skip-Gram o CBOW. O puede entrenarlo en su problema específico para obtener una inserción adecuada para su tarea específica en cuestión. También puede cargar incrustaciones pre-entrenadas (como Word2Vec, GloVe, etc.) y luego continuar entrenando sobre su problema específico (una forma de aprendizaje de transferencia).