对于独热编码余弦相似度结果为0和词向量解决了词之间相似性问题的理解

文章目录

  • 深入理解
  • 简单案例
  • 结论
  • 词向量(Word Embedding)简介
  • 词向量如何解决相似性问题?
  • 简单案例:基于上下文的词向量训练
  • 总结

  • 对于独热表示的向量,如果采用余弦相似度计算向量间的相似度,可以明显的发现任意两者向量的相似度结果都为 0,即任意二者都不关,也就是说独热表示无法解决词之间的相似性问题。

深入理解

  • 独热编码(One-Hot Encoding)是一种将类别型变量转换为二进制向量的方法。对于一个有NNN 个不同类别的特征,独热编码会创建一个长度为NNN的向量,其中只有一个元素为 1(表示当前类别),其余元素为 0。例如,对于三个类别 “猫”、“狗”、“鸟”,其独热编码可能分别为 [1,0,0][1, 0, 0][1,0,0][0,1,0][0, 1, 0][0,1,0][0,0,1][0, 0, 1][0,0,1]
  • 余弦相似度用于衡量两个向量在方向上的相似性,其中 A⋅BA \cdot BAB 是向量的点积,∣A∣|A|A∣B∣|B|B 是向量的模(欧几里得范数)。计算公式为:
    余弦相似度=A⋅B∥A∥⋅∥B∥\text{余弦相似度} = \frac{A \cdot B}{\|A\| \cdot \|B\|} 余弦相似度=ABAB

对于任意两个不同的独热向量:

  • 点积A⋅B=0A \cdot B = 0AB=0(因为独热向量只有一个 1,且不同向量的 1 位置不同)。
  • 每个向量的模 ∣A∣=∣B∣=1|A| = |B| = 1A=B=1(因为只有一个 1,其余为 0)。

因此,余弦相似度为:
余弦相似度=01⋅1=0\text{余弦相似度} = \frac{0}{1 \cdot 1} = 0 余弦相似度=110=0

  • 这表明任意两个不同的独热向量是完全不相关的(相似度为 0),无法反映它们之间可能存在的语义或实际关系。

简单案例

假设我们有以下三个词的独热编码:

  • “猫”:[1,0,0][1, 0, 0][1,0,0]
  • “狗”:[0,1,0][0, 1, 0][0,1,0]
  • “鸟”:[0,0,1][0, 0, 1][0,0,1]

计算 “猫” 和 “狗” 的余弦相似度:

  1. 点积:
    [1,0,0]⋅[0,1,0]=(1⋅0)+(0⋅1)+(0⋅0)=0[1, 0, 0] \cdot [0, 1, 0] = (1 \cdot 0) + (0 \cdot 1) + (0 \cdot 0) = 0 [1,0,0][0,1,0]=(10)+(01)+(00)=0
  2. 模:
    ∥[1,0,0]∥=12+02+02=1∥[0,1,0]∥=02+12+02=1\|[1, 0, 0]\| = \sqrt{1^2 + 0^2 + 0^2} = 1 \\ \|[0, 1, 0]\| = \sqrt{0^2 + 1^2 + 0^2} = 1 [1,0,0]=12+02+02=1[0,1,0]=02+12+02=1
  3. 余弦相似度:
    01⋅1=0\frac{0}{1 \cdot 1} = 0 110=0

计算 “猫” 和 “鸟” 的余弦相似度:

  1. 点积:
    [1,0,0]⋅[0,0,1]=(1⋅0)+(0⋅0)+(0⋅1)=0[1, 0, 0] \cdot [0, 0, 1] = (1 \cdot 0) + (0 \cdot 0) + (0 \cdot 1) = 0 [1,0,0][0,0,1]=(10)+(00)+(01)=0
  2. 模:
    ∥[1,0,0]∥=1∥[0,0,1]∥=1\|[1, 0, 0]\| = 1 \\ \|[0, 0, 1]\| = 1 [1,0,0]=1[0,0,1]=1
  3. 余弦相似度:
    01⋅1=0\frac{0}{1 \cdot 1} = 0 110=0

