【CS224N笔记】词向量和词义

2020 年 10 月 31 日 AINLP

作者:艾春辉

学校:华北电力大学、苏州大学准研究生

编辑:王萌(澳门城市大学)




review: Word2vec: More details



How do we have usable meaning in a computer?


  • wordNet的问题:?


    1. 词语跟词语之间存在一定的语境差别
    2. 有些单词的新含义缺少
    3. 需要主观调整
    4. 无法计算单词相似度

word2vec

  • 步骤: 


    1. 寻找大量的文本
    2. 固定词汇表中的每个单词都有一个向量表示
    3. 文本中的每一个位置t,均存在中心词c和上下词o
    4. 使用c和o的词向量相似性来计算给定c和o的概率
    5. 不断调整词向量来最大化这个概率


  • word2vec的一些参数:




    1. U的每一行都是一个单词的词向量,点乘之后通过softmax可以得到概率分布,从而得到上下文分布。但是该分布和你在上下文哪个位置是无关的,
    2. We want a model that gives a reasonably high probability estimate to all words that occur in the context (fairly often)----我们希望给出一个合理的高概率估计
    3. 去除一些停用词

更细的细节

  • 为什么每个单词都需要训练两个词向量


    1. 更容易优化,最后都取平均值
    2. 可以每个单词只⽤⼀个向量

  • 两个模型变体


    1. Skip-grams (SG)输⼊中⼼词并预测上下⽂中的单词
    2. Continuous Bag of Words (CBOW)输⼊上下⽂中的单词并预测中⼼词

之前⼀直使⽤softmax(简单但代价很⾼的训练⽅法)


接下来使⽤负采样⽅法加快训练速率

The skip-gram model with negative sampling (HW2)

  • 原始的论文中skip-gram模型是最大化的,这里给出:



  • 课程中的公式:




  • 我们希望中⼼词与真实上下⽂单词的向量点积更⼤,中⼼词与随机单词的点积更⼩


  • k是我们负采样的样本数⽬



这里的0.75次方是选择的比较好的,没有科学依据


But why not capture co-occurrence counts directly?共现矩阵



  • 共现矩阵 X


    1. 两个方法:windows vs. full document
    2. Window :与word2vec类似,在每个单词周围都使⽤Window,包括语法(POS)和语义信息
    3. Word-document 共现矩阵的基本假设是在同⼀篇⽂章中出现的单词更有可能相互关联。假设单词i出现在⽂章 中j,则矩阵元素$X_{ij}$加⼀,当我们处理完数据库中的所有⽂章后,就得到了矩阵 X,其⼤⼩为 |V|*M,其中|V|为词汇量,而M为文章数,这⼀构建单词⽂章co-occurrencematrix的⽅法也是经典的Latent Semantic Analysis所采⽤的。{>>潜在语义分析<<}

  • 利⽤某个定⻓窗⼝中单词与单词同时出现的次数来产⽣window-based (word-word) co-occurrence matrix


  • let me to tell you a example: 句子


        1. I like deep learning.
        2. I like NLP.
        3. I enjoy flying.

则我们可以得到如下的word-word co-occurrence matrix:


使⽤共现次数衡量单词的相似性,但是会随着词汇量的增加⽽增⼤矩阵的⼤⼩,并且需要很多空间来存储这⼀⾼维矩阵,后续的分类模型也会由于矩阵的稀疏性⽽存在稀疏性问题,使得效果不佳。我们需要

对这⼀矩阵进⾏降维,获得低维(25-1000)的稠密向量

how to reduce the dimensionality?

  • 方法一: SVD分解

  • 方法二: Ramped windows that count closer words more----将window倾斜向能统计更接近的单词中

  • 方法三: 采用person相关系数



glove



  • 两种方法: 


    1. 基于计数:使⽤整个矩阵的全局统计数据来直接估计:
    • 优点

            1. 训练快速
            2. 统计数据⾼效利⽤
    • 缺点

             1. 主要⽤于捕捉单词相似性
             2. 对⼤量数据给予⽐例失调的重视

    2. 转换计数:定义概率分布并试图预测单词
    • 优点

             1. 提⾼其他任务的性能
             2. 能捕获除了单词相似性以外的复杂的模式
    • 缺点

             1. 与语料库⼤⼩有关的量表
             2. 统计数据的低效使⽤(采样是对统计数据的低效使⽤)

Encoding meaning in vector differences

  • 采用共现矩阵的思想对meaning进行编码




为什么采用比值有用?这里摘抄至网上:

假如我们想区分ice(固体)和stream(蒸汽),它们之间的关系可通过与不同单词x的共线矩阵相似性比值来秒速,比如p(solid | ice)和p(solid | stream)相比,虽然它们之间的值都很小,不能透露有效消息,但是它们的比值却很大,所以相比之下,solid更常见的用来表示ice而不是stream

  • 我们如何评判在线性表达下的共现矩阵相似度


    1. log-bilinear 模型:

    2. 向量差异:


公式推导部分来啦,非常非常重要的目标函数优化

基于对于以上概率比值的观察,我们假设模型的函数有如下形式:


其中, 代表了context vector, 如上例中的solid, gas, water, fashion等。 则是我们要比较的两个词汇, 如上例中的ice,steam。

F的可选的形式过多,我们希望有所限定。首先我们希望的是F能有效的在单词向量空间内表示概率比值,由于向显空问是线性率间,一个自然的假设是 F 是关于同显 的差的形式: 或:

在此,作者又对其进行了对称性分析,即对于word-word co-occurrence,将向量划分为center word还是context word的选择是不重要的,即我们在交换 的时候该式仍然成立。如何保证这种对称性呢?


我们分两步来进行, 首先要求满足

该方程的解为 F=exp (参考上面的评价方法)同时与 相比较有

所以,


注意其中 破坏了交换 时的对称性, 但是这一项并不依赖于 k 所以我们可以将其融合进关于 的bias项 第二部就是为了平衡对称性, 我们再加入关于 的bias项 我们就可以得到 的形式。另一方面作者注宣到模型的一个缺点是对于所有的co-occurence的权重是一样的,即使是那些较少发 生的co-occurrence。作者认为这些可能是噪声声,所以他加入了前面的 项来做weighted least squares regression模型,即为 的形式。

其中权重项 f 需满足一下条件:

  1. f(0)=0,因为要求  是有限的。
  2. 较少发生的co-occurrence所占比重较小。
  3. 对于较多发生的co-occurrence, f(x) 也不能过大。
  • 优点
    1. 训练快速
    2. 可以扩展到⼤型语料库
    3. 即使是⼩语料库和⼩向量,性能也很好


How to evaluate word vectors?


  • 与NLP的⼀般评估相关:内在与外在
  • 内在
    1. 对特定/中间⼦任务进⾏评估
    2. 计算速度快
    3. 有助于理解这个系统
    4. 不清楚是否真的有⽤,除⾮与实际任务建⽴了相关性
  • 外在
    1. 对真实任务的评估
    2. 计算精确度可能需要很⻓时间
    3. 不清楚⼦系统是问题所在,是交互问题,还是其他⼦系统
    4. 如果⽤另⼀个⼦系统替换⼀个⼦系统可以提⾼精确度


Intrinsic word vector evaluation


  • 词向量类⽐a:b = c:?,类似于之前的男人对国王,求女人对?



    英文解释: This metric has an intuitive interpretation. Ideally, we want xb−xa = xd −xc (For instance, queen – king = actress – actor). This implies that we want xb−xa + xc = xd. Thus we identify the vector xd which maximizes the normalized dot-product between the two word vectors (i.e. cosine similarity).


  • 一些结果举例子:
  • 结论


     1. 300是⼀个很好的词向量维度
     2. 不对称上下⽂(只使⽤单侧的单词)不是很好,但是这在下游任务重可能不同
     3. window size 设为 8 对 Glove向量来说⽐较好
     4. window size设为2的时候实际上有效的,并且对于句法分析是更好的,因为句法效果⾮常局部
     5. 当词向量的维度不断变大的时候,词向量的效果不会一直变差,并且会保持平稳
     6. glove的训练时间越长越好
     7. 数据集越大越好,尽量使用百科类数据集合
     8. 使用余弦相似度

Another intrinsic word vector evaluation

  • the problem:Most words have lots of meanings!(一词多义问题)• Especially common words • Especially words that have existed for a long time

  • method1: Improving Word Representations Via Global Context And Multiple Word Prototypes (Huang et al. 2012) -------将常⽤词的所有上下⽂进⾏聚类,通过该词得到⼀些清晰的簇,从⽽将这个常⽤词分解为多个单词,例如 bank_1, bank_2, bank_3



  • method2: Linear Algebraic Structure of Word Senses, with Applications to Polysemy (Arora, …, Ma, …, TACL 2018)

  • Different senses of a word reside in a linear superposition (weighted sum) in standard word embeddings like word2vec -----------采用加权和的形式进行处理



  • 令人惊讶的是,这个加权均值的效果非常好



Training for extrinsic tasks



  • 到目前我们学的为止,我们的目标是内在任务,强调开发一个特别优秀的word embedding。接下来我们讨论如何处理外部任务


Problem Formulation

  • Most NLP extrinsic tasks can be formulated as classification tasks. For instance, given a sentence, we can classify the sentence to have positive, negative or neutral sentiment. Similarly, in named-entity recognition (NER), given a context and a central word, we want to classify the central word to be one of many classes. ------许多nlp的task都可以归类为分类任务


  • for example:我们有一个句子: Jim bought 300 shares of Acme Corp. in 2006,我们的目标是得到一个结果:[Jim]Person bought 300 shares of [Acme Corp.]Organization in [2006]Time.


对于这类问题,我们通常从以下形式的训练集合开始:


其中 是一个d维度的词向量, 是一个C维度的one-hot向量,表示我们wished label(情感词语,其他词语,命名主体词语,买卖决策,等)

在机器学习里面,对于上面问题,我们通常固定输入和输出的形式,然后采用一些优化算法训练权重。但在nlp里面,我们需要在训练外部任务的时候,对输入的词向量进行再次训练

