NLP - 共现矩阵、Glove、评估词向量、词义

news2024/11/17 1:52:05

Word2vec算法优化

在这里插入图片描述
J(θ): 损失函数

问题:进行每个梯度更新时,都必须遍历整个语料库,需要等待很长的时间,优化将非常缓慢。
解决:不用梯度下降法,用随机梯度下降法 (SGD)
减少噪音,做得更好,也可以更快的计算。

词向量的随机梯度

我们只更新实际出现的向量(当前中心词和上下文)

Word2vec算法:更多细节

为什么需要两个向量表示一个词:

  • 更容易优化,最后取平均最终表示词
  • 可以只用一个向量,不过做微分复杂很多

Word2vec算法实际是一个算法家族

  1. Skip-grams (SG) (更常用,合理自然)
  2. Continuous Bag of Words (CBOW)

目前介绍的都是简单的 softmax等式来训练
在这里插入图片描述

更有效的训练方法:负采样(SGNS)

Skip-grams负采样

在这里插入图片描述

目标函数

我们希望中心词和真实上下文词的向量点积最大,中心词和随机词的向量点积最小。
k是我们负采样的样本数目(随机采样的数量)

在这里插入图片描述

unigram分布是 单词在语料库中实际出现的频率。
(10000个词出现50次 => 50/10000)

Why not capture co-occurrence counts directly?

共现矩阵,将单词表示为共现向量(单词之间共同出现的次数)

在这里插入图片描述
两种方式实现共现矩阵:

  1. windows:与Word2vec类似,在每个单词周围都使用window。捕获了位置和一些更细微的句法和近似语义。
  2. full document:将窗口大小设置为段落大小或整个网页,并计算其中的共现。经常用于信息检索(潜在的语义分析)

在这里插入图片描述

第一种方法:Dimensionality Reduction on X (SVD)

为了得到低维度的词表示。
它能够在给定的维度内,尽可能的恢复到原始的共现矩阵。
在这里插入图片描述
在这里插入图片描述
问题
最终得到的单词计数不是正态分布的。因为有大量的常用词和稀有词。

第二种方法:Hacks to X

按比例调整计数,处理词频较高的问题。
对原始计数取log/限制最大计数/扔掉虚数
接下来运行SVD来获得更有用有效的词向量。

总结

两种词向量表示方法:

  1. 共现矩阵,然后使用线性代数方法(SVD)
    (问题:词之间没有意思层面的联系,只是相似性;过分重视大计数)
  2. 随机初始,然后使用迭代神经网络更新算法(梯度下降法 负采样)
    (问题:语料库很大,分母太难计算;没有有效利用数据)

在这里插入图片描述
Glove:将两种表示方法结合起来 => 在神经网络中使用计数矩阵
|||
V

向量差异的编码意义

关键思想:共现概率的比值可以对meaning component进行编码
重要的不是单一的概率大小,而是他们的比值,蕴含着meaning component。

在这里插入图片描述

ice 和 solid 共现的概率是 P 1 = 1.9 × 1 0 − 4 P1 = 1.9 \times 10 ^ {-4} P1=1.9×104
steam 和 solid 共现的概率是 P 2 = 2.2 × 1 0 − 5 P2 = 2.2 \times 10 ^ {-5} P2=2.2×105
ice和solid共现概率 steam和solid共现概率 的比值是 P 1 P 2 \frac{P1}{P2} P2P1

我们如何将这些共现概率的比率 作为线性的meaning components来捕获?因此,在我们的词向量空间中,我们可以加上和减去线性的meaning components。(能够得到 king-man = queen-woman)

方法:构建一个log-bilinear模型

在这里插入图片描述

我们希望 两个词向量之间的点积 试图逼近 共现概率的对数
这样就可以获得特性:两个向量之间的差异 等于 共现概率比的对数
我们希望这些东西是相等的!所以我们希望最小化它们的差异。

在这里插入图片描述

Glove在共现矩阵上使用神经网络模型的方法 尝试统一共现矩阵模型和神经网络模型之间的思想。

  • 共现计数矩阵模型直接使用共现计数矩阵来表示词语之间的关系(共现计数矩阵固定已知)
  • 而神经网络模型则使用神经网络结构来建模。

损失函数 J 将它们统一了起来。它结合了神经网络模型中的词向量表示 w i w_i wi w ~ j \tilde{w}_j w~j ,以及共现计数矩阵模型中的共现计数矩阵 X i j X_{ij} Xij,并且通过优化这个损失函数来学习词向量。
在这里插入图片描述

