在了解什么是嵌入(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学习其三】在学习什么是嵌入之前,你应该了解什么是词语表征的更多相关文章

  1. 图解BERT(NLP中的迁移学习)

    目录 一.例子:句子分类 二.模型架构 模型的输入 模型的输出 三.与卷积网络并行 四.嵌入表示的新时代 回顾一下词嵌入 ELMo: 语境的重要性 五.ULM-FiT:搞懂NLP中的迁移学习 六.Tr ...

  2. (转)Predictive learning vs. representation learning 预测学习 与 表示学习

    Predictive learning vs. representation learning  预测学习 与 表示学习 When you take a machine learning class, ...

  3. 对比学习:《深度学习之Pytorch》《PyTorch深度学习实战》+代码

    PyTorch是一个基于Python的深度学习平台,该平台简单易用上手快,从计算机视觉.自然语言处理再到强化学习,PyTorch的功能强大,支持PyTorch的工具包有用于自然语言处理的Allen N ...

  4. java JDK8 学习笔记——助教学习博客汇总

    java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ...

  5. [未完成]WebService学习第一天学习笔记

    [未完成]WebService学习第一天学习笔记[未完成]WebService学习第一天学习笔记

  6. Asp.net MVC4高级编程学习笔记-视图学习第一课20171009

    首先解释下:本文只是对Asp.net MVC4高级编程这本书学习记录的学习笔记,书本内容感觉挺简单的,但学习容易忘记,因此在边看的同时边作下了笔记,可能其它朋友看的话没有情境和逻辑顺序还请谅解! 一. ...

  7. 2019最新WEB前端开发小白必看的学习路线(附学习视频教程)

    2019最新WEB前端开发小白必看的学习路线(附学习视频教程).web前端自学之路:史上最全web学习路线,HTML5是万维网的核心语言,标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次 ...

  8. 最近开始学习Cesium,学习学习。

    最近开始学习Cesium,学习学习.

  9. 新手如何学习Java——Java学习路线图

    推荐初学者阅读:新手如何学习Java——Java学习路线图

随机推荐

  1. Pytorch_Part3_模型模块

    VisualPytorch beta发布了! 功能概述:通过可视化拖拽网络层方式搭建模型,可选择不同数据集.损失函数.优化器生成可运行pytorch代码 扩展功能:1. 模型搭建支持模块的嵌套:2. ...

  2. [bug] IDEA springboot项目 访问静态资源 html页面 报404

    原因 复制的静态资源目录没有编译 解决 检查target目录中,是否有static目录,若没有,重新右键项目install即可 若还不能解决,尝试浏览器缓存和IDEA编译设置,详见参考链接 参考 ht ...

  3. [刷题] 70 Climbing Stairs

    要求 楼梯共有n个台阶,每次上一个台阶或两个台阶,一共有多少种上楼梯的方法? 示例 输入:n=3 [1,1,1],[1,2,],[2,1] 输出:n=3 实现 自顶向下(递归) 递归 1 class ...

  4. QT发布 - 动态编译,删减以来dll

    经常看到网上有些论调说 Qt 程序无比庞大,甚至拿 .NET 程序来比,说 Qt 程序打包以后跟 .NET 安装包差不多大.由此影响了很多人对 Qt 的选择.我觉得有必要对此做一些澄清-- 显然这个说 ...

  5. ip_conntrack or nf_conntrack : table full, dropping packet

    nf_conntrack: table full, dropping packet ip_conntrack or nf_conntrack : table full, dropping packet ...

  6. ]# dmesg | grep ATAcentos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息

    centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息 osc_4o5tc4xq 2019/10/11 15:03 阅读数 253 centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信 ...

  7. Linux——定时清空日志内容和删除日志文件

    前言 最近在做性能压测试,会生成大量的日志,导致后续越压越慢,最终磁盘空间占满之类的问题.老是要手动删除日志文件,为避免此类问题发生,编写一个Linux日志定时清理的脚本,一劳永逸. 1.shell脚 ...

  8. Rust trait

    Rust trait Rust中的trait类似于Java中的接口,定义了一组可以被类型选择实现的"契约"或共享行为,. 特征定义: trait Playable{ fn play ...

  9. mysql如何设置一个字段,里面是自增的序号(1,2,3,..........)。

    [遇到问题] [可忽略] 想把以前写的留言板搬到我的网站上去,所以要在Mysql上创建一个一mu一样的数据库,表单,字段..................... userid这个字段忘记了如何添加, ...

  10. Centos7 搭建prometheus+Grafana监控

    https://baijiahao.baidu.com/s?id=1676883786156871051&wfr=spider&for=pc node   scrape_configs ...