深度学习(六) Word Embedding

这篇具有很好参考价值的文章主要介绍了深度学习(六) Word Embedding。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

前面我们已经了解了CNN卷积神经网络,这一篇文章我们将了解Word Embedding等词汇编码


一、One-hot编码

1.为什么使用one-hot编码?

首先我们得知道传统的编码方式是怎么样的。传统的编码是通过统计类型出现次数的多少来进行编码的,也就是类别A出现的次数为m,类别B出现的次数为n,那么他们就分别编码为m,n。这样编码有可能导致求加权平均值的时候衍生成为其他类别,会体现不同类别的大小关系,误差较大。所以我们需要采用一种新的编码方式:one-hot编码(独热编码)

2.什么是one-hot编码?

使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。

深度学习(六) Word Embedding

3.one-hot编码的优缺点

  • 优点:
  1. 解决了分类器不好处理离散数据的问题。使用 one-hot 编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值 就 对应欧式空间的某个点。将离散型特征使用 one-hot 编码,确实会让特征之间的距离计算更加合理
  2. 在一定程度上也起到了 扩充特征 的作用。
  • 缺点:
  1. 它是一个词袋模型,不考虑词与词之间的顺序。
  2. 它假设词与词相互独立,不能体现词汇间的相似性
  3. 每个单词的one-hot编码维度是整个词汇表的大小,维度非常巨大,编码稀疏,会使得计算代价变大。

二、Word Embedding(词嵌入)

1.什么是Word Embedding?

将word看作最小的一个单元,将文本空间中的某个word,通过一定的方法,映射或者说嵌入(embedding)到另一个数值向量空间。
Word Embedding的输入是原始文本中的一组不重叠的词汇,将他们放到一个字典里面,例如:[“cat”, “eat”, “apple”],就可以作为一个输入。
Word Embedding的输出就是每个word的向量表示,变成一个矩阵。
深度学习(六) Word Embedding

2.Word Embedding的优点:

  1. 对比one-hot高维稀疏向量,embedding维度低,连续向量,方便模型训练;
  2. 语意相似的词在向量空间上也会比较相近
  3. 一个向量可以编码一词多义(歧义需要另外处理);
  4. 天然有聚类后的效果,,是一种无监督学习。
  5. 罕见词也可以学到不错的表示。

深度学习(六) Word Embedding

3.基于计数的Word Embedding

1.基于计数的Word Embedding的优缺点

  • 优点:
  1. 训练非常迅速
  2. 能够有效的利用统计信息。
  • 缺点:
  1. 主要用于获取词汇之间的相似性(其他任务表现差)
  2. 给定大量数据集,重要性与权重不成比例。

2.Co-Occurence Vector(共现向量)

相似的单词趋向于有相似的上下文(context),我们可以构建一套算法,来实现基于上下文的特征构建。
当我们设置Context Window大小为2,范围为前后两个word,那么对于such这个词,他的Context Window就是下面绿色部分。
深度学习(六) Word Embedding
对于He is not lazy. He is intelligent. He is smart.
以He这这个单词举例,他在词料库里面的所有Context Window里面与is为之共现的词语的次数就是共现矩阵中is的次数
这个语料库来说,共现矩阵应该为:
深度学习(六) Word Embedding
共现矩阵最大的优势是这种表示方法保留了语义信息,例如,通过这种表示,就可以知道哪些词语之间是相对较近的,哪些词语之间是相对较远的。

4.基于预测的Word Embedding

1.基于预测的Word Embedding的优缺点:

  • 优点:
  1. 能够对其他任务有普遍的提高
  2. 能够捕捉到含词汇相似性外的复杂模式
  • 缺点:
  1. 由于词和向量是一对一的关系,所以多义词的问题无法解决
  2. Word2vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化
  3. 没有充分利用所有的语料有存在浪费

2.CBOW(continues bag of words)