计算 “狗” 和 “鸟” 的余弦相似度:

  1. 点积:
    [0,1,0]⋅[0,0,1]=(0⋅0)+(1⋅0)+(0⋅1)=0[0, 1, 0] \cdot [0, 0, 1] = (0 \cdot 0) + (1 \cdot 0) + (0 \cdot 1) = 0 [0,1,0][0,0,1]=(00)+(10)+(01)=0
  2. 模:
    ∥[0,1,0]∥=1∥[0,0,1]∥=1\|[0, 1, 0]\| = 1 \\ \|[0, 0, 1]\| = 1 [0,1,0]=1[0,0,1]=1
  3. 余弦相似度:
    01⋅1=0\frac{0}{1 \cdot 1} = 0 110=0

结论

  • 通过计算可以发现,任意两个不同词的独热编码的余弦相似度均为 0。表明独热编码无法捕捉词与词之间的相似性(例如 “猫” 和 “狗” 都是动物,但相似度为 0)。
  • 这是独热编码的局限性之一,因此在实际 NLP 任务中通常会使用更高级的词表示方法(如词嵌入 Word2Vec、GloVe 等)来解决这一问题。

词向量(Word Embedding)简介

  • 词向量(Word Embedding)是一种将词语映射到低维连续向量空间的技术,其核心思想是让语义或用法相似的词在向量空间中距离更近。与独热编码不同,词向量是稠密向量(非稀疏),每个维度表示词的某种潜在语义或语法特征(如“性别”、“动作”、“情感”等)。

关键特点:

  1. 低维稠密:通常维度为 50-300(远小于独热编码的维度)。
  2. 语义可计算:通过向量运算可以捕捉词的关系(如“国王 - 男 + 女 ≈ 女王”)。
  3. 相似性量化:余弦相似度可以反映词之间的语义相关性。

词向量如何解决相似性问题?

独热编码的相似度恒为 0,而词向量通过以下方式解决:

  1. 相似词向量接近:通过训练(如预测上下文),模型会使得“猫”和“狗”的向量方向接近。
  2. 连续空间表示:向量的每一维对应某种潜在特征,例如:
    • 维度1:动物性(猫=0.9,狗=0.8,汽车=0.1)
    • 维度2:家用性(猫=0.7,狗=0.6,汽车=0.3)

简单案例:基于上下文的词向量训练

  • 假设有一个小型语料库和简化的词向量(维度=2):句子:"猫 吃 鱼", "狗 吃 肉"
  • 初始随机向量(训练前):
    • 猫: [0.2, 0.4]
    • 狗: [0.3, 0.1]
    • 吃: [0.5, 0.5]
    • 鱼: [0.1, 0.6]
    • 肉: [0.2, 0.2]

  • 目标:通过训练(如Skip-gram模型),调整向量使得共享上下文的词(如“猫”和“狗”都邻近“吃”)在向量空间中接近。

训练步骤(简化):

  1. 输入“吃”,预测上下文“猫”或“狗”。
  2. 计算“吃”的向量与“猫”的向量点积,通过Softmax得到概率。
  3. 根据预测误差反向传播,更新“吃”、“猫”、“狗”的向量。

训练后可能结果(假设):

  • 猫: [0.8, 0.5]
  • 狗: [0.7, 0.4]
  • 吃: [0.6, 0.6]

此时,“猫”和“狗”的向量更接近。


计算相似度(训练后)
余弦相似度公式:
相似度=A⋅B∥A∥⋅∥B∥\text{相似度} = \frac{A \cdot B}{\|A\| \cdot \|B\|} 相似度=ABAB

  1. 猫 vs 狗:
    • 点积:0.8×0.7+0.5×0.4=0.56+0.20=0.760.8 \times 0.7 + 0.5 \times 0.4 = 0.56 + 0.20 = 0.760.8×0.7+0.5×0.4=0.56+0.20=0.76
    • 模:∣A∣=0.82+0.52≈0.94|A| = \sqrt{0.8^2 + 0.5^2} \approx 0.94A=0.82+0.520.94,∣B∣≈0.81|B| \approx 0.81B0.81
    • 相似度:0.760.94×0.81≈0.99\frac{0.76}{0.94 \times 0.81} \approx 0.990.94×0.810.760.99

  1. 猫 vs 肉(无关词):
    • 假设“肉”向量为 [0.2, 0.2]
    • 点积:0.8×0.2+0.5×0.2=0.260.8 \times 0.2 + 0.5 \times 0.2 = 0.260.8×0.2+0.5×0.2=0.26
    • 相似度:0.260.94×0.28≈0.99\frac{0.26}{0.94 \times 0.28} \approx 0.990.94×0.280.260.99

