泰安网站建设优化,做招聘网站怎么设计框架,常州便宜的做网站服务,网站开发科普书目录
一、word2vec
二、Embedding过程
三、计算向量之间相似性
四、word2vec模型的训练过程
五、总结 嵌入#xff08;Embeddings#xff09;是机器学习领域中的一个概念#xff0c;主要用于将高维的数据转化为低维空间#xff0c;以便于算法更好地处理和理解数据。嵌…目录
一、word2vec
二、Embedding过程
三、计算向量之间相似性
四、word2vec模型的训练过程
五、总结 嵌入Embeddings是机器学习领域中的一个概念主要用于将高维的数据转化为低维空间以便于算法更好地处理和理解数据。嵌入通常用于将离散的、高维的特征转换为连续的、低维的向量表示。 本文将以经典的嵌入模型 word2vec 为例介绍其训练过程embedding 过程通过阅读您将理解一段文本是如何转化为 n 维向量的。 一、word2vec Word2Vec 是一种用于生成词嵌入的算法它基于分布式假设即假设上下文相似的单词在语义上也是相似的。Word2Vec 有两种主要的训练模型连续词袋模型Continuous Bag of WordsCBOW和跳字模型Skip-gram CBOW通过给定一个词的上下文单词来预测中心词模型的输入是上下文词的词向量输出是中心词的词向量。CBOW 的训练目标是最大化预测中心词的概率从而得到能够很好地表示上下文语境的词向量。 Skip-gramSkip-gram 的思想与 CBOW 相反它通过给定一个中心词来预测其周围的上下文词。模型的输入是中心词的词向量输出是上下文词的词向量。Skip-gram 的训练目标是最大化预测上下文词的概率从而得到能够很好地捕捉词语语义的词向量。 二、Embedding过程 训练好的word2vec模型有一张词表词表中包含训练数据中所有单词所对应的词向量当使用word2vec将句子转化为向量时一种常见的方法是将句子中所有单词的词向量取平均或加权平均。这可以帮助将整个句子的语义信息编码到一个向量中。大致步骤如下 获取每个单词的词向量将句子中的每个单词都映射到Word2Vec模型中的词向量空间得到对应的词向量。计算平均向量将所有单词的词向量取平均得到句子的平均向量。
假设目前有一个已经训练好的word2vec模型模型的输入为“我喜欢苹果”分词向量表如下。请注意这里的词向量维度为3实际词表中的维度远远大于这个值。 接下来我们使用词向量平均的方法将这个句子转化为向量。设我的词向量为α1 喜欢的词向量为α2 苹果的词向量为α3 这样我喜欢苹果 这个句子就被转化为了一个向量 [0.4, 0.367, 0.733]其中每个维度代表了句子在对应语义维度上的平均值。这个向量可以用于表示句子的语义特征。 三、计算向量之间相似性 在计算向量之间的相似性时常用的方法包括余弦相似度Cosine Similarity以及欧几里得距离Euclidean Distance
余弦相似度衡量了两个向量之间的夹角取值范围在-1到1之间。相似的向量夹角接近0度余弦相似度接近1表示相似性高夹角接近180度余弦相似度接近-1表示相似性低夹角为90度余弦相似度接近0表示两向量正交无明显相似特征。欧几里得距离是计算两个向量之间的距离值越小表示越相似值越大表示越不相似。 以余弦相似度为例假设我想要得到在向量数据库中与我的问题最接近的文本首先我需要对我的问题做向量化假设用word2vec向量化后的问题向量为β1 [0.3, 0.7, 0.5]最接近的文本向量为β2 [0.4, 0.6, 0.9] 1、首先对β1 以及 β2 做内积以及分别取模 2、 然后使用余弦相似度公式计算β1 以及 β2 做相似度 这个计算出的余弦相似度值接近于1说明向量 β1 和向量 β2 在方向上非常相似夹角很小。这表示向量 β1 和向量 β2 在某种意义上是相似的具有一定的语义相关性。 四、word2vec模型的训练过程 之前提到模型词表中已经存储了词向量因此我们句子可以被分词之后到词表中找到对应词的词向量做加权平均得到句子的向量表示那么词表中的词向量是从哪来的接下来我将介绍word2vec模型的训练过程从而解释这个问题 1、准备数据 将文本分解为词语序列构建词汇表并为词汇表中的每个词分配初始的词向量。这些初始的词向量通常是随机的这些随机初始化的词向量没有任何具体语义含义它们只是作为模型训练的起点。随机初始化词向量的原因是在开始训练之前模型并不知道每个词汇的语义信息。通过随机初始化模型有了一个初始状态然后通过训练过程逐步调整这些词向量使它们能够捕捉到词汇之间的语义关系。随机初始化的词向量可以是服从某种分布的随机数比如均匀分布或正态分布。这些初始向量会在训练过程中逐渐调整以使模型在预测上下文词汇时更准确。一个好的embedding模型拥有海量(GB,TB,PB)的文本作为训练数据打个比方同一个词出现的句子越多在之后做embedding时越接近真实语义。 2、上下文中心词对 对于一段文本从第一个词开始以固定的窗口大小对文本进行切分计算每个词出现的概率每个词会拥有两个概率表示一个为作为中心词出现的概率另一个为作为上下文时出现的概率对应的我们用两个词向量表示词表中的每个词一个表示该词作为中心词时另一个表示该词作为上下文时。 3、计算概率分布 计算预测概率分布时使用了softmax函数。这个函数将模型的输出转化为概率分布以便用于计算损失并进行优化。模型会根据输入的中心词或上下文词的词向量计算每个词汇成为目标的概率。然后使用softmax函数对这些概率进行归一化处理确保它们形成一个合理的概率分布。这个概率分布表示给定上下文条件下每个词汇成为中心词或上下文词的概率。这个分布会被用于计算损失函数通常使用交叉熵损失进而用于优化模型的参数使得模型能够更好地预测实际的上下文或中心词。 假设词向量为 Apple: [0.2, 0.4]Banana: [0.5, 0.7]Orange: [0.3, 0.6] 在Skip-gram模型中我们要计算给定上下文词 apple 的情况下每个词汇成为中心词的概率分布。我们可以使用 softmax 函数来计算这些概率。 首先计算内积 使用softmax函数计算概率 在以apple为上下文的情况下“banana”和“orange”成为中心词的概率分布从结果可以得知“banana”成为中心词的概率比较高。 4、损失函数梯度更新 使用模型的输出概率分布和实际上下文或中心词汇计算损失通常使用交叉熵损失函数。使用损失函数计算模型的梯度然后使用优化算法如梯度下降来更新词向量使预测更接近实际。 其中V是词汇表大小yi 是实际目标概率分布中词汇wi的概率如果词汇是目标则为1否则为0pi 是模型预测的概率分布中词汇wi的概率。使用损失函数的梯度来更新模型的参数通常采用梯度下降等优化算法。目标是通过反向传播算法调整模型的参数使得损失函数最小化。 5、迭代训练 重复上述步骤多次迭代训练模型。随着训练的进行词向量会逐渐调整以更好地捕捉词汇之间的语义关系。 //训练自己的word2vec模型 详情请参阅Confluence word2vec模型训练
https://confluence.digitalchina.com/x/XUHJAg
五、总结 2013年Google员工Tomas Mikolov等人提出了word2vec。用于在计算机中处理和分析文本数据。这个过程涉及将文本中的单词、短语或句子转化为向量表示使得计算机能够处理和比较文本信息。Word2Vec利用深度学习模型通过预测上下文词汇来生成词向量从而捕捉单词之间的语义关系。这种向量表示使得文本信息能够在计算机中进行数学计算和分析为自然语言处理任务提供了基础。 参考文献
Word2vecPaperWord2vec模型训练源码斯坦福《深度学习自然语言处理》Stanford CS224N 作者徐辉| 后端开发工程师 更多AI小知识欢迎关注“神州数码云基地”公众号回复“AI与数字化转型”进入社群交流
版权声明文章由神州数码武汉云基地团队实践整理输出转载请注明出处。