Como a camada de incorporação é treinada na camada de incorporação do Keras

13

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.

william007
fonte

Respostas:

24

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).

insira a descrição da imagem aqui

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]

Daniel López
fonte
2
Esta é exatamente a explicação que eu estava procurando! Penso que esta frase deve estar em negrito: "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".
31418 Kevin
obrigado pela explicação clara. Eu quero usá-lo no meu trabalho, então eu deveria citá-lo em um papel. Quais são as suas referências, ou seja, qual artigo você leu e obteve esse resultado? @Daniel López
maryam2013
@ maryam2013 por favor não use respostas para comentar. Você não dá ouvidos à aprovação de ninguém por citar seu trabalho. Quanto ao conteúdo, tudo está sob licença CC-BY-SA, para que possa ser reutilizado de acordo.
Tim
0

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.

Akshay U Prabhu
fonte
3
Você deve elaborar, em vez de fornecer principalmente um link.
Michael R. Chernick
0

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).

David Refaeli
fonte