cs224n NLP with dl笔记(一)

Introduction and word vectors

预习部分

  1. 上完课回过头来需要问自己哪些问题?
    NLP中使用的核心方法有哪些,阐述对他们的理解。
    语言是如何产生的,产生和理解过程中有哪些困难。
    使用PyTorch搭建框架解决实际问题。
  2. P11的换算是什么意思?
  3. 如何在电脑当中存储有用的含义?
    一般的解决办法是使用WordNet,用来存储同义词集和相关词集。
    这种方法的问题如下:
    无法识别细微的差别,比如某个词语仅仅在某种情况下才是该词的同义词。
    很难跟上语言更新的速度。
    需要大量的人力去创造和调整。
    不能度量词语之间相似的程度。
  4. 如何在电脑中表示words?
    传统NLP当中使用one-hot vectors表示单词,但是这样无法表示相似的词语,无法描述单词之间的关系。
    如果简单的建立一个关系矩阵的话,需要储存的数据量又会过大。
    所以我们现在的思路就是将单词的关系存储在单词的表示当中。
    为了解决这个问题,提出分布式语义,具体含义是一个单词的含义是由附近的单词所给出的。
    P17的向量每个数字都表示什么?长度有什么含义吗?
  5. word2vec是什么?
    是一个框架,或者说是算法,输入text,输出单词的vector。
    思路大概为遍历text,使用单词向量的相似度来计算已知context的情况下预测得到该 单词的概率。不断调整单词向量使得概率最大。
    P22的目标函数为什么是已知该单词预测context的概率乘积,难道不是反过来吗?
    回答:实际上有两种模型可以选择,分别是Skip-grams和Continuous Bag of Words,前者是已知中心词预测周围词,后者是已知周围词预测中心词。也就是说两种思路都可以,只是我们现在呈现的是前者。
    大概是用梯度下降法进行求解,但是细节部分还没看太仔细。

课程笔记

  1. 语言交流是一种带宽很低效率也很低的交流方式,但是加上我们脑中的信息库,我们可以获得很多的信息。
  2. 语言学家如何理解一个单词的含义?
    一个词语所包含的idea以及外延。
  3. P17的向量每个数字都表示什么?长度有什么含义吗?
    数字没有具体的含义。
    维度越大,那么和样本拟合的就会越精确。
    维度一般是50以上,如果想要得到比较好的结果,需要300的长度。
  4. 单词的距离图是怎么可视化的?
    实际上50维+的单词很难被可视化,所以PPT当中的距离图是将其映射到两维之后可视化的结果。
  5. 目标函数为什么要从Likehood作数学处理?
    负号是为了变成求最小值;
    除以单词的个数,是为了使得结果与语料库的规模是无关的;
    log会使得计算变得更加简单。
  6. P22的目标函数为什么是已知该单词预测context的概率乘积,难道不是反过来吗?
    对于式子的理解没有错误,目标确实是使得根据中心词正确预测周围词的概率最大。
  7. 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 \in V}exp(u_w^Tv_c)} P(oc)=wVexp(uwTvc)exp(uoTvc)
    点积的作用是度量两个向量之间的相似性;
    exp的作用是将数值保持正数。
    因此分子项作用是求两个向量之间的相似性,分母项的作用可以说是标准化。
    这里的c指的是中心的单词,o指的是周围的单词。
    和softmax函数之间的关系
  8. 迭代优化部分的思路是怎样的?
    参数:每个单词的向量表示

数学推导

最基础的目标函数,含义为已知该单词预测context的概率乘积,求解结果最大时候的单词向量的结果。
L ( θ ) = ∏ t = 1 T ∏ − m < = j < = m j ≠ 0 P ( w t + j ∣ w j ) L(\theta)=\prod_{t=1}^T\prod_{-m<=j<=m j\neq0} P(w_{t+j}|w_j) L(θ)=t=1Tm<=j<=mj=0P(wt+jwj)

为了便于求解,将上述式子转化为以下式子。
J ( θ ) = − 1 T l o g L ( θ ) J(\theta)=-\frac{1}{T}logL(\theta) J(θ)=T1logL(θ)
P ( o ∣ c ) = e x p ( u o T v c ) ∑ w = 1 v e x p ( u w T v c ) P(o|c)=\frac{exp(u_o^Tv_c)}{\sum_{w=1}^vexp(u_w^Tv_c)} P(oc)=w=1vexp(uwTvc)exp(uoTvc)

使用梯度下降法进行求解。
J ( θ ) = − 1 T l o g ∏ t = 1 T ∏ − m < = j < = m j ≠ 0 P ( w t + j ∣ w j ) = − 1 T ∑ t = 1 T ∑ − m < = j < = m j ≠ 0 l o g P ( w t + j ∣ w j ) J(\theta)=-\frac{1}{T}log\prod_{t=1}^T\prod_{-m<=j<=m j\neq0} P(w_{t+j}|w_j)=-\frac{1}{T}\sum_{t=1}^T\sum_{-m<=j<=m j\neq0}logP(w_{t+j}|w_j) J(θ)=T1logt=1Tm<=j<=mj=0P(wt+jwj)=T1t=1Tm<=j<=mj=0logP(wt+jwj)

∂ l o g P ( o ∣ c ) ∂ v c = u o − ∑ x = 1 v P ( x ∣ c ) u x \frac{\partial logP(o|c)}{\partial v_c}=u_o-\sum_{x=1}^{v}P(x|c)u_x vclogP(oc)=uox=1vP(xc)ux

∂ J ( θ ) ∂ v t = − 1 T ∑ t = 1 T ∑ − m < = j < = m j ≠ 0 ( w t + j − ∑ x = 1 v P ( w x ∣ w t ) w x ) \frac{\partial J(\theta)}{\partial v_t}=-\frac{1}{T}\sum_{t=1}^T\sum_{-m<=j<=m j\neq0}(w_{t+j}-\sum_{x=1}^{v}P(w_x|w_t)w_x) vtJ(θ)=T1t=1Tm<=j<=mj=0(wt+jx=1vP(wxwt)wx)

Note

单词的表示方法是NLP模型构建的第一步。Word Vector是主流的单词表示方法。
以下介绍几种使用Word vector表示单词的方法。

One-hot

SVD-based method

首先是构造co-occurrence矩阵,包括构造word-document矩阵和window-based矩阵。
前者的元素是第i个word在第j个文档中出现的次数;包含的含义是同一个文档内的单词关系更加密切。
后者的元素是第i个word在第j个word的window内出现的次数;包含的含义是出现在周围的单词关系更加密切。

然后对构建的矩阵应用奇异值分解进行降维。
在这里插入图片描述

Iteration-based method Word2Vec

主要思想是:
在这里插入图片描述

补充

高数求导公式一览

  • 幂函数的导数
    在这里插入图片描述
  • 对数函数的导数
    在这里插入图片描述
  • 三角函数的导数
    在这里插入图片描述
  • 和差积商的求导法则
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值