word2vec

2023-11-03

word2vec简介

Word2vec是Google实现word embedding的一种具体的方式。因为速度快效果好,而广为人知。 而Word embedding是一个普适的概念或者任务,即用向量来表示字或词,一般也称为词嵌入。

核心公式:

简单来说,Word2Vec就是“两个训练方案+两个提速手段”,两个训练方案见下表,两个提速手段分别为HS(Hierarchical Softmax )、负采样(Negative Sampling)。 我们设置一个大小为 t 的窗口,在数据集里随机抽取一个中心词Wt,这个词的前c个和后 c个单词构成该词的上下文,即:
c o n t e x t ( W ) = ( W t − c , . . . , W t − 2 , W t − 1 ; W t + 1 , W t + 2 , . . . , W t + c ) context(W)=(Wt−c ,...,Wt−2,Wt−1;Wt+1,Wt+2,...,Wt+c) context(W)=(Wtc,...,Wt2,Wt1;Wt+1,Wt+2,...,Wt+c)

model 训练方法 说明 目标函数
skip-gram 神经网络 最大化 p ( w / c o n t e x t ( w ) ) p(w/context(w)) p(w/context(w)),即用中心词w的上下文去预测 w 最大化均值“对数似然概率” 见式①、式② ,式①中两个词之间的 skip-gram 概率 p ( w t + j / w t ) p(wt+j/wt) p(wt+j/wt) 可以定义为式②,式②分子是把w对应的词向量和 context(w) 里的某个词对应的词向量做内积,分母是把 w对应的词向量和词汇表中的所有词向量做内积
CBOW 神经网络 最大化 p ( c o n t e x t ( w ) / w ) p(context(w)/w) p(context(w)/w),即用中心词w去预测其上下文 与skip-gram类似, 调换Wt+j和Wt的位置即可


在这里插入图片描述


在这里插入图片描述

算法十问

  1. 在小数据集中,Skip-gram和CBOW哪种表现更好?

Skip-gram是用一个center word预测其context里的word;而CBOW是用context里的所有word去预测一个center word。显然,前者对训练数据的利用更高效(构造的数据集多),因此,对于较小的语料库,Skip-gram是更好的选择。

  1. 为什么要使用HS(Hierarchical Softmax )和负采样(Negative Sampling)?

两个模型的原始做法都是做内积,经过 Softmax 后得到概率,因此复杂度很高。假设我们拥有一个百万量级的词典,每一步训练都需要计算上百万次词向量的内积,显然这是无法容忍的。因此人们提出了两种较为实用的训练技巧,即HS和Negative Sampling。

  1. 介绍一下HS(Hierarchical Softmax )

HS 是试图用词频建立一棵哈夫曼树,那么经常出现的词路径会比较短。树的叶子节点表示词,共词典大小多个,而非叶子结点是模型的参数,比词典个数少一个。要预测的词,转化成预测从根节点到该词所在叶子节点的路径,是多个二分类问题。本质是把 N 分类问题变成 log(N)次二分类

  1. 介绍一下负采样(Negative Sampling)

把原来的 Softmax 多分类问题,直接转化成一个正例和多个负例的二分类问题。让正例预测 1,负例预测 0,这样子更新局部的参数。

  1. 负采样为什么要用词频来做采样概率?

可以让频率高的词先学习,然后带动其他词的学习。

  1. 对比 Skip-gram 和 CBOW

CBOW 会比Skip-gram训练速度更快,因为前者每次会更新 context(w) 的词向量,而 Skip-gram 只更新核心词的词向量。 Skip-gram 对低频词效果比 CBOW好,因为Skip-gram 是尝试用当前词去预测上下文,当前词是低频词还是高频词没有区别。但是 CBOW 相当于是完形填空,会选择最常见或者说概率最大的词来补全,因此不太会选择低频词。

  1. 对比字向量和词向量

字向量可以解决未登录词的问题,以及可以避免分词;词向量包含的语义空间更大,更加丰富,如果语料足够的情况下,词向量是能够学到更多的语义信息。

  1. 如何衡量word2vec得出的词/字向量的质量?

在实际工程中一般以word embedding对于实际任务的收益为评价标准,包括词汇类比任务(如king – queen = man - woman)以及NLP中常见的应用任务,比如命名实体识别(NER),关系抽取(RE)等。

  1. 神经网络框架里的Embedding层和word-embedding有什么关系?

Embedding层就是以one hot为输入(实际一般输入字或词的id)、中间层节点为字向量维数的全连接层。而这个全连接层的参数,就是一个“字向量表”,即word-embedding。

  1. word2vec的缺点?

没有考虑词序,因为它假设了词的上下文无关(把概率变为连乘);没有考虑全局的统计信息。

面试真题

  1. 为什么训练得到的字词向量会有如下一些性质,比如向量的夹角余弦、向量的欧氏距离都能在一定程度上反应字词之间的相似性?

