cs224n 笔记1,2

找到了大神的笔记,码一下,一起分享

  1. CS224n笔记1 自然语言处理与深度学习简介
  2. CS224n笔记2 词的向量表示:word2vec
  3. word2vec原理推导与代码分析

以下是我的渣记

lecture1: NLP简介

NLP,natural language processing

1.自然语言的层次

输入有两种,语音、文本

  • 单词分析
  • 句法分析
  • 语义分析
2.传统机器学习vs深度学习

深度学习是机器学习的分支

  • 机器学习,通常人类提取特征,决定哪些特征进行组和分析,或为某些特征设计模板;通过机器学习算法,最优化权值
  • 深度学习,自己学习到原始输入的多层特征表示
3.NLP的难点
  • 语言模棱两可;程序需要各种明确规则
  • 语言有上下文、依赖于常识、背景知识

lecture2: 词向量表示

1.单词的表示
1.1分类表示系统(discrete representation)
  • 缺点:
    • 某些同义词之间还是有些微小差别体现不出,比较主观
    • 词库太多,向量超长
    • 例如onehot编码,无法通过运算得到相似性。可能两个词是同一个意思,但两个向量正交
  • 需求:建立一个向量直接编码词含义的系统。通过两个向量点积求体现相似性
1.2分布式表示系统(distributes representation)
  • 分布相似性理论(distributional similarity:通过上下文得到一个词的意思
  • 通过调整单词向量,使上下文单词互相预测。
  • 可以通过向量间运算推测单词的关系
2.词嵌入神经网络(word embedding)
  • 模型可以预测某单词上下文,表示为
    p ( c o n t e x t ∣ w t ) p(context|w_t) p(contextwt)
  • 损失函数:
    J = 1 − p ( w − t ∣ w t ) J=1-p(w_{-t}|w_t) J=1p(wtwt)
    其中 w t w_t wt指中心词汇; w − t w_{-t} wt w t w_t wt的上下文词汇(负号表示除中心词外)。
    最优化 w t w_t wt以最小化损失函数
3.word2vec

中心词和上下文彼此预测。

  • 有两个算法:
    • Skip-grams(SG):给定中心预测上下文
    • Continuous Bag of Words(CBOW):利用上下文的词袋预测目标
  • 两个效果稍高效的训练方法:
    • Hierarchical softmax
    • negative sampling
      但这门课只讲naive softmax
4.skip-gram
4.1 模型

所有的单词 t = 1 , ⋯   , T t=1,\cdots,T t=1,,T, 中心词位置为t,预测左/右侧距离m内的单词。模型表示为
p ( w t + j ∣ w t ) , − m ⩽ j ⩽ m , j ≠ 0 p(w_{t+j}|w_t),-m\leqslant j \leqslant m,j\neq 0 p(wt+jwt),mjm,j̸=0

4.2 最大似然估计

参数 θ \theta θ是整个模型中的唯一参数。
使每个上下文词出现的概率尽可能的大,计算最优 θ \theta θ
max ⁡ J ′ ( θ ) = ∏ t = 1 T ∏ − m ⩽ j ⩽ m j ≠ 0 p ( w t + j ∣ w t ; θ ) \begin{aligned} \max J'(\theta) &= \prod_{t=1}^T \prod_{-m\leqslant j \leqslant m \atop j\neq 0}p(w_{t+j}|w_t;\theta) \end{aligned} maxJ(θ)=t=1Tj̸=0mjmp(wt+jwt;θ)
取负对数,最小化目标函数
min ⁡ J ( θ ) = − 1 T ∑ t = 1 T ∑ − m ⩽ j ⩽ m j ≠ 0 log ⁡ p ( w t + j ∣ w t ) \min J(\theta) = -\frac{1}{T}\sum_{t=1}^T\sum_{-m\leqslant j \leqslant m \atop j\neq 0} \log p(w_{t+j}|w_t) minJ(θ)=T1t=1Tj̸=0mjmlogp(wt+jwt)
其中 T T T是词个数。得到负对数似然函数 J ( θ ) J(\theta) J(θ)

4.3 用softmax得到上下文概率分布

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^T_ov_c)}{\sum_{w=1}^Vexp(u^T_wv_c)} p(oc)=w=1Vexp(uwTvc)exp(uoTvc)
其中 c c c是中心词在中心词矩阵中的索引, o o o是上下文矩阵中的索引。 v c v_c vc是中心词向量, u o u_o uo是上下文词向量。

  • 利用softmax函数将数值映射为概率分布。
  • 向量间的点积可以估计相似性
4.4 skip-gram的神经网络
  • w t w_t wt,词的onehot向量,维度 V × 1 V \times 1 V×1(V是中心词空间中所有词的数目)
  • W W W,中心词空间的嵌入矩阵(代表每个词作为中心词时的向量v组成的矩阵),维度 d × V d \times V d×V(d是词向量的长度,每列就是一个词向量)
  • v c = W w t v_c=Ww_t vc=Wwt,是词 w t w_t wt的词向量,维度为 d × 1 d \times 1 d×1
  • W ′ W' W,上下文的矩阵(代表每个词作为上下文时的向量u组成的矩阵),维度为 V × d V \times d V×d
  • W ′ v c = [ u x T v c ] W'v_c=[u_x^Tv_c] Wvc=[uxTvc],上下文矩阵与中心词词向量相乘,得到每个词与中心词的“相似度”,维度为 V × 1 V\times1 V×1
  • P ( x ∣ c ) = s o f t m a x ( u x T ∣ v c ) P(x|c)=softmax(u_x^T|v_c) P(xc)=softmax(uxTvc),用softmax映射为概率,维度为 V × 1 V\times1 V×1
  • 用真实值与概率对比计算损失

    上面这个图片拷贝自大神博客

我们要学习 W W W W ′ W' W。两个矩阵都含有V个词向量,那么每个单词有2个d维向量(作为中心词时的向量 v v v,和作为上下文时的向量 u u u)。
可以每次学习单个 v c v_c vc u o u_o uo
对于模型来说,把 W W W W ′ W' W矩阵所有值叠加起来,那么参数 θ ∈ R 2 d V \theta \in R^{2dV} θR2dV

4.5 利用梯度下降最小化目标函数
  • 对中心词参数 v c v_c vc求导
    p ( o ∣ c ) = e x p ( u o T v c ) ∑ w = 1 V e x p ( u w T v c ) ∂ ∂ v c log ⁡ e x p ( u o T v c ) ∑ w = 1 V e x p ( u w T v c ) = ∂ ∂ v c log ⁡ e x p ( u o T v c ) − ∂ ∂ v c log ⁡ ∑ w = 1 V e x p ( u w T v c ) = u o − ∑ x = 1 V e x p ( u x T v c ) u x ∑ w = 1 V e x p ( u w T v c ) = u o − ∑ x = 1 V e x p ( u x T v c ) ∑ w = 1 V e x p ( u w T v c ) u x = u o − ∑ x = 1 V p ( x ∣ c ) u x \begin{aligned} p(o|c) &= \frac{exp(u^T_ov_c)}{\sum_{w=1}^Vexp(u^T_wv_c)}\\ \frac{\partial{}}{\partial{v_c}}\log \frac{exp(u^T_ov_c)}{\sum_{w=1}^Vexp(u^T_wv_c)}&=\frac{\partial{}}{\partial{v_c}}\log exp(u^T_ov_c) - \frac{\partial{}}{\partial{v_c}}\log \sum_{w=1}^Vexp(u^T_wv_c) \\ &=u_o - \frac{\sum_{x=1}^Vexp(u^T_xv_c)u_x}{\sum_{w=1}^Vexp(u^T_wv_c)} \\ &=u_o - \sum_{x=1}^V\frac{exp(u^T_xv_c)}{\sum_{w=1}^Vexp(u^T_wv_c)}u_x \\ &=u_o - \sum_{x=1}^Vp(x|c)u_x \end{aligned} p(oc)vclogw=1Vexp(uwTvc)exp(uoTvc)=w=1Vexp(uwTvc)exp(uoTvc)=vclogexp(uoTvc)vclogw=1Vexp(uwTvc)=uow=1Vexp(uwTvc)x=1Vexp(uxTvc)ux=uox=1Vw=1Vexp(uwTvc)exp(uxTvc)ux=uox=1Vp(xc)ux
    式中的 u o u_o uo代表当前值, ∑ x = 1 V p ( x ∣ c ) u x \sum_{x=1}^Vp(x|c)u_x x=1Vp(xc)ux是当前所有上下文的平均值
  • 还需要对 u o u_o uo求导
    之后梯度下降法
    θ ′ ← θ − α ∇ J ( θ ) \theta' \leftarrow \theta - \alpha \nabla J(\theta) θθαJ(θ)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值