Speech and Language Processing之word2vec

1、介绍      

       事实证明,在每一个NLP任务中,密集向量都比稀疏向量工作得更好。虽然我们不能完全理解其中的所有原因,但我们有一些直觉。首先,密集向量可以更成功地作为特征包含在机器学习系统中;例如,如果我们使用100维词嵌入作为特征,分类器只需要学习100个权重来表示一个词的含义函数;如果我们使用一个50,000维的向量,分类器将不得不为每个稀疏维学习数万个权重。第二,因为它们比显式计数的稀疏向量包含更少的参数,密集向量可以更好地泛化,并有助于避免过拟合。最后,密集向量可能比稀疏向量在捕获同义词方面做得更好。例如,car和automobile是同义词;但在典型的稀疏向量表示中,汽车维和汽车维是不同的维。因为这两个维度之间的关系没有建模,所以稀疏向量可能无法捕获以car为邻居的单词和以automobile为邻居的单词之间的相似性。

       在本节中,我们将介绍一种处理非常密集的短向量的方法,即skip- gram with negative sampling,有时称为SGNS。skip-gram算法是一个名为word2vec的软件包中的两种算法之一,因此有时该算法被松散地称为word2vec 。word2vec方法快速、有效地训练,并且易于在线使用代码和预训练的嵌入。我们在本章的最后指出了其他嵌入方法,如同样流行的GloVe。

      word2vec的可以认为是,我们不是计算每个单词w出现在杏子附近的频率,而是训练一个分类器进行二元预测任务:“单词w可能出现在杏子附近吗?”我们并不关心这个预测任务;相反,我们将使用学习到的分类器权重作为词嵌入,这一想法最初是在神经语言建模任务中提出的,Bengio等人(2003)和Collobert等人(2011)表明,神经语言模型(学习从先前的单词中预测下一个单词的神经网络)可以使用运行文本中的下一个单词作为其监督信号,并且可以用来学习每个单词的嵌入表示,作为完成该预测任务的一部分。

      我们将在下一章看到如何做神经网络,但word2vec是一个比神经网络语言模型简单得多的模型,有两个方面。首先,word2vec简化了任务(使其成为二进制分类而不是单词预测)。其次,word2vec简化了架构(训练逻辑回归分类器,而不是需要更复杂训练算法的隐藏层的多层神经网络)。skip-gram的直观理解是:

1. 把目标词和邻近的上下文词作为正样本
2. 随机抽取词典中的其他单词,得到负样本
3.使用逻辑回归训练分类器来区分这两种情况
4. 使用回归权重作为词嵌入向量

2、分类器

让我们从考虑分类任务开始,然后转向如何训练。想象一下这样一个句子,目标词是apricot ,假设我们使用了±2个上下文词的窗口:

我们的目标是训练一个分类器,给定目标词t的元组(t,c)与候选上下文词c配对(例如(apricot,jam),或者 (apricot, aardvark)),它将返回c是真实上下文单词的概率(true for jam, fase for aardvark)。

分类器如何计算概率P?skip-gram模型的直觉是基于相似度的概率:如果一个词的嵌入与目标嵌入相似,那么它很可能出现在目标附近。我们如何计算嵌入之间的相似度?回想一下,如果两个向量有很高的点积,它们就是相似的(余弦,最流行的相似性度量,只是一个标准化的点积)。换句话说:

 如上,前面的t*c得到的是俩向量相乘,他的取值范围是负无穷-正无穷,为了得到概率,仍旧需要sigmoid进行压缩。

 

 Word2vec通过从一组初始嵌入向量开始学习嵌入,然后迭代地移动每个单词w的嵌入,使其更像文本中附近出现的单词的嵌入,而不像附近出现的单词的嵌入。