对于该语料而言,我们先对其做一个one-hot编码,然后选取Context Window为2,那么模型中的就产生了一对input和target
深度学习(六) Word Embedding

  1. 将产生的两个四维的vector输入到神经网络里面,连接激活函数。激活函数在输入层和隐藏层之间,每个input vector分别乘以一个VxN维度的矩阵,得到后的向量各个维度做平均,得到隐藏层的权重。隐藏层乘以一个NxV维度的矩阵,得到output layer的权重;
  2. 由于隐藏层的维度设置为理想中压缩后的词向量维度。示例中假设我们想把原始的4维的原始one-hot编码维度压缩到2维,那么N=2;
  3. 输出层是一个softmax层,用于组合输出概率。所谓的损失函数,就是这个output和target之间的的差(output的V维向量和input vector的one-hot编码向量的差),该神经网络的目的就是最小化这个loss;
  4. 优化结束后,隐藏层的N维向量就可以作为Word-Embedding的结果。

深度学习(六) Word Embedding
如此一来,便得到了既携带上下文信息,又经过压缩的稠密词向量。

3.Skip – Gram

这个方法可以看作是CBOW的翻转版
深度学习(六) Word Embedding

5.Glove(Global Vectors for Word Representation)

Glove算法是一种基于全局词频统计的回归算法。它不是基于神经网络的,而是基于最小二乘原理的回归方法。
它结合了上面两种算法的优点,可以有效的利用全局的统计信息。
它的过程如下:

  1. 根据语料库构建一个共现矩阵X,提出了一个衰减函数用于计算权重,也就是说距离越远的两个单词所占总计数的权重越小。
  2. 构建词向量(Word Vector)和共现矩阵(Co-ocurrence Matrix)之间的近似关系,论文的作者提出以下的公式可以近似地表达两者之间的关系:
    w i T w j ˜ + b i T + b j ˜ = log ⁡ ( X i j ) w_i^T\~{w_j}+b_i^T+\~{b_j}=\log(X_{ij}) wiTwj˜+biT+bj˜=log(Xij)
    w i T w_i^T wiT w j ˜ \~{w_j} wj˜都是待求解的词向量, b i T b_i^T biT b j ˜ \~{b_j} bj˜都是偏置量
  3. 构造LossFunction。这个loss function的基本形式就是最简单的MSE,只不过在此基础上加了一个权重函数,
    J = ∑ i , j = 1 V f ( X i j ) ( w i T w j ˜ + b i T + b j ˜ − log ⁡ ( X i j ) ) 2 J=\sum_{i,j=1}^Vf(X_{ij})(w_i^T\~{w_j}+b_i^T+\~{b_j}-\log(X_{ij}))^2 J=i,j=1Vf(Xij)(wiTwj˜+biT+bj˜log(Xij))2
  • 这些单词的权重要大于那些很少在一起出现的单词,所以这个函数要是非递减函数
  • 但我们也不希望这个权重过大(overweighted),当到达一定程度之后应该不再增加;
  • 如果两个单词没有在一起出现,他们应该不参与到loss function的计算当中去,所以 f ( 0 ) = 0 f(0)=0 f(0)=0
    深度学习(六) Word Embedding

总结

本文介绍了Word Embedding,希望大家能从中获取到想要的东西,下面附上一张思维导图帮助记忆。
深度学习(六) Word Embedding文章来源地址https://www.toymoban.com/news/detail-478585.html

