学习笔记(1)——Word2vec

【AI理论学习】理解词向量、CBOW与Skip-Gram模型 word2vec是google在2013年推出的一个NLP工具,它的特点是**将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系**。在正式讲解 word2vec 前,还需要对一些基本概念有所了解。CBOW模型,Skip-gram模型 阅读详情

简述

百度百科:Word2vec,是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。

Word2vec 是 Word Embedding 的方法之一,属于 NLP 领域。
Word Embedding是将不可计算、非结构化的词转化为可计算、结构化的向量——词向量。
Word2vec 在整个 NLP 里的位置可以用下图表示:

One-Hot Encoder: 自然语言处理经常把字词转为离散的单独的符号。
对于词袋模型,文本的语序特征丧失,也就丧失了语义的信息。分布式假说 的提出解决了语义信息的问题。该方法的思想是:上下文相似的词,其语义也相似,随后就有了基于上下文分布表示词义的方法,这就是“词空间模型“。Word2Vec可以将One-Hot Encoder转化为低维度的连续值,也就是稠密向量,并且其中意思相近的词将被映射到向量空间中相近的位置。而使用神经网络可以灵活的对上下文进行建模,也因此成为用的比较多的方法。

模型介绍

One-Hot向量作为word2vec的输入,通过word2vec训练低维词向量(word embedding)

  • 输入层:One-Hot Vector
  • 隐藏层:没有激活函数,也就是线性的单元。
  • 输出层:维度跟输入层的维度一样,用的是Softmax回归。

我们要获取的dense vector其实就是Hidden Layer的输出单元。有的地方定为Input Layer和Hidden Layer之间的权重,其实说的是一回事。

词袋模型(Bag-of-words model) 是最早的以词语为基本处理单元的文本向量化算法,即借助于词典把文本转化为一组向量。
基于词袋的文本向量是根据词出现的次数构建的。但是此向量与文本中单词出现的顺序没有关系,只是一种频率的表示,该方法易实现,但存在很大的问题:

  • 维数灾难:假如词典包含10000个单词,那么每个文本需要使用10000维的向量表示,那么向量的很多位置必定是0,如此稀疏的高维向量会严重影响计算速度。
  • 这样构成的向量无法保存词序信息,而词序对于自然语言处理又是那么的重要。
  • 存在语义鸿沟

最近词袋模型也被应用在计算机视觉领域。词袋模型被广泛应用在文件分类,词出现的频率可以用来当作训练分类器的特征。

两种训练模式

CBOW(Continuous Bag-of-Words Model)

通过上下文来预测当前值。相当于一句话中扣掉一个词,来猜这个词是什么。CBOW对小型数据库比较合适。

  • 输入层:上下文单词的one-hot向量。(假设单词向量空间dim为V,也就是词典的大小。上下文单词个数为C。)
  • 所有one-hot分别乘以共享的输入权重矩阵W (V*N矩阵,N为自己设定的数,N也是隐藏层的神经元个数,初始化权重矩阵W)。
  • 隐藏层:所得的向量 (one-hot为向量)相加求平均作为隐层向量, size为1*N。
  • 乘以输出权重矩阵W′ (N*V)。
  • 输出层:得到向量 (1*V) ,激活函数处理得到V-dim概率分布,概率最大的index所指示的单词为预测出的中间词(target word)。
  • 与true label的one-hot做比较,误差越小越好。

所以,需要定义loss function(一般为交叉熵代价函数),采用梯度下降算法更新W和W′。训练完毕后,输入层的每个单词的one-hot向量与矩阵W相乘就得到自身的词向量(word embedding),矩阵W(所有单词的word embedding)也叫做look up table。有了look up table就可以免去训练过程直接查表得到单词的词向量了。

Skip-gram(Continuous Skip-gram Model)

用当前词来预测上下文。相当于给出一个词,来猜前面和后面可能出现什么词。Skip-Gram在大型语料中表现更好。

n元模型中,因为窗口大小的限制,导致超出窗口范围的词语与当前词之间的关系不能被正确地反映到模型之中,如果单纯扩大窗口大小又会增加训练的复杂度。Skip-gram 模型的提出很好地解决了这些问题。顾名思义,Skip-gram 就是“跳过某些符号”。

例:句子“中国足球踢得真是太烂了”有4个3元词组,分别是“中国足球踢得”、“足球踢得真是”、“踢得真是太烂”、“真是太烂了”,可是我们发现,这个句子的本意就是“中国足球太烂”可是上述 4个3元词组并不能反映出这个信息。Skip-gram 模型却允许某些词被跳过,因此可以组成“中国足球太烂”这个3元词组。 如果允许跳过2个词,即 2-Skip-gram 。

