one-hot编码

二级目录

one-hot编码词向量的坏处之一

如果用户搜寻(seattle motel),那我们将会匹配带有(Seattle hotel)的文件,但是如果用one-hot编码。
motel【0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0】T^TT hotel 【0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 】 =0 这样他们之间就没有内在的相似性,但是这一点很重要。
因此我们可以选择建立词汇之间的相似性关系,建立词汇之间一套完全独立的相似性关系。但是不建议这样做,相反的,我们可以探索一种直接的方法,一个单词编码表示的含义,是我们可以直接阅读的,在这些表示中,我们就可以看出相似性。我们要做的就是构造这些向量,然后在一种类似求解点积的操作,这样就可以让我们了解词汇之间有多少的相似性。
那我们如何做呢?
我们使用分布相似性去做,分布相似性是指,我们可以得到大量表示某个词汇含义的值,只需要通过观察其出现的上下文,并对这些上下文做一些处理来得到。
eg

如果我们想知道banking这个单词的意思,我们需要做的就是找到数千个包含banking的例句,然后观察每一次它出现的场合,我们会看到和它一起出现的词有:debt,government,regulation,Europe,unified,然后我们开始统计所有出现过的内容,通过某种方式用这些上下文中的此来表示banking的含义。
如果有我们深入了解分布相似性,会看到一句随处可以见到的名言:你应该通过一个单词的同伴知道它的意思,这和有学者提出的, 考虑词汇意义的正确方法是,从文本中理解它们的使用。所以,从本质上说,如果我们可以预测这个单词出现的上下文,我们也就能理解这个单词的含义了。
我们接下来就要做的是给每一个单词构造一个向量,我们会选择一个密集型的向量,这可以让它预测目标单词所在文本的其他词汇,所有的其他词汇也是由一个个单词组成的,接下来我们来看看一些相似性方法,比如两个向量间的点积,我们将对它进行一些修改,以便于,它可以预测,它也可以做一些递归,循环,但是我们会有一种很聪明的算法来完成这些,这样一来,这些词汇就可以预测上下文的其他词汇,反之亦然。

强调两个不一样意思的之前提到的词汇:
分布相似性:概念是一种关于词汇语义的理论,我们可以通过理解单词出现的上下文,来描述词汇的意思
分布式:我们怎么表示一个词汇的含义:词汇的含义是指,比如眼镜的意思是指周围一副副具体的眼镜,这就有别于分布式的语义,分布式又跟one-hot词汇向量不同,one-hot词汇向量是一种存储在某处的本地表示,比如可以把眼镜的符号,储存在这里的分布式表示中,我们在一个大的向量空间中模糊化词汇的含义。

word2vec

我们定义一个模型,来根据中心词汇来预测它的上下文的词汇,就像是分布式学习,我们或许有一些概率方法,来根据给定单词预测上下文单词出现的概率,接下俩,我们就可以用损失函数来判断,预测的准确性,理想状态下,我们可以准确预测中心词汇周围的词
我们定义一个模型,其目标是来预测在一个词向量中,一个中心词和上下文的单词
p(context∣wt)=..p(context|w_t)=..p(context∣wt​)=..
损失函数可以表示为
J=1−p(W−t∣Wt)J = 1 - p(W_{-t}|W_t)J=1−p(W−t​∣Wt​)
这里的-t表示围绕在t中心词周围的其他单词,如果我们可以根据t来精准预测这些此,那么概率就为1。我们会在大型语料库的各个地方重复这样的操作,所以我们的目标是调整词汇表示,从而使损失函数最小化。令人惊讶的是,实际上,除了设置这样的一个预测目标之外,也做不了别的,只是让每个单词的向量都能预测其周围的词汇,反之亦然。我们只是定下这样简明的目标,并不解释如何去做。深度学习使这些词向量的输出在表示单词意思方面如此强大,在处理各种类似问题上也非常有用,所以我们要深究一下细节,看看这到底是如何发生的。这个表示应该代表除了wtw_twt​以外的所有单词,这里,我们可以学到一个概念,就是低维向量表示。