Retraining Word Vectors 

  • 我们预训练的词向量在外部评估中的表现仍然有提高的可能,然而,如果我们选择重新训练,我们会存在很大的风险------可能效果会比之前差得多

  • If we retrain word vectors using the extrinsic task, we need to ensure that the training set is large enough to cover most words from the vocabulary. -----因为word2vec和glove会产生一些语义接近的单词,并且这些单词位于同一个单词空间。如果我们在一个小的数据集上预训练,这些单词可能在向量空间中移动,这会导致我们的结果更差


举例子: 这两个例子可以清楚明白的看到,训练集合如果过于小,我们的分类结果非常差

结论: 如果训练数据集合太小,就不应该对单词向量进行再训练。如果培训集很大,再培训可以提高性能

Softmax Classification and Regularization 

  • softmax的训练


    1. 函数形式:


    2. 上个式子,是我们计算x是j的概率,我们采用交叉熵损失函数:


    3. 对上面损失函数优化,因为我们$y_j$为1,其他类别就是0,也就是说,对于单个词语我们的损失函数简化为:


    4. 上式损失函数只是一个单词的,但是我们需要使用的训练集不止一个dancing,假设我们有N个单词,将损失函数扩展:


    5. 为了防止过拟合,我们需要加入一个惩罚项:


为什么惩罚项的参数是

我们需要同时训练模型的权值w和词向量x。对于权值来将,我们需要一个d维度向量的输入和一个C维度向量输出,所以是C*d;对于词向量来说,我们词汇表有v个词汇,每个词汇的维度是d维,所以是|v|*d

    6. 如果我们调整好 λ 这个超参数的值,这会降低损失函数出现很大值的参数的可能性因为惩罚项的存在,同时,这个也能提高模型的泛化能力

Window Classification

  • 我们通常的输入不是一个单词



    更多的情况,我们模型的输入是一个单词序列(取决于你的问题的情况,确认窗口的大小),一般来讲,较窄的窗口会在句法测试中会存在更好的性能,而更宽的窗口在语义测试中表现更好


敲公式敲累了,偷个懒,这里就是在softmax里面我们扩展到你窗口大小就行


本文推荐阅读论文:



  1. Improving Distributional Similarity with Lessons Learned from Word Embeddings

  2. Evaluation methods for unsupervised word embeddings 

  3. glove原文




  
  
    

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

欢迎加入AINLP技术交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注NLP技术交流

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
0

相关内容

【2021新书】概率论介绍,395页pdf
专知会员服务
71+阅读 · 2021年1月17日
【文本生成现代方法】Modern Methods for Text Generation
专知会员服务
43+阅读 · 2020年9月11日
【经典书】概率统计导论第五版,730页pdf
专知会员服务
234+阅读 · 2020年7月28日
斯坦福大学经典《自然语言处理cs224n》2020课件合集
专知会员服务
94+阅读 · 2020年5月25日
【课程推荐】普林斯顿陈丹琦COS 484: 自然语言处理课程
专知会员服务
82+阅读 · 2019年12月11日
自然语言处理基础:上下文词表征入门解读
机器之心
13+阅读 · 2019年3月2日
自然语言处理中的词表征(第二部分)
AI研习社
3+阅读 · 2018年12月31日
基于 Doc2vec 训练句子向量
AI研习社
6+阅读 · 2018年5月16日
100+中文词向量,总有一款适合你
专知
12+阅读 · 2018年5月13日
干货|自然语言处理中的词向量 — word2vec!
全球人工智能
7+阅读 · 2018年1月25日
自然语言处理 (三) 之 word embedding
DeepLearning中文论坛
19+阅读 · 2015年8月3日
Arxiv
6+阅读 · 2019年4月8日
VIP会员
相关VIP内容
【2021新书】概率论介绍,395页pdf
专知会员服务
71+阅读 · 2021年1月17日
【文本生成现代方法】Modern Methods for Text Generation
专知会员服务
43+阅读 · 2020年9月11日
【经典书】概率统计导论第五版,730页pdf
专知会员服务
234+阅读 · 2020年7月28日
斯坦福大学经典《自然语言处理cs224n》2020课件合集
专知会员服务
94+阅读 · 2020年5月25日
【课程推荐】普林斯顿陈丹琦COS 484: 自然语言处理课程
专知会员服务
82+阅读 · 2019年12月11日
相关资讯
自然语言处理基础:上下文词表征入门解读
机器之心
13+阅读 · 2019年3月2日
自然语言处理中的词表征(第二部分)
AI研习社
3+阅读 · 2018年12月31日
基于 Doc2vec 训练句子向量
AI研习社
6+阅读 · 2018年5月16日
100+中文词向量,总有一款适合你
专知
12+阅读 · 2018年5月13日
干货|自然语言处理中的词向量 — word2vec!
全球人工智能
7+阅读 · 2018年1月25日
自然语言处理 (三) 之 word embedding
DeepLearning中文论坛
19+阅读 · 2015年8月3日
Top
微信扫码咨询专知VIP会员