04.C1W3.Vector Space Models

news2025/1/10 16:51:47

往期文章请点这里

目录

  • Vector Space Models
  • Word by Word and Word by Doc
    • Word by Document Design
    • Word by Document Design
    • Vector Space
  • Euclidean Distance
    • Euclidean distance for n-dimensional vectors
  • Euclidean distance in Python
  • Cosine Similarity: Intuition
  • Cosine Similarity
    • Previous definitions
    • Cosine Similarity
  • Manipulating Words in Vector Spaces
  • Visualization and PCA
    • Visualization of word vectors
  • Principal Component Analysis
  • PCA Algorithm

往期文章请点 这里

Vector Space Models

在实际生活中,经常会出现以下两种场景:
相同文字不同含义:
在这里插入图片描述
不同文字相同含义:
在这里插入图片描述
这些是之前的语言模型无法处理的问题,而向量空间模型不但可以区分以上场景,还能捕获单词之间的依赖关系。
You eat cereal from a bowl
麦片和碗是强相关
You buy something and someone else sells it
这里的买依赖于卖
这个优点使得向量空间模型可以用于下面任务:
在这里插入图片描述

著名语言学学者(Firth, J. R. 1957:11)说过:
“You shall know a word by the company it keeps”
指出了上下文对当前词的表达有很大影响。

Word by Word and Word by Doc

构建共现矩阵(W/W and W/D 两种),并为语料库的单词提取向量表示。

Word by Document Design

两个不同单词的共现是它们在语料库中在一个特定的词距内一起出现的次数。
Number of times they occur together within a certain distance k k k
例如,假设语料库有以下两个句子。
在这里插入图片描述
假设 k = 2 k=2 k=2,则单词data的共现次数如下:
在这里插入图片描述
这里n取值在1到词表大小之间。data和simple在第一句话距离是1,第二句话距离是2:
在这里插入图片描述

Word by Document Design

计算来自词汇表的单词在属于特定类别的文档中出现的次数。
Number of times a word occurs within a certain category
例如下图中,语料库包含三类文档,然后可以计算某个单词分别在三类文档中出现的次数。
在这里插入图片描述

Vector Space

完成多组文档或单词的表示后,接下来可以构建向量空间。
以上面的矩阵为例
在这里插入图片描述
可以用行来表示单词,列表示文档,若以data和film构建坐标系,则可以根据矩阵中的数值得到向量表示:
在这里插入图片描述
从向量空间表示中可以看到,economy的ML的文档相似度要更大一些
当然这个相似度可以用计算Angle Distance来数字化度量。

Euclidean Distance

Euclidean Distance允许我们确定两个点或两个向量彼此之间的距离。
书接上回,假设有两个语料的向量表示为:
在这里插入图片描述

放到二维空间中:
在这里插入图片描述
用点表示他们后,可以用欧氏距离很衡量二者的相似度:
在这里插入图片描述
具体公式:
d ( B , A ) = ( B 1 − A 1 ) 2 + ( B 2 − A 2 ) 2 d(B,A)=\sqrt{(B_1-A_1)^2+(B_2-A_2)^2} d(B,A)=(B1A1)2+(B2A2)2
B 1 − A 1 B_1-A_1 B1A1 B 2 − A 2 B_2-A_2 B2A2分别对应上图中水平和垂直距离。
本例中带入数字:
d ( B , A ) = ( − 8820 ) 2 + ( 6000 ) 2 ≈ 10667 d(B,A)=\sqrt{(-8820)^2+(6000)^2}\approx10667 d(B,A)=(8820)2+(6000)2 10667

Euclidean distance for n-dimensional vectors

对于高维向量,欧氏距离仍然适用,例如:
在这里插入图片描述
想要计算ice-cream和boba的欧氏距离,则可以使用以下公式:
d ( v ⃗ , w ⃗ ) = ∑ i = 1 n ( v i − w i ) 2 等价于求范数Norm of ( v ⃗ , w ⃗ ) d(\vec{v},\vec{w})=\sqrt{\sum_{i=1}^n(v_i-w_i)^2}等价于求范数\text{Norm of}(\vec{v},\vec{w}) d(v ,w )=i=1n(viwi)2 等价于求范数Norm of(v ,w )
ice-cream和boba的欧氏距离可以写为:
( 1 − 0 ) 2 + ( 6 − 4 ) 2 + ( 8 − 6 ) 2 = 1 + 4 + 4 = 3 \sqrt{(1-0)^2+(6-4)^2+(8-6)^2}=\sqrt{1+4+4}=3 (10)2+(64)2+(86)2 =1+4+4 =3

