【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学习路线图
随机推荐
- Linux主机USB RNDIS网卡驱动实现不完整导致的一例问题
某通信模块设备,通过USB提供RDNIS和ECM网卡功能.在实际应用中发现,USB RNDIS网卡模式下,当使用AT指令以不同的CID拨号的时候,在Windows主机上能正常拨号成功,但在Linux主 ...
- openstack创建vlan网络并配置网络设备
1.在管理员-->网络-->创建网络. 2.填写网络信息,这里要划分新的VLAN,注意在物理网络中填写的事VLAN,段ID指的是vlan的id 3.创建的网络. 4.创建子网,在里面修改子 ...
- RHEL/CentOS 7 中配置 PXE 网络启动服务器
RHEL/CentOS 7 中配置 PXE 网络启动服务器 作者: Matei Cezar 译者: LCTT joeren | 2015-02-17 14:28 评论: 13 收藏: 8 分享: ...
- Socket编程——(转载)
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠so ...
- MyBatis 高级查询之多对多查询(十一)
高级查询之多对多查询 查询条件:根据玩家名,查询游戏信息 我们在之前创建的映射器接口 GameMapper.java 中添加接口方法,如下: /** * 根据玩家名查询游戏 * @param name ...
- static在C/C++中的作用-(转自华山大师兄)
1.先来介绍它的第一条也是最重要的一条:隐藏.(static函数,static变量均可) 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.举例来说明.同时编译两个源文件 ...
- Centos7挂载windows共享目录
将windows的共享目录挂载到Centos7 查看是否有mount.cifs命令,如果没有,在线安装 [root@dropbox-bak01 ~]# yum install cifs-utils - ...
- tkinter是内置的模块,不同的版本的导入形式不同,现总结如下
#coding=utf-8 import os, sys try: from tkinter import * except ImportError: #Python 2.x PythonVersio ...
- 分布式锁中的王者方案-Redisson
上篇讲解了如何用 Redis 实现分布式锁的五种方案,但我们还是有更优的王者方案,就是用 Redisson. 缓存系列文章: 缓存实战(一):20 图 |6 千字|缓存实战(上篇) 缓存实战(二):R ...
- [LeetCode] 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
都儿童节了,为什么要折磨一个几百个月大的孩子? 把题意读懂挺难的.不过读懂后基本也就知道怎么做了.恶心的是int类型可能会越界,要用long类型(很难想到).这题不好 [1744. 你能在你最喜欢的那 ...