图解词向量的特征

大家好啊,我是董董灿。

本文以图解的方式来讲解什么是词向量以及其特征如何理解。

按惯例,先看一个例子。

例子:你是什么样的人?

本例来源于 Jay Alammar 的博客,我在原文基础上进行了精简和提炼。

不知道你是否做过性格测试。

在很多类似的测试中,都会有许多道题来让你回答,然后从多个维度、多个方面衡量你的潜力或特质,然后给出分值,最后综合来评判你是一个什么样的人。

假设一个叫Jay 的人做完性格测试,在“你是属于内向还是外向?”这项测试中得到了38分。这里满分为100,分数越高,说明人越外向,分数越低,说明人越内向。

图片

为了抹平多项测试间的分值差异,这里将所有得分的数据归一化到 [-1,1] 之间。归一化后内外向得分为 -0.4 分,负值说明内向,正值说明外向。

图片

此时很明显,说明Jay这个人偏内向。但也仅此而已,我们从 -0.4 这个分数看不出 Jay 有其他什么品质,仅仅知道他偏内向而已。

这个时候,如果再增加一个测试项目的得分,假设 Jay 在另一个测试项目中得分为 0.8 分。

图片

此时,根据这两个测试项目的数据,我们知道 Jay 这个人在第一个性格(Trait #1:内外向)中得分为 -0.4,他偏内向。

在第二个性格中得分0.8。

虽然这里没指明第二个性格具体代表的是什么(比如你可以理解为“是否任劳任怨加班?”,0.8 分说明他是一个加班狂),但至少我们对 Jay 的认识又增加了一些。

假设,现在Jay在上班途中被车撞了,公司需要一个人来顶替他的工作内容,有两个候选人(Person #1 和 person #2),他们在这两项测试中的得分如下:

图片

根据这两个候选人的得分,你更倾向于让谁来代替Jay呢?

你可能会说,看样子 person#1 和 Jay 在两项上的得分更相近,两人具有更类似的特质,可以让 person#1来代替 Jay。

是的,在数学模型上,衡量两个人的性格数据(这里实际上是向量)是否相似,可以使用余弦相似度的方法,这个在上一节介绍过了。

通过计算,可以的得到余弦相似度数值为:

图片

很明显,person #1 获选,因为他和Jay的余弦相似度更高。

上述每一项(Trait #1, Trait #2)的得分都代表了这个人在某一项测试中的特质或潜力,或者说是这个人在某性格维度上的特征值。

但是 2 个特征还不足以完全代表一个人,因此我们可以将特征数量继续增加:

图片

继续计算余弦相似度:

图片

通过计算,仍然得到 person #1 与 Jay 更相似的结论。

至此,Person #1 获选,说明Person #1 和Jay更相似,更容易获得这份工作。

如果把上述例子中的得分组成的向量看做是词嵌入向量,那么其中的数值,便是代表一个单词在各个维度特征的得分值。

比如在我的《Transformer最后一公里》专栏中会提到,猫(cat)可以是以下特征的集合:

cat = [会跑(1)、会爬树(0.9)、会叫(1.0)、粘人(0.6)、会抓老鼠(0.6),会游泳(-0.9),会喷火(-1.0)...]

只要给够足够多的维度得分,一个向量便可以更加精确的表示猫(cat)这个单词。

这便是词向量的作用,作为单词各维度语义的集合而存在。

欢迎订阅Transformer专栏,里面会有更多算法的使用动机和通俗的讲解,还会有代码实战哦。

我的Transformer专栏来啦-优快云博客文章浏览阅读566次,点赞12次,收藏5次。现在很多主流的大语言模型,比如chatGPT都是基于该架构进行的模型设计,可以说Transformer顶起了AI的半壁江山。对于这些有些枯燥的概念,有些乏味的数学表达,我会尽可能说的直白和通俗易懂,打通理解Transformer的最后一公里。我会在本公众号进行文章的首发,相关文章会添加标签“Transformer专栏”,可点击文章左下角的标签查看所有文章。巧的是,下班路上刚手敲完大纲,晚上一个小伙伴来咨询学习LLM的事情,问我之前写的《五一节前吹的牛,五一期间没完成,今天忙里偷闲,给完成了。https://blog.youkuaiyun.com/dongtuoc/article/details/138633936?spm=1001.2014.3001.5501

<think>好的,我现在需要回答用户关于Word2Vec词向量模型的训练步骤及流程的问题。首先,我需要回顾一下Word2Vec的基本原理和常见的两种模型结构:Skip-gram和CBOW。用户可能对这两者的区别不太清楚,所以需要简要说明。 接着,我应该分步骤详细描述训练流程。首先应该是数据预处理,包括分词、去除停用词等。然后,构建词汇表,这一步需要统计词频,并为每个词分配唯一的ID。接下来是生成训练样本,这里需要解释滑动窗口的概念,以及如何从句子中提取中心词和上下文词。 然后是模型结构部分,需要提到输入层、隐藏层和输出层的设计。对于Skip-gram模型,输入是中心词,输出是上下文词;而CBOW则是相反的。这里可能需要对比两者的不同,但用户主要问的是步骤,所以可能不需要深入比较。 接下来是训练过程,重点在于负采样和层次Softmax这两种优化技术。需要解释为什么需要这些技术,它们如何减少计算量,特别是当词汇表很大时。还要提到损失函数,比如使用交叉熵损失,以及参数更新的方法,比如梯度下降。 参数设置部分,用户可能关心词向量的维度、窗口大小、学习率等参数的选择,以及这些参数对模型效果的影响。此外,训练完成后的应用,比如如何保存模型和使用词向量。 最后,需要生成相关问题,帮助用户进一步理解相关内容。比如优化方法、参数影响、应用场景等。 在引用方面,根据提供的参考内容,引用1提到了Skip-gram和负采样的训练过程,引用3提到了Doc2Vec的训练和保存模型的方法。需要确保在回答中正确引用这些内容,比如在提到负采样时引用[^1],在保存模型时引用[^3]。 需要注意的是,回答要使用中文,数学公式用$...$,独立公式用$$...$$。同时,要检查LaTeX语法是否正确,比如下划线和特殊符号的转义。例如,隐藏层的维度可能需要用数学格式表示,如$d$维向量。 现在,我需要组织这些内容,确保结构清晰,步骤明确,同时自然地插入引用标识。可能还需要在最后列出相关问题,符合用户的要求。</think>### Word2Vec词向量模型训练步骤及流程 #### 1. **数据预处理** - **分词处理**:将原始文本分割为单词或子词单元。 - **去除噪声**:过滤停用词、标点符号和低频词(例如`min_count=5`表示忽略出现次数少于5次的词)。 - **构建词汇表**:统计词频并为每个词分配唯一索引,形成词汇表。 #### 2. **生成训练样本** - **滑动窗口法**:以中心词为中心,截取窗口内的上下文词。例如,窗口大小为5时,会取中心词左右各2个词作为上下文。 - 样本格式: - **Skip-gram**:输入为中心词,输出为上下文词,例如句子“natural language processing”生成样本$( \text{language}, \text{natural} )$和$( \text{language}, \text{processing} )$。 - **CBOW**:输入为上下文词,输出为中心词。 #### 3. **模型构建** - **网络结构**: - **输入层**:将中心词(Skip-gram)或上下文词(CBOW)转换为one-hot编码。 - **隐藏层**:通过权重矩阵$W_{V \times d}$将输入映射为$d$维词向量(例如`size=200`表示词向量维度为200)。 - **输出层**:使用Softmax或优化技术(如负采样)计算上下文词的概率分布。 - **数学表示**(Skip-gram为例): $$ p(w_c | w_t) = \frac{\exp(v_{w_t} \cdot v'_{w_c})}{\sum_{i=1}^V \exp(v_{w_t} \cdot v'_i)} $$ 其中$v_{w_t}$为中心词向量,$v'_{w_c}$为上下文词向量。 #### 4. **训练优化技术** - **负采样(NEG)**:随机采样非上下文词作为负样本,替代全词汇Softmax,降低计算复杂度。损失函数为: $$ \mathcal{L} = -\log \sigma(v_{w_t} \cdot v'_{w_c}) - \sum_{k=1}^K \log \sigma(-v_{w_t} \cdot v'_{n_k}) $$ 其中$K$为负样本数量。 - **层次Softmax**:通过哈夫曼树编码词汇表,将复杂度从$O(V)$降至$O(\log V)$。 #### 5. **参数更新** - 使用随机梯度下降(SGD)或自适应优化器(如Adam)更新词向量矩阵$W$和$W'$。 - 关键参数: - `window`:上下文窗口大小(例如`window=5`)[^3]。 - `learning_rate`:控制参数更新步长。 - `workers`:多线程加速训练(例如`workers=cpu_count()`)。 #### 6. **模型保存与应用** - 训练完成后,保存词向量矩阵$W$,可直接用于下游任务(如分类、聚类)。 - 示例代码(Doc2Vec扩展): ```python model.save("word2vec.model") # 保存完整模型 model.save_word2vec_format("vectors.txt", binary=False) # 导出词向量 ``` #### 训练流程图解 ``` 原始文本 → 分词 → 构建词汇表 → 生成样本 → 模型训练(负采样/SGD) → 输出词向量 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值