词嵌入(一):基于矩阵分解的静态词嵌入(VSM、TF-IDF、SVD)

news2024/11/15 10:49:32

文章目录

  • 一、从几种直观思路的不足谈到理想的Word Representation
    • 1.1 独热编码
    • 1.2 共现矩阵
    • 1.3 理想的Word Representation应当满足的要求
  • 二、静态词嵌入与动态词嵌入
  • 三、基于矩阵分解的静态词嵌入
    • 3.1 Distributional Hypothesis
    • 3.2 向量空间模型(Vector Space Model,VSM)
      • 3.2.1 基本思想介绍
      • 3.2.2 TF-IDF(Term Frequency-Inverse Document Frequency)
      • 3.2.3 SVD降维(从计算谈到降维降噪应用)


在Transformer中使用了词嵌入层,下文将先从几种直观的思路出发,说明其中的不足,然后提出一个理想的Word Representation应该需要满足哪些要求,将如今主要使用的词嵌入方法分为静态和动态进行说明,介绍实现的不同思路。
此处不讨论分词策略,仅讨论不同的词向量构建方法。

拓展内容:

  • 自然语言处理领域中的词嵌入方法综述——曾骏,王子威,于扬,文俊浩,高旻
    (框架参考,再补充了其他内容)
  • 词向量与Embedding究竟是怎么回事?——苏剑林
    (从运算和思想角度说明独热编码在一个普通的全连接层发挥的作用)
  • COMP90042 Web Search and Text Analysis
  • CS224N: Natural Language Processing with Deep Learning
    (涉及Large Language Models内容)

一、从几种直观思路的不足谈到理想的Word Representation

字符格式的文本数据不方便被模型所学习,且这种符号化的信息也不足以用于学习,所以需要将其转为成模型可以处理的实值向量格式,并将语料库中蕴含的丰富内隐知识信息嵌入到生成的词向量中。

1.1 独热编码

独热编码(onehot encoding) 能够为词汇表中的每个词生成一个唯一的 one-hot 向量作为词的向量表示,该向量维度大小与词汇表中的单词数相等 ,词汇表中的每个词都对应一个索引编号,每个词所对应的 one-hot 向量只有在索引编号位置处的维度的值为 1,其余维度的值均为 0。
如果直接使用独热编码作为词向量,从直观角度来看,也会发现其存在以下问题:

  • 词与词之间缺少关联和相似性,从余弦相似度的角度来解释就是任意两个词之间因为正交导致余弦相似度为0,无法说明词之间的相似程度,也就失去了其中丰富的信息。
  • 维度过高,对内存来说是很大的负担;从矩阵角度理解,每行仅一位为1,其余位皆为0,这种稀疏矩阵也不适合使用。

1.2 共现矩阵

图源cs224n-spr2024-lecture02-wordvecs2中16页
在这里插入图片描述

  • 维度大小等同于词汇量大小,可通过SVD降维(下文在介绍基于矩阵分解的静态词嵌入时会介绍SVD),但计算开销大;
  • 稀疏矩阵

1.3 理想的Word Representation应当满足的要求

下文来源:Deep Learning in NLP (一)词向量和语言模型——licstar
在这里插入图片描述
下文来源:静态词嵌入(Static Word Embedding)总结——長門有希
在这里插入图片描述


二、静态词嵌入与动态词嵌入

根据是否上下文敏感可以将词嵌入方法分为静态和动态,从效果上看:

  • 静态词嵌入对于任意一个词,其向量表示是恒定的,不随其上下文的变化而变化;因此静态词嵌入不能够处理多义词问题,事实上一个词可能在不同的语境下有着不同的语义;
  • 动态词嵌入中同一个词可以根据上下文被赋予不同的表示

之后将根据静态和动态分别介绍词嵌入方法。

