【NLP学习其3.5】词嵌入的特性,为什么词之间会有联系?
词嵌入的特性
现在你有了一堆嵌入向量,我们可以开始学习他们之间的特性了
前情提要:https://www.cnblogs.com/DAYceng/p/14962528.html

先把各向量重新命名便于区分

Man对应e_man①
Woman对应e_woman②
King对应e_king③
Queen对应e_queen④
现在用e_man减e_woman
①-②≈[-2,0,0,...]
用e_king减e_queen
③-④≈[-2,0,0,...]
由此可见,Man和Woman的差异主要体现在性别(gender)上,King和Queen也是如此
那么,当系统被问及“Man之于Woman等价于King之于什么?”时,它自然的会用嵌入向量相减,从而推断出问题的答案,即:Man之于Woman等价于King之于Queen
如何在算法上实现上述特性?答案是”计算距离“

如图所示,所求的e_?可以表示为:e_king-e_man+e_woman
那我现在只需要找出一个单词的嵌入向量,假设为e_w,使得这个e_w与e_king-e_man+e_woman最相似即可
用函数表示也就是Sim(e_w,e_king-e_man+e_woman)取最大值就满足条件
那么,这个Sim()是什么函数呢?
这个Sim()一般会是余弦相似度、欧氏距离等相似算法(在代码中以函数方式提供使用),具体不再展开
嵌入矩阵(Embedding Matrix)
有了词嵌入这么强大的东西,那我们怎么去用它呢?
一般来说我们会以嵌入矩阵(Embedding Matrix)的形式来利用词嵌入,就像下面这个

这是一个500 X 10000大小的嵌入矩阵,里面存的全是一些嵌入值,命名为E矩阵
可以看到,每列我标出了对应的单词,说白了这个矩阵其实就是由一万个嵌入向量拼接成的
现在我们需要使用One-Hot 了
假设我们有一个One-Hot编码的向量O_7426,它是一个10000行1列的矩阵

我们用O_7426与E相乘,即E * O_7426

