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

8

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:

6

Ambas as respostas estão erradas.

Uma camada de incorporação é uma camada treinável que contém 1 matriz de incorporação, que é bidimensional, em um eixo o número de valores exclusivos que a entrada categórica pode receber (por exemplo, 26 no caso de alfabeto minúsculo) e, no outro eixo, a dimensionalidade do seu espaço de incorporação. O papel da camada de incorporação é mapear uma categoria em um espaço denso, de maneira que seja útil para a tarefa em questão, pelo menos em uma tarefa supervisionada. Isso geralmente significa que há algum valor semântico nos vetores de incorporação e as categorias próximas nesse espaço terão um significado próximo para a tarefa.

Isso está relacionado à codificação one-hot, no sentido em que mapeia uma categoria discreta em uma representação de recurso vetorial. Você ainda pode fazer isso para uma rede neural, mas se você usar isso em uma camada densa, criará uma enorme quantidade de pesos, dos quais a maioria deles não é usada regularmente. Colocar uma camada de incorporação no meio reduz a quantidade de pesos aprendíveis antes de alimentá-los para interagir com outras partes da sua entrada. Outra vantagem é que a matriz de incorporação basicamente funciona como uma tabela de pesquisa, para que você possa realmente usar a escassez do índice de sua categoria para procurar qual é o valor atual da incorporação e ao aplicar a retropropagação apenas adaptando essa entrada da matriz de peso .

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.

Jan van der Vegt
fonte
Finalmente uma boa resposta, obrigado. Poderíamos acrescentar que o Word2Vec é treinado como um objetivo de modelagem de linguagem, o que o diferencia dos embeddings treinados para uma tarefa específica, como você disse.
Elliot
0

Tanto quanto eu entendo, é um auto-codificador simples, o que significa que tudo o que faz é tentar mapear a entrada em outro espaço, para que não haja treinamento sofisticado, apenas um feed-forward e backprop simples. É por isso que é bastante rápido treinar.

Se você deseja usar casamentos pré-treinados, pode fazê-lo dessa maneira

Valentin Calomme
fonte
Um autoencoder é um modelo que se prevê. É isso que você quis dizer?
Kbrose #
De fato, para que você possa vê-lo como uma rede neural com uma única camada oculta, e onde a entrada e a saída são idênticas, não tenho certeza de que é o que Keras usa, mas, dada a velocidade e a documentação, tenho a tendência de pensar que maneira
Valentin Calomme
A própria camada de incorporação não faz isso. Ele atribui apenas um vetor a cada entrada inteira exclusiva. Você pode criar um modelo de codificação automática para treinar os encaixes, mas ele não faz parte da camada de encaixe.
Kbrose #
Fiquei confuso porque sua resposta corresponde ao meu entendimento sobre o que a camada de incorporação faz além de chamá-la de "auto-codificador".
Kbrose #
0

A camada de incorporação usa a matriz de incorporação para mapear dados e nunca é atualizada durante o treinamento . Não há parâmetros treináveis na camada Keras Embedding. Você pode consultar os documentos da camada de incorporação do Keras para obter um entendimento detalhado.

thanatoz
fonte