Word Embedding 和 Word2Vec详细笔记(未完待更)

2023-11-06 05:30

本文主要是介绍Word Embedding 和 Word2Vec详细笔记(未完待更),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.单词的向量化表示

1.one-hot

比如有一个1000个词汇的词典,每一个单词可以表示为一个1000*1维大小的向量,其中一个位置为1,其余为0,并且每个单词的1的位置互斥。
在这里插入图片描述

不过这种表示方式存在很多问题:

  • 任意两个词之间都是孤立的,根本无法表示出在语义层面上词语词之间的相关信息
  • 如果词典非常大,那么每个单词的维度都是巨大的,这样会造成计算上的困难
  • 其得到的特征是离散稀疏的,得到的向量过于稀疏,导致计算和存储的效率不高

2. distributed representation

它的思路是通过训练,将每个词都映射到一个较短的词向量上来,这些词向量就构成了向量空间。这个词的维度一般需要我们在训练时自己来指定。代表性的就是词嵌入(Word Embedding)。

一个单词“king”的词嵌入(在维基百科上训练的GloVe向量):

[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 ,-0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234, -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]

假如第一个维度代表富有程度,范围为0-100,越靠近0代表越穷,越靠近100代表越富有,然后把这个维度映射到-1到1的范围。这里面的每个维度的含义是通过学习出来的,具体的含义是不明确的.

将这些含义用颜色来表示程度,如下示例:
在这里插入图片描述
可以看到“woman”和“girl”在很多地方是相似的,“man”和“boy”也是一样。
这样一来,相似单词的向量会映射到类似的空间。可以通过计算余弦相似度来计算两个向量的相似度。计算的结果越接近于1代表越相似。
在这里插入图片描述
在这里插入图片描述

二.神经网络语言模型

通过神经网络训练语言模型可以得到词向量,神经网络语言模型大致如下:

a) Neural Network Language Model ,NNLM
b) Log-Bilinear Language Model, LBL
c) Recurrent Neural Network based Language Model,RNNLM
d) Collobert 和 Weston 在2008 年提出的 C&W 模型
e) Mikolov 等人提出了 CBOW( ContinuousBagof-Words)和 Skip-gram 模型

三. Word Embedding

  • Word Embedding是词的一种表示方式,属于Distributed Representation中的一类

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

词嵌入的方法包括人工神经网络、对词语同现矩阵降维、概率模型以及单词所在上下文的显式表示等。常见的如:word2vec(Google), GloVe, wordRank,FastText(Facebook)。

词嵌入将文本通过一个低维向量来表达,不像 one-hot 那么长。语意相似的词在向量空间上也会比较相近。Word Embedding 的模型本身并不重要,重要的是生成出来的结果——词向量。
在这里插入图片描述

四. Word2Vec

1. 和词嵌入的关系

Word2vec 是 Word Embedding 的方法之一。

2. 和 CBOW、Skip-gram的关系

CBOW、Skip-gram等神经网络语言模型是逻辑上的方法,Word2Vec是实现CBOW、Skip-gram的工具。Word2Vec利用CBOW(Continuous Bag-of-Words Model)和Skip-gram (Continuous Skip-gram Model)两种训练模式可以实现词嵌入。

3. CBOW

CBOW(Continuous Bag-of-Word Model)又称连续词袋模型,是一个三层神经网络,通过上下文来预测中间那个词。
在这里插入图片描述
在这里插入图片描述
注:gensim 和 google的 word2vec 里面并没有用到onehot encoder,而是初始化的时候直接为每个词随机生成一个N维的向量,并且把这个N维向量作为模型参数学习

4. Skip-gram

Skip-gram只是逆转了CBOW的因果关系而已,即已知当前词语,预测上下文。
在这里插入图片描述
在这里插入图片描述

4.1 模型数据准备

对一段文本设置滑动窗口,这里以5举例,中间的not设为输入,左右两个词为我们学习预测的目标。
在这里插入图片描述
在这里插入图片描述

4.2 训练过程

从数据集中的第一个样本开始。我们将特征输入到未经训练的模型,让它预测一个可能的相邻单词。然后将计算出的向量和目标做差得到loss,然后反向更新参数矩阵.
在这里插入图片描述

四.负采样(以Skip-gram为例)

考虑到模型第三层为softmax激活,softmax公式如下:
在这里插入图片描述
对于Skip-gram而言,当我们将需要在数据集中为每个训练样本都做一遍需要的计算是巨大的。
我们转换一下形式:
将其切换到一个提取输入与输出单词的模型,并输出一个表明它们是否相似的分数(0表示“不相似”,1表示“相似”)。
在这里插入图片描述
在这里插入图片描述
这样我们的计算就变成了逻辑回归模型,计算程度大大减少。
我们的数据就变为了这样:
在这里插入图片描述
但是如果这样拿到网络里去训练,因为所有的输入数据都是相似的,准确性是百分百了。为了解决这个问题,我们引入负样本。负样本的单词从词汇表中随机抽取单词。
在这里插入图片描述

五.Hierarchical Softmax(以CBOW为例)

对于网络的激活层softmax,如果词典过大比如10w,那么softmax的计算将是灾难级的。为了避免一次计算这么多,采用分层softmax的方式可以有效减轻计算量。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在word2vec中,约定编码方式左子树编码为1(代表负类),右子树编码为0(代表正类),同时约定左子树的权重不小于右子树的权重。简而言之,就是将一个节点分类时,分到左边就是负类,分到右边就是正类。
Huffman树中每一叶子结点代表一个词向量,非叶结点中存储的是中间向量,对应于神经网络中隐含层的参数,与输入一起决定分类结果。

下面引用softmax中的数学原理中的例子解释:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考:
https://blog.csdn.net/weixin_40444270/article/details/109434553
https://blog.csdn.net/yu5064/article/details/79601683
https://blog.csdn.net/lilong117194/article/details/81979522
https://blog.csdn.net/u014595019/article/details/51884529
https://blog.csdn.net/longxinchen_ml/article/details/89077048
https://www.cnblogs.com/peghoty/p/3857839.html
https://zhuanlan.zhihu.com/p/84301849
https://blog.csdn.net/qq_38890412/article/details/107658406

这篇关于Word Embedding 和 Word2Vec详细笔记(未完待更)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

如何在Java Spring实现异步执行(详细篇)

《如何在JavaSpring实现异步执行(详细篇)》Spring框架通过@Async、Executor等实现异步执行,提升系统性能与响应速度,支持自定义线程池管理并发,本文给大家介绍如何在Sprin... 目录前言1. 使用 @Async 实现异步执行1.1 启用异步执行支持1.2 创建异步方法1.3 调用

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF