这学期为数不多的精读论文中基本上都涉及到了Embedding这个概念,下面结合自己的理解和查阅的资料对这个概念进行一下梳理。

========================================================

在自然语言处理领域,由于计算机并不直接处理文本,需要将其先转化成易于计算的特征向量。这里就需要用到文本特征表示模型,主要有两大类:直接从原始文本生成文本向量(LDA);先从文本中获取字向量,然后在字向量的基础上得到文本向量(词袋模型基于词的one-hot表示,word2vec基于词的分布式表示)。

语言模型:通过上下文的词,计算某个词出现的概率的模型。其实就是一个多分类器

文本特征表示模型:将原始文本中的词、词组和句子转化为易于计算的特征向量,常用的有词袋模型、LDA模型、概率神经网络模型等。其中实际应用较多的是词袋模型,学术研究中用的较多的是深度神经网络模型。

词向量表示方法:One-hot表示和分布式表示(即用一个词附近的其他词来表示该词)

词袋模型:将文本看成一系列的词语集合,将集合中所有词语构成一个词典,为每个词语构建索引,那么整个文本就能表示为一个索引集(一系列词的集合)。由于词很多,所以用袋子装起来,就简称为词袋模型了。

“基于词袋的词向量表达法像是为每一个文本建立了一个统计直方图,直方图的x轴是单词,y轴是单词在该文本的词频(或者TF-IDF)”。也就是将不定长的文本型数据转化为定长的数值型数据,便于机器学习方法处理

词向量模型:“词向量模型是考虑词语位置关系的一种模型。通过大量语料的训练,将每一个词语映射到高维度(几千、几万维以上)的向量当中,通过求余弦的方式,可以判断两个词语之间的关系。这个高维的向量就是词向量现在常用word2vec构成词向量模型。

word2vec:

是一个计算词嵌入/词向量(word embedding)的工具,包含两种训练模型:CBOW模型根据中心词w(t)周围的词如w(t-2)&w(t-1)&w(t+1)&w(t+2)来预测中心词w(t);Skip-gram模型则根据中心词W(t)来预测周围词。

由于one-hot编码得到的矩阵太稀疏而且维度太高了,所以可以将one-hot向量作为word2vec的输入,通过word2vec训练低维词向量(word embedding)。或者直接将得到的编码序列通过word2vec转化成固定维度的向量,及得到自己的word embedding。

TF-IDF:词频(词的出现频率)-逆文档频率(衡量词的常见程度,如果是'的'/'了'这种没有实际意义的词,可以设置一个小的权重),分母+1是避免分母为0。TF-IDF=TF*IDF

但是还是没有表现出词的位置信息以及相互关系。

N-gram模型:为了保持词的顺序,所以类似于滑窗操作。N表示滑窗的大小,比如如果为2-gram,那么两个词当成一组,如我爱吃火锅可以构造的词典为{"我爱":1,"爱吃":2,"吃火锅":3}

one-hot(独热)编码

在机器学习算法中,会遇到很多分类的特征,比如颜色中的红橙黄绿、国籍、性别等,这些特征值都是离散的,但是要用算法实现的话,要对这些特征进行特征数字化处理。

也就是对这些特征进行数字化编码,比如把颜色中的红橙黄绿对应为[0,1,2,3],但是这样也存在不合理性,1+2=3,也就是橙+黄变成绿,每个特征值又没有数值叠加的特点,在逻辑上显然是说不通的。

one-hot编码,通过查阅资料,给出的定义是又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都是由其独立的寄存器位,并且在任意时候只有一位有效。是分类变量作为二进制向量的表示,首先要求将分类值映射到整数值,然后每个整数值被表示为二进制向量,除了整数的索引外,都是0。

在特征提取上属于词袋模型

举个例子,

#今天也要加油鸭
[
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
]

那么,每一个字都被表示为一个包含七个元素的数组,每个字都与列表中的唯一一个数组对应,构成了一个稀疏矩阵。

如果将其表示为列表的形式:

#今天也要加油鸭
[ ]

one-hot编码形成稀疏矩阵显然更便于计算与理解。而且解决了能分开词,这个最基本的问题。

缺点:1)但是如果当这个文本数量变大,不是一句话,而是一本长篇小说,那需要表示成为一个...无法想象的矩阵,那这样的矩阵会过于稀疏,过度占用资源!

2)并且one-hot矩阵没有办法表示词的顺序关系,无法表示上下文。

===============================

Embedding层的作用

一维列表也不行,二维稀疏矩阵也不行,怎么办呢?

这里就引入了Embedding的概念,由密集向量表示,实现降维!也就是说Embedding就是把高维的one-hot进行降维的过程。

“并不是每个单词都会被一个向量来代替,而是被替换为用于查找嵌入矩阵中向量的索引”

同时训练神经网络时,每个Embedding向量都会得到更新,即在不断升维和降维的过程中,找到最适合的维度。

===================

参考的博文

https://juejin.im/entry/5acc23f26fb9a028d1416bb3

https://blog.csdn.net/weixin_42078618/article/details/82999906

https://blog.csdn.net/kl1411/article/details/82981955

https://blog.csdn.net/program_developer/article/details/80852710

