Como a camada de incorporação é treinada na camada de incorporação Keras? (digamos, usando back-end tensorflow, o que significa que é semelhante ao word2vec, glove ou fasttext)
Suponha que não usamos uma incorporação pré-treinada.
Como a camada de incorporação é treinada na camada de incorporação Keras? (digamos, usando back-end tensorflow, o que significa que é semelhante ao word2vec, glove ou fasttext)
Suponha que não usamos uma incorporação pré-treinada.
Respostas:
As camadas de incorporação no Keras são treinadas como qualquer outra camada na arquitetura de sua rede: elas são ajustadas para minimizar a função de perda usando o método de otimização selecionado. A principal diferença com outras camadas é que sua saída não é uma função matemática da entrada. Em vez disso, a entrada para a camada é usada para indexar uma tabela com os vetores de incorporação [1]. No entanto, o mecanismo de diferenciação automática subjacente não tem nenhum problema para otimizar esses vetores para minimizar a função de perda ...
Portanto, você não pode dizer que a camada de incorporação no Keras está fazendo o mesmo que o word2vec [2]. Lembre-se de que o word2vec se refere a uma configuração de rede muito específica que tenta aprender uma incorporação que captura a semântica das palavras. Com a camada de incorporação de Keras, você está apenas tentando minimizar a função de perda; portanto, se você está trabalhando com um problema de classificação de sentimentos, a incorporação aprendida provavelmente não capturará a semântica completa das palavras, mas apenas a polaridade emocional ...
Por exemplo, a imagem a seguir tirada de [3] mostra a incorporação de três frases com uma camada Keras Embedding treinada do zero como parte de uma rede supervisionada projetada para detectar títulos de iscas de clique (à esquerda) e incorporações pré-treinadas do word2vec (à direita). Como você pode ver, os casamentos word2vec refletem a semelhança semântica entre as frases b) e c). Por outro lado, as combinações geradas pela camada de incorporação de Keras podem ser úteis para classificação, mas não capturam a semelhança semântica de b) e c).
Isso explica por que, quando você tem uma quantidade limitada de amostras de treinamento, pode ser uma boa ideia inicializar sua camada de incorporação com pesos word2vec . Portanto, pelo menos, o seu modelo reconhece que "Alpes" e "Himalaia" são coisas semelhantes, mesmo que não ambos ocorrem nas frases do seu conjunto de dados de treinamento.
[1] Como a camada 'Incorporação' de Keras funciona?
[2] https://www.tensorflow.org/tutorials/word2vec
[3] https://link.springer.com/article/10.1007/s10489-017-1109-7.
NOTA: Na verdade, a imagem mostra as ativações da camada após a camada Incorporação, mas, para os fins deste exemplo, não importa ... Veja mais detalhes em [3]
http://colah.github.io/posts/2014-07-NLP-RNNs-Representations -> esta postagem do blog explica claramente sobre como a camada de incorporação é treinada na camada de incorporação da Keras . Espero que isto ajude.
A camada de incorporação é apenas uma projeção de um vetor quente e discreto e esparso em um espaço latente contínuo e denso. É uma matriz de (n, m) em que n é o tamanho do seu vocabulário en é a dimensão do espaço latente desejado. Somente na prática, não é necessário fazer a multiplicação da matriz e, em vez disso, você pode economizar na computação usando o índice. Portanto, na prática, é uma camada que mapeia números inteiros positivos (índices correspondentes a palavras) em vetores densos de tamanho fixo (os vetores de incorporação).
Você pode treiná-lo para criar uma incorporação do Word2Vec usando Skip-Gram ou CBOW. Ou você pode treiná-lo em seu problema específico para obter uma incorporação adequada para sua tarefa específica. Você também pode carregar incorporações pré-treinadas (como Word2Vec, GloVe etc.) e continuar o treinamento sobre seu problema específico (uma forma de transferência de aprendizado).