从0到1揭开Word2Vec的神秘面纱:自然语言处理的向量魔法

目录

一、Word2Vec 是什么

二、为什么需要 Word2Vec

三、Word2Vec 的基本原理与模型结构

(一)核心思想

(二)CBOW 模型

1. 模型架构

2. 训练过程

(三)Skip - gram 模型

1. 模型架构

2. 训练过程

(四)两者对比

四、Word2Vec 的训练优化

(一)Hierarchical Softmax

(二)Negative Sampling

五、Word2Vec 的应用场景

(一)文本分类

(二)语音识别

(三)机器翻译

(四)推荐系统

六、如何使用 Word2Vec

(一)数据预处理

(二)模型训练

(三)向量应用

七、总结与展望


一、Word2Vec 是什么

        你是否想过,计算机是如何理解人类语言的呢?当我们看到 “苹果” 这个词,脑海中会立刻浮现出红彤彤、酸甜可口的水果形象。但对于计算机来说,“苹果” 只是一串字符,那它如何理解这个词背后的含义,以及和其他词之间的关系呢?这就轮到 Word2Vec 登场啦!

        Word2Vec 是 Google 在 2013 年开源的一款将单词转为向量表示的工具 ,简单来说,它能把人类语言中的单词转化成计算机能够理解的数学向量。在自然语言处理(NLP)这个大舞台上,Word2Vec 可是一位举足轻重的 “明星”,为众多 NLP 任务,如文本分类、情感分析、机器翻译等,打下了坚实的基础,让计算机处理人类语言变得更加得心应手。

二、为什么需要 Word2Vec

        在 Word2Vec 闪亮登场之前,传统的文本表示方法中,One - Hot Encoder(独热编码)算是 “老资格” 了 。比如,在一个包含 “苹果”“香蕉”“橘子” 的简单词汇表中,“苹果” 可能被表示为 [1, 0, 0],“香蕉” 为 [0, 1, 0] ,“橘子” 为 [0, 0, 1] 。这种表示方法虽然简单直接,计算机也容易理解,但却存在着诸多致命的缺陷。

        维度灾难:想象一下,如果词汇表非常大,包含成千上万甚至上百万个单词,那每个单词对应的 One - Hot 向量维度也会变得极其庞大。这不仅会占用大量的存储空间,在计算时也会耗费巨大的资源,让计算机不堪重负。例如,一个拥有 10 万个单词的词汇表,每个单词的 One - Hot 向量维度就是 10 万,这是一个多么恐怖的数字!

        无法体现语义关系:从 One - Hot 向量中,我们完全看不出单词之间的语义联系。“国王” 和 “王后” 虽然语义相近,但它们的 One - Hot 向量之间的距离和其他任意两个单词的向量距离是一样的,无法体现出它们之间特殊的语义关联 。这就好比把所有单词都看作是孤立的个体,而忽略了它们在语义世界中的紧密联系。

        数据稀疏:由于 One - Hot 向量中只有一个元素是 1,其余全是 0,这就导致向量非常稀疏。稀疏的数据在很多计算和模型训练中都不太友好,会影响模型的性能和效果。

        而 Word2Vec 的出现,就像是一道光照进了黑暗的房间,完美地解决了这些问题。它将单词映射到一个低维的连续向量空间中,大大降低了向量的维度,减轻了维度灾难和数据稀疏的问题 。同时,在这个向量空间里,语义相近的单词会被映射到相近的位置,比如 “汽车”“轿车”“车辆” 这些词的向量会彼此靠近,通过计算向量之间的距离,就能衡量单词之间的语义相似度,让计算机能够理解单词之间的语义关系 。这使得 Word2Vec 在自然语言处理任务中如鱼得水,为后续的文本分析、理解和生成等任务奠定了坚实的基础。

三、Word2Vec 的基本原理与模型结构