· J J J 是衡量词向量表示质量的损失函数,是我们希望最小化的目标。
· ∑ i , j = 1 V \sum_{i,j=1}^V i,j=1V表示对所有词对的共现情况进行求和, V V V 是词汇表的大小。
· f ( X i j ) f(X_{ij}) f(Xij) 是一个函数,会根据一个词的频率来缩放它,它用来对常见词进行限制。
X表示共现矩阵, X i j X_{ij} Xij 表示词 i i i 和词 j j j 的共现计数
· w i w_i wi w ~ j \tilde{w}_j w~j 是词 i i i 和词 j j j 的词向量。
· b i b_i bi b ~ j \tilde{b}_j b~j 是词 i i i 和词 j j j 的偏置项。用于修正(如果某个单词的概率很高),使得模型能够更灵活地拟合数据。
· log ⁡ X i j \log X_{ij} logXij 是共现计数的对数。
使用平方,使得结果总是正的,我们希望最小化J。

可以直接在共现计数矩阵上优化损失函数J(共现计数矩阵固定已知),怎么优化?
  1. 初始化参数:随机初始化词向量矩阵 W W W W ~ \tilde{W} W~,以及偏置项 b b b b ~ \tilde{b} b~
  2. 计算损失函数的梯度:计算损失函数 J J J 关于参数的梯度,包括词向量 W W W W ~ \tilde{W} W~, 以及偏置项 b b b b ~ \tilde{b} b~ 的梯度。
  3. 更新参数:使用梯度下降法 根据计算出的梯度来更新参数。更新的公式通常为:
    θ t + 1 = θ t − α ∇ J ( θ t ) \theta_{t+1}=\theta_t-\alpha\nabla J(\theta_t) θt+1=θtαJ(θt)
    其中, θ \theta θ表示参数(词向量矩阵和偏置项), α \alpha α表示学习率, ∇ J ( θ ) \nabla J(\theta) J(θ)表示损失函数 J J J 关于参数 θ \theta θ的梯度。
  4. 重复步骤2和3:重复计算梯度并更新参数,直到达到停止条件 (例如达到最大迭代次数、损失函数收敛等)。
将共现计数矩阵模型和神经网络模型的思想结合在一起,形成了损失函数 J,带来了以下好处:
  • 训练快速:它直接基于共现计数进行优化(共现计数矩阵固定已知),不需要像之前的神经网络模型那样每次迭代计算都超级复杂。
  • 可扩展性:共现计数矩阵的存储和处理相对简单,具有很好的可扩展性,能够轻松地应用于大型语料库。而且训练过程中不需要太复杂的计算或大量的参数,使得它能够有效地处理大规模的数据。
  • 适用于小型数据集和低维向量:它结合了共现计数矩阵模型和神经网络模型的优点,既可以捕捉词汇之间的共现信息,又可以通过神经网络模型来学习词向量之间的复杂关系,从而能够在各种规模的数据集和向量空间中表现良好。
  • 总结: 共现计数矩阵模型在处理大规模语料库时具有高效性和简单性,而神经网络模型则可以更好地捕捉词向量之间的复杂关系。结合了两者的思想,可以兼顾模型的高效简单性和表达能力。

我们如何才能真正评估词向量?

  • 内在评估:内在评估是通过词向量自身的性质和特征来评估其质量,而不依赖于具体的应用场景。
    • 例如词类比任务:如使用"king - man + woman"来验证是否得到"queen"。如果词向量的性质良好,那么通过向量空间中的数学运算可以得到类似的类比关系。最后计算出正确次数的准确性得分。
  • 外在评估:通过将词向量应用于具体的自然语言处理任务来评估其性能(网络搜索、机器翻译…)
    • 例如命名实体识别任务:使用词向量作为特征输入到命名实体识别模型中,如CRF、RNN、LSTM等,并根据模型在测试数据集上的准确率、召回率、F1分数等性能指标来评估词向量的效果。

内在评估:词类比任务

通过向量空间中的加法和余弦相似度来寻找与给定类比关系最相似的词向量。
!可能得到的d就是原来的c,所以最后的结果不考虑三个输入词中的任意一个。

Glove可视化

在这里插入图片描述

Glove可视化:Company - CEO

在这里插入图片描述

Glove可视化:比较级和最高级

在这里插入图片描述

在这里插入图片描述

SVD:通过不缩放的共现矩阵模型
SVD-S, SVD-L:通过缩放的共现矩阵模型
CBOW, Skip-grams:通过Word2vec算法,神经网络模型
Glove:结合共现矩阵模型和神经网络模型之间的思想

但是事实证明上面的表中的数据有错误。Glove模型表现好的主要原因是训练的数据集更好:
在这里插入图片描述

  • 数据集越大越好,并且维基百科数据集比新闻文本数据集要好,因为:
    • 维基百科就是在解释概念以及他们之间的相互关联,更多的说明性文本显示了事物之间的所有联系。
    • 而新闻并不去解释,而只是去阐述一些事件。
  • 300是一个很好的词向量维度

