作者:艾春辉
学校:华北电力大学、苏州大学准研究生
编辑:王萌(澳门城市大学)
review: Word2vec: More details
How do we have usable meaning in a computer?
3. 文本中的每一个位置t,均存在中心词c和上下词o
4. 使用c和o的词向量相似性来计算给定c和o的概率
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)----我们希望给出一个合理的高概率估计
1. Skip-grams (SG)输⼊中⼼词并预测上下⽂中的单词
2. Continuous Bag of Words (CBOW)输⼊上下⽂中的单词并预测中⼼词
之前⼀直使⽤softmax(简单但代价很⾼的训练⽅法)
The skip-gram model with negative sampling (HW2)
But why not capture co-occurrence counts directly?共现矩阵
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所采⽤的。{>>潜在语义分析<<}
则我们可以得到如下的word-word co-occurrence matrix:
使⽤共现次数衡量单词的相似性,但是会随着词汇量的增加⽽增⼤矩阵的⼤⼩,并且需要很多空间来存储这⼀⾼维矩阵,后续的分类模型也会由于矩阵的稀疏性⽽存在稀疏性问题,使得效果不佳。我们需要
对这⼀矩阵进⾏降维,获得低维(25-1000)的稠密向量
how to reduce the dimensionality?
1. 基于计数:使⽤整个矩阵的全局统计数据来直接估计:
2. 统计数据的低效使⽤(采样是对统计数据的低效使⽤)
Encoding meaning in vector differences
假如我们想区分ice(固体)和stream(蒸汽),它们之间的关系可通过与不同单词x的共线矩阵相似性比值来秒速,比如p(solid | ice)和p(solid | stream)相比,虽然它们之间的值都很小,不能透露有效消息,但是它们的比值却很大,所以相比之下,solid更常见的用来表示ice而不是stream
基于对于以上概率比值的观察,我们假设模型的函数有如下形式:
其中,
代表了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模型,即为
的形式。
-
-
较少发生的co-occurrence所占比重较小。
-
对于较多发生的co-occurrence, f(x) 也不能过大。
How to evaluate word vectors?
-
-
-
-
-
-
-
-
-
-
不清楚⼦系统是问题所在,是交互问题,还是其他⼦系统
-
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).
-
2. 不对称上下⽂(只使⽤单侧的单词)不是很好,但是这在下游任务重可能不同
3. window size 设为 8 对 Glove向量来说⽐较好
4. window size设为2的时候实际上有效的,并且对于句法分析是更好的,因为句法效果⾮常局部
5. 当词向量的维度不断变大的时候,词向量的效果不会一直变差,并且会保持平稳
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
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都可以归类为分类任务
其中
是一个d维度的词向量,
是一个C维度的one-hot向量,表示我们wished label(情感词语,其他词语,命名主体词语,买卖决策,等)
在机器学习里面,对于上面问题,我们通常固定输入和输出的形式,然后采用一些优化算法训练权重。但在nlp里面,我们需要在训练外部任务的时候,对输入的词向量进行再次训练
我们预训练的词向量在外部评估中的表现仍然有提高的可能,然而,如果我们选择重新训练,我们会存在很大的风险------可能效果会比之前差得多
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
2. 上个式子,是我们计算x是j的概率,我们采用交叉熵损失函数:
3. 对上面损失函数优化,因为我们$y_j$为1,其他类别就是0,也就是说,对于单个词语我们的损失函数简化为:
4. 上式损失函数只是一个单词的,但是我们需要使用的训练集不止一个dancing,假设我们有N个单词,将损失函数扩展:
为什么惩罚项的参数是
?
我们需要同时训练模型的权值w和词向量x。对于权值来将,我们需要一个d维度向量的输入和一个C维度向量输出,所以是C*d;对于词向量来说,我们词汇表有v个词汇,每个词汇的维度是d维,所以是|v|*d
6. 如果我们调整好 λ 这个超参数的值,这会降低损失函数出现很大值的参数的可能性因为惩罚项的存在,同时,这个也能提高模型的泛化能力
更多的情况,我们模型的输入是一个单词序列(取决于你的问题的情况,确认窗口的大小),一般来讲,较窄的窗口会在句法测试中会存在更好的性能,而更宽的窗口在语义测试中表现更好
敲公式敲累了,偷个懒,这里就是在softmax里面我们扩展到你窗口大小就行
Improving Distributional Similarity with Lessons Learned from Word Embeddings
Evaluation methods for unsupervised word embeddings
glove原文
由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:
(1)点击页面最上方"AINLP",进入公众号主页。
(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。
进群请添加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),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