静态词嵌入介绍流程如下

  • 基于矩阵分解的静态词嵌入

    从Distributional Hypothesis出发介绍Distributional Representation,对词-文共现矩阵使用TF-IDF赋值和SVD分解,并尽可能说明相应的原理和实现

  • 基于上下文窗口的静态词嵌入

    从经典神经语言模型NNLM出发,谈到C&W模型,再介绍Word2Vec里的 跳元模型(Skip-Gram)连续词袋模型(CBOW)

  • 基于全局矩阵分解和局部上下文窗口的静态词嵌入

    介绍 词的全局向量表示(global vectors for word representation, GloVe)

动态词嵌入介绍流程如下

  • ELMo(Embeddings from Language Models,来自语言模型的嵌入)
  • GPT(Generative Pre Training,生成式预训练)
  • BERT(Bidirectional Encoder Representations from Transformers,来自Transformers的双向编码器表示)

图源《《动手学深度学习》》14.8.3. BERT:把两个最好的结合起来
在这里插入图片描述


三、基于矩阵分解的静态词嵌入

3.1 Distributional Hypothesis

You shall know a word by the company it keeps ( JohnRupertFirth,1957, ‘A synopsisof linguistictheory’)

对于单词 t e z g u ¨ i n o tezgüino tezgu¨ino ,如果从未听闻过这个词无法得知其含义,但在下列共现矩阵中,可以发现它与 w i n e wine wine 之间存在一定的相似度,根据上述的假说,可以推定 t e z g u ¨ i n o tezgüino tezgu¨ino 是某款酒精饮料,而事实上,它确实是一种玉米啤酒,这个例子可以作为对上述假设在一定程度上的验证。
这个假设符合一般的认知直觉和统计规律,也在词嵌入中得到了广泛的认可和使用。
图源COMP90042 Web Search and Text Analysis:Distributional semantics
在这里插入图片描述
下图来源:word2vector中的数学原理详解.pdf——peghoty
在这里插入图片描述

3.2 向量空间模型(Vector Space Model,VSM)

《A Vector Space Model for Automatic Indexing》

3.2.1 基本思想介绍

假设前提:传统的VSM假设词项之间是相互独立的,即一个词的出现不影响另一个词的出现概率。
基本思想:以向量来表示语义

从 词-文档共现矩阵 的角度来看,有两个视角:

  • 如果是横向,每行表示一篇文章中各个词汇的出现频次,这种统计可以用于信息检索,将询问也转为相似的向量,计算相似度即可进行检索(应用可见此链接:信息检索技术-向量空间模型);
  • 如果是纵向,每列表示一个词向量,词向量是根据其在不同文章中的出现情况统计而出,根据分布假设,余弦相似度高的词向量一般会有着相似的语义(也仅仅是直观理解,依然存在多义词之类的复杂情况)。
    在这里插入图片描述

对于上述矩阵,有两个问题没有解决:

  • 问题一:权值不应该直接使用频次,高频不意味着重要,可能会是一些虚词;文档长度存在差异,在长文档中频次高的词汇不一定就在这些文档中更重要;
  • 问题二:高维稀疏矩阵,计算效率低;

以上两个问题将由后续两小节进行简单回答

但仍然还存在其他问题,如:

  • 近义词:VSM可能无法有效识别近义词之间的语义相似性,因为它们在向量空间中的表示是独立的。
  • 多义词:VSM难以处理多义词,因为它为每个词分配一个固定的向量,无法根据上下文区分不同的词义。

3.2.2 TF-IDF(Term Frequency-Inverse Document Frequency)

