Precisa entender o funcionamento da camada 'Incorporação' na biblioteca Keras. Eu executo o seguinte código em Python
import numpy as np
from keras.models import Sequential
from keras.layers import Embedding
model = Sequential()
model.add(Embedding(5, 2, input_length=5))
input_array = np.random.randint(5, size=(1, 5))
model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)
que fornece a seguinte saída
input_array = [[4 1 3 3 3]]
output_array =
[[[ 0.03126476 0.00527241]
[-0.02369716 -0.02856163]
[ 0.0055749 0.01492429]
[ 0.0055749 0.01492429]
[ 0.0055749 0.01492429]]]
Eu entendo que cada valor na matriz de entrada é mapeado para um vetor de 2 elementos na matriz de saída, portanto, um vetor de 1 x 4 fornece 1 x 4 x 2 vetores. Mas como são calculados os valores mapeados?
text-mining
word-embeddings
keras
prashanth
fonte
fonte
Respostas:
De fato, os vetores de saída não são calculados a partir da entrada usando nenhuma operação matemática. Em vez disso, cada número inteiro de entrada é usado como índice para acessar uma tabela que contém todos os vetores possíveis. Essa é a razão pela qual você precisa especificar o tamanho do vocabulário como o primeiro argumento (para que a tabela possa ser inicializada).
A aplicação mais comum dessa camada é para processamento de texto. Vamos ver um exemplo simples. Nosso conjunto de treinamento consiste apenas de duas frases:
Espero vê-lo em breve
Prazer em vê-lo novamente
Assim, podemos codificar essas frases atribuindo a cada palavra um número inteiro único (por ordem de aparência no nosso conjunto de dados de treinamento, por exemplo). Em seguida, nossas frases podem ser reescritas como:
Agora imagine que queremos treinar uma rede cuja primeira camada seja uma camada de incorporação. Nesse caso, devemos inicializá-lo da seguinte maneira:
O primeiro argumento (7) é o número de palavras distintas no conjunto de treinamento. O segundo argumento (2) indica o tamanho dos vetores de incorporação. O argumento input_length, é claro, determina o tamanho de cada sequência de entrada.
Depois que a rede for treinada, podemos obter os pesos da camada de incorporação, que neste caso terá tamanho (7, 2) e pode ser pensada como a tabela usada para mapear números inteiros para vetores de incorporação:
Portanto, de acordo com esses embeddings, nossa segunda frase de treinamento será representada como:
Pode parecer contra-intuitivo no começo, mas os mecanismos de diferenciação automática subjacentes (por exemplo, Tensorflow ou Theano) conseguem otimizar esses vetores associados a cada número inteiro de entrada, como qualquer outro parâmetro do seu modelo. Também é interessante usar os embeddings aprendidos por outros métodos / pessoas em diferentes domínios (consulte https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html ) como feito em [1].
[1] López-Sánchez, D., Herrero, JR, Arrieta, AG e Corchado, JM Hibridizando o aprendizado métrico e o raciocínio baseado em casos para detecção de clickbait adaptável. Inteligência aplicada, 1-16.
fonte
Também tive a mesma pergunta e, depois de ler algumas postagens e materiais, acho que descobri qual é o papel da camada de incorporação.
Acho que este post também é útil para entender, no entanto, acho realmente a resposta de Daniel conveniente para digerir. Mas eu também entendi a idéia principalmente por entender as palavras incorporadas .
Acredito que seja impreciso dizer que a incorporação de camadas reduz a entrada de codificação one-hot para menos entradas. Afinal, o vetor quente é um dado unidimensional e, de fato, é transformado em duas dimensões no nosso caso. Melhor dizer que
Seja em duas dimensões ou até mais.
Também encontro uma semelhança muito interessante entre a incorporação de palavras na Análise de Componentes Principais. Embora o nome possa parecer complicado, o conceito é direto. O que o PCA faz é definir um conjunto de dados com base em algumas regras gerais (os chamados componentes principais). Portanto, é como ter dados e você deseja descrevê-los, mas usando apenas 2 componentes. Que, nesse sentido, é muito parecido com o uso de palavras. Ambos fazem o mesmo trabalho em um contexto diferente. Você pode descobrir mais aqui . Espero que talvez o entendimento do PCA ajude a entender as camadas de incorporação por analogia.
Para finalizar, a resposta à pergunta original da postagem que " como calcula o valor? " Seria:
fonte