编辑:忆臻
https://www.zhihu.com/question/339184168
本文仅作为学术分享,如果侵权,会删文处理
机器学习算法与自然语言处理报道
为什么很多NLP的工作在使用预训练词向量时选择GloVe而不是Word2Vec或其他?
作者:香侬慧语科技
https://www.zhihu.com/question/339184168/answer/814291637
斯坦福开源的Glove是基于一个特别特别特别特别大(具体size不记得了,反正特别特别大,难以想象的大)的从网上抓取的数据集 common-crawl 训练的。
似乎通用开源的word2vec向量主要是基于 wiki+gigaword,比较小,也就几billion个词。
所以开源的Glove向量效果是好于word2vec向量的
不过曾经有人做过fair的比较,如果在相同数据集上训练,Glove未必比word2vec好,各有千秋吧
作者:Liyuan Liu
https://www.zhihu.com/question/339184168/answer/813829834
因为pre-trained GloVe 做了比较多的pre-process, 然后word2vec 没有做. 然后大部分downstream task 都是处理过的词,用GloVe 确实要好一些.
从算法角度,这两东西半斤八两,但release 出来的pre-trained embedding,GloVe的pre-processing对细节处理更好一些.
作者:squirrel.thr
https://www.zhihu.com/question/339184168/answer/779333137
Motivator
使用预训练模式的动机是用一个基础的word embedding model去表达word meaning。这个有基础的 model中对应每一个word背后包涵的意思,可以为下游NLP任务提供一个基础word语义和语法模型。Downstream NLP model可以根据应用的领域,微调word meaning,更准确的表达这个领域的词义。
预训练之所以有效,是因为它利用了很多word的latent features,用几何距离的方式去表示words之间的相关性。它工作方式与图像识别任务中的transfer learning方式相似。
根据已有经验的证明,好的预训练的Word embedding model可以大幅提高downstream NLP tasks的accuracy,像在处理named entity recognition和word analogous的任务。
为什么使用GloVe (Overview)
GloVe在重要的NLP任务进行基准测试中表现非常突出。
6 Billion的训练数据[1]
Skip-Gram and CBOW(Continuous Bag of Words)是Word2Vec的两种实现方法。
“非常快的训练速度”,模型简单(与Skip-Gram相比)
Skip-gram训练使用softmax function. Skip gram scale的复杂度和vocabulary size成线性关系, O(| V |)。如果词汇量从400,000 vocabulary size到4 Millions size,那么训练时间太长,很难在vocabulary方面进行模型扩展[1]。Skip-gram用了一个Hierarchal softmax,使用二叉树从O(| V |)减少到O(log | V |)。但是树的构造很复杂,需要很多技巧。
GloVe使用negative sampling训练时,比CBOW快~2倍,比Skip-Gram快约5倍[1]。
"Human Level Performance"
能否定义和达到这点是有很大的不确定性的。如果比较一个小孩子几岁可以进行的word meaning的evaluation task, 统计年龄和分数的关系,再比较一个GloVe的基准的score,会是一个很有意思的实验。就目前而言,我们可以根据小孩子掌握的vocabulary和GloVe做一个基准的表较,看看GloVe可以达到几岁小孩的word表达水平。
虽然这种比较不是能力上等同的比较。但就表现力而言,这很有趣。在300向量维度和42亿训练数据中,GloVe在语义任务中得分为81.9,在句法任务中得分为69.3 [1]。这很可能是第一次在语义任务中word embedding model可以高于80分,表现以理解单词的含义。
虽然它还不是“expert performance",但应用到特定的domain,加上engineering corner case可以继续提高分数,有可能达到90分以上,这样的分数会对很多downstream NLP任务的准确性有很大的提高。
Word2Vec
Word2Vec是一种基于迭代的方法,用vector于表示word。它有两种算法来表示word
-
continuous bag of words
-
skip-gram
CBOW是从周围context预测中心词。Context可以是范围2个相邻的单词,到3,4,5,6的周围相邻的word. 越远的words,一般来说是越不relevant. 但是这样的assumptions是基于general documents,不适合于诗歌和文学作品。
Skip gram用于预测给定centered words的context words。
但就每个word而言,word context都是一个“local context“,word vector的update是基于local context的update和表达。
GloVe
GloVe是全名是Global Vectors for Word Representation.
Global
GloVe context是“global”。在计算co-occurence statistics时,Word vector context是“global context". 所以word vector训练时的update是考虑了global context的,更新后的word vector是有global meaning的.
有了Global context, GloVe能够”理解“Semantics based的NLP任务,象Semantic比喻任务
答案是"Woman".
有了Global context, GloVe也能够”理解“Syntactic based的NLP任务,象Syntactic比喻任务
答案是"dancing".
Global representation of "King" and "Queen" 表示 GloVe计算“King”和所有其他单词的co-occurence统计特征,包括“Queen”和所有其他单词,并计算embedded matrix中的P(“Queen”|“King”)
Relevancy and Probability
Co-occur的两个词越多,它们就越相关。
Properties
你可以对word embedding vector进行算术运算来计算相关性。在GloVe中,这个等式不是完全成立的。但左右两边的差异很小。
基本Negative Sampling的训练
使用negative sampling方法进行训练可将复杂度很高的多类分类问题降低到多个二元分类问题。
多类分类任务
多个二元分类问题
二进制分类训练比多类分类快得多。
[1] Pennington, Socher, Manning, 2014. GloVe: Global vectors for word representations
为您推荐
本篇文章来源于: 深度学习这件小事
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 内部泄露版!互联网大厂的薪资和职级一览05/24
- ♥ 2020毕业生报告发布:IT行业最受欢迎,「求稳」是求职趋势06/09
- ♥ 如何理解soft target这一做法?05/07
- ♥ 论文怎么读?吴恩达手把手教你!06/13
- ♥ 计算机视觉算法岗面经:商汤/滴滴/腾讯05/20
- ♥ 教程 | PyTorch经验指南:技巧与陷阱02/27
内容反馈