CS224n Note-01

Lecture 1: Introduction and Word Vectors

目录**

  • 语言学到自然语言处理简要介绍
  • 人类语言和单词含义
  • 词向量
  • Word2vec语言模型的简要介绍
  • 优化简介:梯度下降

课程目标

  • 理解目前深度学习处理方法(包括NLP主流模型和方法)
  • 了解NLP中的处理问题
  • NLP中主流问题的建模和处理能力(in Pytorch)

1. The course

人类比猩猩更加聪明,是因为人们可以通过语言进行交互,对语言的理解和思考,展现了人类语言的复杂和高效。

每个人对于语言都可以有自己的理解,因此语言不光具有信息传递的功能,还可以通过语言来影响其他人。

当今社会,网络速度不断更新迭代,5G已经油然而生,相对于人类语言,我们使用NLP技术可以高速学习构建更强大的处理能力。

NLP就是对各种文本内容进行处理。

2. Human language and word meaning

How do we represent the meaning of a word?

定义meaning:

  • 用单词、词组表示概念

  • 人们运用单词、符号表示自己的观点

  • 通过写作作品、艺术来表达观

  • 理解含义最普遍的语言方式(denotational semantics用语言符号对语义进行转化):

    signifier(symbol)⇔signified(idea or thing)

How do we have usable meaning in a computer?

通常的解决方案:Wordnet(包含同义词集和上位词的一个巨大词典)

|上位词:用 “is a”来表示关系的词集列表

Problems with resources like WordNet

Wordnet的劣势:

  • 是很好的资源但忽略了细微的一些差别:例如词典中‘proficient’与‘good’认为是同义词,但是这只在某些文本上下文中成立。
  • 忽略了一些单词的含义(即含义不完整)
  • 偏主观(缺少客观性)
  • 需要人类来不断地更新和改写
  • 无法计算单词之间的相似度

Representing words as discrete symbols

传统NLP中,我们将单词看作是离散的表示,通过one-hot vector来表示。

为什么不采用 one-hot向量
我们在循环神经网络中了解过one-hot向量来表示词,假设词典中不同词的数量为N,每个词可以从0到N-1的连续整数一一对应。假设一个词的相应整数表示为i,为了得到该词的one-hot向量表示,我们创建一个全为0的长为N的向量,并将第i位设为1。然而,使用one-hot词向量并不是一个好选择,一个主要原因是,one-hot词向量无法表示不同词之间的相似度,任何一对词的one-hot向量的余弦相似度都为0.

Representing words by their context

Distributional semantics:一个单词的含义通常由在它附近经常出现的单词给出的。

  • 对于文本中的一个单词w,它的上下文就是出现在它附近的一组单词(在一个划定好size的窗口下)

  • 通过许多包含w的文本中的上下文来构建w的含义表示:

3. Word2vec introduction

Word vectors

word2vec工具主要包含两个模型:跳字模型和连续词袋模型,以及两种高效训练的方法:负采样和层序softmax。值得一提的是,word2vec词向量可以较好地表达不同词之间的相似和类比关系。

Skip-gram和CBOW
Skip-gram:如果是用一个词语作为输入,来预测它周围的上下文,那这个模型就叫

CBOW:如果是拿一个词语的上下文作为输入,来预测这个词语本身,则叫

在这里插入图片描述

理解word2vec寻找相似次
对于一句话:他们夸吴彦祖帅到没朋友。如果x输入是吴彦祖,那么y可能是他们,夸,帅,没朋友这些词。

我们将为每个单词构建一个稠密的向量,使得它能够与相似文本里的词向量相近,word meaning 作为一种神经词向量,在我们对向量空间进行可视化:

注:word vector 有时也叫做 word embedding 或者 word representations,他们都是一种表示结构。

Word2vec:Overview

Word2vec(Mikolov et al. 2013) 是一种学习词向量的框架

  • 包含大量的文本语料

  • 固定词表中的每一个单词由一个词向量表示

  • 文本中的每个单词位置 t,有一个中心词c,和它的上下文 o(除了 c 的外部单词)。

  • 通过 co 的词向量相似性来计算 P(o/c)

  • 不断的调整词向量,最大化概率

    固定窗口,滑动窗口并计算:

Word2vec的目标函数

对于每个位置 t = 1,…,T,固定窗口大小m,给定中心词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 ( θ ) = − 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;θ)
注:

  • J ( θ ) J(\theta) J(θ)为损失函数(这里是平均负对数似然);
  • 负号将极大化损失函数转化为极小化损失函数;
  • log函数方便将乘法转化为求和(优化处理)
  • MLE详解

如何计算?

  • 问:如何计算 P ( w t + j ∣ w t ; θ ) P(w_{t+j}|w_t;\theta) P(wt+jwt;θ)?

  • 答:对于每个单词 w 我们使用两个向量 v w v_w vw u w u_w uw

    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)


在概率函数中:
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
  • 对整个词表标准化,给出概率分布

softmax函数进行归一化(深度学习中常用): R n → R n \Bbb{R^n}\to \Bbb{R^n} RnRn
s o f t m a x ( x ) = e x p ( x i ) ∑ j = 1 n e x p ( x j ) = p i softmax(x)= \frac {exp(x_i)}{\sum_{j=1}^nexp(x_j)}=p_i softmaxx=j=1nexp(xj)exp(xi)=pi
注:用于将任意值 x i x_i xi 映射到概率分布 p i p_i pi

4. Word2vec objective function gradients

Training a model by optimizing parameters

(通过优化参数的方式训练模型)- 最小化损失

To train the model: Compute all vector gradients

整个模型里只有一个参数 θ \theta θ ,所以我们只用优化这一个参数就行。

例如:模型在一个 d 维,词典大小为 V :
θ = [ v a a r d v a r k v a ⋮ v z e b r a u a a r d v a r k u a ⋮ u z e b r a ] ϵ   R 2 d V \theta=\begin{bmatrix}v_{aardvark}\\v_a\\\vdots\\v_{zebra}\\u_{aardvark}\\u_a\\\vdots\\u_{zebra} \end{bmatrix}\epsilon\ \Bbb R^{2dV} θ=vaardvarkvavzebrauaardvarkuauzebraϵ R2dV

  • 2:每个单词有两个向量
  • 通过梯度(导数)下降的方式优化参数
  • 梯度下降会用到链式法则
  • 迭代计算每个中心词向量和上下文词向量随着滑动窗口移动的梯度
  • 依次迭代更新窗口中所有的参数

5. Optimization basics

Optimization:Gradient Descent(梯度下降)

  • 我们的损失函数 J ( θ ) J(\theta) J(θ) 需要最小化

  • 使用的方法为:梯度下降

  • 对于当前 θ \theta θ ,计算 J ( θ ) J(\theta) J(θ) 的梯度

  • 然后小步重复朝着负梯度方向更新方程里的参数 α = ( s t e p   s i z e )   o r   ( l e a r n i n g   r a t e ) \alpha=(step\ size)\ or\ (learning\ rate) α=(step size) or (learning rate)
    θ n e w = θ o l d − α ∇ θ J ( θ ) \theta^{new}=\theta^{old}-\alpha \nabla_\theta J(\theta) θnew=θoldαθJ(θ)

  • 更新唯一的参数 θ \theta θ:
    θ j n e w = θ j o l d − α α α   θ j o l d J ( θ ) \theta_j^{new}=\theta_j^{old}-\alpha \frac \alpha{\alpha\ \theta_j^{old}}J(\theta) θjnew=θjoldαα θjoldαJ(θ)

while True:
	theta_grad = evaluate_gradient(J,corpus,theta)
  theta = theta - alpha * theta_grad

SGD:Stochastic Gradient Descent

  • 由于 J ( θ ) J(\theta) J(θ) 是在语料文本中所有窗口的方程

  • 当语料很大的时候,计算梯度会消耗巨大

  • 解决办法:SGD

  • 不断sample窗口,不断更新

    while True:
      window = sample_window(corpus)
      theta_grad = evaluate_gradient(J,window,theta)
      theta = tehta - alpha * theta_grad
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值