(一)核心思想

        Word2Vec 的核心思想建立在 “分布假设” 之上,即一个词的语义可以由它周围的上下文来推断。简单来说,就是认为经常出现在相似上下文环境中的单词,其语义也相近。例如,在 “我喜欢吃苹果” 和 “我喜欢吃香蕉” 这两个句子中,“苹果” 和 “香蕉” 都出现在 “我喜欢吃” 这个相似的上下文里,那么它们在语义上就具有一定的相似性,通过 Word2Vec 学习得到的向量表示也会比较接近。

        为了实现这一思想,Word2Vec 采用了两种主要的模型架构:连续词袋模型(CBOW)和跳字模型(Skip - gram) 。CBOW 模型是根据上下文单词来预测中心单词,而 Skip - gram 模型则是通过中心单词来预测上下文单词 。这两种模型就像是一对 “孪生兄弟”,虽然预测方向不同,但都致力于通过对大量文本数据的学习,挖掘出单词之间丰富的语义和语法关系,将单词映射到一个低维稠密的向量空间中,在这个空间里,语义相近的单词在位置上也更加靠近 。

(二)CBOW 模型

1. 模型架构

        CBOW 模型的结构相对简洁明了,就像一个精心搭建的信息处理管道。它主要包含输入层、隐藏层和输出层这三个关键部分 。

  • 输入层:当我们有一个句子 “我 喜欢 自然语言处理”,假设我们设定的上下文窗口大小为 2,对于中心词 “喜欢”,其上下文单词就是 “我” 和 “自然语言处理”。输入层会将这些上下文单词转化为对应的向量表示,通常使用独热编码(One - Hot Encoding)将单词映射为高维稀疏向量,然后再通过一个嵌入矩阵(Embedding Matrix)将其转换为低维稠密向量 。简单来说,就是把每个上下文单词都用一个独特的向量来表示,这些向量包含了单词的初始信息 。

  • 隐藏层:这一层的主要任务是对输入层传来的上下文单词向量进行整合。它会将所有上下文单词向量进行求和或平均操作,得到一个综合的上下文向量表示 。比如,将 “我” 和 “自然语言处理” 的向量相加后再求平均,这样就把上下文的信息浓缩到了一个向量中 ,这个向量可以看作是对整个上下文语义的一种概括 。

  • 输出层:它以隐藏层输出的上下文向量为输入,通过与一个权重矩阵相乘,再经过 Softmax 函数的处理,得到一个概率分布,这个概率分布表示了词汇表中每个单词作为中心词的可能性 。在这个例子中,输出层会计算出 “我”“喜欢”“自然语言处理” 等词汇表中所有单词成为中心词的概率,我们期望概率最高的那个单词就是实际的中心词 “喜欢” 。

2. 训练过程

        我们以句子 “鸟儿在天空中飞翔” 为例,假设窗口大小为 2,现在我们要根据上下文预测中心词 “天空”。

        准备输入:确定上下文单词为 “在”“中”,将这两个单词通过嵌入矩阵转化为对应的低维向量,假设 “在” 的向量为 [0.1, 0.2, 0.3],“中” 的向量为 [0.4, 0.5, 0.6] 。

        隐藏层计算:对这两个上下文单词向量进行平均操作,得到隐藏层向量 [(0.1 + 0.4) / 2, (0.2 + 0.5) / 2, (0.3 + 0.6) / 2 ] = [0.25, 0.35, 0.45] 。

        输出层预测:隐藏层向量与输出层权重矩阵相乘,得到一个得分向量,再经过 Softmax 函数转化为概率分布 。假设经过计算,“天空” 对应的概率为 0.8,其他单词的概率总和为 0.2 。

        计算损失与更新权重:将预测结果与真实标签(这里 “天空” 的真实标签为 1,其他单词为 0)进行对比,使用交叉熵损失函数计算损失 。根据损失值,通过反向传播算法计算梯度,更新嵌入矩阵和输出层权重矩阵的参数 ,使得模型在下次预测时能够更加准确 。这个过程就像是一个不断调整自己学习策略的学生,通过一次次的练习(训练),逐渐掌握知识(提高预测准确性) 。

(三)Skip - gram 模型

1. 模型架构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大雨淅淅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值