https://blog.csdn.net/u010412858/article/details/77848878

https://spaces.ac.cn/archives/4122

深度学习中Embedding的理解的更多相关文章

  1. 从极大似然估计的角度理解深度学习中loss函数

    从极大似然估计的角度理解深度学习中loss函数 为了理解这一概念,首先回顾下最大似然估计的概念: 最大似然估计常用于利用已知的样本结果,反推最有可能导致这一结果产生的参数值,往往模型结果已经确定,用于 ...

  2. 【转载】深度学习中softmax交叉熵损失函数的理解

    深度学习中softmax交叉熵损失函数的理解 2018-08-11 23:49:43 lilong117194 阅读数 5198更多 分类专栏: Deep learning   版权声明:本文为博主原 ...

  3. 深度学习中dropout策略的理解

    现在有空整理一下关于深度学习中怎么加入dropout方法来防止测试过程的过拟合现象. 首先了解一下dropout的实现原理: 这些理论的解释在百度上有很多.... 这里重点记录一下怎么实现这一技术 参 ...

  4. 模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理、分类及应用

    模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理.分类及应用 lqfarmer 深度学习研究员.欢迎扫描头像二维码,获取更多精彩内容. 946 人赞同了该文章 Atte ...

  5. 关于深度学习中的batch_size

    5.4.1 关于深度学习中的batch_size 举个例子: 例如,假设您有1050个训练样本,并且您希望设置batch_size等于100.该算法从训练数据集中获取前100个样本(从第1到第100个 ...

  6. 深度学习中Dropout原理解析

    1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象. 在训练神经网络的时候经常会遇到过拟合的问题 ...

  7. 卷积在深度学习中的作用(转自http://timdettmers.com/2015/03/26/convolution-deep-learning/)

    卷积可能是现在深入学习中最重要的概念.卷积网络和卷积网络将深度学习推向了几乎所有机器学习任务的最前沿.但是,卷积如此强大呢?它是如何工作的?在这篇博客文章中,我将解释卷积并将其与其他概念联系起来,以帮 ...

  8. 深度学习中的Normalization模型

    Batch Normalization(简称 BN)自从提出之后,因为效果特别好,很快被作为深度学习的标准工具应用在了各种场合.BN 大法虽然好,但是也存在一些局限和问题,诸如当 BatchSize ...

  9. [优化]深度学习中的 Normalization 模型

    来源:https://www.chainnews.com/articles/504060702149.htm 机器之心专栏 作者:张俊林 Batch Normalization (简称 BN)自从提出 ...

随机推荐

  1. Android各版本特性

    此篇文章可以利用碎片化时间进行消化和了解,针对Android各个版本特性,并没有把所有列出,只是抽出了比较常用重要的特性作为提示,同时在面试中只要牢记重要的几个点即可,其他特性直接查找官方文档即可. ...

  2. UDK命令

    UDK命令行参数与控制台命令都是大小写不敏感的 命令行  udn中文  udn英文 全词大小写匹配,正则表达式,在c++代码中搜索减号开头的命令行参数(如:-BENCHMARK.-onethread等 ...

  3. 创建你的第一个Composer/Packagist包

    今天我们要介绍一下如何通过Composer和Packagist向PHP社区贡献代码包.首先,如果你是一个PHP开发者但是还不知道什么是Composer,请先参考了一下这篇文章http://docs.p ...

  4. 英语口语练习系列-C02-抱怨

    连接到英语口语系列总分类 连接到上一章棒棒的 竹石 郑燮 zhèng xiè 竹石 作者:郑燮 咬定青山不放松,立根原在破岩中. 千磨万击还坚劲,任尔东西南北风. Our team sucks. 我们 ...

  5. php使用root用户启动

    一般情况下,肯定是不推荐使用root用户启动php的 但是在某些服务器管理想使用WEB的方式来控制操作的话,那么就必须要使用root用户才有权限操作 1.修改配置文件php-fpm.conf的启动用户 ...

  6. chrome浏览器插件开发实例

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code   具体步骤: 1.新建 manifest.json 文件 { "name& ...

  7. linux用户身份和文件权限

    1.用户身份与能力 root管理员是linux 的超级用户,他拥有系统的所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭服务进程,开启/禁用硬件设备…… "Linux系统中的管理 ...

  8. Autoware(1)——快速开始

    该部分可参照github Autoware中的 Demo Quick_Start. 1. 建立目录“.autoware”来保存demo数据 mkdir .autoware 2. 下载Demo数据下载d ...

  9. C++ 标准库之 iomanip 、操作符 ios::fixed 以及 setprecision 使用的惨痛教训经验总结

    本菜鸡自从退役之后就再也没怎么敲过 C++ 代码,在 C++ 语言下,求解关于浮点数类型的问题时,之前有碰到类似的情况,但是似乎都没有卡这块的数据,基本上用一个 setprecision 函数保留几位 ...

  10. 追逐心目中的那个Ta

    申明:全篇皆为作者臆想,浪漫主义代表派作品,若有雷同,纯属巧合 人生最难过的不就是在一无所有的年纪里遇到了最想呵护一生的人,而在拥有一切的时候却失去了不顾一切的心. 长夜漫漫,本是相思人,偏听多情曲, ...