低维向量表示的概念过程:
1986年《learning representations by back-propagating errors》最早提出来,在并行分布式处理年代。在2003年《a neural probabilistic language model》,这篇论文展示了词汇分布式表示是多么有价值的,它还能预测上下文的其他词汇。2008年,《nlp from scrach》表示一个观点,如果我们只想要得到好的单词表示,我们甚至不需要构建一个可以预测的概率语言模型,我们只需要找到一种学习单词表示的方法,这就是我们接下来要说的模型,也就是word2vec模型。 2013 ,word2vec模型的核心是构建一个很简单的,可扩展的,快速训练的模型,让我们可以处理数十亿,单词的文本,并生成非常版的单词表示,

word2vec尝试去做的最基本的事情就是利用语言的意义理论,来预测每个单词和它的上下文,word2vec是一个软件,实际上,word2vec内部包含很多很多的东西,里面有两个用于生成词汇向量的算法,里面还有两套效率中等的训练方法,这里我们讲的是skip-gram的方法,但不会讲到那两套较为有效的算法,这个不是特别有效,但是这个算法包含了一些最最基本的概念,可以让我们知道它是如何工作的。

skip-gram模型的概念是,在每一个估算步都取一个词作为中心词汇,比如,我们选取banking作为中心词汇,接下来我们要做的是,尝试去预测它一定范围内的上下文词汇,所以,这个模型将定义一个概率分布,即,给定一个中心词汇,某个单词在它上下文中出现的概率,我们会选取词汇的向量表示,以让概率分布值最大化,我们要意识到这个模型只有一个概率分布,不是是说对于这个词汇左边的词和右边的词汇分别有一个概率分布,对于一个词汇,我们有且仅有一个概率分布,这个概率分布就是输出,也就是出现在中心词汇周围的上下文的一个输出。

我们接下来要做的就是要定义一个半径m,然后从中心词汇开始,到距离为m的位置,来预测周围的词汇,然后我们会在多处进行多次重复的操作,我们要选择词汇向量,以便于让预测的概率达到最大,因此损失函数,或者说目标函数,就是这里的J,J’表示的是,我们拿到一段很长的文本,比如整篇维基百科或者类似的文本,有了足够长的词汇序列,足够的词汇,和真正的行为,然后遍历文本中的所有位置,对于文本中的每个位置,我们都会定义一个围绕中心词汇的大小为2m的窗口,中心词前后各m个单词,这样就得到一个概率分布,可以根据中心词汇给出其上下文的词汇出现的概率,然后我们就要设置模型的参数,让上下文所有词汇出现的概率都尽可能的高,这里的θ\thetaθ就是模型参数,θ\thetaθ就是词汇的向量表示,也就是每个词汇的向量表示的唯一参数。从概念上说,J‘就是目标函数,我们要最大化这个预测的概率,实际上,我们只需稍作调整,首先,处理概率问题是很不爽的一件事,我们要做最大化操作,实际上就是解决对数分布问题。有了对数的加和,这样我们就不用计算整个语料库的概率,而是取每个位置上的平均值,得到1/T, 这样相当于对每个词汇进行归一化处理,这样并不影响最大值,机器学习人员真正喜欢的是把事情最小化,而不是最大化,我们可以在最小化和最大化之间随意切换,在正负操作时,只需要在方程前面加一个负号就可以了,这样我们就得到一个负的对数似然,也就是模型的负对数分布,这就是我们要最小化的目标函数,负的对数似然准则意味着我们使用的是交叉熵损失函数,因为我们只有一个one-hot目标,所以诀窍就是只预测一个当前的单词,在这个准则下,交叉熵函数里剩下只有一项,就是这个负概率。
那么我们怎么用这些单词向量来最小化负的对数似然函数呢,我们采用的方法是根据由单词向量构造而成的中心词汇,来得出其上下文单词的概率分布,这就是概率分布的形式。

c和o分别代表单词在词汇表中的索引以及它的类型,这里的t和t+j是单词在文本中的位置,这是词汇的排序,在单词表中的索引是763,在本文中的位置是766,但是词汇表中的o(输出单词)和c(中心单词)我已经知道了单词类型,所以得到73号词在47号中心词条件下的出现概率p,每种单词类型都有一个对应的向量,uou_ouo​是索引为o的单词所对应的向量,vcv_cvc​是中心词汇对应的向量,

