词嵌入以及word2vec的介绍

2024-06-21 09:38
文章标签 word2vec 嵌入 介绍

本文主要是介绍词嵌入以及word2vec的介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


作者:Dhruvil Karani

编译:ronghuaiyang

前戏

给大家介绍一些词嵌入和word2vec的一些基础内容,非常的浅显,都可以看得懂。

词嵌入是文档词汇表最常用的表示形式之一。它能够捕捉文档中某个单词的上下文、语义和句法相似性、与其他单词的关系等。

词嵌入到底是什么?粗略地说,它们是特定单词的向量表示。说了这么多,接下来是我们如何生成它们?更重要的是,它们如何捕获上下文的?

Word2Vec是利用浅层神经网络学习词嵌入的最常用技术之一。它由Tomas Mikolov于2013年在谷歌开发。

让我们一步一步来解决这个问题。

我们为什么需要词嵌入?

考虑下面类似的句子: Have a good dayHave a great day.。它们几乎没有不同的意思。如果我们构建一个详尽的词汇表(我们称它为V),那么V = {have, a, good, great, day}。

现在,让我们为V中的每一个单词创建一个独热编码的向量。我们的独热编码向量的长度等于V(=5)的大小。我们会得到一个除了表示词汇表中相应单词的索引处的元素,这个特定的元素是1,其他全是0的向量。下面的编码可以更好地解释这一点。

Have = [1,0,0,0,0]‘; a=[0,1,0,0,0]’ ; good=[0,0,1,0,0]‘ ; great=[0,0,0,1,0]’ ; day=[0,0,0,0,1]’      (‘ 表示转置)

如果我们试着去可视化这些编码,我们可以想象一个5维空间,其中每个单词占据一个维度,而与其他维度无关(没有沿其他维度的投影)。这意味着“good”和“great”的不一样的程度就像“day”和“have”的不一样的程度是相同的,这是不对的。

我们的目标是让具有相似上下文的单词具有相近的空间位置。从数学上讲,这两个向量夹角的余弦值应该接近1,也就是角度接近0。

640?wx_fmt=png

这就产生了生成分布表示的想法。直观地说,我们引入了一个单词对另一个单词的依赖关系。在这个单词的上下文中,这些单词会得到更多的这种依赖性。在一个独热编码表示中,所有单词都是相互独立的。

Word2Vec该怎么得到呢?

Word2Vec是一种构造这种嵌入的方法。它可以通过两种方法得到(都涉及到神经网络):Skip Gram和Continuous Bag Of Words, CBOW。

CBOW模型:该方法将每个单词的上下文作为输入,并尝试预测与上下文对应的单词。考虑我们的例子:Have a great day.

让输入到神经网络的单词是,great。注意,这里我们尝试使用单个上下文输入单词great预测一个目标单词(day)。更具体地说,我们使用输入字的一个独热编码,并度量与目标单词(day)的独热编码之间的误差。在预测目标单词的过程中,我们学习了目标单词的向量表示。

让我们更深入地了解实际的架构。

640?wx_fmt=png

输入或上下文单词是一个长度为V的独热编码向量。隐藏层包含N个神经元,输出也是一个V长度向量,其中元素为softmax值。

让我们了解一些图中的术语:

  • Wvn是将输入x映射到隐藏层(V*N维矩阵)的权重矩阵

  • Wnv是将隐藏层输出映射到最终输出层(N*V维矩阵)的权重矩阵

我就不讲数学了。我们只需要知道发生了什么。

隐藏层神经元只是将输入进行加权和复制到下一层。没有像sigmoid, tanh或ReLU那样的激活。唯一的非线性计算是输出层的softmax。

但是,上面的模型使用单个上下文单词来预测目标。我们可以使用多个上下文单词来做同样的事情。

640?wx_fmt=png

上面的模型使用C个上下文单词。当Wvn用于计算隐藏层输入时,我们对所有这些C上下文字输入取平均值。

我们已经看到了如何使用上下文单词生成单词表示。但是还有一种方法我们可以做同样的事情。我们可以使用目标词(我们希望生成其表示)来预测上下文,并在此过程中生成表示。另一种称为Skip Gram模型的变体可以做到这一点。

Skip-Gram模型:

640?wx_fmt=png

这看起来像是把多上下文CBOW模型翻转过来。这在某种程度上是正确的。

我们把目标词输入网络。模型输出C个概率分布。这是什么意思?

对于每个上下文位置,我们得到V概率的C个概率分布,每个单词一个。

在这两种情况下,网络都使用反向传播来学习。详细的数学计算可这里找到。

谁比较厉害?

两者都有自己的优点和缺点。Mikolov说,Skip Gram可以很好地处理少量数据,并且可以很好地表示罕见的单词。

另一方面,CBOW更快,对于更频繁的单词有更好的表示。

前方还有哪些内容?

以上的解释是一个非常基本的解释。它只是让你对词嵌入是什么,以及Word2Vec如何工作有了一个高层次的了解。