我们在用语言模型无监督训练时,是开了窗口的,通过前n个字预测下一个字的概率,这个n就是窗口的大小,同一个窗口内的词语,会有相似的更新,这些更新会累积,而具有相似模式的词语就会把这些相似更新累积到可观的程度。

  1. word2vec跟Glove的异同?
  2. word2vec 相比之前的 Word Embedding 方法好在什么地方

参考资料

  1. https://blog.csdn.net/zhangxb35/article/details/74716245
  2. https://spaces.ac.cn/archives/4122
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

word2vec 的相关文章

  • 配置 Mac系统下的 SSH

    记录一次成功的SSH 在Mac上自带SSH功能 1 打开终端 在shell里选择 新建远程连接 2 选择 安全Shell ssh 选择 右下角的加号 然后输入对方的IP地址 3 选中已经添加成功的IP地址 在下面输入用户名 就是对方的 前面
  • Mysql锁机制简单了解一下

    历史文章推荐 可能是最漂亮的Spring事务管理详解 面试中关于Java虚拟机 jvm 的问题看这篇就够了 Java NIO 概览 关于分布式计算的一些概念 一 锁分类 按照锁的粒度分类 Mysql为了解决并发 数据安全的问题 使用了锁机制
  • 深度学习框架是做什么的

    3分钟看懂旷视深度学习框架天元MegEngine
  • c++中调用复制构造函数的三种情况

    普通构造函数是在对象创建时被调用 而复制构造函数在以下三种情况下会被调用 1 当用类的一个对象去初始化该类的另一个对象时 例如 Point a 1 2 Point b a 调用复制构造函数 Point c a 同上 2 如果函数的形参是类的
  • weex dom.scrollToElement 滚动问题

    使用weex 的dom scrollToElement 兼容问题 1 使用for生成的ref 在初始化获取ref节点时候需要有100ms延迟 2 dom scrollToElement 传入的 ref参数 需要使用this refs ref
  • DNS中的正向解析与反向解析 及 nslookup命令使用

    DNS中的正向解析与反向解析 Jackxin Xu IT技术专栏 博客频道 CSDN NET http blog csdn net jackxinxu2100 article details 8145318 正向解析 通过域名查找ip 反向
  • 黑盒测试方法之因果图和判定表——三

    前面文章 黑盒测试方法之因果图和判定表 一 主要讲述判定表驱动法的相关理论内容 黑盒测试方法之因果图和判定表 二 主要讲述因果图相关理论内容 4 因果图加判定表设计测试用例实例 这里以一个 软件评测师教程 上面的例子为例 来说明和演示因果图
  • GAN(初步学习)

    GAN的原理介绍 GAN的主要灵感来源于博弈论中零和博弈的思想 应用到深度学习神经网络上来说 就是 通过生成网络G Generator 和判别网络D Discriminator 不断博弈 进而使G学习到数据的分布 如果用到图片生成上 则训练
  • Zotero 相关学习链接

    参考链接 https www zotero org support zh start https github com l0o0 translators CN https www zhihu com question 21518558 ht
  • ROS串口通信(1)环境搭建

    ROS串口通信 1 环境搭建 引言 1 ubuntu串口驱动安装和使用 1 1 安装 1 2 使用 1 3 Ubuntu 查看串口 设置串口权限 2 Ubuntu下的串口助手cutecom 引言 无疑 串口的调试需要联合串口助手调试更加方便
  • 软件测试2019:第一次作业

    就是利用测试工具按照测试方案和流程对产品进行功能和性能测试 甚至根据需要编写不同的测试工具 设计和维护测试系统 对测试方案可能出现的问题进行分析和评估 执行测试用例后 需要跟踪故障 以确保开发的产品适合需求 使用人工或者自动手段来运行或测试
  • 三分钟拥有自己的 chat-gpt (开发到上线)

    三分钟拥有自己的 chat gpt 开发到上线 首先你需要有一个 laf 账号 如果你还不知道 laf 是什么 点击这里三分钟学会 然后你还需要有一个 chat gpt 的账号并且生成一个 apiKey 这一步可以问 Google 云函数
  • Centos 7 阿里yum源及epel源配置

    1 下载阿里yum配置文件 wget O etc yum repos d CentOS Base repo http mirrors aliyun com repo Centos 7 repo 2 下载阿里epel配置文件 wget O e

