Tensorflow Embedding Layer 内部的网络结构是什么?

dog*_*dog 9 embedding word2vec tensorflow

Tensoflow Embedding Layer ( https://www.tensorflow.org/api_docs/python/tf/keras/layers/Embedding ) 很容易使用,并且有大量文章谈论“如何使用” Embedding ( https://machinelearningmastery .com/what-are-word-embeddings/https://www.sciencedirect.com/topics/computer-science/embedding-method)。但是,我想知道 Tensorflow 或 Pytorch 中“嵌入层”的实现。它是一个word2vec吗?是C弓吗?它是一个特殊的致密层吗?

cod*_*ina 10

从结构上看,Dense层和Embedding层都是隐藏层,其中有神经元。区别在于它们对给定输入和权重矩阵的操作方式。

\n

Dense通过将输入相乘、向其添加偏差并对其应用激活函数来对给定的权重矩阵执行操作。而Embedding层使用权重矩阵作为查找字典。

\n

嵌入层最好理解为将整数索引(代表特定单词)映射到密集向量的字典。它将整数作为输入,在内部字典中查找这些整数,然后返回关联的向量。它\xe2\x80\x99 实际上是一个字典查找。

\n
from keras.layers import Embedding\n\nembedding_layer = Embedding(1000, 64)\n
Run Code Online (Sandbox Code Playgroud)\n

这里 1000 表示字典中的单词数,64 表示这些单词的维度。直观地说,嵌入层就像任何其他层一样,将尝试为任何单词找到 64 维的向量(实数)[ n1, n2, ..., n64]。该向量将表示该特定单词的语义。就像任何其他层一样,它将在使用反向传播进行训练时学习该向量。

\n
\n

当您实例化嵌入层时,其权重(其内部令牌向量字典)最初是随机的,就像任何其他层一样。在训练过程中,这些词向量通过反向传播逐渐调整,将空间构造成下游模型可以利用的东西。一旦经过充分训练,嵌入空间将显示大量结构\xe2\x80\x94,一种专门针对您\xe2\x80\x99正在训练模型的特定问题的结构。

\n
\n

——F . Chollet 使用 Python 进行深度学习

\n
\n

编辑 -如何使用“反向传播”来训练 的查找矩阵Embedding Layer

\n

Embedding层与线性层类似,没有任何激活函数。理论上,EmbeddingLayer 也执行矩阵乘法,但不会通过使用任何类型的激活函数为其添加任何非线性。因此,该Embedding层中的反向传播与任何线性层中的反向传播类似。但实际上,我们不会在嵌入层中进行任何矩阵乘法,因为输入通常是单热编码的,并且权重与单热编码向量的矩阵乘法就像查找一样简单。

\n

  • 谢谢你!可以更具体一些吗?或者我们如何使用“反向传播”算法来训练该查找矩阵? (2认同)