CS224n 笔记2-词向量表示:Word2vec

1. 单词含义的表示

我们如何表示一个单词的意思

下面是意思的定义:

  • 用词语,语句表示的想法或观点
  • 人们使用词汇,符号来表达的想法
  • 在一篇文章和艺术品表达的观点
    最常见的意思语言学表现形式:
  • 符号⟺被标记的观点或者事物= 含义

我们如何在表示可用的单词意思

常见的答案是:使用一个分类系统,例如想WordNet一样,分类系统包含了上义词关系和同义词集合。

1531909-79ef2fe75c5b3397.png

我们这种离散表示(discrete representation)方法的缺点

  • 单词数量非常多但是忽视了单词之间的细微差别
    例如同义词:

adept, expert, good, practiced, proficient, skillful?

  • 不能及时更新新单词:

wicked, badass, nifty, crack, ace, wizard, genius, ninja

  • 具有主观性
  • 需要人工创建和调整
  • 很难准确地计算出单词相似性
    绝大数基于规则和统计学建立的NLP工作将单词当作最小单位(atomic symbols):hotel, conference, walk
    但是在向量空间中,单词可以表示为具有1个1和很多0的one-hot向量:
1531909-f7969f9d5e723d3a.png

这是一种局部表示(localist representation)

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

符号表示存在自身的一些问题,比如对于web搜索:

  • 如果我们搜索[Dell notebook battery size],我们可能得到含有“Dell laptop battery capacity”的文档
  • 如果我们搜索[Seattle motel],可能匹配到含有“Seattle hotel”的文档。
    但是
1531909-2295d7c0e2eecc2e.png

查询和文档向量是正交的,所以one-hot向量不能体现出单词的相似性。
因此,我们需要找到一种可以直接用向量编码含义的方法。

基于分布相似性的表示方法

从上下文中推断一个单词的含义

1531909-031f0c01aa2c3c64.png

下面是现代统计自然语言处理(NLP)最成功的思想之一:

1531909-76abb2b682584d4b.png

通过向量定义单词的含义

通过为每个单词类型构建一个密集的向量,我们可以预测其上下文中出现的其他单词。

这些其他单词也是用向量表示,并且是可递归调整的。

学习神经网络词嵌入的基本思想

定义一个可以预测中心词上下文的模型:

1531909-65d9f27e816dbb62.png

所示函数:

1531909-0abfd1a27a0e7cd4.png

其中,在一个很大语料库的不同位置获取上下文(不同的t),不断调整词向量以将损失最小化。

直接学习低维词向量

这种方法不是新颖的,下面是相关的研究论文和深度学习方法:

  • 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) àintro now

2. Word2Vec的主要思路

一句话总结:

“在每个单词和单词上下文之间进行预测”

  • 两个算法:
    1. Skip-Gram(SG)
      通过给出的中心词来预测上下文(假设单词之间相互独立)
    2. 连续词袋模型(CBOW)
      从上下文中预测中心词(目标词)
  • 两个优化的训练方法:
    1. Hierarchical softmax
    2. Negative sampling(负采样)

Skip-Gram

1531909-e3cfb163909623f7.png

3. 更多Word2Vec细节

对于每个单词(从1到T),我们预测窗口半径大小为m的上下文词汇。
目标函数:最大化预测中心词的上下文概率。


1531909-9e72cc1ee1c89dc9.png

其中θ表示我们需要优化的所有参数。

目标函数-objective function

  • 术语:Loss function = cost function = objective function
  • 通用的概率分布损失:交叉熵损失(Cross-entropy loss)

Softmax函数:将RV映射到概率分布的标准函数

1531909-fade10f23be6ea95.png

下面是Skip-Gram的示意图:

1531909-4f6970ddf15f7814.png

4 .梯度的推导

目标函数:

1531909-893bbadc842853e8.png

以下面计算概率的公式:

1531909-8aff8e15bf49065d.png

具体的推导过程:


1531909-8413f103560e5b20.png
1531909-784485f28c7060e5.png
1531909-bae76c8094d2aebb.png
1531909-77710b77aba7144d.png

5. 损失/目标函数

1531909-d7f0c8d5b097fd18.png

梯度下降

-首先, 为了对整个训练数据最小化J(θ),需要计算出所有窗口的梯度

  • 更新每个参数θ
  • 步长为α
  • 对于所有参数θ的矩阵表示:
1531909-f80dbc518386dca4.png

批梯度下降(Vanilla Gradient Descent Code)

1531909-57711744823abc72.png

对于一个简单二元凸函数,下面轮廓线显示了目标函数变化:

1531909-3a83e8a07098831f.png

随机梯度下降法

上面方法有以下弊端:

  • 语料库非常大,具有40B的字符和窗口
  • 每次参数更新需要等待很长时间
  • 对于神经网络的效果很差
    所以我们采用下面的方法:


    1531909-14f029371d49bbed.png

相关推荐阅读

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值