news 2026/4/29 2:05:36

别再死记硬背Embedding了!从NNLM的Projection Layer入手,彻底搞懂词向量是怎么‘学’出来的

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再死记硬背Embedding了!从NNLM的Projection Layer入手,彻底搞懂词向量是怎么‘学’出来的

从NNLM投影层揭秘词向量的前世今生:为什么简单的矩阵乘法能学会语义?

在自然语言处理领域,词向量(Word Embedding)早已成为标配工具。大多数开发者都能熟练调用gensimtransformers库生成词向量,但很少有人思考:这些看似神奇的连续向量,究竟是如何从离散的符号中"学"出来的?要回答这个问题,我们需要回到2003年——Yoshua Bengio团队提出神经网络语言模型(NNLM)的那一年。在这个开创性工作中,**投影层(Projection Layer)**的设计奠定了现代词向量技术的雏形。

1. 离散符号的困境:为什么需要词向量?

计算机本质上只能处理数字。当我们把文本交给机器学习模型时,首先需要将单词转化为数值表示。最直观的方法是one-hot编码:假设词汇表有5万个词,每个词就被表示为一个5万维的向量,其中只有对应词索引的位置为1,其余全为0。

# 假设词汇表为["apple", "banana", "orange"] apple = [1, 0, 0] banana = [0, 1, 0] orange = [0, 0, 1]

这种表示方法存在三个致命缺陷:

  1. 维度灾难:词汇量稍大(如10万词)就会产生极高维度的稀疏向量
  2. 语义盲区:所有向量两两正交,无法表达"苹果和橙子都是水果"这类语义关系
  3. 上下文绝缘:同一个词在不同语境下(如"苹果手机"和"吃苹果")具有相同表示

提示:one-hot向量的余弦相似度永远为0,这与人类对词语相似度的认知完全背离

2. NNLM的突破:投影层如何实现降维与语义编码

Bengio团队的解决方案颇具巧思——在输入层和隐藏层之间插入一个线性投影层。这个设计解决了上述所有问题:

2.1 矩阵乘法:从查表到语义提取

投影层的操作本质上是矩阵乘法。假设词汇表大小V=7,想要得到维度M=3的词向量,权重矩阵W就是一个7×3的矩阵:

W = [ [w11, w12, w13], # 词1的向量 [w21, w22, w23], # 词2的向量 ... [w71, w72, w73] # 词7的向量 ]

当one-hot向量[0,1,0,0,0,0,0](假设代表"banana")与W相乘时:

import numpy as np one_hot = np.array([0,1,0,0,0,0,0]) W = np.random.rand(7,3) # 随机初始化权重 embedding = np.dot(one_hot, W) # 结果等于W的第二行

这个操作的神奇之处在于:

  • 计算效率:实际不需要做完整矩阵乘法,直接索引对应行即可(查表)
  • 参数共享:所有词共享同一个投影矩阵W
  • 语义编码:W的行向量就是对应词的分布式表示

2.2 为什么不需要激活函数?

与传统神经网络层不同,投影层刻意省略了非线性激活函数。这背后的考量是:

设计选择有激活函数无激活函数
表示能力引入非线性保持线性变换
训练难度梯度消失风险梯度传播稳定
语义保持可能扭曲空间保持几何关系

在词向量场景下,我们希望相似的词在向量空间中距离相近。线性变换已经足以建立这种关系,额外的非线性反而可能破坏语义的几何表达。

3. 训练过程:统计规律如何转化为向量空间

投影层的精妙之处在于:权重矩阵不是人工设计的,而是通过语言模型任务自动学习的。具体来说:

  1. 初始化随机矩阵W
  2. 用窗口内的词预测下一个词(如用"the fat cat"预测"sat")
  3. 通过预测误差反向传播,调整W的参数
  4. 重复数百万次后,W的行向量就编码了词汇的统计规律

这个过程中,语义相似的词(如"cat"和"dog")会在相似上下文中出现,导致它们的向量向相似方向调整。最终形成的向量空间具有以下性质:

  • 语义相似性:动物相关词聚集在一起
  • 线性关系:"king - man + woman ≈ queen"
  • 上下文敏感:多义词在不同语境下有不同表示

注意:这种表示是分布式(distributed)的——每个维度没有明确含义,但整体编码了丰富的语言特征

4. 从NNLM到现代词向量:技术演进与核心传承

虽然NNLM已被更先进的模型取代,但投影层的核心思想延续至今:

  1. Word2Vec:将NNLM简化为专门的词向量训练工具
    • CBOW:用上下文预测中心词
    • Skip-gram:用中心词预测上下文
  2. GloVe:显式建模词共现统计量
  3. BERT:引入上下文相关的动态表示

现代方法的改进主要体现在:

  • 训练目标:从语言模型扩展到掩码预测等任务
  • 架构创新:引入注意力机制等新结构
  • 规模扩展:参数量和训练数据大幅增加

但万变不离其宗——将离散符号映射到连续空间的核心机制,仍然源自NNLM的投影层设计

5. 实践启示:如何更好地理解和应用词向量

理解投影层的本质,能帮助我们在实际工作中做出更明智的选择:

  1. 维度选择:不是越大越好

    • 小型语料:50-100维
    • 通用语料:300维通常足够
    • 专业领域:可能需要更高维度
  2. 初始化策略对比

方法优点缺点
随机初始化简单直接需要更多训练数据
预训练加载快速收敛可能带入领域偏差
混合初始化平衡效果实现复杂
  1. 领域适配技巧
    • 继续训练(continual training)预训练向量
    • 构建领域特定的子词表
    • 调整上下文窗口大小

在可视化分析时,不妨用PCA或t-SNE将高维向量降维到2D/3D空间,观察词向量的空间分布是否符合语义直觉。这能帮助我们直观理解投影层学到的表示质量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 2:03:59

Gitee:本土化项目管理软件如何重塑中国企业的研发流程?

在数字化转型的浪潮席卷全球的今天,项目管理软件已经成为企业提升研发效率的核心引擎。作为中国领先的研发效能平台,Gitee(码云)凭借其独特的产品定位和技术优势,正在重新定义国内企业的软件开发范式。这款集代码托管、…

作者头像 李华
网站建设 2026/4/29 2:03:34

零基础入门网安|6_个月从小白到拿offer,怎么学的?

零基础入门网安|6 个月从小白到拿offer,怎么学的? 有粉丝说刷到 “网安工程师月薪 30K” 时心潮澎湃,点开教程却直接懵了 ——“TCP/IP 协议”“Linux 命令”“漏洞挖掘” 堆在一起,不知道从哪下手。跟风装了 Kali 系统…

作者头像 李华
网站建设 2026/4/29 2:01:53

告别混乱:PCIe 6.0的Shared Buffer用Credit Block实现了怎样的秩序?

PCIe 6.0的秩序革命:Shared Buffer如何用Credit Block终结碎片化乱局 在计算机体系结构的发展历程中,效率与复杂度的博弈从未停歇。PCIe 6.0带来的Shared Flow Control机制,特别是其核心创新Credit Block,正在为高性能计算、AI加速…

作者头像 李华
网站建设 2026/4/29 1:58:42

开源闪电探测器Flash Bee:低成本DIY雷电预警方案

1. 项目概述:Flash Bee闪电探测器去年夏天我在山区露营时,差点被突如其来的雷暴困住。那次经历让我意识到,如果能提前15分钟知道闪电的接近,就能避免很多危险。这就是为什么我对Flash Bee这个开源项目一见钟情——它用不到100美元…

作者头像 李华
网站建设 2026/4/29 1:57:39

喜报 | Bigemap荣登“2025软件和信息技术服务企业品牌TOP100”榜单!

2026年4月21日,第五届中国国际软件发展大会在国家会议中心盛大开幕。作为国内软件与信息技术服务业内规格最高、影响力最广的年度盛事之一,大会重磅发布了 “2025年软件和信息技术服务企业品牌TOP100” 榜单。Bigemap(成都比格图数据有限公司…

作者头像 李华