维基百科-TF-IDF
TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率),其中涉及到两种频率:

  • TF(term frequency,词频),用于描述某个词在某个文档中出现的频率
    • T F w , d = 该词在文档中的出现次数 文档中的总词数 TF_{w,d}=\frac{该词在文档中的出现次数}{文档中的总词数} TFw,d=文档中的总词数该词在文档中的出现次数
    • 值越高,可以在一定程度上说明该词的重要性,但也可能是虚词;
  • IDF(inverse document frequency,逆向文件频率) ,用于描述某个词在不同文档中的出现情况
    • I D F w = log ⁡ ( 文档集中的文档总个数 包含 w 的文档数 + 1 ) IDF_{w}=\log(\frac{文档集中的文档总个数}{包含w的文档数+1}) IDFw=log(包含w的文档数+1文档集中的文档总个数)
    • 加1是进行平滑处理,防止该词汇未在文档中出现过时,分母为0的情况;
    • 一个词越常见,分母也就越大,对应的IDF值也就越小; 在本质上IDF是一种试图抑制噪音的加权,并且单纯地认为文本频率小的单词就越重要,文本频率大的单词就越无用。这对于大部分文本信息,并不是完全正确的。
  • TF-IDF
    • T F − I D F = T F w , d ∗ I D F w TF-IDF =TF_{w,d}*IDF_w TFIDF=TFw,dIDFw
    • 当一个词在文档频率越高并且新鲜度高(即普遍度低),其TF-IDF值越高。TF-IDF兼顾词频与新鲜度,过滤一些常见词,保留能提供更多信息的重要词。

3.2.3 SVD降维(从计算谈到降维降噪应用)

奇异值分解(SVD)原理与在降维中的应用

SVD可以对矩阵进行分解,且不要求矩阵为方阵,以下图为例, M M M为一个 m × n m\times n m×n的矩阵,可通过下列式子将其分解3个矩阵: M = U × Σ × V T M=U\times \Sigma \times V^{T} M=U×Σ×VT

  • U为m阶正交矩阵, U U T = I UU^T=I UUT=I
  • V为n阶正交矩阵, V V T = I VV^T=I VVT=I
  • Σ \Sigma Σ为降序排列的非负的对角线元素组成的矩形对角矩阵
    • Σ = d i a g ( σ 1 , σ 2 , … , σ p ) \Sigma=diag(\sigma_1,\sigma_2,\dots,\sigma_p) Σ=diag(σ1,σ2,,σp)
    • p=min(m,n)
  • 在SVD分解中, Σ \Sigma Σ由M唯一确定,但U与V不是唯一的
    在这里插入图片描述

接下来将介绍如何求解矩阵: U 、 Σ 、 V U、\Sigma、V UΣV

  • 求解矩阵 V V V: 先计算 M T M M^{T}M MTM,得到 n × n n\times n n×n的方阵,再对其进行特征值分解, 特征向量单位化,使得 V V V为n阶正交矩阵,满足 V V T = I VV^T=I VVT=I,相应结果如下:
    • M T M = ( U Σ V T ) T U Σ V T = V ( Σ T Σ ) V T M^{T}M=(U\Sigma V^{T})^TU\Sigma V^{T}=V(\Sigma^T\Sigma)V^T MTM=(UΣVT)TUΣVT=V(ΣTΣ)VT
    • ( M T M ) v i = λ i v i (M^{T}M)v_i=\lambda_iv_i (MTM)vi=λivi
    • M T M M^{T}M MTM的特征向量拼接在一起,,得到 n × n n\times n n×n的矩阵V, V V V的列向量称为右奇异向量
  • 求解矩阵 U U U: 先计算 M M T MM^{T} MMT,得到 m × m m\times m m×m的方阵,操作同上, U U U的列向量称为左奇异向量
  • 求解 Σ \Sigma Σ: 关键在于求出其中的每项奇异值
    • M = U Σ V T ⇒ M V = U Σ V T V = U Σ M=U\Sigma V^{T}\Rightarrow MV=U\Sigma V^{T}V=U\Sigma M=UΣVTMV=UΣVTV=UΣ
    • 在这里插入图片描述
    • M v i = σ i u i ⇒ σ i = M v i u i Mv_i=\sigma_iu_i \Rightarrow \sigma_i=\frac{Mv_i}{u_i} Mvi=σiuiσi=uiMvi

接下来将通过具体例子来展示如何计算 U 、 Σ 、 V U、\Sigma、V UΣV
计算过程来源:奇异值分解(SVD)原理与在降维中的应用——刘建平Pinard

在这里插入图片描述

