【CS224 -- 02】-词的向量表示:Word2Vec

CS224 – 02-词的向量表示:Word2Vec

如何处理一个词语的意思

  • 英文中meaning代表人或文字想要表达的idea
  • 递归的顶级,查询idea会使用meaning去解释它

计算机如何处理词汇的意思

  • 计算机语言学中常见的方式是WordNet那样的词库
  • 如在NLTK中通过WordNet查询熊猫的hypernyms(上位词:指概念上外延更广的主题词).得到“食肉动物”“动物”之类的上位词
  • 也可以查询“good”的同义词——“just品格好”“ripe熟了”

discrete representation(离散表示)的问题

  • 这种discrete representation是一种语言学资源,但是丢失了韵味很难从这些资源中获取得到价值,比如这些近义词实际上还是有着细微之处的差别:adept, expert, good, practiced, proficient, skillful

  • 缺失了很多的新词

    • 比如: 我是深度学习领域的忍者
  • 主观化:

    • 比如: 你如何区分一个词有哪些含义,哪些词汇你认为是一样的
    • 是非常模糊的判断
  • 需要耗费大量人力去整理

  • 最终很难对词汇的相似性做出准确的定义

  • 大部分的规则学派或者统计学派,都是使用原子符号来表示词语,将词语视作最小单位,事实上,从神经网络的角度来讲,词语只是one-hot向量,即独立热编码

    • 在不同的语料中,词表大小不同。Google的1TB语料词汇量是1300万,这个向量的确太长了
    • 这是一种localist representation
    • 这种方法并没有显示出任何词汇之间的内在关系概念

从symlolic representations(符号表示) 到Distributional similarity(分布相似性)

  • 词语在符号表示上体现不出意义的相似性,比如Dell notebook battery size和Dell laptop battery capacity。而one-hot向量是正交的,无法通过任何运算得到相似度。
  • 分布式相似性: 一种关于词汇语义的理论,可以通过单词理解出现的上下文,来描述词汇的意思

Distributional similarity(分布相似性) based representations

  • 通过一个单词的上下文可以得到它的意思,如果你能把单词放到正确的上下文中去,才说明你掌握了它的意义

[外链图片转存失败(img-ej94XJsL-1565083260192)(./image/CS224-02-01.png)]

使用向量来定义词语的意思

  • 给每一单词构造一个向量,选择一个密集型向量,让它预测目标单词所在文本的其他词汇
  • 通过调整一个单词及其上下文单词的向量
  • 使得根据两个向量可以推测两个词语的相似度
  • 或根据向量可以预测词语的上下文
  • 这种手法也是递归的,根据向量来调整向量,与词典中意项的定义相似
  • 另外,distributed representations与symbolic representations(localist representation、one-hot representation)相对;discrete representation则与后者及denotation的意思相似。切不可搞混distributed和discrete这两个单词

学习神经网络word embedding的基本思想

  • 定义一个可以预测某个单词的上下文模型:
    $ p(context | w_t)= …$
  • 损失函数定义如下:
    J = 1 − p ( w − t ∣ w t ) J=1-p(w_{-t}| w_t) J=1p(wtwt)
  • 这里的w−t表示wt的上下文(负号通常表示除了某某之外),如果完美预测,损失函数为零
  • 然后在一个大型语料库中的不同位置得到训练实例,调整词向量,最小化损失函数

直接学习低维词向量

  • 很早之前已经有人研究
  • Learning representations by back-propagating errors (Rumelhart et al., 1986)
  • A neural probabilistic language model (Bengio et al., 2003)
  • NLP (almost) from Scratch (Collobert & Weston, 2008)
  • A recent, even simpler and faster model: word2vec (Mikolov et al. 2013)
  • 以前一直没有引起重视,直到Bengio展示了它的用处之大。后来研究才开始火热起来,并逐渐出现了更快更工业化的模型。
  1. Word2vec的主要思想
  • word2vec尝试去做的最基本的事情就是利用语言的意义理论来预测每个单词和上下文的词汇
  • 两个算法:
    • Skip-grams(SG):预测上下文
    • Continuous Bag of Words(CBOW):预测目标单词
  • 两种稍微有效的训练方法
    • Hierarchical softmax
    • Negative sampling
    • 在这门课里,只会讲Naïve softmax

