马上6.8就到28岁了,我今年的梦想是顺利毕业,活到五十岁。此篇献给垃圾喵主?。

前言

上一篇说的是word2vec,老子还是没有静下心来去好好撸源代码,只能说有个大概印象了。就是先处理词,再训练。回头还是要持续更新这些博客的,东西要经常反复看,才能有更深的理解吧。每次只是花一点时间学习,没有下大功夫,总是会被其他事情打断。真是搓气,搓气喵?。

word2vec篇:https://blog.csdn.net/mashutian/article/details/89646050


glove

GloVe这个东西其实当时名声也很响亮的,但是大多数人都在用word2vec吧,glove这玩意儿是斯坦福大学的曼宁带头搞的(我猜的),跟word2vec也就是一前一后出来的。其实,每次听到glove,我都会联想到地球什么的。什么鬼,但是我没碰过glove,一点都没有,这次要碰下它,嗯。常见到的Global Vector 模型( GloVe模型)是一种对“词-词”矩阵进行分解从而得到词表示的方法,属于基于矩阵的分布表示。这次拎出来感受下他的精髓。

1. 相关文章就是下面这篇了,文章还给了链接,glove的网站,上面有训练好的向量哦:https://nlp.stanford.edu/projects/glove/:

  • Pennington J, Socher R, Manning C. Glove: Global vectors for word representation[C]//Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1532-1543.

作者在摘要说了,最近词向量的效果太好了,指的就是那个word2vec我猜,但是吧大家都不知道为啥好,为啥能捕捉到语义啊为啥能捕捉到语法规则那种信息呢,于是作者希望We analyze and make explicit the model properties needed for such regularities to emerge in word vectors。大概意思就是我们想摸索出一些规律。

反正作者提出了这个new global logbilinear regression model that combines the advantages of the two major model families in the literature: global matrix factorization and local context window methods。然后作者说了,与其用稀疏的大矩阵和语料中一个个的上下文窗口来做训练,不如用词共现矩阵,只用非零元素,让我们的vector space更有意义,效果也更好。好了,这个摘要大概提到了三个东西global matrix factorization,local context window methods,还有这个the nonzero elements in a word-word cooccurrence matrix。

相关工作的时候,作者先讲了矩阵分解,先前吧,为了学习向量表示,我们都会使lsa这样的模型,就是term-document这样的矩阵来玩,但是还有一种模型叫做the Hyperspace Analogue to Language (HAL),是利用的term-term这样的矩阵。就是行列都是词,然后每位的值指的是给了另一个词作为上下文时这个词的出现频次。然而呢HAL这个方法有个缺点,就是对高频词没做处理,比如the和and经常出现,但是他俩之间没啥语义关系呀。而后人们提出了些新模型来改进这个问题,比如COALS, PPMI, HPCA之类的吧。

除了矩阵分解,还有一个是Shallow Window-Based Methods,也就是利用上下文窗口来预测词学习词表示。除了CBOW和skip-gram,作者还提到几个工作就是下面这俩,Mnih和这个K提出了closely-related vector log-bilinear models, vLBL and ivLBL,然后 Levy et al. 提了个基于PPMI值的 explicit word embeddings ,突然觉得都要看下,??。反正这个Shallow Window-Based Methods没有直接从语料的统计信息中获取到一些有用的东西:

  • Mnih A, Kavukcuoglu K. Learning word embeddings efficiently with noise-contrastive estimation[C]//Advances in neural information processing systems. 2013: 2265-2273.
  • Levy O, Goldberg Y. Linguistic regularities in sparse and explicit word representations[C]//Proceedings of the eighteenth conference on computational natural language learning. 2014: 171-180.

于是乎,作者就来了个共现这么重要的信息你不用吗!这才是meaning精髓啊!

We use our insights to construct a new model for word representation which we call GloVe, for Global Vectors, because the global corpus statistics are captured directly by the model.

好了,我要来贴文章了:

