斯坦福CS224n-第二课笔记 词向量与word2vec

斯坦福CS224n-第二课笔记 词的向量表示:word2vec

 

如何表示一个词语的意思

先来看看如何定义“意思”的意思,英文中meaning代表人或文字想要表达的idea。这是个递归的定义,估计查询idea词典会用meaning去解释它。

中文中“意思”的意思更加有意思:

他说:“她这个人真有意思(funny)。”她说:“他这个人怪有意思的(funny)。”于是人们以为他们有了意思(wish),并让他向她意思意思(express)。他火了:“我根本没有那个意思(thought)!”她也生气了:“你们这么说是什么意思(intention)?”事后有人说:“真有意思(funny)。”也有人说:“真没意思(nonsense)”。(原文见《生活报》1994.11.13.第六版)[吴尉天,1999]

——《统计自然语言处理》

语言学中“meaning”近似于“指代、所指、符号”。

 

计算机如何处理词语的意思

过去几个世纪里一直用的是分类词典。计算语言学中常见的方式是WordNet那样的词库。比如NLTK中可以通过WordNet查询熊猫的hypernyms (is-a,上位词),得到“食肉动物”“动物”之类的上位词。也可以查询“good”的同义词——“just品格好”“ripe熟了”。

 

discrete representation的问题

  • 这种discrete representation虽然是种语言学资源,但丢失了韵味。比如这些同义词的意思实际上还是有微妙的差别:adept, expert, good, practiced, proficient, skillful

  • 缺少新词

  • 主观化

  • 需要耗费大量人力去整理

  • 无法计算准确的词语相似度

无论是规则学派,还是统计学派,绝大多数NLP学家都将词语作为最小单位。事实上,词语只是词表长度的one-hot向量,这是一种localist representation(大概是借用localist“局部”的意项)。

在不同的语料中,词表大小不同。Google的1TB语料词汇量是1300万,这个向量的确太长了。

 

从symbolic representations(符号表示)到distributed representations(分布式表示)

词语在符号表示上体现不出意义的相似性,比如Dell notebook battery size和Dell laptop battery capacity。而one-hot向量是正交的,无法通过任何运算得到相似度。

列如:

[猫,狗,鸡,鸭,汽车旅馆,鸟,骆驼,酒店],对这个数组进行编码之后;

Motel(汽车旅馆)对应的编码应是:

Motel=[0,0,0,0,1,0,0,0];

同理,Hotel(酒店)对应的编码应是:

Hotel=[0,0,0,0,0,0,0,1];

在上面汽车旅馆和酒店的意思是相似,但是对Motel=[0,0,0,0,1,0,0,0]与Hotel=[0,0,0,0,0,0,0,1]内积为0,也就是完全不相关;所以这种方式并不能表示出这种关系。

 

由于ONE-Hot满足不了相关性,(J.R.Firth)提出了Distributional semantics(分布式语义):单词的意思,应该结合它的上下文来确定的;现代统计NLP成功的理念之一。

e:

用‘banking’许多的上下文来构建它的意思:

 

 

词向量:

 

将选择的每个单词构建了密集的向量,为了更好的预测上下文的意思:

‘banking’对应的维度是8;每一个单词都有一个向量维度,所有单词在一起将会有一个向量空间。

 

向量中的每个单词具有不同的基础;

 

通过向量定义词语的含义

通过调整一个单词及其上下文单词的向量,使得根据两个向量可以推测两个词语的相似度;或根据向量可以预测词语的上下文。这种手法也是递归的,根据向量来调整向量,与词典中意项的定义相似。

另外,distributed representations与symbolic representations(localist representation、one-hot representation)相对;discrete representation则与后者及denotation的意思相似。切不可搞混distributed和discrete这两个单词。

 

学习神经网络word embeddings的基本思路

定义一个以预测某个单词的上下文的模型:

  • p(context|wt)=…p(context|wt)=…

损失函数定义如下:

  • J=1−p(w−t|wt)J=1−p(w−t|wt)

这里的w−tw−t表示wtwt的上下文(负号通常表示除了某某之外),如果完美预测,损失函数为零。

然后在一个大型语料库中的不同位置得到训练实例,调整词向量,最小化损失函数。

 

直接学习低维词向量

这其实并不是多么新潮的主意,很早就有一些研究了:

• Learning representations by back-propagating errors (Rumelhart et al., 1986)

A neural probabilistic language model (Bengio et al., 2003)

• NLP (almost) from Scratch (Collobert & Weston, 2008)

• A recent, even simpler and faster model: word2vec (Mikolov et al. 2013) 

 

只不过以前一直没有引起重视,直到Bengio展示了它的用处之大。后来研究才开始火热起来,并逐渐出现了更快更工业化的模型。

 

Word2vec:是一个学习单词向量的框架

word2vec的主要思路

通过单词和上下文彼此预测,。

两个算法:

  • Skip-grams (SG):预测上下文

  • Continuous Bag of Words (CBOW):预测目标单词

 

计算过程:

 

 

对于给定的数据集T,固定了窗口的大小(每个面几个字),给定中心单词Wj;

模型的概率

最小化目标函数==最大化概率值;

这个模型中,唯一的一个参数就是我们给定的一个变量;

 

最小化损失函数;

将每个单词使用俩个向量:当W是中心词时,当W是上下文词时;

然后是中心词C与上下文词O;

e:

定义一个某个单词的上下文模型:

P(context|Wt)=.....

定义损失函数:

J=1-P(Wt+j|Wt)(Wt+j与Wt为上下文)

如果预测结果正确,目标函数为0;

在词料库中的不同位置来训练,调整词向量,最小化目标函数:

 

 

预测到的上下文概率P(t|c)由softmax得到

 

总结一下softmax如何将多分类输出转换为概率,可以分为两步:

1)分子:通过指数函数,将实数输出映射到零到正无穷。

2)分母:将所有结果相加,进行归一化。

 

分子是:通过点积来计算O与C的相似性;分母是对整个词汇表进行标准化后给出的概率分布;

这是一个SOFEMAX函数R^N——R^n的例子:

 

在SOFTMAX函数中:

“max”是将一些大的概率表示为最大的概率Xi;

“soft”是将一些小的概率表示为更小的概率Xj;

经常用于深度学习;

通过优化训练参数训练模型:

为了更好的训练模型,调整参数使目标函数最小化;

也就是用梯度下降来找到最优点;

 

计算所有向量维度:

在D维向量与V维向量中,有许多单词:

每个单词都有俩个向量;沿着这个梯度进行优化;

参考:http://www.hankcs.com/nlp/word-vector-representations-word2vec.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNNY小飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值