训练步骤:

  • 首先选句子中间的一个词作为输入词;
  • 有了input word以后,再定义一个叫做skip_window的参数,它代表着从当前input word的一侧(左边或右边)选取词的数量。skip_window=2代表着选取input word左侧2个词和右侧2个词进入窗口,所以整个窗口大小span=2x2=4。
  • 另一个参数叫num_skips,它代表着从整个窗口中选取多少个不同的词作为output word,当skip_window=2,num_skips=2时,将会得到两组 (input word, output word) 形式的训练数据。
  • 神经网络基于这些训练数据将会输出一个概率分布,这个概率代表着词典中的每个词是output word的可能性。模型的输出概率代表着到词典中每个词有多大可能性跟input word同时出现。

提醒:最终我们需要的是训练出来的权重矩阵。

优缺点

说明:Word2vec 是上一代的产物(18 年之前), 18 年之后想要得到最好的效果,已经不使用 Word Embedding 的方法了,所以也不会用到 Word2vec。
优点:

  • 由于 Word2vec 会考虑上下文,跟之前的 Embedding 方法相比,效果要更好(但不如 18 年之后的方法);
  • 比之前的 Embedding方法维度更少,所以速度更快;
  • 通用性很强,可以用在各种 NLP 任务中。

缺点:

  • 由于词和向量是一对一的关系,所以多义词的问题无法解决;
  • Word2vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化。

优化方法

为提高速度,Word2vec 经常采用 2 种加速方式:

  • Negative Sample(负采样)
  • Hierarchical Softmax

参考文献
http://easyai.tech/ai-definition/word2vec/
https://blog.youkuaiyun.com/lilong117194/article/details/81979522

NLP文本的表示,从【Bag-of-words】到 【word2vec】 1. Bag-of-words 1.1 类似于one-hot的词袋模型 Bag of words模型最初被用在文本分类中,将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的。简单说就是将每篇文档都看成一个袋子(因为里面装的都是词汇,所以称为词袋,Bag of words即因此而来),然后根... 阅读详情

相关推荐

Python实现Word2vec学习笔记

Python实现Word2vec学习笔记 参考: 中文word2vec的python实现 python初步实现word2vec 中英文维基百科语料上的Word2Vec实验 1 文件目录结构: [.../vord2vec]$ls data model_train.py word2vec_test.py word_cut.py [.../vord2vec]$ ls ./data/...

风之翊的专栏 4728

探秘Word2Vec(五)-Skip-gram模型

之前说了那么多,现在我们正式开始接触word2vec中涉及到的两个模型,CBOW模型(Continuous Bag-Of-Words Model)和Skip-gram模型(Continuous Skip-gram Model)。CBOW是已知当前词的上下文,来预测当前词,而Skip-gram则相反,是在已知当前词的情况下,预测其上下文。二者的模型结构如下图所示: 对于上面提到的两个模型,w...

abcdefg90876的博客 208

word2vec学习笔记[转]

谷歌已经使用Deep Learning技术开发了许多新方法来解析语言,目前,谷歌开源了一款基于Deep Learning的学习工具——word2vec,这是首款面向大众的Deep Learning学习工具。 word2vec(word to vector)顾名思义,这是一个将单词转换成向量形式的工具。通过转换,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示

zhoubl668的专栏:远帆,梦之帆! 4万+

探秘Word2Vec(四)-CBOW模型

之前说了那么多,现在我们正式开始接触word2vec中涉及到的两个模型,CBOW模型(Continuous Bag-Of-Words Model)和Skip-gram模型(Continuous Skip-gram Model)。CBOW是已知当前词的上下文,来预测当前词,而Skip-gram则相反,是在已知当前词的情况下,预测其上下文。二者的模型结构如下图所示: 对于上面提到的两个模型,w...

abcdefg90876的博客 225

Word2vec学习笔记

主要内容: 1、什么是Word2vec?为什么要Word2vec? 2、常规的做法有哪些及一些简单的介绍? 3、NNLM的Word2vec原理及问题解决方案(原论文《Distributed Representations of Words and Phrases and their Compositionality》) 4、Word2vec工具的使用

骆驼分析师的博客 2561

python 下的 word2vec 学习笔记

1.ubuntu下安装gensimrefer to: ubuntu 14.04 安装gensim为了保证安装成功,首先升级一下easy_install工具。sudo easy_install -U setuptools之后使用easy_install进行安装,使用apt-get安装会遇到编码出错,不知为什么,使用easy_install安装成功就行了。sudo easy_install --upgr