这个表➕原文的解释大概想讲的就是这么最后一句话,一个词相对于两个上下文词的概率的比值如果远大于1,那这个词就跟分子的那个上下文词很像,如果远小于1那就跟分母的那个上下文词很像。然后我们就有关键的三个词了,分子,分母和nobody词。阿哈哈哈哈。权力的游戏要结束了!!妖孽。就是下面的那个i, j, k。

然后,右边那个概率我们从语料里就能学出来所以不用操心,然后,我们就要说一下作者是怎么变戏法变左边的F函数的了。我们希望F要表达出概率比信息啊,那我们让两个词向量减一下吧。

啊呀,不好,右边是标量啊,左边是向量,那我向量转制一下再点积吧。

然后,喵的,作者又觉得,这个上下文词和nobody词是可以时刻互换啊,果然nobody是nobody,我们要对称我们的公式啊。首先,左面这个F框起来的东西我们拆开来,变成分子分母即公式4,然后因为左边跟右边相同,所以有了公式5。然后如果我们F是exp的话,那就有了公式6了。

然后吧,你看这个公式6右边的这个logXi跟nobody词一点关系也没有诶,所以我们把他挪到等式左边的时候就巴拉巴拉小魔仙变成bias摔过去。

好嘛,然后作者自己都说了现在的公式7简单吧,但是是错的啊。因为右边是log的话,左边的要大于0吧,log函数后面如果是0该咋办?然后作者说要不➕1吧。然后作者又说了现在还有个问题就是没有区分高频词低频词啊,然后就整了个f权重,加1的方法作为baseline了,实际的模型是平方了。反正损失函数就是下面的公式8了。然后权重函数具体长什么样子就去原文看吧。

再后来,作者分析了自己的模型和skip-gram啊ivLBL有什么样的关系。就其他这些模型都想最大化上下文窗口里词语一起的log概率吧,但是整个语料弄下来多费劲儿呢,我们glove就不一样,我们glove就是有效,因为我们直接利用共现矩阵把*相近的词拎出来了。然后吧,作者把他们的损失函数重新写了下,不得了了,发现可以看成global skip-gram模型啊。但是相比以交叉熵作为损失函数,作者觉得交叉熵不方便model长尾的那种分布啊,那我们肯定用最小二乘法。最后再夸一下本文提出可以区分不同词频的词语的权重函数。最后再分析下模型复杂度。反正最后的最后实验结果是还可以的。

2. 讲解分析与代码部分
照旧还是贴一下别人的链接,不过刚刚文章讲了一遍以后,有没有觉得有点懂了。后来发现网络上的一些分析基本都是文章重述,没有特别让人哦哦哦啊啊啊的那种分析,所以这边就直接给些链接,看来这个文章还是写的清楚啊。大白话说一遍大家都了然于胸了。

其他链接:

文章讲解:

https://blog.csdn.net/codertc/article/details/73864097

http://www.fanyeong.com/2018/02/19/glove-in-detail/

embedding的模型评估:https://www.cnblogs.com/iloveai/p/cs224d-lecture3-note.html

实践操作:

https://blog.csdn.net/sscssz/article/details/53333225

源码在这里,又是c啊啊啊啊?:https://github.com/stanfordnlp/GloVe

总共有四块内容,从GitHub上面的介绍看,vocab_count(做数据预处理的顺便去掉低频词),cooccur(构建共现矩阵),shuffle(数据shuffle,拆分,拼接)和glove。

源码解析先po个链接,回头再懵懵懂懂看下:https://blog.csdn.net/zyy617532750/article/details/83215130

流水的源码?,铁打的垃圾?。

