常州企业网站建设,wordpress制作单页网站导航页面,dw个人网站设计,网站app开发费用本文转自#xff1a;http://www.hankcs.com/nlp/cs224n-advanced-word-vector-representations.html 这节课从传统的基于计数的全局方法出发#xff0c;过渡到结合两者优势的GloVe#xff0c;并介绍了词向量的调参与评测方法。 复习#xff1a;word2vec的主要思路 遍历整个…本文转自http://www.hankcs.com/nlp/cs224n-advanced-word-vector-representations.html 这节课从传统的基于计数的全局方法出发过渡到结合两者优势的GloVe并介绍了词向量的调参与评测方法。 复习word2vec的主要思路 遍历整个语料库中的每个词 预测每个词的上下文 然后在每个窗口中计算梯度做SGD SGD与词向量 但每个窗口最多只有2m 1个单词所以∇θJt(θ)会非常稀疏 实际上有正确答案需要去对比的只有窗口中的词语。所以每次更新只更新W矩阵中的少数列或者为每个词语建立到词向量的哈希映射 近似负采样 还有一个问题亟待解决词表V的量级非常大以至于下式的分母很难计算 于是练习1中要求用negative sampling实现skip-gram。这是一种采样子集简化运算的方法。 具体做法是对每个正例中央词语及上下文中的一个词语采样几个负例中央词语和其他随机词语训练binary logistic regression也就是二分类器。 negative sampling和skip-gram 目标函数 这里t是某个窗口k是采样个数P(w)是一个unigram分布详见http://www.hankcs.com/nlp/word2vec.html#h3-12 σ是sigmoid函数 根据上次课讲的内积可以代表相关性。那么这个目标函数就是要最大化中央词与上下文的相关概率最小化与其他词语的概率。 word2vec通过把相似的词语放到同一个地方附近来增大目标函数 其他方法 word2vec将窗口视作训练单位每个窗口或者几个窗口都要进行一次参数更新。要知道很多词串出现的频次是很高的。能不能遍历一遍语料迅速得到结果呢 早在word2vec之前就已经出现了很多得到词向量的方法这些方法是基于统计共现矩阵的方法。如果在窗口级别上统计词性和语义共现可以得到相似的词。如果在文档级别上统计则会得到相似的文档潜在语义分析LSA。 基于窗口的共现矩阵 比如窗口半径为1在如下句子上统计共现矩阵 I like deep learning. I like NLP. I enjoy flying. 会得到 朴素共现向量的问题 根据这个矩阵的确可以得到简单的共现向量。但是它存在非常多的局限性 当出现新词的时候以前的旧向量连维度都得改变 高纬度词表大小 高稀疏性 解决办法低维向量 用25到1000的低维稠密向量来储存重要信息。如何降维呢 SVD吧 r维降到d维取奇异值最大的两列作为二维坐标可视化 改进 限制高频词的频次或者干脆停用词 根据与中央词的距离衰减词频权重 用皮尔逊相关系数代替词频 效果 方法虽然简单但效果也还不错 SVD的问题 不方便处理新词或新文档 与其他DL模型训练套路不同 Count based vs direct prediction 这些基于计数的方法在中小规模语料训练很快有效地利用了统计信息。但用途受限于捕捉词语相似度也无法拓展到大规模语料。 而NNLM, HLBL, RNN, Skip-gram/CBOW这类进行预测的模型必须遍历所有的窗口训练也无法有效利用单词的全局统计信息。但它们显著地提高了上级NLP任务其捕捉的不仅限于词语相似度。 综合两者优势GloVe 这种模型的目标函数是 优点是训练快可以拓展到大规模语料也适用于小规模语料和小向量。 明眼人会发现这里面有两个向量u和v它们都捕捉了共现信息怎么处理呢试验证明最佳方案是简单地加起来 相对于word2vec只关注窗口内的共现GloVe这个命名也说明这是全局的我觉得word2vec在全部语料上取窗口也不是那么地local特别是负采样。 评测方法 有两种方法Intrinsic内部 vs extrinsic外部 Intrinsic专门设计单独的试验由人工标注词语或句子相似度与模型结果对比。好处是是计算速度快但不知道对实际应用有无帮助。有人花了几年时间提高了在某个数据集上的分数当将其词向量用于真实任务时并没有多少提高效果想想真悲哀。 Extrinsic通过对外部实际应用的效果提升来体现。耗时较长不能排除是否是新的词向量与旧系统的某种契合度产生。需要至少两个subsystems同时证明。这类评测中往往会用pre-train的向量在外部任务的语料上retrain。 Intrinsic word vector evaluation 也就是词向量类推或说“A对于B来讲就相当于C对于哪个词”。这可以通过余弦夹角得到 我曾经通过这些方法验证了民间很多流行的word2vec实现准确率比原版低几十个百分点http://www.hankcs.com/nlp/word2vec.html#h2-15 这种方法可视化出来会发现这些类推的向量都是近似平行的 下面这张图说明word2vec还可以做语法上的类比 其他有趣的类比 这在数学上是没有证明的。 结果对比 在不同大小的语料上训练不同维度的词向量在语义和语法数据集上的结果如下 GloVe的效果显著地更好。另外高纬度并不一定好。而数据量越多越好。 调参 窗口是否对称还是只考虑前面的单词向量维度窗口大小 大约300维窗口大小8的对称窗口效果挺好的考虑到成本。 对GloVe来讲迭代次数越多越小效果很稳定 维基百科语料上得到的效果比新闻语料要好 另一个数据集 还有直接人工标注词语相似度的 www.cs.technion.ac.il/~gabr/resources/data/wordsim353/ 对某个单词相似度排序后得到最相关的词语。于是可以量化评测了。 Extrinsic word vector evaluation 做NER实验 GloVe效果依然更好但从数据上来看只好那么一点点。 视频中还谈了谈一些适合word vector的任务比如单词分类。有些不太适合的任务比如情感分析。课件中则多了一张谈消歧的中心思想是通过对上下文的聚类分门别类地重新训练。 相同颜色的是同一个单词的不同义项。 TA也讲过这个问题。转载于:https://www.cnblogs.com/koocn/p/7699051.html