词向量表示

一、词向量简单介绍

1、如何在计算机中获取单词的有用的meaning?

    通常的方法是:使用WordNet,包含一系列的同义词集和上下文词集

2、WordNet资源存在的问题

(1)有些词语仅表达了部分意思,还有其他意义未能完全表达出来

(2)无法做到up-to-data,一些单词的意思还不存在

(3)主观的影响

(4)需要人力去创建和维护

(5)对于意义相近的词难以精确

4、用离散符号表示单词

在传统nlp中,我们把单词认为是离散的符号,,可以用一系列one_hot编码的向量表示

           motel = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]

那么就会有大量与原子符号对应的词汇。但是,当需要表示很多词汇时,one_hot编码所需长度就会越来越长,对应的向量也会越来越长。而这种编码方式没有给出任何词汇之间的内在关系概念。我们经常想到的是一些有相近含义的词汇和短语,可以联系起来或者等同起来,而我们使用one_hot编码,它们就不存在天然的近似关系。

    eg:motel = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]        hotel=[0 0 0 0 0 0 1 0 0 0 0 0 0 0]    它们正交,即内积为0

由于它们是基于符号的,因此无法得出词汇和模型之间的关联,每个词汇都是独立存在。

5、我们试图建立一个直接的方法,一个单词编码表示的含义是可以直接阅读的,在这些表示中就可以直接看出相似性 --> 构造类向量,做类似求点积的操作,这样既可了解词汇之间的相似性

分布相似性:You can get a lot of value by representing a word by means of its neighoors.

     利用一个单词的上下文去表征它的意思。表示某个词汇含义的值,只需通过观察其出现的上下文,并对这些上下文做一些处理即可得到。考虑词汇意义的正确方法是从文本中理解它们的使用,所以从本质上来说,如果你可以预测这个单词出现的上下文,也就能理解这个单词的含义了。

eg:如果想知道banking的意思,我们需要找到数千个包含banking的例句,然后观察每一次他出现的场合,统计所有出现过的内容,通过某种方式用这些上下文中的词表示banking的含义。

6、representing words by their context

定义一个模型,旨在通过中心词汇^{}   和 Context words来预测单词向量

                   P(context|)  = ..

        损失函数:

                J = 1 - (|)  

             这里的-t表示围绕在中心词t周围的其他单词

 目标:调整词汇表示,是损失最小化

7、Main idea of word2vec

(1)两个用于生成词汇向量的算法

     A.skip-gram(SG):Predict context words given target

    B.continuous bag of words(CBOW):predict target word from bag-of-words context.

(2)两套效率中等的训练方法

    A.Hierarchical Softmax

    B.Negative Sampling

二、skip-gram算法介绍

1、步骤

(1)每次都选取一个词做为中心词

(2)尝试去预测它一定范围内的上下文词汇

(3)模型将定义一个概率分布,即给定一个中心词汇,预测某个单词的上下文出现的概率

(4)定义半径m,然后从中心词汇开始,到距离为m的位置(包括左边和右边)

(5)损失函数

注:负的对数似然准则意味着我们使用的是交叉熵损失函数

(6)predict surrounding words in a widow of radius m of every word

取两个向量的点积->转化为softmax形式->

O:表示输出单词的下标,单词在词汇表空间中的索引

C:中心词的index

:center vector 索引为c的单词所对应的向量

(7)demo

2、训练模型

(1)将模型中所有的参数都放进一个大的向量中,然后通过改变这些参数进行优化,让模型的目标方程最大化

思路:调整参数,也就是这些向量,以便让负的对数似然项最小化,从而使预测的概率最大化。=> gradient 梯度

(2)对p(o|c)取对数,我们想要调整

  使这一目标方程J最小化

(3)求中心词汇的偏导数(推导过程)

(4)补充提问:

问:为什么不用一个矩阵来中和两个向量来表示上下文的内容呢?

答:因为对于中心词汇和上下文词汇,我们有不同的表示,并不意味着同一个词汇会最有可能出现,因为它们有两种不同的表示方式,但在实际中它们确实有很多相似性。尽管你不太可能在上下文中得到相同的词汇,但是很可能得到意义非诚近似的词汇,并且它们之间关联性很强,当这些词汇成为中心词汇的时候,你得出的上下文很可能就是你的第一词汇,实际上你的得到的结果是同一个词出现在双方。

3、Cost Function

 We will optimize(maximize or minimize) our cost/loss functions

For now:minimize -> gradient descent

4、梯度下降算法

在整个训练数据集上最小化损失函数,需要对每一个窗口采用梯度下降算法

更新

注意:alpha必须足够下,让你可以平缓的朝着最小值方向前进,那么这个方法才最有效

5、改进:随机梯度下降算法

--------------------------------------------------------------------------------------------------------

后面又找到一篇总结的较详细的文章:https://blog.csdn.net/a096030098/article/details/81227051

---------------------------------------------------------------------------------------------------------

一文详解 Word2vec 之 Skip-Gram 模型(结构篇)

    https://www.leiphone.com/news/201706/PamWKpfRFEI42McI.html

一文详解 Word2vec 之 Skip-Gram 模型(训练篇)

    https://www.leiphone.com/news/201706/eV8j3Nu8SMqGBnQB.html

一文详解 Word2vec 之 Skip-Gram 模型(实现篇)

https://www.leiphone.com/news/201706/QprrvzsrZCl4S2lw.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值