首页 > 其他分享 >【NLP-词向量】从模型结构到损失函数详解word2vec

【NLP-词向量】从模型结构到损失函数详解word2vec

时间:2022-10-12 21:34:12浏览次数:52  
标签:采样 NLP word2vec 函数 Continuous 详解 Softmax 向量


上周我们讲到,在进行NNLM训练时,能够得到副产品,词向量。本文介绍一种专门用于词向量制备的方法:word2vec,利用它能够高效的训练出词向量。

作者&编辑 | 小Dream哥


1 word2vec是什么?


在阐述word2vec的原理之前,笔者先大致介绍一下,word2vec是什么,能够用来干什么,让读者有一个大致的认识。

word2vec是2013年Efficient estimation of word representations in vector space论文中提出的一种有效的词向量制备方法,沿用至今。

word2vec用前馈神经网络进行训练,提出了Continuous Bag-of-Words和Continuous Skip-Gram两种模型训练方法,损失层有层次Softmax(Hierarchical Softmax)和负采样(Negative Sampling)两种。


2 模型结构


上面我们说了,word2vec是一种高效的制备词向量的方法,那么跟2003年的NNLM相比,它的效率高在哪里呢?先从网络结构开始,我们来细细看一下。



【NLP-词向量】从模型结构到损失函数详解word2vec_自然语言处理


如上图所示,是word2vec中提出的两种模型训练模式:Continuous Bag-of-Words和Continuous Skip-Gram。


Continuous Bag-of-Words:

CBOW是这样一种任务,给定一个去掉了中间一个词的context,预测其中间的那个词。它跟NNLM的任务有点相似,差别在于,它是双向的,即预测词时利用了该词前后的词语信息。

Continuous Skip-Gram:

Continuous Bag-of-Words是通过一个词,预测其周围的几个词。


以Continuous Bag-of-Words为例,我们来看看word2vec的网络结构。

如上图所示,word2vec将网络做了如下的改造:


1.输入的所有词向量相加求和得到SUM,称为embedding layer;

2.移除前向反馈神经网络中非线性的hidden layer,直接将中间层的embedding layer与输出层的softmax layer连接;


我们来分析下这样做有什么好处呢?移除中间的隐藏层,最大的好处就是能够极大的减少运算量了,训练时候的效率就能够大幅提升。Continuous Skip-Gram也是相似的道理了。


3 损失函数


以CBOW模型为例,训练时最容易想到的是,得到输入序列的SUM embedding之后,通过一个project和softmax层,计算出字典V中每个词的概率,再构建交叉熵之类的损失函数,然而直接对词典里的V个词计算相似度并归一化显然是极其耗时的。

为此作者提出了层次Softmax(Hierarchical Softmax)和负采样(Negative Sampling)两种损失层。层次Softmax(Hierarchical Softmax)原理很有意思,但是计算起来还是比NCE要复杂。因此,真正应用比较多的是NCE,这里就详细介绍一下NCE的原理。

负采样的思想最初来源于一种叫做Noise-Contrastive Estimation的算法,原本是为了解决那些无法归一化的概率模型的参数预估问题。

在CBOW中,给定一个去掉了中间一个词的context(w),预测其中间的那个词w。那么,中间的那个词w就是正样本,其他的词就是负样本了。那么NCE的过程大致是这样的,对于context(w)构造一个关于w的负样本集NEG(w);在训练时,针对{w,NEG(w)}构造一个目标函数,通过优化该目标函数优化整个网络的参数(包括词向量)

那么,这个目标函数该怎么构建呢?

我先定义一个这样的函数,



【NLP-词向量】从模型结构到损失函数详解word2vec_聊天机器人_02


其中:



【NLP-词向量】从模型结构到损失函数详解word2vec_聊天机器人_03


那么p函数也可以这样表示:



【NLP-词向量】从模型结构到损失函数详解word2vec_聊天机器人_04


这里X表示输入的各个词向量之和。

那我们的目标函数这样去构建:



【NLP-词向量】从模型结构到损失函数详解word2vec_自然语言处理_05


也可表示为:



【NLP-词向量】从模型结构到损失函数详解word2vec_聊天机器人_06


这样的话,我们在训练时,只需最大化这个g,就可以优化网络的参数。想想看为什么呢?从形式上看,最大化g就是最大化



【NLP-词向量】从模型结构到损失函数详解word2vec_聊天机器人_07