上述内容说明了如何进行SVD分解,接下来讨论得到的这三个矩阵的物理含义是什么:
参考:
LSA潜在语义分析的原理、公式推导和应用——刘启林
吴军老师的《数学之美》第二版:第15章 矩阵运算和文本处理中的两个分类问题
奇异值分解(SVD)关键概念以及物理意义——猫咪钓鱼
奇异值分解(SVD)原理与在降维中的应用——刘建平Pinard

先不讨论截断操作,仅从矩阵的物理含义出发:

在这里插入图片描述
在这里插入图片描述

  • 矩阵U是对词按话题进行分类的结果,每行表示一个词,这一行的非零元素表示这个词在不同话题下的相关性(重要性),值越大越相关;每列表示一个词类,此时为话题;
  • 矩阵V中每列表示一篇文本,每行表示一个话题,每个值表示特定文本与特定话题的相关性;
  • 这里对关联矩阵使用一次奇异值分解,就可以实现近义词分类和和文章分类,这也是SVD的一种使用;

在了解了各个矩阵的物理含义后,还需要理解奇异值的含义,从而更好的理解截断操作:

  • 在降维的背景下,奇异值的大小反映了数据在对应奇异向量方向上的“重要性”或“显著程度”。最大的奇异值对应的奇异向量揭示了数据分布的主要方向,而较小的奇异值对应的奇异向量则可能指向噪声或数据的细微特征:
    • 具体来说,较大的奇异值 σ i \sigma_i σi对应的左右奇异向量在重构矩阵时会发挥更大的作用,也可以理解其中蕴含了原始矩阵更多的信息。

再了解了奇异值的含义后,就可以介绍截断操作,演示图如下:
将矩阵: U 、 Σ 、 V U、\Sigma、V UΣV分别进行截取,重构矩阵时不改变原先矩阵的结构,且去除的部分往往是原始矩阵的噪音,所以相当于除噪操作。

在这里插入图片描述
在这里插入图片描述

再说明截断操作之后,还要说明如何用它进行降维,参考PCA主成分分析,相关内容如下:
来源:奇异值分解(SVD)原理与在降维中的应用——刘建平Pinard

在这里插入图片描述


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

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

相关文章

【详解】网络隔离环境下,跨网文件交换存在的核心问题及解决方法

一、为什么要进行网络隔离? 随着互联网技术的发展和推进,人们对于网络使用的场景也越来越多元化,而网络黑客入侵、病毒攻击、网络泄密等安全事件的不断发生,也让人们认识到网络安全的重要性。企业、社会、国家机构在日常经营管理…

基于Pytorch框架的深度学习U2Net网络精细天空分割系统源码

第一步:准备数据 头发分割数据,总共有10276张图片,里面的像素值为0和1,所以看起来全部是黑的,不影响使用 第二步:搭建模型 级联模式 通常多个类似U-Net按顺序堆叠,以建立级联模型&#xff0c…

STM32(十二):DMA直接存储器存取

DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源。(运行内存SRAM、程序存储器Flash、寄存器) 12个独立可配置的通道&…

【stata】自写命令分享twfe_stgdid,一键完成staggered-DID

1. 命令简介 仿照CSDID命令一键出实证结果、出图,我写了一个twfe_stgdid命令。基于双向固定效应模型(TWFE)一键式完成staggered-DID分析。TWFE估计did estimator时难以避免负权重带来的问题(异质性处理效应)。所以&am…

C++11新特性——右值引用与移动语义

左值引用和右值引用 在C中,左值是一个表示数据的表达式,我们可以获取它的地址,一般可以对它赋值,通常可以出现在左边或右边,左值引用就是对左值的引用,相当于给左值起了一个别名。 例子: int …

macOS安装Java和Maven

安装Java Java Downloads | Oracle 官网下载默认说最新的Java22版本,注意这里我们要下载的是Java8,对应的JDK1.8 需要登陆Oracle,没有账号的可以百度下。账号:908344069qq.com 密码:Java_2024 Java8 jdk1.8配置环境变量 open -e ~/.bash_p…

Autosar--Can收发器通俗讲解

