【深度学习】Embedding之word2vec
一、word2vec概述
word2vec是一个浅层神经网络模型,用于将单词转换为向量,该模型主要有两种类型:
1. CBOW 连续词袋模型
2. skip-gram 跳字模型
CBOW和skip-gram的目标都是迭代出词向量字典(嵌入矩阵)。
二、CBOW 连续词袋模型
1、概述
CBOW神经网络会接收上下文词语,将上下文词语转换为最有可能的目标词。
2、模型结构

3、猜想
假设我们有一个句子:
We are about to study the idea of deep learning.
我们能否用上面画线句子来表示出study呢?
这时,我们需要一个大小为n的窗口。

具体一些:

4、过程
对于上下文中输入的其中一个词进行分析:
- 输入词首先进行one-hot编码成为一个1行n列的向量,再经过embeddings层,embeddings层是一个N * V的矩阵,N代表词表中的词语个数,V代表词向量的维度,经过该层之后是一个1行V列的词向量。

- 之后每一个词语都进行这样的操作,将输出结果传送到线性层,通过线性层我们可以得到1*N的向量,再通过softmax得到了目标词向量,为1的地方就是模型的预测结果。

- 线性层:上下文中包括了多个词语,每个词语经过embeddings层都会得到一个词向量,多个上下文统一表示为V=14(V1+V2+V3+V4)V=\frac{1}{4}(V_1 + V_2 + V_3 + V4)V=41(V1+V2+V3+V4),输出结果为将语义平均的向量化V。

三、skip-gram跳字模型
1、概述
skip-gram是用目标词来预测上下文。
2、猜想
假设我们有一个句子:
We are about to study the idea of deep learning.
我们能否用study来预测上下问呢?
我们有一个大小为n的窗口。

使用一个词来预测另外一个词,尽量使这两个词的词向量接近,在skip-gram迭代的过程中,不断调整词向量:
1. 让目标词与上下文的词向量尽可能地接近。
2. 让目标此与非上下文的词向量尽可能地远离。
判断两个词向量是否接近使用向量的点积
A=(a1,a2,...,an)A = (a_1, a_2, ..., a_n)A=(a1,a2,...,an)
B=(b1,b2,....,bn)B = (b_1, b_2, ...., b_n)B=(b1,b2,....,bn)
A⋅B=a1⋅b1+......+an⋅bnA \cdot B= a_1 \cdot b_1 + ......+ a_n \cdot b_nA⋅B=a1⋅b1+......+an⋅bn
向量的点积衡量了向量在同一方向上的强度,点积越大,两个向量越相似,它们对应的语义也就越相似。

3、结构
in_embedding作为skip-gram模型的输出,得到的结果是,每一个词语到达目标词语的概率。

更多推荐


所有评论(0)