CS224(二) 词向量的表示 word2vec

Part 1、单词的意思

1、如何表示一个词语的意思:

  • 一个单词和短语代表的想法
  • 说话人通过使用语言或者手势想要表达的想法
  • 文学或者艺术作品要表达的情感,是语言和思想的融合

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

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

3、离散表示的问题

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

  • 缺少新词
  • 主观化
  • 需要耗费大量人力去整理
  • 无法计算准确的词语的相似度

无论是规则派还是统计学派,绝大多数NLP学家都讲词语作为做小的单位。事实上,词语只是词表长度的one-hot向量,这是一种局部的表示

4、从象征性到分布式表示(翻译不准确)

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

需要找到一种用向量直接编码含义的方法。

5、基于分布式相似度的表示

语言学家J. R. Firth提出,通过一个单词的上下文可以得到它的意思。J. R. Firth甚至建议,如果你能把单词放到正确的上下文中去,才说明你掌握了它的意义。

这是现代统计自然语言处理最成功的思想之一

6、通过向量定义词语的含义

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

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

我们定义一个模型,用来预测一个中心词Wt和上下文context的词向量:

p(context|Wt) = ...

损失函数:J = 1 - p(w-t|wt)

我们在大量的语料中找到一些位置t,调整词向量表示,使得loss最小化。

8、直接学习低维词向量

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

  •  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展示了它的用处之大。后来研究才开始火热起来,并逐渐出现了更快更工业化的模型。

Part 2、word2vec主要思想

预测中心词和他的上下文

常见的两种算法

  1. skip-grams(SG)
  2. Contiunuous Bag of Words (CBOW)

两种稍微高效的训练方法:

  1. Hierarchical sotfmax
  2. Negative sampling

 

Part 3、研究热点

Part 4、word2vec的目标函数梯度

链式规则

Part 5、损失函数/目标函数

梯度有了,参数减去梯度就能朝着最小值走了。

CS224(二) 词向量的表示 word2vec_第1张图片

 

梯度下降、SGD

CS224(二) 词向量的表示 word2vec_第2张图片

 

CS224(二) 词向量的表示 word2vec_第3张图片

 

 

你可能感兴趣的:(CS224(二) 词向量的表示 word2vec)