Embedding
Embedding
Word2Vec
Paper : Efficient Estimation of Word Representations in Vector Space - ICLR 2013
Efficient Estimation of Word Representations in Vector Space
-
Word2IdDict:将单词转成ID索引。例如,“Apple”编码成“1”、“I”编码成“2”。先统计每个词的词频并将其从高到低排列,然后从高频到低频词依次编码。
-
One-hot Encoding:将ID索引转换为One-hot向量。例如,“Apple”编码为[1, 0]。这一步并不是由开发者完成的,因为GPU不擅长进行Lookup操作,所以在内部实现上设计了One-hot Encoding这一环节来辅助Embedding Matrix的Lookup操作,实际上开发者不用进行这一步的处理。
-
Embedding Matrix:将每个单词编码为高维向量。例如,“Apple”编码为[0.4, 0.4, 0.5, -0.6, 1.1, 0.03]。在开发者的视角来看,单词的高维Embedding形式是直接由索引ID值编码得到的,并未进行One-hot Encoding。实际上在框架的内部实现上,每个单词的高维向量是由其对应的One-hot编码与Embedding Matrix矩阵相乘得到的。(Embedding Matrix一行表示一个单词,列数代表单词编码的维度)
C-BOW
上下文->核心词
-
核心思路:遍历整个语料,将每个词作为核心词,该词左右窗口期内的其余词作为上下文词,以此构建训练数据。将上下文中的每个词进行One-hot Encoding 作为模型的输入,然后与Embedding Matrix相乘获得每个上下文词的Embedding,简单的其相加后,乘上一个权重矩阵并经过Softmax输出一个概率向量。将该向量最大值处值设为1,其余为0,即对应核心词的One-hot向量。
-
实际实现:与下差不多。
Skip-gram
核心词->上下文
-
核心思路:遍历整个语料,将每个词作为核心词,该词左右窗口期内的其余词作为上下文词,以此构建训练数据。将核心词进行One-hot Encoding 作为模型的输入,然后与Embedding Matrix相乘获得核心词的Embedding。将Embedding向量乘以不同的权重矩阵后,得到多个1维向量,将其分别经过Softmax,即可获得上下文词的One-hot编码。
-
实际实现:实际实现中,常把Skip-gram当作一个二分类问题。对于一个样本,训练数据为核心词与一个上下文词,训练标签代表该词是否为核心词的上下文词,即1与0。可通过负采样采取非上下文词。可通过二次采样去除高频词。前向传播过程为:
中心词和目标词(包括上下文词与无关词)分别经过两个不同的Embedding Matrix,将输出点乘并经过Sigmoid函数量化一个概率值,而后与标签计算Cross Entropy开启端到端训练。
- C-BOW和Skip-gram是Word2Vec的两种实现方式,它可以根据文本序列训练出Embedding Matrix。但在实际的NLP任务中,Embedding Matrix是随机初始化的,并不会进行C-BOW或Skip-gram的训练
Item2Vec
Paper : ITEM2VEC: NEURAL ITEM EMBEDDING FOR COLLABORATIVE FILTERING
Item2Vec
- 基本原理与Word2Vec类似
广义Item2Vec
Paper : Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations
一个例子:双塔模型
-
只要能生成相应物品或用户的稠密向量的方法都能叫做“Embedding”
-
双塔模型结构