CS224n Note -- Lecture 1: Introduction and Word Vectors

词向量

Wordnet

WordNet, 一个包含同义词集和上位词的辞典。

Wordnet的劣势

  1. 是很好的资源但忽略了细微的一些差别:例如词典中‘proficient’与‘good’认为是同义词,但是这只在某些文本上下文中成立。
  2. 忽略了一些单词的含义(即含义不完整),难以持续更新
  3. 偏主观(缺少客观性)
  4. 需要人类劳动来创造和调整
  5. 无法计算单词相似度

discrete symbols

传统NLP中,我们将单词看作是离散的表示,通过one-hot vector来表示。
One-hot vector表示,由于向量是正交的,因此没法表示他们之间啊的相似度,如果词汇量太多,将使得向量的维度过大。
在这里插入图片描述

Representing words by their context

  1. Distributional semantics:一个单词的含义通常由在它附近经常出现的单词给出的。
  2. 对于文本中的一个单词w,它的上下文就是出现在它附近的一组单词(在一个划定好size的窗口下)
  3. 通过许多包含w的文本中的上下文来构建w的含义表示:
    加粗样式

Word2vec

我们为每个单词构建一个 密集 的向量,使其与出现在相似上下文中的单词向量相似
词向量 word vectors 有时被称为词嵌入 word embeddings 或词表示 word representations 它们是分布式表示 distributed representation
IDEA:

  1. 包含大量的文本语料
  2. 固定词表中的每一个单词由一个词向量表示
  3. 文本中的每个单词位置 t,有一个中心词c,和它的上下文 o(除了 c 的外部单词)。
  4. 通过 co 的词向量相似性来计算 P(o/c)
  5. 不断的调整词向量,最大化概率
    固定窗口,滑动窗口并计算:
    在这里插入图片描述

Word2vec的目标函数

对于每个位置 t = 1,…,T,固定窗口大小m,给定中心词 w j w_j wj:
l i k e l i h o o d = L ( θ ) = ∏ t = 1 T ∏ − m ≤ j ≤ m      j ≠ 0 p ( w t + j ∣ w t ; θ ) likelihood=L(\theta)=\prod_{t=1}^{T}\prod_{-m \le j \le m\\ \ \ \ \ j\ne0}^{}p(w_{t+j}|w_t;\theta) likelihood=L(θ)=t=1Tmjm    j=0p(wt+jwt;θ)
注:$ \theta $ 是需要优化的参数
目标函数 J ( θ ) J(\theta) J(θ)(有时被称为代价函数或损失函数) 是(平均)负对数似然
J ( θ ) = − 1 T l o g L ( θ ) = − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m      j ≠ 0 l o g P ( w t + j ∣ w t ; θ ) J(\theta)=-\frac 1TlogL(\theta)=-\frac1T\sum_{t=1}^T\sum_{-m\le j\le m \\ \ \ \ \ j\ne 0}logP(w_{t+j}|w_t;\theta) Jθ=T1logL(θ)=T1t=1Tmjm    j=0logP(wt+jwt;θ)
其中log形式是方便将连乘转化为求和,负号是希望将极大化似然率转化为极小化损失函数的等价问 题。

计算

问:如何计算 P ( w t + j ∣ w t ; θ ) P(w_{t+j}|w_t;\theta) P(wt+jwt;θ)
回答:对于每个单词都是用两个向量
v w v_w vw :当 w 是中心词时
u w u_w uw :当 w 是上下文单词时
对于中心词 c 和上下文单词 o,有:
P ( o ∣ c ) = e x p ( u o T v c ) ∑ w ϵ V e x p ( u w T v c ) P(o|c)=\frac {exp(u_o^Tv_c)}{\sum_{w\epsilon V}exp(u_w^Tv_c)} P(oc)=wϵVexp(uwTvc)exp(uoTvc)
公式中,向量 和向量 进行点乘。向量之间越相似,点乘结果越大,从而归一化后得到的概 率值也越大。模型的训练正是为了使得具有相似上下文的单词,具有相似的向量。

Word2vec prediction function

P ( o ∣ c ) = e x p ( u o T v c ) ∑ w ϵ V e x p ( u w T v c ) P(o|c)=\frac {exp(u_o^Tv_c)}{\sum_{w\epsilon V}exp(u_w^Tv_c)} P(oc)=wϵVexp(uwTvc)exp(uoTvc)
分子取幂函数使得始终可以为正
向量 u o u_o uo 和向量 v c v_c vc 点乘, u T v = u ⋅ v = ∑ i = 1 n u i v i u^Tv=u·v=\sum_{i=1}^nu_iv_i uTv=uv=i=1nuivi,点乘结果越大,向量之间越相似
对整个词表标准化,给出概率分布

Word2vec objective function gradients

