【NLP学习其三】在学习什么是嵌入之前,你应该了解什么是词语表征
在了解什么是嵌入(embeddings)之前,我们需要先搞清楚一个词语在NLP中是如何被表示的
注:本次不涉及任何具体算法,只是单纯对概念的理解
词汇表征
One-Hot
词汇的表示方法有很多,最有名的肯定是独热编码(One-Hot )了。因为不是重点,所以下面只简单介绍一下
废话不多说,上图!

假设我们有10000个词,Man位于第5391个,Woman位于9853,如果想要唯一表示这些词怎么办?
我们可以根据词的总量创建一个n行一列的矩阵,在某个词出现的地方标注为1,其余都用0填充,这样就可以唯一表示某个词了(如上图中的Man),这就是One-Hot编码的基本原理
为什么它常常被提到?可能因为比较好理解吧
但One-Hot其实有很多问题的,例如:
- 数据量大了就炸了
- 词与词之间没有关联性
关于第二个缺点这里单独说明一下
设想你已经有一个训练好的语言模型,可以预测句子下一个词是什么,如:
我想喝可口()#模型会判断出完整句子为“我想喝可口可乐”
但是换一下
我想喝百事()#这时候你的模型可能不知道“百事”与“可口”之间的联系,自然它不会输出“我想喝百事可乐”的结果
这种情况我们称为泛化性差。
那么想要提高泛化性,我们势必要获得词语之间的关系
一种自然的思路就是增加维度
高维词语表征
这里为什么不说一种具体的方法呢?因为我还是想从举例入手,避免一步太大扯着蛋
废话不多说,还是上图

我们还是沿用之前的例子,只是这里我们加入了Apple和CS两个新词
这次试试用特征化的表示方法来表示这些词,因此,我们的学习对象从词的唯一表示变成了词的特征
例如,我们想知道这些词语与性别(gender)这个特征之间的关系
因为Man和Woman本质上就是性别的指代,这两个词应该最接近性别(gender)特征,所以我们假设男人的性别值是-1,女人的是1。
King和男人是非常相关的则可设为-0.95,Queen则与女人非常相关,可设为0.97,Apple和CS则与性别没什么关系,这显然是符合我们认知的。
注意:这里的数字只是为了说明相关性,不是由某种计算得出的(暂时不是),你也可以把King设成-0.91
图中其余特征表示原理类似
又如游戏(Game)与CS这个词相关性大,因此CS的数值为0.98,而其余的就很低,表明他们与游戏这个特征没什么关系
那么好了,现在我们把特征扩展到500个

也就是说,我们有了500个维度去衡量一个词语
此时右边出现了一些由数值构成的奇怪阵列(你在看glove之类的模型时经常会看见这种东西)
现在,我们还是用一个矩阵表示一个词,这个矩阵的大小为500行1列,由某个词的特征构成从而具有唯一性
由此,Man就可以表示为e_5391,同理可以表示其他词汇
因此,高维表示会比One-Hot有更好的泛化能力。
这种用300维的特征去表示一个词语的方法就称为嵌入(embeddings),至于为什么叫嵌入,我猜可能与高维图像的表示有关,类似于一种嵌套。
【NLP学习其三】在学习什么是嵌入之前,你应该了解什么是词语表征的更多相关文章
- 图解BERT(NLP中的迁移学习)
目录 一.例子:句子分类 二.模型架构 模型的输入 模型的输出 三.与卷积网络并行 四.嵌入表示的新时代 回顾一下词嵌入 ELMo: 语境的重要性 五.ULM-FiT:搞懂NLP中的迁移学习 六.Tr ...
- (转)Predictive learning vs. representation learning 预测学习 与 表示学习
Predictive learning vs. representation learning 预测学习 与 表示学习 When you take a machine learning class, ...
- 对比学习:《深度学习之Pytorch》《PyTorch深度学习实战》+代码
PyTorch是一个基于Python的深度学习平台,该平台简单易用上手快,从计算机视觉.自然语言处理再到强化学习,PyTorch的功能强大,支持PyTorch的工具包有用于自然语言处理的Allen N ...
- java JDK8 学习笔记——助教学习博客汇总
java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ...
- [未完成]WebService学习第一天学习笔记
[未完成]WebService学习第一天学习笔记[未完成]WebService学习第一天学习笔记
- Asp.net MVC4高级编程学习笔记-视图学习第一课20171009
首先解释下:本文只是对Asp.net MVC4高级编程这本书学习记录的学习笔记,书本内容感觉挺简单的,但学习容易忘记,因此在边看的同时边作下了笔记,可能其它朋友看的话没有情境和逻辑顺序还请谅解! 一. ...
- 2019最新WEB前端开发小白必看的学习路线(附学习视频教程)
2019最新WEB前端开发小白必看的学习路线(附学习视频教程).web前端自学之路:史上最全web学习路线,HTML5是万维网的核心语言,标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次 ...
- 最近开始学习Cesium,学习学习。
最近开始学习Cesium,学习学习.
- 新手如何学习Java——Java学习路线图
推荐初学者阅读:新手如何学习Java——Java学习路线图
随机推荐
- 深入探索Android热修复技术原理读书笔记 —— so库热修复技术
热修复系列文章: 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍 深入探索Android热修复技术原理读书笔记 -- 代码热修复技术 深入探索Android热修复技术原理读书笔记 ...
- 变量覆盖-高级篇(动态覆盖,extract综合)
0x00 原理 变量覆盖漏洞可以让用户定义的变量值覆盖原有程序变量,可控制原程序逻辑. 0x01 代码 <?php highlight_file('index.php'); function ...
- 《我常用的股票投资工具与网站》v2.0
<我常用的股票投资工具与网站>v2.0 王大海 职业投资,抽空做一点分享. 661 人赞同了该文章 "少年你好,想不到你竟有如此因缘际会看到这里.我看你骨骼精奇,定是万中无一的交 ...
- SPEC 2000 整形和浮点性能测试结果是各项基准程序得分的几何平均值,几何平均值是 n 个数连乘之 后再开 n 次根号
SPEC 2000 能够生成多种格式的测试结果报表,包括 asc,ps,raw,pdf,html 等格式,报 表所在目录为/home/sepc2000all/result. 整形和浮点性能测试结果是 ...
- ansible-一键完成LNMP架构_期中架构
ansible-一键完成LNMP架构 ansible剧本托管地址 https://github.com/Gshelldong/ansible.git 网站架构图 ansible一键完成lnmp架构 a ...
- mysql如何设置一个字段,里面是自增的序号(1,2,3,..........)。
[遇到问题] [可忽略] 想把以前写的留言板搬到我的网站上去,所以要在Mysql上创建一个一mu一样的数据库,表单,字段..................... userid这个字段忘记了如何添加, ...
- Scala 中 object、class 与 trait 的区别
Scala 中 object.class 与 trait 的区别 引言 当你刚入门 Scala,肯定会迫不及待想要编写自己的第一个 Scala 程序.如果你已经在交互模式下敲过 Scala 代码,想必 ...
- Scala 中为什么不建议用 return 关键字
在scala中使用 return 的话,编译的时候会提示the latest statement is method is automatically returned, use of th retu ...
- 7.2-5 usermod
7.2 usermod:修改用户信息 usermod 命令用于修改系统已经存在的用户的账号信息. -c comment 修改用户password文件中用户的说明栏,同useradd ...
- ubuntu 14.04安装mysql-python
网上看到的是想安装mysql-python都得安装mysql本身,可是我就不想安装这个数据库,而是用于连接到别的服务器上的mysql,所以下面就是安装过程: 1. 直接运行: pip install ...