词向量的典型应用

  1. 词类比任务: 国王−男+女≈女王\text{国王} - \text{男} + \text{女} \approx \text{女王}国王+女王
  2. 文本分类:将词向量求和/平均作为句子表示。
  3. 语义搜索:用向量相似度匹配查询词和相关文档。

总结

词向量通过将词映射到连续空间,使得:

  • 语义相似的词向量距离接近。
  • 支持向量运算捕捉复杂关系(如类比关系)。
  • 解决了独热编码无法表示相似性的缺陷。

实际中,Word2Vec、GloVe等模型通过大规模语料训练,自动学习这种分布式表示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88965.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构·数状数组(BIT)

树状数组(Binary Index Tree) 英文名:使用二进制下标的树结构 理解:这个树实际上用数组来存,二进制下标就是将正常的下标拆为二进制来看。 求x的最低位1的函数lowbit(x) 假设x的二进制表示为x ...10000,…

uniapp video视频全屏播放后退出,页面字体变大,样式混乱问题

uniapp官方的说法是因为页面使用rpx,但是全屏和退出全屏自动计算屏幕尺寸不支持rpx,建议使用px。但是因为uniapp端的开发都是使用rpx作为屏幕尺寸计算参数,不可能因为video全屏播放功能就整个全部修改,工作量大,耗时耗…

重复频率较高的广告为何一直在被使用?

在日常生活中,重复评率较高的洗脑广告我们时常能够碰到。广告的本质是信息传递,而重复频率较高的广告往往可以通过洗脑式的传播方式来提升传播效率。下面就让我们一同来了解下,为何这类广告一直受到企业的青睐。一、语义凝练高频率广告的内容…

内容管理系统指南:企业内容运营的核心引擎

内容管理看似简单,实际上随着内容量的激增,管理难度也逐步提升。尤其是在面对大量页面、图文、视频资料等数字内容时,没有专业工具的支持,效率与准确性都会受到挑战。此时,内容管理系统(CMS)应运…

文献查找任务及其方法

1. 必备网站: 谷歌学术 Web of Science Engineering Village CNKI翻译助手 科研通 2. 任务 学术上的一个调研,自动驾驶 3d 目标检测 方向的近7年的方法,模态(相机/雷达/相机雷达 等),及其使用的数据集&a…

鸿蒙的NDK开发初级入门篇

初级必备的知识: NDK开发在什么时候用? 答::NDK 开发在帮助应用提升性能的情况下使用,比如游戏开发,和硬件交互的场景中。 还有一个公司已经有标准的C或C库,不想在开发ArkTS的代码前提下。 开发…

Unity发布Windows平台后通过Advanced Installer制作安装包

Unity发布Windows平台后是一堆库资源,以及一个可执行的exe文件,并不是一个安装包,如果需要制作成安装包,需要再进一步打包,本篇文章介绍一个Advanced Installer的软件,专门用来制作Windows平台的安装包的。…

代数基本定理

代数基本定理 多项式 f(z)anznan−1zn−1⋯a1za0f(z) a_n z^n a_{n-1} z^{n-1} \cdots a_1 z a_0f(z)an​znan−1​zn−1⋯a1​za0​(其中 n>1n > 1n>1 且 an,a0≠0a_n,a_0 \neq 0an​,a0​0)在复数域内有根。 约定 以 ttt 为参数的闭曲…

springboot快速集成对接本地Ollama里的Deepseek-R1

书接上回,我们在本地安装了一个Ollama,然后下载了一个deepseek-r1:7b,传送门 本次目标:使用springboot对接ollama,完成简单api对接 1.创建一个项目,选择JDK17,Spring Boot版本3.5.3&#xff0c…

Docker部署私有仓库