内在评估:相似性评估

人类给一对单词一个相似度分数(0~10),然后根据多个人类的判断进行平均。
在这里插入图片描述

在这里插入图片描述

外在评估:命名实体识别

在这里插入图片描述

Discrete:仅有离散特征的模型

词义

大多数多次都是多义的

  • 特别是常见的单词
  • 特别是存在已久的单词

例子:pike

在这里插入图片描述

解决方法:一个词多个词向量

Improving Word Representations Via Global Context And Multiple Word Prototypes (Huang et all 2012)
思想:
在这里插入图片描述
将常用词的所有上下文进行聚类,通过该词得到一些清晰的簇,从而将这个常用词分解为多个单词,例如 b a n k 1 :银行 bank_1:银行 bank1:银行, b a n k 2 :界限 bank_2:界限 bank2:界限

  • 这样做有点复杂:首先必须学习语义,然后根据语义开始学习词向量。
  • 一个词的不同意思不是很好分类,可能重叠。如何将词义切割成不同的含义总是有点不清楚。

解决方法:不同含义的加权和得到一个词向量

单词在标准单词嵌入(如word2vec)中的不同含义以线性叠加(加权和)的形式存在
在这里插入图片描述
只是加权平均值就已经可以获得很好的效果,自我消除歧义,可以说相似的词向量已经包含在内(作为加数)

我们普遍觉得将不同意思的向量加起来,就很难区别它们。

  • 就像如果 1 + 2 + 3 + 4 => 10,
  • 那么10是不可以往回的:10 =X> 1 + 2 + 3 + 4

但是在高维向量空间中的单词非常稀疏。我们可以使用自稀疏编码的思想来分离出不同的意思。

  • 前提是它们相对比较常见

所以可以 "pike"向量 开始,实际分离出对应于 "pike"这个词 的不同含义的向量的成分。
比如:对于 "tie"词向量,可以分离成五种意思:
在这里插入图片描述

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

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

相关文章

11.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏接收网络数据包的操作

内容参考于:易道云信息技术研究院VIP课 上一个内容:接管游戏发送数据的操作 码云地址(master 分支):https://gitee.com/dye_your_fingers/titan 码云版本号:8256eb53e8c16281bc1a29cb8d26d352bb5bbf4c 代…

Media Encoder 2024 for Mac v24.2.1中文激活版

Adobe Media Encoder 2024 for Mac 是一款专业的视频和音频编码工具,专为 Mac 用户打造。它可以将原始素材转换为各种流行格式,以满足不同的播放和发布需求。借助其先进的编码技术和预设设置,用户可以轻松优化输出质量,同时保持文…

实用工具:实时监控服务器CPU负载状态并邮件通知并启用开机自启

作用:在服务器CPU高负载时发送邮件通知 目录 一、功能代码 二、配置开机自启动该监控脚本 1,配置自启脚本 2,启动 三、功能测试 一、功能代码 功能:在CPU负载超过预设置的90%阈值时就发送邮件通知!邮件内容显示…

多特征变量序列预测(九)基于麻雀优化算法的CEEMDAN-SSA-BiGRU-Attention预测模型

目录 往期精彩内容: 前言 1 多特征变量数据集制作与预处理 1.1 导入数据 1.2 CEEMDAN分解 1.3 数据集制作与预处理 2 麻雀优化算法 2.1 麻雀优化算法介绍 2.2 基于Python的麻雀优化算法实现 2.3 麻雀优化算法-超参数寻优过程 3 基于Pytorch的CEEMDAN SSA…

【问题解决】| conda不显示指示前面的(base)无法在终端激活虚拟环境

1 遇到的问题 就是在安装好conda,配置好环境变量后 可以正常用conda的指令,如创建环境等等 但是不能激活新建的环境,我们知道同时也没有前面的小括号指示当前环境,也没有这个前面的(base) 2 解决方式 有一些方法如&#xff0c…

单片机烧录方式 -- IAP、ISP和ICP

目录 背景 1 什么是ICP 2 什么是ISP 3 什么是IAP 4 总结 背景 对于51单片机,我们使用STC-ISP上位机软件通过串口进行程序的烧写;对于STM32系列单片机,我们既可以通过串口烧写程序,也能通过JLink或是STLink进行程序的烧写&am…

Android Duplicate class 排除重复类

一、起因: 在迭代开发的时候,发现2个ijk很多类重复。但又2个库实现的功能是不一样,目前不能合并。但又想保留2个功能。需要排除其中一个库。 二、报错如何下图: 三、解决方法: 3.1 在terminal 也就是命令行处输入 …

fastAdmin表格列表的功能

