赞
踩
2013年,Tomas Mikolov 等人介绍了这种在大型语料库中进行文本预测的工具。这是一种基于大型数据集计算词向量的工具。与过去的神经网络语言模型 (Neural Network Language Model, NNLM)相比,word2vec 去掉了其中的非线性隐含层,结构简单且高效。
词向量是自然语言处理(NLP)中的一种技术,把词或短语映射为向量空间中的点,每个词或短语被表示为一个固定大小的向量,这些向量能够捕捉词与词之间的语义关系。
在 word2vec 之前,词对用简单的 One-Hot Representation,这是一种将离散特征转换为数值形式的方法,其中每个特征都由一个二进制向量表示,也就是只有一个位置是1,其余位置都是0。
如下图所示,这种方法最大的问题就是无法表示词序和语义之间的关系。
word2vec 则是采用Distributed Representation,根据上下文内容训练得到词向量。例如“酒店”这个词可以表示为 [-0.25877362, -0.88175815, 0.2238769 , ... , -0.345875] ,不再是 one-hot 形式的稀疏向量,而是稠密向量。不过注意同一个词在不同的语料库和训练方法下得到的词向量并不相同。这种表示方式最大的优势在于空间向量中的点是有意义的,词之间的语法与语义相似关系反映在向量方向与距离上。
例如 Tomas Mikolov 的经典例子 Queen - King + Man = Woman
One-Hot Representation 和 Distributed Representation 都是词向量,旨在将不可直接用于计算机处理的文本内容转换为方便计算的数学问题。
参考文献:
文本向量化代码java实现 word2vec文本向量化_hackernew的技术博客_51CTO博客
基于语言模型,可以根据上下文预测词语出现的概率。
以简单的统计模型为例,假设有n个词组成的句子,我们把生成这个句子的概率记为,假如各个词之间相互独立,那么
实际上,每个词语生成的概率与上下文相关,
输入为上下文单词的one-hot编码,然后乘以共享的输入权重矩阵W,所得到的向量相加求平均作为隐层向量,乘以输出权重矩阵W’,得到的向量经过激活函数的处理得到一个V维的概率分布,其中每一维代表的是一个单词,概率最大的是预测出来的中间词。使用梯度下降来更新W和W’。训练完毕后,输入层的每个单词与矩阵W相乘得到的向量就是word embedding. (已知周围词预测中心词)
关于向量与矩阵维度的变化可以看这篇文章的例子。
CBOW模型详解(基于one-hot)_cbow 权重矩阵-CSDN博客
可以说 word2Vec 就是一种简单神经网络语言模型,是用于学习词嵌入的一种无监督学习算法。主要目的就是为了得到词向量。
word2vec 是作者命名的一种文本预测工具包,具体的模型是 COBW 和 Skip-gram,CBOW 是根据上下文预测中间词,skip-gram 是根据中间词预测上下文。
从源码角度分析两者的区别 CBOW 和 Skip-gram-CSDN博客
从模型原理分析两者的区别 从 Word2Vec 到 BERT
3. 优化方法:Hierarchical Softmax 和 Negative Sampling
由于词向量的维度很大(一般 dim 取 50-300),就会使得神经网络的权重矩阵 W 和 W' 非常大,这会给训练神经网络带来巨大挑战,梯度下降慢,过拟合。因此提出了这两种优化方法,主要作用的位置是激活函数的位置。
3.1 Hierarchical Softmax
3.2 Negative Sampling
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。