Autosar网络管理的休眠唤醒功能,Can收发器起到比较大的作用,充当唤醒源以及最终执行网络休眠。 Autosar--Can收发器通俗讲解 唤醒/休眠请求 进入normol ComM_EcuM_WakeUpIndication 有唤醒源事件 CanSM_RequestComMode 有通信请求 CanSM_NetworkStatemachine() 更新CANS…

【C++】list(下)

个人主页~ list(上)~ list 四、模拟实现1、list.h(1)关于整个list的搭建①节点②迭代器③接口 (2)自定义类型实例化 2、test.cpp(1)test1(2)test2 五、额外小…

大模型入门 ch02:数据集准备

本文是github上的大模型教程LLMs-from-scratch的学习笔记,教程地址:教程链接 Chapter 2: Working with Text 这一章节包括了数据的准备和采样阶段。 1. Tokenizer 大模型通过将token转变为embedding(词嵌入)运作。 首…

【机器学习】高斯网络的基本概念和应用领域以及在python中的实例

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Proces…

Android14音频进阶之高通Elite架构指定通道播放(八十四)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…

【Linux】多线程:线程概念,线程与进程的区别与联系,多线程相较于多进程的优势

目录 一、进程基本属性回顾 二、线程概念 三、操作系统为什么要引入线程—多进程和多线程的区别 为什么多线程比多线程调度效率更快? 四、线程的优点 五、线程的缺点 六、线程异常 一、进程基本属性回顾 在学习线程之前,我们先来回顾一下进程的基…

6. LinkedList与链表

一、ArrayList的缺陷 通过源码知道,ArrayList底层使用数组来存储元素,由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比…

64、Python之函数高级:装饰器实战,动态语言也能有类型检查

引言 Python作为一门动态类型语言,有时候,一个不小心的类型错误只有在实际运行中才有可能被发现。相较而言,静态类型语音虽然不够灵活,但是,类型错误等语法检查在编译期间就可以提前发现了。 那么我们有没有方法在Py…

Visual Studio Code 月刊 (2024-08)

文章目录 配置文件编辑器Django 单元测试支持vscode.dev 上的 IntelliSenseNotebook 差异查看器通过键盘调整列的大小源代码管理图GitHub Copilot结语 2024 年 8 月 Visual Studio Code(简称 vscode)发布了 version 1.93。该版本带来了许多更新&#xff…

Spring Boot Admin集成与自定义监控告警

目录 一.Spring Boot Admin集成 1.引入依赖 2.添加配置 3.监控界面 二.Spring Boot Admin告警机制 1. 基本告警机制 2. 配置告警 2.1 triggers触发器讲解 3. 自定义通知 3.1 Instance 对象 三.Spring Boot Admin支持的监控属性 1.常见的Spring Boot Admin监控属性 …

进阶SpringBoot之配置 Swagger API 框架信息

Swagger:API 框架 RestFul API 文档在线自动生成工具,API 文档与 API 定义同步更新 Swagger 官网 Maven 仓库 创建 Spring Boot 项目,依赖勾选 Spring Web pom.xml 导入相关依赖: springfox-swagger2、springfox-swagger-ui …

何为数据中台

数据中台 什么是数据中台 2014年马云正式提出“DT(Data Technology)”的概念,人类从IT时代走向了DT时代,阿里内部的数据平台事业部大刀阔斧的建立整个集团的数据资产,同年,阿里从芬兰Supercell公司接触到…

Canny算子 一张图看懂

对于最高值和最低值的设置, 1,high t最大值一般以一阶导数幅度图的最大值的30%-40%来定 2,最小值一般halcon里默认为 low theigh t/3得到 3,canny的优势是有极大值抑制,所以提取的边缘是1个像素的窄边缘。 3&#xff0…

Golang path/filepath包详解:高效路径操作与实战案例

Golang path/filepath包详解:高效路径操作与实战案例 引言基础用法Abs 函数Base 函数Clean 函数Dir 函数Ext 函数FromSlash 和 ToSlash 函数 基础用法Abs 函数Base 函数Clean 函数Dir 函数Ext 函数FromSlash 和 ToSlash 函数 路径操作Join 函数Split 函数Rel 函数Ma…