首先我们随机初始化 u w ∈ R d u_w \in \Bbb{R^d} uwRd v w ∈ R d v_w \in \Bbb{R^d} vwRd ,而后使用梯度下降法进行更新
δ δ v c l o g P ( o ∣ c ) = δ δ v c l o g e x p ( u o T v c ) ∑ w ∈ V e x p ( u w T v c ) = δ δ v c ( l o g e x p ( u o T v c ) − l o g ∑ w ∈ V e x p ( u w T v c ) ) = δ δ v c ( u o T v c − l o g ∑ w ∈ V e x p ( u w T v c ) ) = u o − ∑ w ∈ V e x p ( u w T v c ) u w ∑ w ∈ V e x p ( u w T v c ) = u o − ∑ w ∈ V e x p ( u w T v c ) ∑ w ∈ V e x p ( u w T v c ) u w = u o − ∑ w ∈ V P ( w ∣ c ) u w 再 对 u o 进 行 偏 微 分 计 算 , 注 意 这 里 的 u o 是 u w = 0 的 简 写 , 故 可 知 δ δ u o l o g P ( o ∣ c ) = δ δ u o l o g e x p ( u o T v c ) ∑ w ∈ V e x p ( u w T v c ) = δ δ u o ( l o g e x p ( u o T v c ) − l o g ∑ w ∈ V e x p ( u w T v c ) ) = δ δ u o ( u o T v c − l o g ∑ w ∈ V e x p ( u w T v c ) ) = v c − ∑ δ δ u o e x p ( u w T v c ) ∑ w ∈ V e x p ( u w T v c ) = v c − e x p ( u o T v c ) v c ∑ w ∈ V e x p ( u w T v c ) = v c − e x p ( u o T v c ) ∑ w ∈ V e x p ( u w T v c ) v c = v c − P ( o ∣ c ) V c = ( 1 − P ( o ∣ c ) ) v c \frac{\delta}{\delta v_c}logP(o|c) = \frac{\delta}{\delta v_c}log\frac{exp(u_o^Tv_c)}{\sum_{w\in V}{exp(u_w^Tv_c)}}\\ = \frac{\delta}{\delta v_c}(logexp(u_o^Tv_c) - log\sum_{w\in V}{exp(u_w^Tv_c)})\\ = \frac{\delta}{\delta v_c}(u_o^Tv_c - log\sum_{w\in V}{exp(u_w^Tv_c)})\\ = u_o - \frac{\sum_{w\in V}{exp(u_w^Tv_c)}u_w}{\sum_{w\in V}{exp(u_w^Tv_c)}}\\ =u_o - \sum_{w\in V}{\frac{exp(u_w^Tv_c)}{\sum_{w\in V}{exp(u_w^Tv_c)}}}u_w \\ = u_o - \sum_{w\in V}{P(w|c)}u_w\\ 再对 u_o进行偏微分计算,注意这里的 u_o是u_{w=0} 的简写,故可知\\ \frac{\delta}{\delta u_o}logP(o|c) = \frac{\delta}{\delta u_o}log\frac{exp(u_o^Tv_c)}{\sum_{w\in V}{exp(u_w^Tv_c)}}\\ = \frac{\delta}{\delta u_o}(logexp(u_o^Tv_c) - log\sum_{w\in V}{exp(u_w^Tv_c)})\\ = \frac{\delta}{\delta u_o}(u_o^Tv_c - log\sum_{w\in V}{exp(u_w^Tv_c)})\\ = v_c - \frac{\sum{\frac{\delta}{\delta u_o}exp(u_w^Tv_c)}}{\sum_{w\in V}{exp(u_w^Tv_c)}}\\ = v_c - \frac{exp(u_o^Tv_c)v_c}{\sum_{w\in V}{exp(u_w^Tv_c)}}\\ = v_c - \frac{exp(u_o^Tv_c)}{\sum_{w\in V}{exp(u_w^Tv_c)}}v_c\\ = v_c - P(o|c)V_c\\ =(1-P(o|c))v_c δvcδlogP(oc)=δvcδlogwVexp(uwTvc)exp(uoTvc)=δvcδ(logexp(uoTvc)logwVexp(uwTvc))=δvcδ(uoTvclogwVexp(uwTvc))=uowVexp(uwTvc)wVexp(uwTvc)uw=uowVwVexp(uwTvc)exp(uwTvc)uw=uowVP(wc)uwuououw=0δuoδlogP(oc)=δuoδlogwVexp(uwTvc)exp(uoTvc)=δuoδ(logexp(uoTvc)logwVexp(uwTvc))=δuoδ(uoTvclogwVexp(uwTvc))=vcwVexp(uwTvc)δuoδexp(uwTvc)=vcwVexp(uwTvc)exp(uoTvc)vc=vcwVexp(uwTvc)exp(uoTvc)vc=vcP(oc)Vc=(1P(oc))vc
可以理解,当 P ( o ∣ c ) → 1 P(o|c) \rightarrow 1 P(oc)1,即通过中心词 c 我们可以正确预测上下文词 ,此时我们不需要调整 u o u_o uo,反之,则相应调整 u o u_o uo

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值