同时最小化所有的



【NLP-词向量】从模型结构到损失函数详解word2vec_词向量_08


这不正是我们所需要的吗?

好了,我们来总结一下上述的过程。NCE的训练过程,就是构建一个关于w的负样本集NEG(w),针对正负样本集,计算g函数的值,训练时,通过最大化该值来优化网络


4 负采样的过程


我们这节来看看负采样的过程是怎么样进行的,也就是上述NEG(w)是如何获得的

对于语料C,可以构建一个词典D,并统计其中各个词的词频。整体的原则是,词频高的词选中作为负样本的概率就高。

设词典D中每一个词对应一个长度l(w)的线段,则l(w)=counter(w)/|C|。然后将这些线段首尾连接起来,就构成了一个长度为1的线段。在负采样时,随机往该线段上打点,打到的就被采到。这就是负采样的大致过程了,在word2vec的实际操作过程中,会做一些变化,但是基本的思想就是这样的。


总结



上述就是word2vec的基本原理了,通过word2vec能够高效的获得词向量,是自然语言处理入门必须要掌握的内容。

标签:采样,NLP,word2vec,函数,Continuous,详解,Softmax,向量
From: https://blog.51cto.com/u_14122493/5751599

相关文章

  • 【NLP】GPT:第一个引入Transformer的预训练模型
    目前两种最重要的预训练语言模型,一种是前面介绍过的BERT,另外一种就是GPT。GPT出了两个版本,GPT1.0和GPT2.0,GPT2.0相对于GPT1.0差别不大,可以认为是它的增强版。本篇介绍GPT1.0......
  • 【NLP】有三AI-NLP专栏首季总结与展望
    回顾时间过的很快,时间过的很快。不知不觉,我们有三AI-NLP专栏就已经走过了一个季度了。这三个月,我们的NLP专栏更新了不少的内容,从NLP中最常用的机器学习模型,如HMM、CRF,到如今......
  • 【NLP】一文汇总自然语言处理主要研究方向
    NLP专栏已经发了相当数目的文章,从基础的机器学习到最新的预训练语言模型;从简单的文本分类到复杂的信息抽取、聊天机器人。今天我们做一个回顾和总结,聊聊我们从事的自然语言......
  • 【NLP】 NLP领域最具影响力的国内外会议介绍
    众所周知,参加学术会议是进入学术圈、走进学术前沿的重要方式。在学术会议上,不仅可以集中听取最新的成果报告,还有讲习班、工作坊、社交活动等形式,了解那些不会写到论文中的八......
  • 【NLP】 深入浅出解析BERT原理及其表征的内容
    本篇介绍目前NLP领域里影响力最大的预训练模型BERT。首先,大致介绍了BERT里有什么;接着,介绍了BERT的结构和其预训练的方式;最后,再总结BERT的表征的内容和分布。作者&编辑|小D......
  • 【NLP】 深度学习NLP开篇-循环神经网络(RNN)
    从这篇文章开始,有三AI-NLP专栏就要进入深度学习了。本文会介绍自然语言处理早期标志性的特征提取工具-循环神经网络(RNN)。首先,会介绍RNN提出的由来;然后,详细介绍RNN的模型结......
  • 【NLP】自然语言处理专栏上线,带你一步一步走进“人工智能技术皇冠上的明珠”。...
     大家好,今天小Dream哥在有三AI开设新专栏《自然语言处理(NLP)》。在这个专栏中,我们会讲述自然语言处理相关的内容,覆盖自然语言处理基础理论,常用模型以及实际应用等内容。自然......
  • 【NLP预训练模型】你finetune BERT的姿势可能不对哦?
    预训练模型BERT是NLP领域如今最大的网红,BERT的预训练过程学习了大量的自然语言中词、句法以及常识等泛领域的知识。因此,在运用BERT到实际的NLP任务中,通常的做法都是基于特定......
  • java.class.path详解
    java中System.properties的一个属性“java.class.path”(系统类加载器加载字节码class的路径)的获取及详解:获取packagecom.yoyo.yotils.yoyo.system;importorg.apach......
  • 【GAN优化外篇】详解生成模型VAE的数学原理
    最近在学习生成模型的相关知识,这篇文章将介绍一下变分自编码器(VariationalAuto-encoder),本文只介绍一些粗浅内容,不会涉及比较深刻的问题。作者&编辑|小米粥1. 自编码器......