到了这里,关于深度学习(六) Word Embedding的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【自制C++深度学习框架】前言

    此GitHub项目是一个初学者的深度学习框架,使用C++编写,旨在为用户提供一种简单、易于理解的深度学习实现方式。以下是本项目的主要特点和功能: 计算图:使用计算图来描述深度学习模型的计算过程,利用计算图将神经网络的计算过程视为一个有向无环图。通过构建计算

    2024年02月07日
    浏览(31)
  • 大数据、人工智能、机器学习、深度学习关系联系前言

    1.大数据和人工智能关系 2.机器学习、深度学习、人工智能关系 3.监督学习、无监督学习、半监督学习、强化学习、迁移学习关系 4.机器学习具体内容 1.数据驱动的人工智能 :人工智能系统需要大量的数据来进行训练和学习。大数据提供了海量的信息,可以用于训练机器学习

    2024年02月12日
    浏览(44)
  • 深度学习笔记之Transformer(六)Position Embedding铺垫:Skipgram与CBOW模型

    上一节介绍了 Word2vec text{Word2vec} Word2vec 模型架构与对应策略。本节将继续介绍 Skipgram text{Skipgram} Skipgram 与 CBOW text{CBOW} CBOW 模型架构。 关于 Word2vec text{Word2vec} Word2vec 模型,它的 任务目标 是基于 语料库 ( Corpus ) (text{Corpus}) ( Corpus ) ,对该语料库对应 词汇表 ( Vocabulary ) (

    2024年02月15日
    浏览(26)
  • 【深度学习环境搭建】Windows搭建Anaconda3、已经Pytorch的GPU版本

    无脑下载安装包安装(自行百度) 注意点: 1、用户目录下的.condarc需要配置(自定义环境的地址(别忘了给文件夹加权限);镜像源) 1、先看你的显卡版本 Win +R - 输入命令nvidia-smi,看你的cuda版本 2.下载离线版本安装包(在线也行,只要你有耐心) https://download.pytorch.org

    2024年02月02日
    浏览(44)
  • 2.自然语言处理NLP:词映射为向量——词嵌入(word embedding)

    1. 什么是词嵌入(word2vec) : 把词映射为向量(实数域)的技术 2. 为什么不采用one-hot向量: one-hot词向量无法准确表达不同词之间的相似度,eg:余弦相似度,表示夹角之间的余弦值,无法表达不同词之间的相似度。 3. word2vec主要包含哪两个模型 跳字模型: 基于某个词生成

    2024年02月06日
    浏览(38)
  • 【让我们深度理解语音识别:Siri与Alexa如何运用深度学习和循环神经网络将声音转化为文字

    语音识别技术是近年来人工智能领域的重要研究对象,它的出现大大改善了人与机器的交互方式,增强了人们生活的便捷度。今天,我将带领大家深度了解语音识别技术的内部运作原理,以及语音助手如Siri和Alexa如何运用这些先进技术,实现从声音到文字的转化。在探讨技术

    2024年02月12日
    浏览(24)
  • 【深度学习】神经网络中 Batch 和 Epoch 之间的区别是什么?我们该如何理解?

    随机梯度下降(Stochastic Gradient Descent,SGD)是一种优化算法,用于在机器学习和深度学习中更新模型参数,以最小化损失函数。与传统的梯度下降算法不同,SGD在每次参数更新时只使用一个样本(或一小批样本),而不是使用整个训练数据集。这使得SGD具有更快的收敛速度,

    2024年02月10日
    浏览(29)
  • 【NLP】词袋模型(bag of words model)和词嵌入模型(word embedding model)

    本文作为入门级教程,介绍了 词袋模型 (bag of words model)和 词向量模型 (word embedding model)的基本概念。 先来初步理解一个概念和一个操作: 一个概念:词袋:一张由训练语料得到的词汇表(词典) 一个操作:在给出一篇文本后,需要把文本转换(编码)成数值,才能汇

    2023年04月27日
    浏览(26)
  • 【AI 实战】Text Processing and Word Embedding 文本处理以及词嵌入原理和代码实例讲解

    https://www.youtube.com/watch?v=6_2_2CPB97s 文本处理是自然语言处理(NLP)的一个重要部分,它涉及到将文本数据转化为可以被机器学习算法理解的格式。这个过程通常包括以下步骤: 文本清洗:这是文本处理的第一步,主要是去除文本中的噪声,如特殊字符、数字、标点符号等。

    2024年02月01日
    浏览(38)
  • 明明我们已经安装了第三方库,可是import时却ModuleNotFoundError报错的解决办法

    明明我们已经安装了第三方库,可是用IDLE进行import时却ModuleNotFoundError: No module named \\\'requests’报错 这是因为大家的第三方库多是通过pycharm进行安装的,他的安装位置和python软件的安装位置不一致,而pycharm是按照项目来管理第三方库的。 解决办法就是: 第一步:先找到pytho

    2024年02月11日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包