大学之道,在明明德 4万+

word2vec结构简单讲解以及代码实现

 word2vec原理也很简单,这里简单介绍下,不细讲。  word2vec有两种训练模式:  1.CBOW(Continuous Bag-of-Words Model)  2.Skip-gram (Continuous Skip-gram Model)  其实它们两都是单个隐藏层的模型,然后最后模型训练好后(也是用反向传播更新模型参数)。输入一个词,得到的隐藏层向量就是词嵌入的结果。 1.CBOW  根据上下文来预测当前词:  模型结构图如下:  输入有多个词,一般处理是求和然后取平均。 1.Skip

weixin_43646592的博客 1920

word2vec需要去标点吗_word2vec学习笔记(应用篇)(金庸武侠)

写在前面本来是想写“实战篇”的,感觉实验语料库不大,就算是一个"应用篇"吧。选取了中文语料,主要简单介绍jieba分词的使用,以及Gemsim模块中Word2Vec的使用。word2vec的原理可以参考之前的文章:华夏狼崽:word2vec学习笔记(原理篇)​zhuanlan.zhihu.com一、语料介绍一直比较喜欢金庸的武侠小说,所以语料选取了金庸的十五部小说(精校版),最初的项目中只训练了一...

weixin_39560029的博客 1251

word2vec学习笔记#1Hierarchical Softmax

word2vec学习笔记#1 文章来自于码农场何晗大佬的博文,做自己的摘抄笔记。 word2vec word2vec作为神经概率语言模型的输入,其本身其实是神经概率模型的副产品,是为了通 过神经网络学习某个语言模型而产生的中间结果。具体来说,“某个语言模型”指的是 “CBOW”和“Skip-gram”。具体学习过程会用到两个降低复杂度的近似方法——Hierarchical Softmax或Neg...

weixin_43433969的博客 226

word2vec原理及实现

word2vec,字词的向量空间模型依靠将语意相近的词语聚在一起来提高自然语言处理的表现。

方品 2万+

word2vec中k-means学习笔记

一、k-means算法 算法描述 输入:簇的数目k;包含n个对象的数据集D。 输出:k个簇的集合。 方法: 从D中任意选择k个对象作为初始簇中心;repeat;根据簇中对象的均值,将每个对象指派到最相似的簇;更新簇均值,即计算每个簇中对象的均值;计算准则函数;until准则函数不在发生变化 二、Machine Learning(Ng)算法笔记

zhoubl668的专栏:远帆,梦之帆! 8500

Word2Vec学习笔记1 初步梳理

来源:http://blog.youkuaiyun.com/itplus/article/details/37969519此博客叙述和推导较详细, 计算机能识别二进制数据,当原始数据是文本应该怎么办? 首先需要把文本数据转为化计算机能够识别的数据,接下来为介绍一种常用文本转化为词向量的方法word2vec 在学习word2vec之前需要学习如下知识 1. sigmoid函数   2. 逻辑回归 ...

机器学习、数据挖掘 386

中文预训练词向量(百度百科 word2vec +Ngram)-数据集

中文预训练词向量北京师范大学中文信息处理研究所与中国人民大学 DBIIR 实验室的研究者开源的"chinese-word-vectors。github链接为:https://github.com/Embedding/Chinese-Word-Vectors。 此中文预训练词向量为百度百科Word + Ngram的词向量,可以直接从https://github.com/Embedding/Chinese-Word-Vectors下载。

NLP学习笔记[1] -- 构建词向量模型 -- Word2Vec与词嵌入

词向量模型与word2vec的实践 当获取到足够多的语料之后, 需要语料中的主要语素"可计算", 而"向量"是最普遍和容易使用的可计算元素, 把词语等语素编码成向量就是词向量; 词向量的计算应该有意义, 需要尽可能保留原来的语言特征, 把语素编码到连续的、能反映语素间关系的连续的向量空间的操作叫词嵌入. (本文包含尝试和其他实验的笔记, 篇幅较长, 如果不想看细节的话可以直接跳到按手册说明调用word2vec节或者总结部分.)

qq_39707057的博客 3364

RTKLIB中RTK定位原理(一)

1 模型 1.1 非差观测值 非差观测值与RTKLIB中PPP定位原理——观测模型部分中一致。 1.2 单间单差观测值 若两个接收机距离较近,经过站间单差,电离层对流层延迟可消除,卫星s的钟差以及初始相位被消除,中依然包含接收机初始相位。 1.3 站间星间双差观测值 经过站间星间双差,接收机钟差及初始相位被消除。 2 EKF参数估计 2.1 EKF法则 EKF法则与RTKLIB中PPP定位原理——观测模型部分中一致。 2.2 状态变量与时间更新 (1)状态变量 在RTK...