更多文章,请关注:fastAdmin后台功能详解 | 夜空中最亮的星 FastAdmin是一款基于ThinkPHP5Bootstrap的极速后台开发框架。优点见开发文档 介绍 - FastAdmin框架文档 - FastAdmin开发文档 在这里上传几张优秀的快速入门图: 一张图解析FastAdmin中的表格列…

学不动系列-eslint

ESLint 介绍在最简单的项目使用eslint,包括eslint的vscode插件的使用,自动化格式代码,自动化修复代码,和webpack,vite的配合使用 单独使用 第一步:构建一个空项目 npm init -y 在根目录新建文件./src/app.js&#…

自学Python第十五天-常用的HTML解析工具:bs4、xpath、re

自学Python第十五天-常用的HTML解析工具:bs4、xpath、re BS4安装和引入开始使用find_all() 方法获取标签find() 方法获取标签select() 方法获取标签,css 选择器从标签中获取数据 XPathxpath 基础xpath 语法规则lxml 模块xpath() 方法 REmatch() 方法sear…

上拉电阻与下拉电阻、电容的作用

上拉电阻与下拉电阻 在单片机电路中,上拉电阻和下拉电阻都是常见的电路元件,它们在数字电路设计中扮演着重要的角色。它们的作用如下: 1. **上拉电阻**: - **作用**:当一个引脚没有外部信号时,上拉电阻…

本届挑战赛季军方案:基于图网络及LLM AGENT的微服务系统异常检测和根因定位方法

aiboco团队荣获本届挑战赛季军。该团队来自亿阳信通。 方案介绍 本届挑战赛采用开放式赛题,基于建行云龙舟运维平台的稳定性工具和多维监控系统,模拟大型的生活服务APP的生产环境,提供端到端的全链路的日志、指标和调用链数据。参赛队伍在组…

92. 递归实现指数型枚举 刷题笔记

思路 dfs 考虑选或者不选每个位置 用0表示未考虑 1表示选 2表示不选 用u表示搜索状态 u>n时 已经搜到底层了 需要输出当前方案 遍历 如果选了则输出 #include<iostream> using namespace std; int n; const int N16; int st[N]; void dfs(int u){ //u来记…

nginx------------缓存功能 (六)

一、http 协议反向代理 &#xff08;一&#xff09;反向代理示例:缓存功能 缓存功能可以加速访问&#xff0c;如果没有缓存关闭后端服务器后&#xff0c;图片将无法访问&#xff0c;缓存功能默认关闭&#xff0c;需要开启。 ​ proxy_cache zone_name | off; 默认off #指明调…

nginx之重写功能 模块指令 防盗链

一 重写功能 rewrite Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求&#xff0c; 此功能依靠 PCRE(perl compatible regular expression)&#xff0c;因此编译之前要安装PCRE库&#xff0c;rewrite是 nginx服务器的重要功能之一&#xff0c;重写功…

【IO流】缓冲流

缓冲流 1. 概述2. 作用3. 字节缓冲流3.1 构造方法3.2 代码示例 4. 字符缓冲流4.1 构造方法4.2 特有方法4.3 代码示例4.3.1 readline()方法示例4.3.2 newline()方法示例 5. 字节缓冲流提高效率的原理6. 注意事项 文章中的部分照片来源于哔站黑马程序员阿伟老师处&#xff0c;仅用…

html2canvas + JsPDF.js 导出pdf分页时的问题

问题描述 前一段时间 实现了html2canvas jspdf.js 导出pdf的功能 项目当时没有测试做完就先搁置 最近项目要上线发现分页时问题 这篇文章记录一下之前的bug import html2canvas from html2canvas; import JsPDF from jspdf export function savePdf(el, title) {html2canva…

Keepalived双机热备——Haproxy搭建web群集

一、认识keepalived keepalived是一个开源的软件&#xff0c;用于实现高可用性和负载均衡。它主要用于在多个服务器之间提供故障转移和负载均衡的功能。keepalived可以监控服务器的状态&#xff0c;并在主服务器发生故障时自动将备份服务器切换为主服务器&#xff0c;以确保服…

2024.2.28 网络

思维导图 整理面试题 1、什么是回调函数 答&#xff1a;将函数作为参数传到另一个函数里面&#xff0c;当那个函数执行完之后&#xff0c;再执行传进去的这个函数。这个过程就叫做回调。 2、结构体和共用体的区别 答&#xff1a;结构体的每个成员都会分配内存&#xff0c;…

快讯|Tubi 更新内容库重新定义自己

在每月一期的 Tubi 快讯中&#xff0c;你将全面及时地获取 Tubi 最新发展动态&#xff0c;欢迎&#x1f31f;星标关注【比图科技】&#xff0c;一起成长变强&#xff01; Tubi 更新内容库&#xff0c;重新定义自己 Tubi 近日宣布为数千万用户免费提供备受观众喜爱、获奖无数的…