如何创建嵌入层以从头开始将单词转换为向量空间?

人工智能 神经网络 执行 词嵌入
2021-11-18 00:19:32

对于即将到来的项目,我正在尝试构建一个神经网络,用于从头开始对文本进行分类,而不使用库。这需要一个嵌入层,或者一种将单词转换为某种向量表示的方法。我理解要点,但我找不到任何不以导入 TensorFlow 开头的深入解释或教程。我真正被告知的是,它使用一些周围的词在上下文中起作用,但我不明白到底是怎么回事。

它与具有权重和偏差的经典网络有很大不同吗?它是如何计算损失的?

如果有人可以为我提供有关这些事情如何运作的指南,我将不胜感激。

1个回答

Word2vec 嵌入通过简单的自动编码器模型进行训练,该模型采用一个单词并尝试从周围单词的窗口中预测一个单词。

在此处输入图像描述

你可以这样定义它:

num_of_words = 50000
# one hot encoded word
input = Input(num_of_words)
# You could use non linear activation
w2v = Dense(300, activation=”linear”)(input)
output = Dense(num_of_words, activation=”softmax”)(w2v)

但在实践中,该模型被重新定义并以两个单词作为输入并预测下一个单词。它会输出它所知道的所有单词的概率分数(模型的“词汇表”,范围可以从几千到一百万个单词)。

在此处输入图像描述

它从句子的开头到结尾和反向进行了两种训练。损失是一个常规的 categorical_crossentropy 详细解释可以在这里找到 [http://jalammar.github.io/illustrated-word2vec/]