第二讲 词向量表示 word2vec相关推荐

  1. CS224n NLP-Lecture 2: Word Vectors/第二讲-词向量表示: word2vec

    课件: lecture02(链接地址:https://download.csdn.net/download/qq_34243930/10991266 ) 观看视频2(链接地址: https://www ...

  2. cs224n第二讲词向量表示:word2vec

    1.如何表示一个单词的含义? 定义单词的含义:语言学方式上单词的含义是一种指代,指代世界上的某些具体事物(该单词的指代物,denotations).字典含义: 在计算机中使用有用的单词含义:使用像Wo ...

  3. cs224n第二讲:简单的词向量表示:word2vec, Glove

    第二讲:简单的词向量表示:word2vec, Glove How do we represent words? 在处理所有NLP任务的时候,我们首先需要解决非常重要的一个问题(可能是最重要的):用什么 ...

  4. 斯坦福大学深度学习与自然语言处理第二讲:词向量

    斯坦福大学在三月份开设了一门"深度学习与自然语言处理"的课程:CS224d: Deep Learning for Natural Language Processing,授课老师是 ...

  5. 第2章 词向量表示 GloVe word2vec skip-gram CBOW

    第2章 词向量表示 GloVe word2vec skip-gram CBOW 1 如何在模型中表示文本数据? 1.1 独热编码(one-hot encoding) 1.2 分布式表示(distrib ...

  6. CS224n 词的向量表示word2vec 之skipgram (softmax)

    CS224n 词的向量表示word2vec 之skipgram: word2vec是google的一个NLP工具,将词向量化,挖掘词之间的联系,本案例通过Skip-Gram模型,softmax交叉熵计 ...

  7. CS224n 词的向量表示word2vec 之skipgram (Negative sampling )

    CS224n 词的向量表示word2vec 之skipgram (Negative sampling ) #!/usr/bin/env pythonimport numpy as np import ...

  8. CS224n 词的向量表示word2vec 之cbow(softmax negSampling )

    CS224n 词的向量表示word2vec 之cbow(softmax  negSampling ): #!/usr/bin/env pythonimport numpy as np import r ...

  9. 秒懂词向量Word2vec的本质

    [NLP] 秒懂词向量Word2vec的本质 穆文 4 个月前 转自我的公众号: 『数据挖掘机养成记』 1. 引子 大家好 我叫数据挖掘机 皇家布鲁斯特大学肄业 我喝最烈的果粒橙,钻最深的牛角尖 -- ...

最新文章

  1. PMCAFF“音乐+社交”产品马拉松大赛圆满结束,10支队伍大放异彩
  2. 数据库mysql建立索引_为mysql数据库建立索引
  3. CSS基础(part22)--2D转换
  4. 几个.net开发中常用的工具下载
  5. 解决WCF接口无法传递object参数的问题
  6. linux oracle10.2.0.1 lsnrctl无法启动
  7. [Node.js] 模块化 -- express模块
  8. 比特币 转账交易为什么要等6个区块确认才算到账 安全 以太坊12个区块
  9. Oracle Primavera P6 项目管理软件
  10. stm32 win7 64位虚拟串口驱动安装失败解决办法
  11. 实用化工计算机模拟-matlab在化学工程中的应用的光盘程序_这150款化工常用软件,你会用多少?...
  12. 星光不负赶路人|2022年终总结
  13. java压缩文件,在线下载文件并压缩
  14. org.bouncycastle.util.encoders.Base64.decode 解码去换行问题
  15. pytorch中repeat方法
  16. MySQL 8.0.16 告别mysql_upgrade升级方式
  17. 推荐几个面向 Web 开发者的杀手级网站
  18. 【网络原理7】认识HTTP
  19. c语言实现图片缩放,图片缩放与合并(C语言实现)
  20. 【影像组学】CT数据与MRI数据

热门文章

  1. 你猜,为什么Google和Facebook不用Docker?
  2. 18 款顶级代码生成器平台!
  3. 阿里巴巴的持久层抛弃了hibernate,采用的却是MyBatis框架。。。
  4. 牛逼了!8000页Java 核心知识点+面试题整理,超全!
  5. Java最全的思维导图汇总!速度收藏!
  6. 腾讯离职,迪士尼给发了offer
  7. 计算机网络谢希仁第七版课后答案第五章 传输层
  8. TX2安装中文输入法
  9. 获取二叉树的所有叶子节点、获取全树深度与左右子树深度求解:递归
  10. 自己编写的excel操作过程