papunzal的博客 3817

源码编译部署篇(二)源码编译milvus成功后如何启动standalone并调试成功!

由于Milvus官方文档只提及如何使用docker安装部署Milvus,关于源码安装方式篇幅较少,因此,我整理撰写了如何通过源码编译方式成功安装Milvus,详见此篇。之所以选择这种复杂的安装方式,可以调试源码进而熟悉Milvus如何搭建整个框架支持AI上层应用功能。根据上篇步骤部署虽然可以成功,然而,我却不能成功启动Milvus服务,这个问题困扰了一两天,现在终于得以解决并能成功调试Milvus源码。接下来,分为三个部分介绍如何启动和成功调试。

qq_43893755的博客 3369

【cs224n-2019学习笔记-2】notes01-wordvecs1: Introduction, SVD and Word2Vec

notes是对上课内容的细节补充,本文主要对notes01-wordvecs01进行翻译,并为了更易于理解和阅读,做了部分删减和重组织。

好想成为大佬啊的博客 767

MiniOSD DIY记

最近迷上了航模,研究了很多东西,感觉路走的长了还是适当要停下脚步休息下总结下。 这次DIY的是一块OSD设备,主要用于航模图传的叠加显示,原理也很简单就是atmel atmega328p+MAX7456芯片,网上卖的成品基本上都是一个原理图。 原理图 我按照我自己的需要做了适当的更改,去掉了DC-DC电路,直接用5V输入,因为摄像头都是5V的,所以DC-DC不是很有必要,体积上更加小了点, 打...

memoff的博客 8532

NLP自然语言处理学习笔记(二)Word2Vec

NLP自然语言处理学习笔记(二)Word2Vec一、Word2Vec二、负采样 本文是根据吴恩达教授的教学视频来整理的学习笔记,部分图片来源于视频的截图。原教学视频连接 https://mooc.study.163.com/learn/2001280005?tid=2001391038#/learn/content 一、Word2Vec Word2Vec是词嵌入的一种算法。分为Skip-grams...

qq_35175666的博客 383

立创EDA开源足轮机器人:基于STM32F407与ESP32的LQR自平衡与FOC驱动设计全解析

本文详细解析了基于立创EDA平台的开源足轮机器人项目。该项目采用STM32F407作为主控,ESP32负责无线通信,并应用LQR自平衡算法与FOC驱动技术,实现了机器人的稳定站立、移动转向及复杂地形适应能力。文章深入剖析了其硬件架构、软件设计及调试经验,为机器人运动控制学习提供了宝贵参考。

weixin_42608299的博客 232

软件缺陷(定义+表现形式+优先级+信息+产生原因),看完这篇文章就懂了

软件缺陷软件缺陷的定义软件缺陷的表现形式软件缺陷产生的原因软件缺陷的根源软件缺陷的费用软件缺陷的信息 软件缺陷的定义 IEEE 1983 of IEEE Stardard 729中软件缺陷做了一个标准的定义: 从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。 因此软件缺陷就是软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,没有满足用户的需求。 缺陷不是bug,缺陷包含bug,缺陷的范围更大。 软件缺陷

qq_40676418的博客 1万+

Word2Vec和Doc2Vec学习笔记

Doc2Vec 是一种用于将文档(如段落、文章或句子)表示为固定长度向量的自然语言处理技术。它扩展了 Word2Vec 模型,能够捕捉文档的语义信息,适用于文档分类、聚类或相似性计算等任务。

weixin_45971154的博客 1175

项目实训(四)——SAM模型的学习与部署

这里的show_mask就是我们用mask的prompt进行分割,show_points就是我们用points进行分割,show_box就是通过box进行分割,这是SAM的三种prompt的方式。总的来说,Meta AI 的 Segment Anything 模型为我们提供了一种全新的物体识别和分割方式,其强大的泛化能力和广泛的应用前景将极大地推动计算机视觉领域的发展。这里有vit_h、vit_b、vit_l三种权重模型,这里可以根据自己的需要下载相应的权重模型。我们是下载的vit_h权重模型。

yyyyyyyx_的博客 1421
上一篇: 论文阅读笔记(1)——Recurrent Convolutional Neural Networks for Text Classification(用于文本分类的循环卷积神经网络)
下一篇: 论文阅读笔记(2)——Bidirectional LSTM-CRF Models for Sequence Tagging(用于序列标记的双向LSTM-CRF模型)
StriveQueen
博客等级 码龄8年 98粉丝 160原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值