【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 传统方法的局限 前面已经讲过了隐马尔可夫 ...
随机推荐
- OpenPower服务使用node-exporter prometheus以及grafana进行性能监控的流程
OpenPower服务器性能监控操作流程 1. 前言 最近看了很多prometheus以及influxdb进行性能监控的帖子,简单学习了下influxdb是一个单纯的时序数据库,prometheus是 ...
- runc网络与systemd管理runc应用
1. 创建网络命名空间 ip netns add <ns> # ns是自定义网络空间名 # 例如: ip netns add haproxy # 创建一个给 haproxy使用的网络命名空 ...
- ElasticSearch必知必会-基础篇
商业发展与职能技术部-体验保障研发组 康睿 姚再毅 李振 刘斌 王北永 说明:以下全部均基于eslaticsearch 8.1 版本 一.索引的定义 官网文档地址:https://www.elasti ...
- 【VMware vSAN】使用命令行从vSAN集群中移除ESXi主机并加入到新的vSAN集群。
说明 本文只是陈述了一种方法,不必评判谁对谁错谁好谁坏,选择适合自己的即可. 环境 站点名称 vCenter版本 vSAN集群 集群主机 主机版本 磁盘组 vcsa67.lab.com vCenter ...
- 队列(Queue):先进先出(FIFO)的数据结构
队列是一种基本的数据结构,用于在计算机科学和编程中管理数据的存储和访问.队列遵循先进先出(First In, First Out,FIFO)原则,即最早入队的元素首先出队.这种数据结构模拟了物理世界中 ...
- el-tree只展示前三个节点数据
后端也返回了第四等级,但是不想让他展示,可以这样解决只展示前三等级 // 获取room树 getRoomTreeList() { getRoomTree().then((res) => { // ...
- 我为什么从Windows转到Linux?
本文来自读者投稿! 大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步! 喔,看到这个标题千万不要以 ...
- 进程锁(互斥锁)(Python)
3:# 抢票示例 import json import time from multiprocessing import Process,Lock def search(i): with open(' ...
- Windows安装MongoDB6.0.2
环境 Windows 10 MongoDB 6.0.2 配置 下载mongodb 下载地址:https://www.mongodb.com/try/download/community 安装 指定目录 ...
- Swift中指针UnsafePointer的常见用法
指针类型 //基本指针 UnsafePointer<T> const T * UnsafeMutablePointer T * //集合指针 UnsafeBufferPointer con ...