这个例子有一个目标词t(apricot),在L =±2窗口中有4个上下文词,产生4个积极的训练实例(如下图所示): 

 

        为了训练二值分类器,我们还需要负例。事实上,skip- gram使用的负样例比正样例更多(它们之间的比率由参数k设置)。因此,对于每一个(t,c)训练实例,我们将创建k个负样例,每个负样例由目标t加上一个“噪声词”组成。噪声词是来自词典的随机词,被约束为不是目标词t。右图显示了k = 2的设置,因此我们将在负训练集中有2个负样例-对于每个正样例t,c。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/19281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何高清视频录制?您只需要这样操作!

案例:如何录制画质高清的视频? 【我录制了一个视频课程,上传到网上,但是我录制的视频画质不好,影响观感。有没有支持高清录制的录屏工具?有没有小伙伴可以推荐一下!在线等!】 无论…

BM61-矩阵最长递增路径

题目 给定一个 n 行 m 列矩阵 matrix ,矩阵内所有数均为非负整数。 你需要在矩阵中找到一条最长路径,使这条路径上的元素是递增的。并输出这条最长路径的长度。 这个路径必须满足以下条件: 对于每个单元格,你可以往上&#xff…

数组的应用

数组的应用 一、数组的定义二、切片替换删除数值元素 二、数组追加元素三、数组与函数相结合 一、数组的定义 相当于一串数据的集合,以空格相间隔的字符串列表,两边用括号括起来 echo ${shuzu[]}中的代表着显示所有的下标内容,当然&#…

【C++】关联式容器——mapset的使用

文章目录 1.关联式容器和键值对1. 关联式容器2. 键值对 2. 树形结构的关联式容器——set1. 模版参数列表2. 默认成员函数3. 迭代器4.容量相关操作5.modify6.其他操作接口 3. 树形结构的关联式容器——map1. 默认成员函数2. 迭代器3. 容量与数据访问4.数据修改5. 其他操作接口 1…

初识C语言

1. 初识C语言 C语言是一门通用计算机编程语言&#xff0c;广泛应用于底层开发。 C语言是一门面向过程的计算机编程语言&#xff0c;它与C,Java等面向对象的编程语言有所不同。 第一个C语言程序&#xff1a; #include<stdio.h>int main(void) {printf("hello worl…

MyBatis基础知识点总结

MyBatis了解 MyBatis 是什么&#xff1f; MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 MyBatis 可以使用简单的XML或注解用于配置和原始映射&#xff0c;将接口和Java的 POJO&#x…

JVM-内存结构

✅作者简介&#xff1a;热爱Java后端开发的一名学习者&#xff0c;大家可以跟我一起讨论各种问题喔。 &#x1f34e;个人主页&#xff1a;Hhzzy99 &#x1f34a;个人信条&#xff1a;坚持就是胜利&#xff01; &#x1f49e;当前专栏&#xff1a;JVM &#x1f96d;本文内容&…

Mybatis一级缓存详解

目录 一级缓存 一级缓存的组织 一级缓存的生命周期 一级缓存的工作流程 Cache接口的设计以及CacheKey的定义 一级缓存的性能分析 一级缓存与Spring 事务一级缓存存在的弊端 官方文档分析 Spring通过Mybatis调用数据库的过程 一级缓存 对于会话&#xff08;Session&am…

chanmama响应数据解析

0x00目标url aHR0cHM6Ly93d3cuY2hhbm1hbWEuY29tL2F1dGhvckRldGFpbC85OTI0MjExODcxOC9wcm9tb3Rpb24 0x01接口分析 简单的get 但是返回数据被加密了 这里我们就来想想怎么解密这些数据。首先后端发来的数据是加密的&#xff0c;但是我们在前端看到的可不是加密后的数据。前端…

什么是零拷贝?

零拷贝 什么是零拷贝 零拷贝指的是&#xff0c;从一个存储区域到另一个存储区域的copy任务无需CPU参与就可完成。零拷贝的底层是 通过DMA总线技术实现的。零拷贝与具体的编程语言无关&#xff0c;完全依赖于OS&#xff0c;OS支持就可使用&#xff0c;不支持 设置了也不起作用…

大厂视频面试,因为截屏作废