Euclidean distance in Python

在这里插入代码片
# Create numpy vectors v and w
v np. array([1, 6, 8])
w np. array([0, 4, 6])
# Calculate the Euclidean distance d
d = np.linalg.norm(v-w)
# Print the result
print (("The Euclidean distance between v and w is: ", d)

Cosine Similarity: Intuition

先给结论:当语料库中文章包含单词数量差异较大时,使用Cosine Similarity
余弦相似度使用文档之间的角度,因此不依赖于语料库的大小。

假设我们有eggs和disease两个单词在三个语料库中图像如下:
在这里插入图片描述
语料库中各个类型的文章单词数量不相同,这里的Agriculture和History文章单词数量基本相同,而Food文章单词较少。Agriculture与其他两类文章的欧式距离分别写为: d 1 d_1 d1 d 2 d_2 d2
在这里插入图片描述
从图中可以看到 d 2 < d 1 d_2<d_1 d2<d1,表示Agriculture和History文章相似度更高。
余弦相似度是指The cosine of the angle between the vectors. 当角度接近90度时,余弦接近于0。
在这里插入图片描述
从余弦相似度上看, β > α \beta>\alpha β>α,表示Agriculture和Food文章相似度更高。

Cosine Similarity

Previous definitions

先回顾两个定义:
Vector norm,向量的模(范数)可以表示为:
∣ ∣ v ⃗ ∣ ∣ = ∑ i = 1 n v i 2 ||\vec{v}||=\sqrt{\sum_{i=1}^nv_i^2} ∣∣v ∣∣=i=1nvi2
Dot product点乘可以表示为:
v ⃗ ⋅ w ⃗ = ∑ i = 1 n v i ⋅ w i \vec{v}\cdot \vec{w}=\sum_{i=1}^nv_i\cdot w_i v w =i=1nviwi

下面是点乘推导:

设有两个向量 a \mathbf{a} a b \mathbf{b} b,在 n n n维空间中的坐标分别为 ( a 1 , a 2 , … , a n ) (a_1, a_2, \ldots, a_n) (a1,a2,,an) ( b 1 , b 2 , … , b n ) (b_1, b_2, \ldots, b_n) (b1,b2,,bn)。这两个向量的点积定义为:
a ⋅ b = a 1 b 1 + a 2 b 2 + … + a n b n \mathbf{a} \cdot \mathbf{b} = a_1b_1 + a_2b_2 + \ldots + a_nb_n ab=a1b1+a2b2++anbn

向量 a \mathbf{a} a b \mathbf{b} b 的范数(长度)分别是:
∥ a ∥ = a 1 2 + a 2 2 + … + a n 2 \|\mathbf{a}\| = \sqrt{a_1^2 + a_2^2 + \ldots + a_n^2} a=a12+a22++an2
∥ b ∥ = b 1 2 + b 2 2 + … + b n 2 \|\mathbf{b}\| = \sqrt{b_1^2 + b_2^2 + \ldots + b_n^2} b=b12+b22++bn2

两个向量之间的夹角 θ \theta θ 的余弦值可以通过点积和范数来表示:
cos ⁡ ( θ ) = a ⋅ b ∥ a ∥ ∥ b ∥ \cos(\theta) = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|} cos(θ)=a∥∥bab

将点积的公式代入上述表达式,我们得到:
cos ⁡ ( θ ) = a 1 b 1 + a 2 b 2 + … + a n b n a 1 2 + a 2 2 + … + a n 2 b 1 2 + b 2 2 + … + b n 2 \cos(\theta) = \frac{a_1b_1 + a_2b_2 + \ldots + a_nb_n}{\sqrt{a_1^2 + a_2^2 + \ldots + a_n^2} \sqrt{b_1^2 + b_2^2 + \ldots + b_n^2}} cos(θ)=a12+a22++an2 b12+b22++bn2 a1b1+a2b2++anbn

如果我们将 cos ⁡ ( θ ) \cos(\theta) cos(θ) 乘以 a \mathbf{a} a b \mathbf{b} b,我们可以得到点积的另一种形式:
∥ a ∥ ∥ b ∥ cos ⁡ ( θ ) = a 1 b 1 + a 2 b 2 + … + a n b n = a ⋅ b \|\mathbf{a}\| \|\mathbf{b}\| \cos(\theta) = a_1b_1 + a_2b_2 + \ldots + a_nb_n=\mathbf{a} \cdot \mathbf{b} a∥∥bcos(θ)=a1b1+a2b2++anbn=ab

