深度学习(六) Word Embedding

本文深入探讨了词嵌入技术的基础概念,包括One-hot编码及其局限性,进而介绍WordEmbedding的不同模型,如基于计数的方法、基于预测的方法、CBOW、Skip-Gram及Glove算法,展示了如何通过这些技术捕捉词汇的语义信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

前面我们已经了解了CNN卷积神经网络,这一篇文章我们将了解Word Embedding等词汇编码


一、One-hot编码

1.为什么使用one-hot编码?

首先我们得知道传统的编码方式是怎么样的。传统的编码是通过统计类型出现次数的多少来进行编码的,也就是类别A出现的次数为m,类别B出现的次数为n,那么他们就分别编码为m,n。这样编码有可能导致求加权平均值的时候衍生成为其他类别,会体现不同类别的大小关系,误差较大。所以我们需要采用一种新的编码方式:one-hot编码(独热编码)

2.什么是one-hot编码?

使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。

3.one-hot编码的优缺点

  • 优点:
  1. 解决了分类器不好处理离散数据的问题。使用 one-hot 编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值 就 对应欧式空间的某个点。将离散型特征使用 one-hot 编码,确实会让特征之间的距离计算更加合理
  2. 在一定程度上也起到了 扩充特征 的作用。
  • 缺点:
  1. 它是一个词袋模型,不考虑词与词之间的顺序。
  2. 它假设词与词相互独立,不能体现词汇间的相似性
  3. 每个单词的one-hot编码维度是整个词汇表的大小,维度非常巨大,编码稀疏,会使得计算代价变大。

二、Word Embedding(词嵌入)

1.什么是Word Embedding?

将word看作最小的一个单元,将文本空间中的某个word,通过一定的方法,映射或者说嵌入(embedding)到另一个数值向量空间。
Word Embedding的输入是原始文本中的一组不重叠的词汇,将他们放到一个字典里面,例如:[“cat”, “eat”, “apple”],就可以作为一个输入。
Word Embedding的输出就是每个word的向量表示,变成一个矩阵。
在这里插入图片描述

2.Word Embedding的优点:

  1. 对比one-hot高维稀疏向量,embedding维度低,连续向量,方便模型训练;
  2. 语意相似的词在向量空间上也会比较相近
  3. 一个向量可以编码一词多义(歧义需要另外处理);
  4. 天然有聚类后的效果,,是一种无监督学习。
  5. 罕见词也可以学到不错的表示。

在这里插入图片描述

3.基于计数的Word Embedding

1.基于计数的Word Embedding的优缺点

  • 优点:
  1. 训练非常迅速
  2. 能够有效的利用统计信息。
  • 缺点:
  1. 主要用于获取词汇之间的相似性(其他任务表现差)
  2. 给定大量数据集,重要性与权重不成比例。

2.Co-Occurence Vector(共现向量)

相似的单词趋向于有相似的上下文(context),我们可以构建一套算法,来实现基于上下文的特征构建。
当我们设置Context Window大小为2,范围为前后两个word,那么对于such这个词,他的Context Window就是下面绿色部分。
在这里插入图片描述
对于He is not lazy. He is intelligent. He is smart.
以He这这个单词举例,他在词料库里面的所有Context Window里面与is为之共现的词语的次数就是共现矩阵中is的次数
这个语料库来说,共现矩阵应该为:
在这里插入图片描述
共现矩阵最大的优势是这种表示方法保留了语义信息,例如,通过这种表示,就可以知道哪些词语之间是相对较近的,哪些词语之间是相对较远的。

4.基于预测的Word Embedding

1.基于预测的Word Embedding的优缺点:

  • 优点:
  1. 能够对其他任务有普遍的提高
  2. 能够捕捉到含词汇相似性外的复杂模式
  • 缺点:
  1. 由于词和向量是一对一的关系,所以多义词的问题无法解决
  2. Word2vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化
  3. 没有充分利用所有的语料有存在浪费

2.CBOW(continues bag of words)

对于该语料而言,我们先对其做一个one-hot编码,然后选取Context Window为2,那么模型中的就产生了一对input和target
在这里插入图片描述

  1. 将产生的两个四维的vector输入到神经网络里面,连接激活函数。激活函数在输入层和隐藏层之间,每个input vector分别乘以一个VxN维度的矩阵,得到后的向量各个维度做平均,得到隐藏层的权重。隐藏层乘以一个NxV维度的矩阵,得到output layer的权重;
  2. 由于隐藏层的维度设置为理想中压缩后的词向量维度。示例中假设我们想把原始的4维的原始one-hot编码维度压缩到2维,那么N=2;
  3. 输出层是一个softmax层,用于组合输出概率。所谓的损失函数,就是这个output和target之间的的差(output的V维向量和input vector的one-hot编码向量的差),该神经网络的目的就是最小化这个loss;
  4. 优化结束后,隐藏层的N维向量就可以作为Word-Embedding的结果。

在这里插入图片描述
如此一来,便得到了既携带上下文信息,又经过压缩的稠密词向量。

3.Skip – Gram

这个方法可以看作是CBOW的翻转版
在这里插入图片描述

5.Glove(Global Vectors for Word Representation)

