cs224n-笔记-lecture01-wordvecs

目录

  • 人类语言和词语含义
  • 词向量
  • Word2Vec语言模型介绍
  • 优化方法:梯度下降法

人类语言和词语含义

1.如何表示一个词

定义词语的meaning:

  • 用单词、词组表示概念
  • 用单词、符号表达观点
  • 通过写作、艺术表达内容
    ...
    最具一般性的解释是(denotational semantics用语言符号对语义进行转化):
    signifier(symbol)⇔signified(idea or thing)

2.如何在计算机中使用语义

  • WordNet
    WordNet是一个词库,包含了单词的同义词和上位词,是一种词语间关系的描述,例如:
    “good”的同义词:



    “panda”的上位词(上位词是指概念上更广的主题词,比如熊猫的上位词有哺乳动物等):


然而这种表示存在一些问题:
1. 词库追求全面,但是有的词语之间作为同义词只是在特定场景下
2. 缺少新兴词汇、网络词汇
3. 如果添加新词汇,需要大量人工去不断调整
4. 比较主观(缺少客观性)
5. 难以计算词语间的语义相似度

  • 将单词表示为离散符号
    在传统的NLP中,我们将单词视作离散的符号,也就是one-hot表示,这样可以将单词表示成向量的形式,这在NLP中是非常基础和常用的表示形式,例如:
    motel = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]
    hotel = [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0]
    我们首先建立一个词典,词典中的单词通过占1位的向量来表示,所有单词的向量维度是一样的,这个维度就是字典中单词的个数。这样做可以将单词离散表示,便于编程处理,但是有个很大的问题是没有办法表示单词的语义,比如motel和hotel是近义词,然而很难计算二者的语义相似度(两个向量正交,而且one-hot表示也天然不具备相似度的概念)。
  • 基于上下文的单词表示
    这里引入一个概念,分布语义(Distributional semantics):一个单词的含义由经常出现在附近的单词给出。
    - “You shall know a word by the company it keeps” (J. R. Firth 1957: 11)
    - 这是现代统计NLP领域中最成功的方法之一
    这是什么意思呢?就是说一个单词w出现在文本中,它的上下文是指它的临近词组成的集合。我们可以根据w的多个上下文来构建其表示方式。这也就是接下来要说的重点,词向量。

词向量

词向量是通过单词的上下文环境构建的一个稠密向量,具有相似上下文环境的单词具有相似性。词向量(Word Vector)也经常被称作Word Embeddings或是Word Representations,总之都是一个意思,也可以被称作分布式表示(distributed representation)。
词向量相比One-hot,具有两个优点:①词向量是更加稠密的向量,维度也相对更低,信息密集且浪费的空间比较少;②由于是通过上下文环境的构建,相似的单词具有相似的上下文环境,因此可以将相似度进行量化(比如可以用向量内积的方式)。接下来我们看一下如何构建词向量。
  • 概览
    Word2Vec(Mikolov et al. 2013)是一个经典的、可学习的词向量框架。它基本的ideas是:
    庞大的文本语料库需要处理
    词表中的每一个单词通过一个向量表示
    文本中的每一个位置t,都有一个中心词c,和一个上下文环境(outside)o
    通过使用o和c的词向量相似度,来计算给定o时,求c的概率(或者相反)P(c|o)
    词向量应当是可学习的,这样就可以通过调整o和c来最大化概率P
    这里举个栗子,用中心词来计算上下文的概率P(Wt+j|Wt),这里的上下文用滑动窗口表示,Window size=2。我们通过最大化每一个位置和它上下文的条件概率,就可以得到每个单词的最佳的词向量,词向量的模型就是这样的。
  • 目标函数
    那么如何对模型进行求解呢?这里用到了极大似然的概念。对于每一个位置t=1..T,给定中心词Wj,预测一个固定尺寸为m的窗口的上下文,求这个概率的极大似然估计:

    其中,θ是所有的可学习的参数,这样我们就可以定义一个目标函数J(θ)了:

    我们最小化目标函数,也就是最大化概率的似然估计,将问题转换成了一个最优化的问题。如何计算这个目标函数呢?重点在于w和P的表示形式。原文使用两个矩阵来分别表示每一个单词w处于两种情景时:
    vw表示w是中心词时的向量
    uw表示w是外部词时的向量
    那么概率P可以表示为:

    很明显,这里的概率公式就是Softmax函数,这是一个很经典的函数(参考)。在这里我们使用它是因为可以很好的表达概率计算。uTv可以看做是计算uv向量的相似度,越大的相似度代表了越大的概率,exp()函数可以保证相似度计算的值是整数,分母是求和当前中心词关于整个词表的概率计算,具有归一性。
    这里有一个问题是为什么越大的相似度代表了越大的概率,按理说越大的相似度不是代表了两个词语义上越相近吗,相邻词汇未必是相近的,为什么这里是最大化相似度?我的理解是这样的:词向量是通过外部词的概率和计算的而来的,对于每一个样本来说,我们是在计算每一个中心词和一组外部词的似然估计,通过对目标函数的优化,结果是一组外部词和中心词的相似度之和应当是最大的(而不是外部词中的一个相似度最大化),这也符合我们最初的定义:即通过上下文信息表征词向量。

优化方法:梯度下降法

有了模型,有了算法,那么接下来就是求最优化过程了。这里介绍的是最基础的梯度下降法。对于词向量模型而言,θ表示了模型的所有参数(即我们的U和V矩阵),我们可以把θ表示成一个向量:


每一个单词都有两个向量,我们沿着梯度下降的方法,来优化这些参数。

上述就是求导过程,可以看到,对于第一个偏导,第一项uo可以看做是实际外部词,第二项是预测的外部词,模型预测是逐渐靠拢两项的值。对于第二个偏导,当P(o|c)趋近于1时,梯度下降停止,而这时我们也可以成功预测外部词。

你可能感兴趣的:(cs224n-笔记-lecture01-wordvecs)