Cosine Similarity

下图是单词eggs和disease在语料Agriculture和History出现频率的可视化表达。
在这里插入图片描述
根据上面推导的公式:
v ^ ⋅ w ^ = ∣ ∣ v ^ ∣ ∣ ∣ ∣ w ^ ∣ ∣ cos ⁡ ( β ) cos ⁡ ( β ) = v ^ ⋅ w ^ ∣ ∣ v ^ ∣ ∣ ∣ ∣ w ^ ∣ ∣ = ( 20 × 30 ) + 40 × 20 2 0 2 + 4 0 2 × 3 0 2 + 2 0 2 = 0.87 \hat v\cdot\hat w =||\hat v||||\hat w||\cos(\beta)\\ \cos(\beta)=\cfrac{\hat v\cdot\hat w}{||\hat v||||\hat w||}\\ =\cfrac{(20\times30)+40\times20}{\sqrt{20^2+40^2}\times\sqrt{30^2+20^2}}=0.87 v^w^=∣∣v^∣∣∣∣w^∣∣cos(β)cos(β)=∣∣v^∣∣∣∣w^∣∣v^w^=202+402 ×302+202 (20×30)+40×20=0.87
下面是余弦相似度的两个特殊情形:
在这里插入图片描述
在这里插入图片描述
注意:
Cosine Similarity gives values between 0 and 1.

Manipulating Words in Vector Spaces

扩展阅读:[Mikolov et al, 2013, Distributed Representations of Words and Phrases and their Compositionality]
这里的Manipulating Words,是指对词向量的加减(平移向量),使得我们可以计算对应关系,例如:已有国家和首都的词向量空间,已知漂亮国首都是DC(漫威表示不服),求大毛的首都是什么。
在这里插入图片描述
在本例子中,我们有一个假想的二维向量空间,里面包含了不同国家和首都的不同向量表示:
在这里插入图片描述
这里我们可以计算USA到Washington的向量差异(也相当于求USA到Washington之间的关系,也就是求连接二者的向量)
在这里插入图片描述
Washington-USA = [5 -1]
通过这个我们就可以知道要找到一个国家的首都需要移动多少距离,对于大毛就有:
Russia + [5 -1]=[10 4]
在这里插入图片描述
虽然[10 4]没有匹配到具体的城市,我们可以进一步比较每个城市的欧氏距离或者余弦相似性找到最邻近的城市。
在这里插入图片描述
答案是:Moscow

Visualization and PCA

可视化可以让我们很直观的看到单词的相似性,当单词的向量表示通常是高维的,需要我们将其降维到2D空间便于绘图,这里先学其中一种降维写方式:PCA

Visualization of word vectors

在这里插入图片描述
假设词向量维度远大于2,已知oil和gas,city和town相似度较高,如何可视化他们之间的关系?答案就是降维:
在这里插入图片描述
然后再进行可视化,则可得到类似下图的结果:
在这里插入图片描述

Principal Component Analysis

以二维空间为例来看:
在这里插入图片描述
降维就是将Uncorrelated Features映射到另外一个维度空间,并尽量保留更多信息,二维的映射方式一眼就可以看出来,就是垂直映射:
在这里插入图片描述

PCA Algorithm

在线代中有两个概念:Eigenvector(特征向量)和Eigenvalue(特征值)
特征值(Eigenvalue):
特征值是与线性变换相关联的一个标量,它描述了在该变换下,一个向量被缩放的比例。
对于一个给定的线性变换(由矩阵表示),如果存在一个非零向量 v v v,使得变换后的向量与原向量成比例,即 A v = λ v Av=\lambda v Av=λv,其中 A A A 是矩阵, λ \lambda λ 是一个标量,那么 λ \lambda λ 就是 A A A 的一个特征值,而 v v v 就是对应的特征向量。
特征向量(Eigenvector):
特征向量是线性变换下保持方向不变的向量,或者更准确地说,是方向被缩放的向量。
在上述方程 A v = λ v Av=\lambda v Av=λv 中,如果 λ ≠ 0 \lambda\neq 0 λ=0,那么 v v v 就是 A A A 的一个特征向量,它与特征值 λ \lambda λ 配对出现。
不需要知道如何计算这两个东西
算法第一步是为这一步获取一组无关的特征,需要对数据进行归一化,然后计算方差矩阵。
Mean Normalize Data  x i = x i − μ x i σ x i \text{Mean Normalize Data }x_i=\cfrac{x_i-\mu_{x_i}}{\sigma_{x_i}} Mean Normalize Data xi=σxixiμxi
第二步计算方差矩阵(Get Covariance Matrix): Σ \Sigma Σ
第三步奇异值分解(Perform SVD)得到一组三个矩阵: S V D ( Σ ) SVD(\Sigma) SVD(Σ)
在这里插入图片描述
SVD可以直接调用函数解决不用搓轮子。
然后进行投影,将Eigenvector(特征向量)和Eigenvalue(特征值)分别记为 U U U S S S
在这里插入图片描述
然后通过X点积U的前面两列来投影数据,这里我们只保留两列以形成二维可视化空间:
在这里插入图片描述
Percentage of Retained Variance: 这表示保留的方差百分比。在PCA中,我们通常选择前几个主成分来近似原始数据,这些主成分加起来解释了原始数据的一定比例的方差。

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

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