由线性代数的知识我们可以知道,E(500 X 10000) * O_7426(10000 X 1)的结果是一个大小为500 X 1的矩阵,用e_w表示
嗯?500 X 1
这不就是E矩阵中的一个列吗?换句话说这个结果就是对应着某个词的嵌入向量
假设E*O_7426的结果是上图中框起来的部分,那么我们可以得出以下结论:
因为E * O_7426 = e_w
而e_w与"EA"所在列的值相等
所以
O_7426是对“EA”的独热编码 #EA是第7426个词
e_w = e_ea
因此原式可写成:E * O_7426 = e_7426或者E * O_ea = e_ea
由上述我们还可以进一步推广,任何与E矩阵,也就是嵌入矩阵相乘的One-Hot编码向量,最后会定位到编码对应的词的词嵌入,或者说嵌入向量,进而得出某个词。
【NLP学习其3.5】词嵌入的特性,为什么词之间会有联系?的更多相关文章
- Coursera Deep Learning笔记 序列模型(二)NLP & Word Embeddings(自然语言处理与词嵌入)
参考 1. Word Representation 之前介绍用词汇表表示单词,使用one-hot 向量表示词,缺点:它使每个词孤立起来,使得算法对相关词的泛化能力不强. 从上图可以看出相似的单词分布距 ...
- DeepLearning.ai学习笔记(五)序列模型 -- week2 自然语言处理与词嵌入
一.词汇表征 首先回顾一下之前介绍的单词表示方法,即one hot表示法. 如下图示,"Man"这个单词可以用 \(O_{5391}\) 表示,其中O表示One_hot.其他单词同 ...
- [DeeplearningAI笔记]序列模型2.3-2.5余弦相似度/嵌入矩阵/学习词嵌入
5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.3词嵌入的特性 properties of word embedding Mikolov T, Yih W T, Zwe ...
- [DeeplearningAI笔记]序列模型2.1-2.2词嵌入word embedding
5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1词汇表征 Word representation 原先都是使用词汇表来表示词汇,并且使用1-hot编码的方式来表示词汇 ...
- 词向量表示:word2vec与词嵌入
在NLP任务中,训练数据一般是一句话(中文或英文),输入序列数据的每一步是一个字母.我们需要对数据进行的预处理是:先对这些字母使用独热编码再把它输入到RNN中,如字母a表示为(1, 0, 0, 0, ...
- 2.keras实现-->字符级或单词级的one-hot编码 VS 词嵌入
1. one-hot编码 # 字符集的one-hot编码 import string samples = ['zzh is a pig','he loves himself very much','p ...
- [ DLPytorch ] word2vec&词嵌入
word2vec WordEmbedding 对词汇进行多维度的描述,形成一个密集的矩阵.这样每两个词之间的相似性可以通过进行内积的大小体现出来.越大说明距离越远,则越不相似. Analogies(类 ...
- cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)
在cips2016出来之前,笔者也总结过种类繁多,类似词向量的内容,自然语言处理︱简述四大类文本分析中的"词向量"(文本词特征提取)事实证明,笔者当时所写的基本跟CIPS2016一 ...
- NLP领域的ImageNet时代到来:词嵌入「已死」,语言模型当立
http://3g.163.com/all/article/DM995J240511AQHO.html 选自the Gradient 作者:Sebastian Ruder 机器之心编译 计算机视觉领域 ...
- 13.深度学习(词嵌入)与自然语言处理--HanLP实现
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 13. 深度学习与自然语言处理 13.1 传统方法的局限 前面已经讲过了隐马尔可夫 ...
随机推荐
- [转帖]【JVM】JVM源码分析之Metaspace解密
概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所致,看到 ...
- Redis 菜鸟进阶
Redis 菜鸟进阶 背景 最近产品一直要优化性能,加强高可用. 有一个课题是Redis高可用与性能调优. 我这边其实获取到的内容很有限. 最近济南疫情严重,自己锁骨骨折. 然后通勤时间基本上都用来查 ...
- 如何写出高质量的代码 data 组件 函数 注释 命名 变量的次数
今天在将以前文件上传的地方全部 改为新的文件上传的api. 在改动的过程中,发现代码有很多不合理的地方 在改的时候,因此也是非常的痛苦的哈. 比如说在data中我有太多的flag标识.俩控制元素的显示 ...
- ACME笔记(思维导图)
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯
- TienChin 渠道管理-配置校验失败信息
新建 ValidationMessages.properties: channel.name.notnull=渠道名称不能为空 channel.type.notnull=渠道类型不能为空 channe ...
- 7.4 Windows驱动开发:内核运用LoadImage屏蔽驱动
在笔者上一篇文章<内核监视LoadImage映像回调>中LyShark简单介绍了如何通过PsSetLoadImageNotifyRoutine函数注册回调来监视驱动模块的加载,注意我这里用 ...
- C/C++ 常见数组排序算法
本文介绍了几种常见的排序算法的实现,包括冒泡排序.选择排序.插入排序.希尔排序.归并排序和快速排序.冒泡排序通过多次遍历数组,比较并交换相邻元素,逐步将较小元素"浮"到数组顶端,时 ...
- MySQL 存储过程与函数(精简笔记)
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RD ...
- 从嘉手札<2023-11-13>
1. 很多时候 成功并不等同于成长 成功是很多因素复合形成的一种结果 而并不等同于一个人阅历的丰富.认知的提高 2. 我一直认为 世界不属于投机者 也不属于堕落者 信念感在这个大数据泛滥.碎片化汹涌的 ...
- SpringCloud-02-Nacos注册中心
Nacos注册中心 1.认识Nacos Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件.相比Eureka功能更加丰富,在国内受欢迎程度较高. 2.安装Nacos 1 1.下载安装 ...