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

上周我们讲到,在进行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相比,它的效率高在哪里呢?先从网络结构开始,我们来细细看一下。

如上图所示,是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)}构造一个目标函数,通过优化该目标函数优化整个网络的参数(包括词向量)

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

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

其中:

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

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

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

也可表示为:

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

同时最小化所有的

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

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

4 负采样的过程

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

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

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

总结

上述就是word2vec的基本原理了,通过word2vec能够高效的获得词向量,是自然语言处理入门必须要掌握的内容。有三AI-NLP知识星球详细介绍了如何搭建网络,复现上述的过程,感兴趣的同学可以扫下面的二维码加入。

(0)

相关推荐

  • 不懂word2vec,还敢说自己是做NLP?

    选择"星标"公众号 重磅干货,第一时间送达! 前  言 如今,深度学习炙手可热,deep learning在图像处理领域已经取得了长足的进展.随着Google发布word2vec, ...

  • 深入理解 word2vec 原理

    Author:louwill From:深度学习笔记 语言模型是自然语言处理的核心概念之一.word2vec是一种基于神经网络的语言模型,也是一种词汇表征方法.word2vec包括两种结构:skip- ...

  • 论文|万物皆可Vector之Word2vec:2个模型、2个优化及实战使用

    本主题文章将会分为三部分介绍,每部分的主题为: word2vec的前奏-统计语言模型(点击阅读) word2vec详解-风华不减 其他xxx2vec论文和应用介绍 后续会更新Embedding相关的文 ...

  • word2vec中的数学模型

    word2vec中的数学模型

  • 特征工程|四种主流的embedding特征技术

    特征工程系列文章目前已经更新: 特征工程|数据的分类.特征工程的定义.意义和应用 特征工程|特征设计.特征可用性评估 特征工程|特征获取.特征规范和特征存储 特征工程|数据清洗.特征生成.特征拼接 特 ...

  • 结构素描步骤详解(专业老师经验总结)

    结构素描黑白灰关系明确后, 各部分丰富起来, 尤其是交界线和灰部要变化丰富. 我们总结前人学习素描的经验,概括为下面三步走: 第一步:构图与打形,好比地基与骨架,地基决定上层建筑,骨架决定房子形状. ...

  • 常用结构做法图文详解

    来源:平法识图与钢筋算量 如有侵权请联系删除 结构工程细部节点做法 一.规定做法 01直螺纹丝头加工做法 说明: 1.直螺纹丝头加工前,钢筋端头采用专用机具切割. 2.加 工成型的有效丝 头长度 == ...

  • 期末英语必考八大时态结构及用法详解,初一、初二、初三均适用!

      专业的初中英语学习平台,每天17:00与您相约! 初中英语 "初中英语"公众号,每天推送初中英语干货好文,包含初一英语.初二英语.初三英语的学习账号.关注即可免费获取①初中英语 ...

  • 回转式空气预热器结构及特点详解

    空气预热器的作用 1.空气通过空气预热器加热后再送入炉膛,提高炉膛温度.促进燃料着火,改善或强化燃烧,保证低负荷下着火稳定性. 2.回热系统的采用使得给水温度提高,亚临界锅炉给水温度可高达250-29 ...

  • 11种主流装配式建筑结构体系参数详解

    来源:中国建设报产经报道.综合天风证券等 装配式建筑相关新闻近年来不断进入大家视野,武汉火神山.雷神山医院更是采用装配式集装箱结构快速建造为大家熟知.大家印象中,装配式建筑就像搭积木一样把房子拼搭起来 ...

  • 初中英语必考八大时态结构及用法详解

    在初中阶段,8大时态的学习可以说是很多同学的难点,尤其是在写作的时候,对于时态的区别,大多数同学都有点不知所措. 为大家总结一下初中英语必考八大时态结构及用法详解,一起来看↓↓↓ 英语八大时态 No. ...

  • 3DMAX欧式雕花模型的快捷制作详解教程

    3DMAX欧式雕花模型的快捷制作详解教程 我们要做下面这种模型: 首先分2种做法 第一种初级, 常规是画好面挤压, 当然我们不否定做这种法因为我们常做家装效果图,一个欧式雕花弄半天那么细致是没有必要的 ...

  • 3DMAX高级软包沙发模型的建模过程详解

    3DMAX高级软包沙发模型的建模过程详解本教程为大家介绍使用max完成高档舒服沙发的建模过程,现在大家也可以跟着一起实践来为自己打造一款舒适又高档的沙发啦,我们开始吧! 首先,运行一个3ds max, ...

  • 嵌入式C语言之结构体对齐详解

    引言 https://m.toutiao.com/is/JctcUfB/ 结构体作为日常开发中使用最广泛的数据类型之一,其重要性不言而喻 .上一篇我们介绍了结构体的定义, 变量的初始化, 以及结构体元 ...