Skip-gram预测

  • skip-gram概念是:在每一个估算步都取一个词作为中心词汇,尝试去预测它一定范围内的上下文的词汇
  • 该模型将定义一个概率分布,即给定一个中心词汇,某个单词在它上下文出现的概率.我们会选取词汇的向量表示.以让概率分布最大化
  • 注意该模型只有一个概率分布,而不是对左边或者右边有不同的概率分布,对于一个词汇有且仅有一个概率分布
  • 只是一个词袋模型,与位置无关
    • 词袋模型:
      • Bag-of-words词袋模型最初被用在信息检索领域
      • 对于一篇文档来说,假定不考虑文档内的词的顺序关系和语法,只考虑该文档是否出现过这个单词

Word2vec的细节

  • 定义一个半径m,然后从中心词汇开始,到距离m的位置来预测周围的单词

  • 然后在多处进行重复操作

  • 选择词汇向量以便于让预测的概率达到最大

  • 目标函数定义为所有位置的预测结果的乘积

    J ′ ( θ ) = ∏ t = 1 T ∏ − m ≤ j ≤ m p ( w t + j ∣ w t ; θ ) ( j ≠ 0 ) J'(\theta) = \prod_{t=1}^T\prod_{-m\leq{j}\leq{m} }p(w_{t+j} | w_t;\theta)(j\neq0) J(θ)=t=1Tmjmp(wt+jwt;θ)(j=0)

  • 要最大化目标函数,对其取负对数,得到损失函数-对数似然函数的相反数

    J ( θ ) = − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m l o g P ( W t + j ∣ w t ) ( j ≠ 0 ) J(\theta) =\frac{-1}{T}\sum_{t=1}^T\sum_{-m\leq{j}\leq{m}} log P(W_{t+j} | w_t)(j\neq0) J(θ)=T1t=1TmjmlogP(Wt+jwt)(j=0)

  • 目标函数,损失函数,代价函数都是一个名词,对于softmax来讲,常用的损失函数是交叉熵

  • 预测得到的某个上下文条件概率 p ( w t + j ∣ w t ) p(w_{t+j} | w_t) p(wt+jwt)可以由softmax得到:

    p ( o ∣ c ) = e x p ( u 0 T V c ) ∑ w = 1 T e x p u w T V c p(o|c) = \frac{exp({u_0}^TV_c)}{\sum_{w=1}^Texp{u_w}^TV_c} p(oc)=w=1TexpuwTVcexp(u0TVc)

  • 以上公式中:o是输出的上下文词语中的确切某一个,c是中间的词语,u是上下文词向量,v是词向量

  • 点积运算:

    • u T v = ∑ i = 1 n u i v i u^Tv = \sum_{i=1}^n{u_iv_i} uTv=i=1nuivi
    • 点积也有点像衡量两个向量相似度的方法,两个向量越相似,其点积越大
  • Softmax function:从实数空间到概率分布的标准映射方法

    • 指数的目的是将其并为正数
    • 分母的目的是正则化
    • softmax之所叫softmax,是因为指数函数会导致较大的数变得更大,小数变得微不足道;这种选择作用类似于max函数

Skipgram:

[外链图片转存失败(img-b7TlrYMH-1565083260193)(./image/CS224-02-03.png)]

 1. 从左到右是one-hot向量,乘以center word的W于是找到词向量
 2. 乘以另一个context word的矩阵W'得到对每个词语的“相似度”
 3. 对相似度取softmax得到概率
 4. 与答案对比计算损失

[外链图片转存失败(img-FG7ULkhb-1565083260194)(./image/CS224-02-04.png)]

