Embedding原理

Embedding(嵌入)是将离散符号(如单词)映射到连续向量空间的核心技术,其本质是语义的数学化表示。以下是其核心原理详解:


一、基础概念图解

graph LR
    A[单词`猫`]  -->  B[索引5] --> C[向量[0.2, -1.3, 0.7...]]
    D[单词`狗`] --> E[索引8] --> F[向量[0.3, -1.1, 0.6...]]

二、工作原理分步解析

1. 建立词汇表映射
  • 为每个单词分配唯一ID(如:"猫"→5,"狗"→8)
  • 词汇表示例:
    vocab = {"<PAD>":0, "<UNK>":1, "猫":2, "狗":3, ...}
    
2. 创建嵌入矩阵
  • 矩阵维度:(词汇表大小, 嵌入维度)
    # 假设 vocab_size=10000, embedding_dim=300
    embedding_matrix = np.random.randn(10000, 300) 
    
3. 向量查找过程
  • 输入:单词索引 [2, 3] → 输出:对应行向量
    输入索引2 → 获取第2行向量:[0.2, -0.5, ..., 1.1]
    输入索引3 → 获取第3行向量:[0.3, -0.4, ..., 0.9]
    

三、关键特性解析

1. 语义捕捉能力
  • 通过向量空间中的距离反映语义相似性
    # 相似词向量距离近
    cosine_sim(,) = 0.92
    cosine_sim(, 汽车) = 0.15
    
2. 可学习性
  • 嵌入矩阵作为神经网络参数,通过反向传播自动优化
  • 训练过程示例:
    输入句子
    嵌入层
    神经网络
    预测结果
    计算损失
    反向传播更新嵌入矩阵

四、与传统方法的对比

方法维度语义表达计算效率示例
One-Hot高维[0,0,1,0]
Embedding低维[0.2, -1.3]

五、实际应用场景

  1. 文本分类:将词序列转换为向量序列输入RNN/CNN
  2. 推荐系统:用户ID/物品ID的嵌入表示
  3. 知识图谱:实体关系的向量化表示
  4. 预训练模型:BERT/GPT的输入基础层

六、PyTorch实现细节

在您看到的代码中:

self.embedding = nn.Embedding(vocab_size, embedding_dim)
  • vocab_size:词汇表总词量(如:50000)
  • embedding_dim:词向量维度(如:300)
  • 前向传播时:
    # 输入形状:(batch_size, seq_len)
    input_ids = torch.LongTensor([[1, 23, 45], [9, 2, 0]]) 
    
    # 输出形状:(batch_size, seq_len, embedding_dim)
    embedded = self.embedding(input_ids) 
    

七、可视化理解

通过t-SNE降维可视化示例:

动物
交通工具
汽车
飞机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

code 旭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值