环境信息 centos7:docker26.1.4 IP:192.168.12.134 部署harbor wget https://github.com/goharbor/harbor/releases/download/v2.13.1/harbor-offline-installer-v2.13.1.tgz curl -L "https://github.com/docker/compose/releases/download/1.29.2…

张艺兴探班RED女团一周年舞台,见证21岁的梦想落地生根

从青涩的男团偶像,到如今独当一面的音乐制作人、公司老板,张艺兴的每一步都踏得坚定有力,他的故事充满了热血与梦想的色彩。而最近,他探班RED女团一周年舞台现场的举动,又一次成为粉丝和大众热议的焦点,也让…

网络编程 JAVA

一.网络编程1. 什么是网络编程?网络编程是指利用计算机网络实现程序之间通信的一种编程方式。在网络编程中,程序需要通过网络协议(如 TCP/IP)来进行通信,以实现不同计算机之间的数据传输和共享。2. 三个基本要素①IP …

UE5中的cesium

官方Fab地址(https://www.fab.com/zh-cn/),每月可下载免费素材 在UE5中添加插件cesium for unreal, 知识点一:服务器部署.b3dm地形数据 通过在线链接访问数据目录tileset.json,在cesium for unreal添加空白…

持续优化小程序排名,稳定获取搜索流量

一、建立动态关键词管理机制周期性关键词迭代每月通过平台搜索分析工具(如微信小程序后台)抓取用户搜索词趋势,淘汰搜索量下降的关键词,补充行业热点词与长尾需求词。按 “核心词 季节 / 场景词” 动态调整名称与简介&#xff08…

MyBatis 进阶:连接池、动态 SQL 与多表关联查询

MyBatis 作为一款灵活的持久层框架,除了基础的 CRUD 操作,还提供了连接池管理、动态 SQL 以及多表关联查询等高级特性。本文将从连接池原理出发,深入讲解动态 SQL 的常用标签,并通过实例演示一对多、多对多等复杂关联查询的实现&a…

反射型跨站点脚本(XSS)漏洞中网络安全防火墙(WAF)被绕过进行内容植入与远程劫持机制分析

在一次安全测试中&#xff0c;我发现目标站点在错误处理页面对用户输入的查询参数名未做任何转义&#xff0c;当参数名中包含 <script> 标签时&#xff0c;页面会原样渲染并执行其中的 JavaScript。本文将从实战角度&#xff0c;详细讲解如何定位该反射型 XSS 漏洞、通过…

RAG实战指南 Day 15:多语言与领域特定嵌入技术

【RAG实战指南 Day 15】多语言与领域特定嵌入技术 引言 欢迎来到"RAG实战指南"系列的第15天&#xff01;今天我们将深入探讨多语言与领域特定嵌入技术——这是构建全球化、专业化RAG系统的关键技术。在现实业务场景中&#xff0c;我们经常需要处理多种语言的文档&a…

无铅PCB和无卤pcb有什么区别?

在电子制造领域&#xff0c;环保法规的升级催生了多种特殊工艺的PCB产品。其中&#xff0c;无铅PCB与无卤PCB作为两大主流方向&#xff0c;虽同属绿色制造范畴&#xff0c;却在技术路径与应用场景上存在本质差异。环保指向的根本区别无铅PCB的核心在于焊接材料的革新。传统PCB采…

基于51单片机的贪吃蛇游戏Protues仿真设计

目录 1 系统设计目的 2 系统实现功能 3 系统硬件设计 3.1系统设计框图 3.2 液晶显示模块LCD12864 3.3 按键输入模块 3.4 时钟电路和复位电路 4 系统软件设计 4.1系统软件流程 4.2 游戏引擎模块程序设计 4.3 显示模块程序设计 4.4 输入处理模块程序设计 5 系统仿真…

HTML+CSS

一、HTML相关内容- <img> 标签&#xff1a;- 用于在网页中嵌入图像&#xff0c; src 属性指定图像的路径&#xff0c;可以是绝对路径&#xff08;如 D:\Git\java115_java116\课堂代码\前端代码\pic\cat.jpg &#xff09;、相对路径&#xff08;如 ./pic/cat.jpg &#x…