相关文章

关于新装Centos7无法使用yum下载的解决办法

起因 之前也写了一篇类似的文章&#xff0c;但感觉有漏洞&#xff0c;这次想直接把漏洞补齐。 问题描述 在我们新装的Centos7中&#xff0c;如果想要用C编程&#xff0c;那就必须要用到yum下载&#xff0c;但是&#xff0c;很多新手&#xff0c;包括我使用yum下载就会遇到一…

在DevEco运行typeScript代码,全网详细解决执行Set-ExecutionPolicy RemoteSigned报出的错

目录 基本思路 网络推荐 本人实践 如下操作,报错: 基本思路 //在DevEco运行typeScript代码 /** * 1.保证node -v出现版本,若没有,配置环境变量(此电脑-属性-高级系统变量配置-path-粘贴路径);DevEco在local.properties中可看到当前nodejs的路径 * 2.npm install …

202406 CCF-GESP Python 四级试题及详细答案注释

202406 CCF-GESP Python 四级试题及详细答案注释 1 单选题(每题 2 分,共 30 分)第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( ) A. 1 B. 2 C. 3 D. 4答案:C解析:目前CCF组织的GESP认证考试有C++、Pyth…

想知道你的电脑能不能和如何升级RAM吗?这里有你想要的一些提示

考虑给你的电脑增加更多的RAM,但不确定从哪里开始?本指南涵盖了有关升级Windows PC或笔记本电脑中RAM的所有信息。 你需要升级RAM吗 在深入研究升级RAM的过程之前,评估是否需要升级是至关重要的。你是否经历过系统滞后、频繁的BSOD错误或应用程序和程序突然崩溃?这些症状…

天猫返利软件草柴APP如何领取天猫粉丝福利购大额优惠券?

天猫购物为什么要使用草柴APP领大额优券&#xff1f; 草柴APP是一款购物省钱工具。通过草柴APP可以查询领取淘宝、天猫、京东等大额优惠券享受券后价优惠&#xff0c;确认收货后再回到草柴APP提取返利&#xff0c;让购物实现多重优惠更划算。下图是直接购买和使用草柴APP领取天…

成人高考报名条件及收费标准详解

成人高考报名条件及收费标准详解 您想通过成人高考改变自己的命运&#xff0c;但不知道报名条件和收费标准&#xff1f;本文将为您详细介绍成人高考报名条件和收费标准&#xff0c;并为您提供专业的成人教育服务。 深圳成人高考www.shenzhixun.com 成人高考报名条件 成人高考…

java Lock接口

在 Java 中&#xff0c;Lock 接口的实现类ReentrantLock 类提供了比使用 synchronized 方法和代码块更广泛的锁定机制。 简单示例&#xff1a; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockExampl…

pyrender 离线渲染包安装教程

pyrender 离线渲染包安装教程 安装 安装 官方安装教程:https://pyrender.readthedocs.io/en/latest/install/index.html#installmesa 首先 pip install pyrenderclang6.0安装 下载地址:https://releases.llvm.org/download.html#6.0.0 注意下好是叫&#xff1a;clangllvm-6…

HCIE之IPV6三大动态协议ISIS BGP (十五)

IPV6 1、三大动态路由协议ipv61.1、ISIS1.1.1、ISIS多拓扑实验&#xff08;需要详细看下lsdb verbose&#xff09;1.2、ISIS TLV简单总结 1.2、BGP 2、IPv6 隧道技术2.1、ipv6手工隧道2.1.1、ipv6 gre手工隧道2.1.1.1、 ipv6、ipv4基础配置&#xff08;省略&#xff09;2.1.1.2…

面向在校生,20万总奖金!讯飞星火杯大模型赛事开发报名

