词向量综述

词向量综述

one-hot

一个词的meaning指的是:the idea that is represented by a word, phase, etc.

计算机表达一个词的meaning,是通过把词性、词义相同的词构成一个集合来实现的。典型的例子是WordNet

通过集合表达词性有如下缺点:

  • 同义词区分不明显:adept、expert、good、prooficient虽然大致含义相同,但是使用的上下文是不同的,不可以把它们当成完全一样的。
  • 过时性:新的词不可以及时更新
  • 主观性
  • 需要人力去创造词典集合
  • 较难计算词之间的相似度

具体地,词在计算机中是以[0,1,0,0…]的向量表示的,该词对应的index的值为1,其他为0。这样做简单方便,可是缺点也很明显:

  • 占用空间大
  • 两个相近词的交集为0,距离很远

by neighbor

You shall know a world by the company it keeps. Similar words appear in similar contexts.

这个方法的核心是认为相近的词的上下文也是相近的。识别词的上下文又有两种做法:

  • 基于全文档:词-文档的co-occurrence matrix可以把词划分为不同的主题,延伸的有Latent Semantic Analysis
  • 基于window:基于全文档的只可以反映语义信息,基于window的可以反映语义和语法信息,例如CBOWSkip-Gram

基于全文档的词向量

  • word count matrix
  • tf-idf matrix
  • LSA

基于window的词向量

一般来说,基于window的词向量有以下特点:

  • window长为5-10
  • 对称性,不区分左边右边
  • 一些功能词(the,he,she)出现的太频繁,影响较大。解决办法一是设定max_count,二是把这些词忽略掉
  • window的时候考虑远近,加以不同的权重
  • 使用pearson相关系数代替count

选择window为1,例子如下:

上图中,like和enjoy的相似度就很高,通过co-occurrence matrix确实可以构建反映词语义的词向量。

SVD

上面的co-occurrence matrix词向量的维度是词汇库的维度,向量太长。可以通过SVD降维得到维度较低的词向量。

SVD的缺点如下:

  • 计算复杂度太高
  • 新的词或者文档来的时候还要重新计算

Skip-Gram

与其计算co-occurrence matrix,不如直接学习词向量。这样学的更快,而且当新的句子或者文档来的时候也能适应。

结构

单词都是ont-hot编码,单词长度为V。

学习算法

损失函数如下:

优化角度

改进

针对skip-gram有以下改进策略:

  • Treating common word pairs or phrases as single “words” in their model.
  • Subsampling frequent words to decrease the number of training examples.
  • Modifying the optimization objective with a technique they called “Negative Sampling”, which causes each training sample to update only a small percentage of the model’s weights.

word pair

常见的词语Boston Globe与单个词语BostonGlobe有着不同的含义,所以应该额外认为是一个词。

sub-sampling frequent words

对于常出现的单词the,有下面两个问题:

  • 当看一个单词对 (fox,the)的时候,这个单词对并没有告诉我们太多关于fox的信息,因为the出现的频率太高了。
  • 学习the的词向量,需要的样本远低于实际的样本。

通过subsampling可以解决上面的问题,其思路是:对于文档中遇到的每一个词,都有一定的概率把这个词从文档中删除。删除的概率和词频成正比。

negative sampling

在神经网络的训练中,通过输入训练样本,计算损失函数,反馈梯度更新网络的所有权重。也就是说,每一次训练都更改了网络的所有权重。

在skip-gram模型中,网络参数是很大的,训练数据也很大,每一次训练更新的都很多,速度较慢。

negative sampling,使每个训练样本只更新网络的一部分参数。

  • 随机挑选部分negative words进行训练(挑选的概率与词频成正比),对于小的数据集5-20即可;大的数据集2-5即可。
  • 更新隐含层到输出层的权重时,只更新positive word和negative word连接的权值即可。更新输入层到隐含层的权重时,只有输入数据对应的权重被更新(用不用negative sampling都这样)。

Continuous BOW

结构

输入输出

单词都是ont-hot编码,单词长度为VV。

算法

计算forward pass的时候,隐含层的计算方法如下:

Count VS Prediction

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Duncan's Blog

天池-半导体质量预测

1) 提取特征后,xgboost的mse为0.0325341683406 2) 单个随机森林的5折交叉验证的平均mse为0.0288353227614 (max...

592
来自专栏企鹅号快讯

基础 Word2vec的原理介绍

一,词向量的概念 将 word映射到一个新的空间中,并以多维的连续实数向量进行表示叫做“Word Represention” 或 “Word Embedding...

19810
来自专栏机器之心

入门 | 奇异值分解简介:从原理到基础机器学习应用

选自machinelearningmastery 作者:Jason Brownlee 机器之心编译 参与:Panda 矩阵分解在机器学习应用中的重要性无需多言。...

3316
来自专栏Spark学习技巧

【深度学习】笔记第一弹--神经网络

1. 神经网络前言 1.1 背景 在进入神经网络之前,先讲述两个略带血腥的实验。 第一个实验是科学家将耳朵到大脑听觉区的神经给切断了,然后将眼睛到大脑听觉区的...

2978
来自专栏互联网大杂烩

分类问题 数据挖掘之分类模型

判别分析是在已知研究对象分成若干类型并已经取得各种类型的一批已知样本的观测数据,在此基础上根据某些准则建立判别式,然后对未知类型的样品进行判别分析。

492
来自专栏专知

线性回归:简单线性回归详解

【导读】本文是一篇专门介绍线性回归的技术文章,讨论了机器学习中线性回归的技术细节。线性回归核心思想是获得最能够拟合数据的直线。文中将线性回归的两种类型:一元线性...

3277
来自专栏SIGAI学习与实践平台

卷积神经网络的压缩和加速

我们先来看看当前深度学习平台中,卷积层的实现方式,其实当前所有的深度学习平台中,都是以矩阵乘法的方式实现卷积的(如图1左侧):

3238
来自专栏汪毅雄的专栏

机器学习之回归原理详述(一)

本文用了从数学层面和代码层面,再结合一些通俗易懂的例子,详细地描述了回归主要涉及的原理和知识,希望对于机器学习的初学者或者有兴趣研究模型具体实现的同学带来一点帮...

1.1K3
来自专栏TensorFlow从0到N

TensorFlow从0到1 - 10 - NN基本功:反向传播的推导

上一篇 9 “驱魔”之反向传播大法引出了反向传播算法——神经网络的引擎,并在最后窥探了它的全貌。本篇将详细的讨论反向传播各方面的细节。尽管它被TensorFl...

3696
来自专栏人工智能LeadAI

TensorFlow从0到1 | 第十章:NN基本功:反向传播的推导

上一篇 9 “驱魔”之反传大法 引出了反向传播算法,强调了其在神经网络中的决定性地位,并在最后窥探了算法的全貌。本篇将详细的讨论算法各方面的细节。尽管我们都能...

2775

扫码关注云+社区