大厂视频面试现在这么严格了么&#xff1f;无意间按到截屏直接显示面试作废&#xff0c;好在最后和HR解释了下&#xff0c;再约时间重新面。 作为一个面试过3、4家大厂&#xff0c;现在在鹅厂工作的过来人来说&#xff0c;上面遇到的这个问题是AI面&#xff0c;不用太担心&…

笔记本电脑开机黑屏没反应怎么办?

笔记本电脑开机黑屏没反应怎么办&#xff1f;有用户电脑开机之后&#xff0c;桌面会变成黑屏显示。而且是常常都会出现这样的问题&#xff0c;非常影响自己的电脑使用体验。那么遇到这个问题要怎么去进行问题的解决呢&#xff1f;来看看以下的解决方法吧。 准备工作&#xff1a…

玩游戏时突然弹出”显示器驱动程序已停止响应并且已恢复”怎么办

随着3A游戏大作不断面市&#xff0c;用户也不断地提升着自己的硬件设备。但是硬件更上了&#xff0c;却还会出现一些突如其来的情况&#xff0c;比如正准备开启某款游戏时&#xff0c;电脑右下角突然出现“显示器驱动程序已停止响应并且已恢复”。遇事不慌&#xff0c;驱动人生…

java lambda表达式详解

一、Lambda初识 我们知道&#xff0c;在Java中&#xff0c;接口是不能实例化的&#xff0c;但是接口对象可以指向它的实现类对象。如果接口连实现对象都没有呢&#xff1f;那还可以使用匿名类的方式&#xff0c;如下: public class JavaTest { public static void main(Strin…

某程序员哀叹:二本计算机,4年开发,年包才40多万。二本真的不如985/211吗?

前段时间&#xff0c;某职场论坛上有人发了一个帖子&#xff0c;发帖人问&#xff1a;为什么大家工资那么高&#xff0c;三五年都六七十万了&#xff1f;我二本计算机专业&#xff0c;四年前端开发&#xff0c;找个年包40万多点就顶头了。 原贴如下&#xff1a; 有网友表示楼主…

2022年平均工资出炉,IT行业又是第一

根据5月9日国家统计局最新资料显示&#xff0c;2022年&#xff0c;全国城镇非私营单位就业人员年平均工资为114029元&#xff0c;比上年增长6.7%&#xff0c;扣除通胀后实际增长4.6%。其中&#xff0c;行业间的差距相当明显。根据资料显示&#xff0c;2022年无论是在私营单位还…

Android---bitmap优化

目录 Bitmap 占用内存大小计算 Bitmap | Drawable | InputStream | Byte[] 之间进行转换 Bitmap 相关方法 BitmapFactory 工厂类 Bitmap 占用内存大小计算 Bitmap 作为位图&#xff0c;需要读入一张图片中每一个像素点的数据&#xff0c;其主要占用内存的地方也正是这些像…

python进阶--月考二

python进阶--月考二 &#xff08;一&#xff09;装饰器&#xff08;二&#xff09;创建名为express.py文件&#xff0c;编写以下推导式&#xff08;25分&#xff09;&#xff08;三&#xff09;创建名为process_test.py的文件&#xff0c;计算1-3000之间的水仙花数&#xff08;…

QT MD4 MD5 Sha1等几种加密方式

QT MD4 MD5 Sha1等几种加密方式 [1] QT MD4 MD5 Sha1等几种加密方式[2] qt MD5 和AES 加密一 、MD5 加密二、AES 加密和解密 [3] QT中sqlite数据库数据加密/混淆---MD5/SHA1/SHA2/SHA3&#xff08;1&#xff09;创建一个加密对象&#xff08;2&#xff09;放入要加密的数据&…

目前可用的ChatGPT网站

本文意在整理可用gpt-3.5、gpt-4.0等网站。 本文主要是方便自己翻阅&#xff0c;如对您也有所帮助&#xff0c;不胜荣幸~ 文章目录 chatgpt.qdymys.cngpttalkchatgpt-cn.cobing.comchat机器人wuguokai.cn总结 chatgpt.qdymys.cn 网址&#xff1a;https://chatgpt.qdymys.cn/限…