当前位置: 代码迷 >> 综合 >> cs224n NLP with dl笔记(一)
  详细解决方案

cs224n NLP with dl笔记(一)

热度:12   发布时间:2023-12-19 00:45:45.0

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)=wV?exp(uwT?vc?)exp(uoT?vc?)?
    点积的作用是度量两个向量之间的相似性;
    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=1T??m<=j<=mj??=0?P(wt+j?wj?)

为了便于求解,将上述式子转化为以下式子。
J ( θ ) = ? 1 T l o g L ( θ ) J(\theta)=-\frac{1}{T}logL(\theta) J(θ)=?T1?logL(θ)
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=1v?exp(uwT?vc?)exp(uoT?vc?)?

使用梯度下降法进行求解。
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(θ)=?T1?logt=1T??m<=j<=mj??=0?P(wt+j?wj?)=?T1?t=1T??m<=j<=mj??=0?logP(wt+j?wj?)

? 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 ?vc??logP(oc)?=uo??x=1v?P(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) ?vt??J(θ)?=?T1?t=1T??m<=j<=mj??=0?(wt+j??x=1v?P(wx?wt?)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

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

补充

高数求导公式一览

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