那些牛了逼的embedding预训练 ----- glove 篇相关推荐

  1. 那些牛了逼的embedding预训练 ----- word2vec 篇

    此篇献给一直视自己为垃圾的喵主,喵呜?(It's a sad story). 前言 阿正在某一天丢给我了几个预训练模型,有现在比较热门的,也有已经老得不行的然而还没有深入的,对就是那个word2vec ...

  2. bert预训练实战篇-持续更新

    导读 使用bert预训练会遇到很多坑,包括但不限于数据预处理的正确姿势.数据预处理的高效实现.bert单机多卡分布式训练的基本实现,以及如何debug并提升使用单机多卡来进行深度学习训练的性能瓶颈.本 ...

  3. 神经网络 Embedding层理解; Embedding层中使用预训练词向量

    1.Embedding层理解 高维稀疏特征向量到低维稠密特征向量的转换:嵌入层将正整数(下标)转换为具有固定大小的向量:把一个one hot向量变为一个稠密向量 参考:https://zhuanlan ...

  4. 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史

    本文可以任意转载,转载时请标明作者和出处. 张俊林 2018-11-11 (如果图片浏览有问题可以转至:知乎版本) Bert最近很火,应该是最近最火爆的AI进展,网上的评价很高,那么Bert值得这么高 ...

  5. 从Word Embedding到Bert模型:自然语言处理中的预训练技术发展史

    转:https://zhuanlan.zhihu.com/p/49271699 作者:张俊林 专栏:深度学习前沿笔记 目录: 1.图像领域的预训练 2.Word Embedding考古史 3.从Wor ...

  6. 【发展史】自然语言处理中的预训练技术发展史—Word Embedding到Bert模型

    目录 自然语言处理中的预训练技术发展史-Word Embedding到Bert模型 1 图像领域的预训练 2 Word Embedding考古史 3 从Word Embedding到ELMO 4 从W ...

  7. 从Word Embedding到Bert模型---NLP中预训练发展史

    本文转自张俊林老师,希望加深记忆及理解. 本文的主题是自然语言处理中的预训练过程,会大致说下NLP中的预训练技术是一步一步如何发展到Bert模型的,从中可以很自然地看到Bert的思路是如何逐渐形成的, ...

  8. pytorch Embedding模块,自动为文本加载预训练的embedding

    pytorch 提供了一个简便方法torch.nn.Embedding.from_pretrained,可以将文本与预训练的embedding对应起来: 词 embedding word1 0,2,3 ...

  9. 在Keras的Embedding层中使用预训练的word2vec词向量

    文章目录 1 准备工作 1.1 什么是词向量? 1.2 获取词向量 2 转化词向量为keras所需格式 2.1 获取所有词语word和词向量 2.2 构造"词语-词向量"字典 2. ...

最新文章

  1. 在linux上安装Filezilla文件传输FTP软件
  2. cubase怎么添加midi设备_Cubase教程丨20分钟快速上手Cubase(下)
  3. 《计算机组成原理》----2.3 二进制运算
  4. vbe代码对齐插件_写代码需要注意的问题
  5. 我眼中的Web2.0
  6. Lecture Notes: Macros
  7. javascript amp;amp; 和 || 最清晰的描述
  8. java缓存管理,一级缓存和二级缓存
  9. 分享24个JS特效广告和66个JS特效在线客服J代码JS代码
  10. html中字体都可以设置哪些,html中设置字体的属性有哪些
  11. 网页前端学习第五次(HTML)
  12. Stemming and lemmatization
  13. 人工神经网络与遗传算法,神经网络和算法的关系
  14. 计算机专业c语言挂科怎么办,大学最容易挂科的“学科排行榜”出炉,补考难度很高,你挂了吗?...
  15. shineblink LD3320A语音识别
  16. 蘑菇街Android组件与插件化
  17. 大赞!像 Github 一样管理你的 Word 文档
  18. app窃取用户隐私_窃取您的隐私8步初学者指南
  19. UE4网络编程学习之路02----网络架构、通信
  20. 利用canvas实现田字格里写字,并适配移动端

热门文章

  1. 职称计算机考试教程博大,博大考神职称计算机PowerPoint考试操作题(3)
  2. 【SOA】程立谈支付宝大规模SOA系统(ZZ)
  3. 基于卷积神经网络和SVM分类器的汽车识别-matlab
  4. Achshar Player:把Chrome浏览器当作本地音乐播放器使用
  5. Unity 之大屏幕多点触控插件 TouchScript 9.0 入门指南
  6. ISL-Chap12.1笔记
  7. 小游戏运营你必须知道的3个分发平台
  8. Instant-NGP论文笔记
  9. GitHub标星5,android直播面试题
  10. Blender基础:曲线倒角