Glove算法是一种基于全局词频统计的回归算法。它不是基于神经网络的,而是基于最小二乘原理的回归方法。
它结合了上面两种算法的优点,可以有效的利用全局的统计信息。
它的过程如下:

  1. 根据语料库构建一个共现矩阵X,提出了一个衰减函数用于计算权重,也就是说距离越远的两个单词所占总计数的权重越小。
  2. 构建词向量(Word Vector)和共现矩阵(Co-ocurrence Matrix)之间的近似关系,论文的作者提出以下的公式可以近似地表达两者之间的关系:
    w i T w j ˜ + b i T + b j ˜ = log ⁡ ( X i j ) w_i^T\~{w_j}+b_i^T+\~{b_j}=\log(X_{ij}) wiTwj˜+biT+bj˜=log(Xij)
    w i T w_i^T wiT w j ˜ \~{w_j} wj˜都是待求解的词向量, b i T b_i^T biT b j ˜ \~{b_j} bj˜都是偏置量
  3. 构造LossFunction。这个loss function的基本形式就是最简单的MSE,只不过在此基础上加了一个权重函数,
    J = ∑ i , j = 1 V f ( X i j ) ( w i T w j ˜ + b i T + b j ˜ − log ⁡ ( X i j ) ) 2 J=\sum_{i,j=1}^Vf(X_{ij})(w_i^T\~{w_j}+b_i^T+\~{b_j}-\log(X_{ij}))^2 J=i,j=1Vf(Xij)(wiTwj˜+biT+bj˜log(Xij))2
  • 这些单词的权重要大于那些很少在一起出现的单词,所以这个函数要是非递减函数
  • 但我们也不希望这个权重过大(overweighted),当到达一定程度之后应该不再增加;
  • 如果两个单词没有在一起出现,他们应该不参与到loss function的计算当中去,所以 f ( 0 ) = 0 f(0)=0 f(0)=0
    在这里插入图片描述

总结

本文介绍了Word Embedding,希望大家能从中获取到想要的东西,下面附上一张思维导图帮助记忆。
在这里插入图片描述

### 深度学习 Embedding Space 的概念 在深度学习领域,Embedding Space 是指一种高维向量空间,在这个空间里,分类输入数据可以被映射成稠密的低维度实数向量表示形式[^1]。这种转换不仅能够捕捉到原始类别之间的相似性和关系,而且还能有效地减少特征维度,从而提高模型的学习效率。 对于文本处理而言,词嵌入(word embeddings)是最常见的例子之一。通过训练过程,每个单词都会对应一个特定位置上的点;这些点之间相互靠近的程度反映了它们语义上关联性的强弱程度。例如 Word2Vec 架构就是早期成功应用于生成固定大小词汇表中词语向量的技术方案[^5]。 随着研究进展和技术革新,除了传统的静态预训练好的 word embedding 外,现在也有更多动态调整机制来适应不同任务需求下的上下文敏感型表达方式,比如 BERT 使用 Transformer 结构实现了双向编码器表示法,使得同一个词可以根据前后文环境呈现出不同的含义解释。 ### 应用场景 #### 自然语言处理(NLP) - **情感分析**:通过对评论、推特帖子等内容进行 sentiment classification, 可以识别出其中蕴含的情绪倾向; - **机器翻译**:将源语言句子转化为目标语言表述时需要用到跨语言间的 alignment 和 transfer learning 技巧; - **问答系统(Q&A)**:构建智能客服机器人需要理解问题并给出恰当的回答建议。 ```python import tensorflow as tf from tensorflow.keras.layers import Embedding vocab_size = 10000 # 字典大小 embedding_dim = 16 # 向量维度 model = tf.keras.Sequential([ Embedding(input_dim=vocab_size, output_dim=embedding_dim), ]) ``` 上述代码展示了如何创建一个简单的 Keras 层级结构用于初始化 embedding layer 并将其加入序列化模型之中。这里 `input_dim` 参数定义了字典规模而 `output_dim` 则决定了输出向量长度。 #### 推荐系统(Recommendation Systems) 利用用户行为日志建立偏好模式预测未来可能感兴趣的商品或服务项目: - 商品推荐:基于历史购买记录挖掘潜在兴趣商品列表并向顾客推送促销信息。 - 内容分发平台个性化首页定制:依据浏览习惯自动更新展示内容板块布局优化用户体验满意度。 ### 实现方法概述 为了实现有效的 embedding 表达,通常会经历以下几个阶段的工作流程: - 数据准备与清洗:收集足够的样本实例并且去除噪声干扰因素影响准确性评估指标表现效果不佳的情况发生概率最小化。 - 特征提取/变换操作:针对具体应用场景选取合适的算法工具包完成从原始信号抽取有意义的信息片段的任务,如 TF-IDF 或者 One-Hot Encoding 方式都可以作为初步尝试的选择对象之一。 - 训练模型参数估计:借助反向传播机制调整权重矩阵直至损失函数收敛至局部极小值附近区域停止迭代运算过程结束为止。 - 测试验证性能评价体系搭建:采用交叉检验等统计学手段衡量泛化能力好坏进而指导后续改进方向决策制定提供科学依据支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ali forever

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

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

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

打赏作者

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

抵扣说明:

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

余额充值