训练模型:计算参数向量的梯度

  • 把所有参数写进向量θ,对d维的词向量和大小V的词表来讲有:
  • 由于两个矩阵的原因,所以θ的维度中有个2
    [外链图片转存失败(img-V1uyWpCj-1565083260195)(./image/CS224-02-05.png)]
  • 模型学习方法:
    • 梯度法
    • 推导:
      [外链图片转存失败(img-HxObpjyg-1565083260197)(./image/CS224-02-06.png)]
      [外链图片转存失败(img-9fSR2Fmp-1565083260198)(./image/CS224-02-07.png)]
      [外链图片转存失败(img-y3RhcA6g-1565083260199)(./image/CS224-02-08.png)]
      [外链图片转存失败(img-4YklkUBV-1565083260199)(./image/CS224-02-09.png)]
  • 梯度计算结束后,参数减去梯度向最小值出发

[外链图片转存失败(img-FMIpjyMZ-1565083260205)(./image/CS224-02-10.png)]

  • 神经网络喜欢嘈杂的算法,这可能是SGD成功的另一原因

  • 五分钟的讲座:一个简单但很难超越的Sentence Embedding基线方法[danqichen]

[外链图片转存失败(img-XMPM7IAp-1565083260205)(./image/CS224-02-11.png)]

句子Embedding动机

  • 词向量可以编码词,但是自然语言关心的是句子的意思
    [外链图片转存失败(img-spDXWTOR-1565083260206)(./image/CS224-02-12.png)]
  • 如果我们能够拿到句子的向量表示,则可以方便地用内积计算相似度
    [外链图片转存失败(img-hlVERtkc-1565083260206)(./image/CS224-02-13.png)]
  • 还可以在这些句子向量之上构建分类器做情感分析:
    [外链图片转存失败(img-NaL9aUeZ-1565083260206)(./image/CS224-02-14.png)]

已有方法:

  • 具体怎么由词向量到句向量呢?有很多种方法,比如词袋模型中简单地线性运算:
    [外链图片转存失败(img-v9zrWgPN-1565083260207)(./image/CS224-02-15.png)]
  • 在后面的课程中,将会用recurrent neural network、recursive neural network,CNN来做同样的事情
    [外链图片转存失败(img-ur1qUTZL-1565083260207)(./image/CS224-02-16.png)]

新方法:

  • 但是介绍的这篇普林斯顿大学的论文却剑走偏锋,采用了一种简单的无监督方法。这种方法简单到只有两步:
    [外链图片转存失败(img-W2vx1pGq-1565083260208)(./image/CS224-02-17.png)]
  • 第一步,对句子中的词向量,诚意一个独特的权值,这个权值是一个常数α除以α与该词语频率的和.也就是说高频词的权值会相对下降,求和后得到暂时的句向量
  • 第二步,算语料库所有句向量构成的矩阵的第一个主成分u,让每个句向量减去它在u上的投影(类似PCA)。其中,一个向量v在另一个向量u上的投影定义如下:
      P r o j u v = u u T v ∣ ∣ u ∣ ∣ 2 Proj_u v=\frac{uu^Tv}{||u||^2} Projuv=u2uuTv

概率论解释

[外链图片转存失败(img-AD1R4AJh-1565083260208)(./image/CS224-02-18.png)]

  • 其原理是,给定上下文向量,一个词的出现概率由两项决定:作为平滑项的词频,以及上下文:

其中第二项的意思是,有一个平滑变动的上下文随机地发射单词

效果

[外链图片转存失败(img-MCBqh56A-1565083260209)(./image/CS224-02-19.png)]

  • 在句子相似度任务上超过平均水平,甚至超过部分复杂的模型。在句子分类上效果也很明显,甚至是最好成绩

参考:

  • http://www.hankcs.com/nlp/word-vector-representations-word2vec.html
  • http://www.hankcs.com/nlp/cs224n-sentence-embeddings.html
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值