还有很多事情要做。例如,为了提高算法的计算效率,使用了分层Softmax和Skip-Gram负采样等技巧。所有这些都可以在这里(https://arxiv.org/pdf/1411.2738.pdf)找到。

640?wx_fmt=png— END—

英文原文:https://towardsdatascience.com/introduction-to-word-embedding-and-word2vec-652d0c2060fa

640?wx_fmt=jpeg

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧640?wx_fmt=gif

这篇关于词嵌入以及word2vec的介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080862

相关文章

揭秘未来艺术:AI绘画工具全面介绍

📑前言 随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们生活的方方面面。在艺术创作领域,AI技术同样展现出了其独特的魅力。今天,我们就来一起探索这个神秘而引人入胜的领域,深入了解AI绘画工具的奥秘及其为艺术创作带来的革命性变革。 一、AI绘画工具的崛起 1.1 颠覆传统绘画模式 在过去,绘画是艺术家们通过手中的画笔,蘸取颜料,在画布上自由挥洒的创造性过程。然而,随着AI绘画工

20.Spring5注解介绍

1.配置组件 Configure Components 注解名称说明@Configuration把一个类作为一个loC容 器 ,它的某个方法头上如果注册7@Bean , 就会作为这个Spring容器中的Bean@ComponentScan在配置类上添加@ComponentScan注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan>@Sc

C++标准模板库STL介绍

STL的六大组成部分 STL(Standard Template Library)是 C++ 标准库中的一个重要组成部分,提供了丰富的通用数据结构和算法,使得 C++ 编程变得更加高效和方便。STL 包括了 6 大类组件,分别是算法(Algorithm)、容器(Container)、空间分配器(Allocator)、迭代器(Iterator)、函数对象(Functor)、适配器(Adapter)

一二三应用开发平台应用开发示例(4)——视图类型介绍以及新增、修改、查看视图配置

调整上级属性类型 前面为了快速展示平台的低代码配置功能,将实体文件夹的数据模型上级属性的数据类型暂时配置为文本类型,现在我们调整下,将其数据类型调整为实体,如下图所示: 数据类型需要选择实体,并在实体选择框中选择自身“文件夹” 这时候,再点击生成代码,平台会报错,提示“实体【文件夹】未设置主参照视图”。这是因为文件夹选择的功能页面,同样是基于配置产生的,因为视图我们还没有配置,所以会报错。

49-1 内网渗透 - Bypass UAC介绍

一、Bypass UAC         用户账户控制(UAC)是Windows操作系统的一种安全机制,旨在防止未经授权的应用程序自动安装并防止非授权修改系统设置。它确保应用程序和任务通常在非管理员账户的安全上下文中运行,除非明确需要管理员权限,用户才会被提示确认。         对于非RID 500的管理员用户(除了内置的Administrator账户),当他们登录时,系统会为其分配两个访

okhttp3的详细介绍

这篇文章说下OkHttp的基本用法,是最新的3哦,如果你曾经在网上搜索OkHttp怎么使用发现有些类没有了可能是因为人家说的是2。首先说下OkHttp3是Java和Android都能用,Android还有一个著名网络库叫Volley,那个只有Android能用。导入自己到入jar包,别漏了okio:okhttp-3.3.0.jarokio-1.8.0.jarmaven方式:<dependen

Retrofit详细介绍

转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51910837 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的收货! 一、Retrofit 是什么? Retrofit is a type-safe HTTP client for Android and java. Retrofit 是与 Web 服务器提

Retrofit介绍案例

Retrofit这东西我就不多做解释了,反正最近应用很广,基本都快和OkHttp一起成为安卓的事实网络访问标准框架了。   这么好的一个东西,官网文档实在是不算太好,说的不太清晰。按官网的经常会有“Could not locate ResponseBody converter for”问题。 反正折腾了一番,终于跑出来了一个例子。这里把正确的例子写出来,方便大家参考。 首先要注意

okclient2详细介绍

在 Java 程序中经常需要用到 HTTP 客户端来发送 HTTP 请求并对所得到的响应进行处理。比如屏幕抓取(screen scraping)程序通过 HTTP 客户端来访问网站并解析所得到的 HTTP 文档。在 Java 服务端程序中也可能需要使用 HTTP 客户端来与第三方 REST 服务进行集成。随着微服务(microservices)的流行,HTTP 成为不同服务之间的标准集成方式。H

Hbase特性介绍

1、什么是Hbase。 是一个高可靠性、高性能、列存储、可伸缩、实时读写的分布式数据库系统。 适合于存储非结构化数据,基于列的而不是基于行的模式 如图:Hadoop生态中HBase与其他部分的关系。 2、关系数据库已经流行很多年,并且Hadoop已经有了HDFS和MapReduce,为什么需要HBase? Hadoop可以很好地解决大规模数据的离线批量处理问题,但是,受限于Hadoo