Datawhale赛事 赛事&#xff1a;2024星火杯&#xff0c;大模型应用创新赛 2023年科大讯飞“星火杯”大赛吸引了来自海内外498所高校&#xff0c;1585名大学生开发者参与。为深入赋能高校大学生开发者&#xff0c;持续搭建大学生创业创新平台&#xff0c;2024年科大讯飞“星火杯…

时序预测 | Matlab实现TCN-Transformer的时间序列预测

时序预测 | Matlab实现TCN-Transformer的时间序列预测 目录 时序预测 | Matlab实现TCN-Transformer的时间序列预测效果一览基本介绍程序设计 效果一览 基本介绍 基于TCN-Transformer模型的时间序列预测&#xff0c;可以用于做光伏发电功率预测&#xff0c;风速预测&#xff0c;…

使用 Ollama 和 SingleStore 构建本地 LLM 应用程序

在数据隐私问题日益严重的时代&#xff0c;本地大型语言模型 &#xff08;LLM&#xff09; 应用程序的开发为基于云的解决方案提供了替代方案。Ollama 提供了一个解决方案&#xff0c;使 LLM 可以在本地下载和使用。在本文中&#xff0c;我们将探讨如何使用 Jupyter Notebook 将…

io流 多线程

目录 一、io流 1.什么是io流 2.流的方向 i.输入流 ii.输出流 3.操作文件的类型 i.字节流 1.拷贝 ii.字符流 ​3.字符流输出流出数据 4.字节流和字符流的使用场景 5.练习 6.缓冲流 1.字节缓冲流拷贝文件 2.字符缓冲流特有的方法 1.方法 2.总结 7.转换流基本用法…

Efficient Contrastive Learning for Fast and Accurate Inference on Graphs

发表于:ICML24 推荐指数: #paper/⭐⭐⭐ 创新点一颗星,证明三颗星(证明的不错,值得借鉴,但是思路只能说还行吧) 如图, 本文采取的创新点就是MLP用原始节点,GCN用邻居节点的对比学习.这样,可以加快运算速度 L E C L − 1 ∣ V ∣ ∑ v ∈ V 1 ∣ N ( v ) ∣ ∑ u ∈ N ( v )…

认证授权auth

什么是认证授权 认证授权包含 认证和授权两部分。 什么是用户身份认证&#xff1f; 用户身份认证即当用户访问系统资源时&#xff0c;系统要求验证用户的身份信息&#xff0c;身份合法方可继续访问常见的用户身份认证表现形式有 用户名密码登录微信扫码登录等 什么是用户授…

C#知识|项目的实施过程及通用三级架构的搭建笔记

哈喽,你好啊,我是雷工! 01 项目需求分析 根据与需求方沟通,分析需求,一般都有需求分析师来进行项目需求收集与分析。 根据需求文档进行项目功能设计。 02 框架的选择 ①小项目可以根据需求选择两层或三层结构。 ②中型大型项目,至少需要三层架构和其他架构的组合。 03 框…

Canvas:掌握颜色线条与图像文字设置

想象一下&#xff0c;用几行代码就能创造出如此逼真的图像和动画&#xff0c;仿佛将艺术与科技完美融合&#xff0c;前端开发的Canvas技术正是这个数字化时代中最具魔力的一环&#xff0c;它不仅仅是网页的一部分&#xff0c;更是一个无限创意的画布&#xff0c;一个让你的想象…

MySQL的慢sql

什么是慢sql 每执行一次sql&#xff0c;数据库除了会返回执行结果以外&#xff0c;还会返回sql执行耗时&#xff0c;以mysql数据库为例&#xff0c;当我们开启了慢sql监控开关后&#xff0c;默认配置下&#xff0c;当sql的执行时间大于10s&#xff0c;会被记录到慢sql的日志文件…

曹操的五色棋布阵 - 工厂方法模式

定场诗 “兵无常势&#xff0c;水无常形&#xff0c;能因敌变化而取胜者&#xff0c;谓之神。” 在三国的战场上&#xff0c;兵法如棋&#xff0c;布阵如画。曹操的五色棋布阵&#xff0c;不正是今日软件设计中工厂方法模式的绝妙写照吗&#xff1f;让我们从这个神奇的布阵之…

GStreamer学习5----probe数据探测

参考资料&#xff1a; gstreamer中如何使用probe&#xff08;探针&#xff09;获取帧数据_gstreamer 视频编码时获取视频关键帧信息-CSDN博客 Gstreamer中可以使用AppSink作为一个分支来查看管线中的数据&#xff0c;还可以使用probe去处理。 在GStreamer中&#xff0c;probe…