什么是Embedding?用来干什么?(通俗易懂版)

Embedding (向量化)——离散实例映射到连续的数值向量中

简单来说,Embedding 是一种把一些难以处理的离散对象(比如文字、图片、声音等)转化为计算机容易理解的形式——数值向量,便于数学运算和机器学习模型的处理的技术。数值向量通常具有一定的维度,每个维度上的值代表了对象的某个特性或属性,通过数值向量,计算机能够捕捉到离散对象之间的相似性、关联性以及其他内在的关系,进而便于计算机理解它们的意义,比如苹果和梨的数值向量比较接近,但是苹果和狗的数值向量就差的比较多,进而便于计算机处理和使用这些数据。这种转换有助于机器学习和深度学习算法更好地捕捉数据中的关系。

Embedding 技术就像是给计算机提供了一种语言,让它能够理解人类世界里的事物。通过将信息转化为向量,计算机就可以更好地处理和理解这些信息,从而完成各种任务,如搜索、推荐、翻译等。

特点:

  1. 降维:高维稀疏对象———>低维稠密向量,减少数据的维度,从而简化计算和提高效率。
  2. 散对象映射到连续离向量空间:Embedding 将每个离散的对象映射到一个连续的数值向量中,使得机器学习模型可以更容易地处理这些数据。
  3. 捕捉对象之间的关系:好的 Embedding 方法能够捕捉到对象之间的关系,比如相似性、语义关系、上下文信息等。

真正有意义的是这些向量(Embedding)之间的相对位置和它们之间的关系,而不是具体的向量值本身。两个向量之间的距离或相似度通常反映了它们所代表的对象之间的相似性。捕捉潜在关系,计算机通过得知对象之间的相似度来理解对象的意义。

Embedding 技术广泛应用于自然语言处理(NLP)——情感分析、机器翻译、问答系统、计算机视觉——图像检索、对象识别、推荐系统——基于用户行为和项目特征的相似性

Embedding是通过在大型数据集上训练模型来学习的,而不是由人类专家明确定义。这使得模型能够学习数据中人类难以或不可能识别的复杂模式和关系。

Embedding技术在推荐系统中的作用:

(1)在深度学习网络中作为Embedding层,完成从高维稀疏特征向量到低维稠密特征向量的转换。

(2)作为预训练的Embedding特征向量,与其他特征向量连接后,一同输入深度学习网络进行训练。

(3)通过计算用户和物品的Embedding相似度,Embedding可以直接作为推荐系统的召回层或者召回策略之一,通过计算物品和物品的Embedding相似度,得到物品的相似推荐。

深度学习的结构特点不利于稀疏特征向量的处理:

稀疏特征向量通常具有很高的维度,即使大多数维度上的值为零,增加了模型的学习难度。

### Positional Embedding 的概念和用途 在机器学习和深度学习中,尤其是自然语言处理(NLP)领域,序列数据的顺序信息至关重要。然而,传统的词嵌入方法仅能捕捉单词的意义而无法表达其在句子中的相对位置。为了弥补这一缺陷,引入了 **Positional Embedding**。 #### 什么是 Positional Embedding? Positional Embedding 是一种机制,旨在为输入序列中的每个单词附加与其位置相关的信息。这种信息使得模型能够理解单词之间的顺序关系,从而更好地建模上下文语义[^2]。具体来说: - 在 Transformer 架构中,由于自注意力机制本身不考虑单词的位置信息,因此需要显式地加入位置编码。 - 位置编码可以通过固定的方式预先定义,也可以通过可训练参数动态生成。 #### 如何实现 Positional Embedding? Transformer 论文中提出了一种基于正弦和余弦函数的方法来构建位置编码。对于给定的位置 \(pos\) 和维度 \(d_{model}\),计算方式如下所示: \[ PE(pos, 2i) = \sin\left(\frac{position}{10000^{2i/d_{model}}}\right) \] \[ PE(pos, 2i+1) = \cos\left(\frac{position}{10000^{2i/d_{model}}}\right) \] 其中: - \(pos\) 表示单词在句子中的绝对位置; - \(i\) 表示当前维度索引; - 正弦函数应用于偶数维,余弦函数则对应奇数维; 这种方法的优点在于它允许模型自动学习关注某些特定频率范围内的模式,并且具有良好的外推能力——即使遇到超出训练集中最长序列长度的情况也能有效工作。 #### 使用场景 Positional Embedding 主要用于那些依赖于序列结构的任务,比如但不限于以下几种情况: - 文本翻译:源语言句子转换为目标语言时需保留原意及语法逻辑。 - 情感分析:识别一段话的情感倾向往往取决于词语间的排列组合。 - 命名实体识别(NER): 准确标注人名、地点等专有名词离不开对其所在环境的理解。 以下是 Python 实现的一个简单例子展示如何创建并应用 positional embedding: ```python import numpy as np import torch def get_positional_encoding(max_len, d_model): pe = torch.zeros(max_len, d_model) position = torch.arange(0, max_len).unsqueeze(1) div_term = torch.exp(torch.arange(0, d_model, 2) * -(np.log(10000.0) / d_model)) pe[:, 0::2] = torch.sin(position * div_term) pe[:, 1::2] = torch.cos(position * div_term) return pe.unsqueeze(0) max_seq_length = 50 embedding_dim = 64 pe = get_positional_encoding(max_seq_length, embedding_dim) print(pe.shape) # (1, 50, 64), batch size of 1 with sequence length 50 and dimensionality 64. ``` 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值