随机推荐

  • ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not found

    在运行程序的时候报错 import cv2 ImportError usr lib x86 64 linux gnu libstdc so 6 version GLIBCXX 3 4 26 not found required by hom
  • 【STM32内部架构理解】

    STM32和GD32F10X内部架构 整体架构 模块架构 总线矩阵 最开始学stm32开始对架构各部分不是很了解看架构图基本上走马观花 然后陷入对各个外设的投入中去 比如GPIO ADC CAN等 但是对整体架构的掌握对后面编程很多细节的理
  • 列表首屏毫秒级加载与自动滚动定位方案

    引用自 摸鱼wiki 场景
  • 利用libuv编写异步多线程的addon实例

    转载自 http snoopyxdy blog 163 com blog static 601174402013422103614385 最近cnode上很多TX在问关于node的异步回调以及单线程的事情 今天看了libuv的一些api和d
  • 微信小程序启动自动检测版本更新,检测到新版本则提示更新

    UpdateManager 对象 用来管理更新 可通过 wx getUpdateManager 接口获取实例 在app js中的示例代码 onShow 获取小程序更新机制的兼容 由于更新的功能基础库要1 9 90以上版本才支持 所以此处要做
  • 垃圾分类资料汇总

    目录 一 前言 二 垃圾分类话题简介 三 当前存在的一些有用参考资源 四 当前存在的垃圾分类小程序或者APP 五 当前规模比较大的产品 六 个人想法 参考资料 注意事项 一 前言 自从上海实行了垃圾分类之后 垃圾分类这个话题就成为了一个热点
  • 蓄水池抽样算法(Reservoir Sampling)

    蓄水池抽样算法 Reservoir Sampling 问题描述 问题分析 代码实现 数学证明 问题描述 给定一个数据流 数据流长度N很大 且长度不可预知 问如何在仅遍历一次数据的情况下 如何等概率 抽取m个样本 问题分析 首先明确概念 等概
  • qt5.2音乐播放器的播放功能

    qt5 2并没有了phonon 模块 在播放音频视频的时候可以使用QMediaplayer来实现 创建媒体 player new QMediaPlayer this 创建播放列表 并在列表里添加两首歌曲 mediaList new QMed
  • 禁止弹窗中蒙层底部页面跟随滚动的几种方法汇总

    场景概述 众所周知 弹窗是一种常见的交互方式 而蒙层是弹窗必不可少的元素 用于隔断页面与弹窗区块 暂时阻断页面的交互 但是 在蒙层元素中滑动的时候 滑到内容的尽头时 再继续滑动 蒙层底部的页面会开始滚动 显然这不是我们想要的效果 因此需要阻
  • linux内核epoll实现分析

    为了更好的分享体验 博客搬迁至极客驿站 欢迎查阅 epoll与select poll的区别 select poll epoll都是IO多路复用的机制 I O多路复用就通过一种机制 可以监视多个描述符 一旦某个描述符就绪 能够通知程序进行相应
  • Linux汇编语言编译

    Linux中汇编的使用 一 安装nasm编译器 二 编译过程简介 三 编译实例 一 安装nasm编译器 输入以下命令安装nasm编译器 sudo apt install nasm 二 编译过程简介 1 预处理 预处理的过程主要包括以下过程
  • 区块链用到的技术

    区块链的核心技术 加密算法 P2P 共识算法 智能合约 分布式存储 加密算法 目的 保证数据的安全 防止数据被非法窃取 验证身份 应用于数字签名或者数字证书 在不暴露身份的前提下知道 我是我 手段 对称加密 加密和解密使用的密钥相同 非对称
  • 数据结构与算法学习笔记(第一章)

    配套材料 大话数据结构 主 中国大学MOOC浙江大学 数据结构 补充 介绍 数据结构是相互之间存在一种或多种特定关系的数据元素集合 数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间关系和操作等相关问题的学科 为什么要学习数
  • Linux进程、系统性能和计划任务

    成功不易 加倍努力 1 进程和内存管理 1 1 什么是进程 1 2 进程结构 1 3 进程相关概念 1 3 1 物理地址空间和虚拟地址空间 1 3 2 用户和内核空间 1 3 3 C代码和内存布局之间的对应关系 1 3 4 进程使用内存问题
  • 一个非常有用的函数——COALESCE

    很多人知道ISNULL函数 但是很少人知道Coalesce函数 人们会无意中使用到Coalesce函数 并且发现它比ISNULL更加强大 其实到目前为止 这个函数的确非常有用 本文主要讲解其中的一些基本使用 首先看看联机丛书的简要定义 返回
  • java对象创建过程(jvm)

    虚拟机遇到一条new指令时 开始进行对象的创建 1 检查这个指令的参数是否能在常量池中定位到一个类的符号引用 true 则继续下一步 false 说明这个类还没有被定义 会抛出ClassNotFoundException 2 检查这个符号引
  • centos7自定义镜像运行Flask

    一 centos7自定义镜像 1 支持22端口的sftp连接 参考链接 Centos7创建支持ssh服务器的docker容器 2 支持flask 上一步保存的镜像名为 centos7 dn 0119 docker run d p 8023
  • TCP通信过程详解以及tcp长连接和短连接

    1 TCP连接 当网络通信时采用TCP协议时 在真正的读写操作之前 server与client之间必须建立一个连接 当读写操作完成后 双方不再需要这个连接 时它们可以释放这个连接 连接的建立是需要三次握手的 而释放则需要4次挥手 所以说每个
  • Swing001——入门简介

    一 Swing简介 Swing是什么 Swing 是新一代的图形界面工具 特点 轻量级组件 采用纯 Java 实现 跨平台支持 不再依赖于本地平台的图形界面 更多的图形界面组件 可以开发出美观的图形界面程序 二 Swing 容器 创建图形用
  • word2vec

    Author kangbingbing Email kangb93 126 com Datawhale word2vec简介 Word2vec是Google实现word embedding的一种具体的方式 因为速度快效果好 而广为人知 而W