Download presentation
Presentation is loading. Please wait.
1
Advanced word vector representations
再探深度学习词向量表示 Advanced word vector representations 主讲人:李泽魁
2
目录 Lecture 1 知识点回顾 神经概率语言模型(Bengio 2003) Word2vec (Mikolov 2013)
(CBOW & Skip-gram) * (HS & NEG) 词向量的评价方法 Softmax分类模型(原PPT乱入) 词向量的应用场景
3
目录对比 cs224d Lecture 3 目录 本次目录 Lecture 1 知识点回顾 (Refresher)
词向量梯度下降&随机梯度下降 (GD & SGD) 如何评测词向量 (evaluate) Softmax分类 (softmax classification) 若干习题集 (problem set) 本次目录 Lecture 1 知识点回顾 神经概率语言模型(Bengio 2003) Word2vec (Mikolov 2013) (CBOW & Skip-gram) * (HS & NEG) 词向量的评价方法 Softmax分类模型(原PPT乱入) 词向量的应用场景 将GD SGD放入了word2vec其中的一两页 PSET扩展为word2vec部分 新加ffnnlm部分
4
知识点回顾:词向量 词向量表示 词向量降维 One-hot Representation
“黑板”表示为 [ ] Distributional Representation “黑板”表示为 [0.792, −0.177, −0.107, 0.109, −0.542, ...] 词向量降维 SVD,LSA,LDA Based on lexical co-occurrence Learning representations Predict surrounding words of every word Eg. word2vec One-hot Representation 如果采用稀疏方式存储,会是非常的简洁;任意两个词之间都是孤立的。 Distributional Representation”的表示方法,又是另一个不同的概念)表示的一种低维实数向量。 Distributed representation 最大的贡献就是让相关或者相似的词,在距离上更接近了。
5
知识点回顾: input & output vector
所以每个词w都有两个向量表示 input vecter:窗口内的中心向量(center vector) v output vector:非中心词向量(external vectors) v’ 例如window size = 1,句子 I like learning like为v_like I、learning为v’_I v’_learning 公式:这就是基本的“动态”逻辑回归(“dynamic” logistic regression)
6
知识点回顾: Simple word2vec Predict surrounding words in a window of length c of every word. L=L+L`
7
知识点回顾: Word2Vec & GloVe Word2Vec GloVe
Efficient Estimation of Word Representations in Vector Space. Mikolov et al. (2013) GloVe Glove: Global Vectors for Word Representation. Pennington et al. (2014) aggregated global word-word co-occurrence statistics from a corpus
8
深度学习词向量的语言模型(引言) 语言模型:判定一句话是否为自然语言 传统的NLP语言模型(以N-gram为例) 如何计算一个句子的概率?
机器翻译:P(high winds tonite) > P(large winds tonite) 拼写纠错:P(about fifteen minutes from) > P(about fifteen minuets from) 语音识别:P(I saw a van) >> P(eyes awe of an) 音字转换:P(你现在干什么|nixianzaiganshenme) > P(你西安在干什么|nixianzaiganshenme) 自动文摘、问答系统、
9
深度学习词向量的语言模型(引言) 传统的NLP语言模型(以N-gram为例) 其他语言模型 如何计算一个句子的概率? 问题形式化定义
p(S)=p(w1,w2,w3,w4,w5,…,wn) =p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1) =p(w1)p(w2|w1)p(w3|w2)...p(wn|wn-1) 其他语言模型 指数语言模型 最大熵模型MaxEnt、最大熵马尔科夫模型MEMM、条件随机域模型CRF(平滑语法、语义的加入) 神经概率语言模型 Bengio2003、Mikolov2013等 Chain rule 数据稀疏严重;参数空间过大,无法实用。 马尔科夫无关性假设 传统的n-gram语言模型,只是考虑了词形方面的特征,而没有词性以及语义层面上的知识,并且数据稀疏问题严重,经典的平滑技术也都是从统计学角度解决,未考虑语法、语义等语言学作用。
10
深度学习语言模型都有哪些?(粗略) 2000年,徐伟,神经网络训练语言模型
《Can Artificial Neural Networks Learn Language Models?》 用神经网络构建二元语言模型(即 P(wt|wt−1))的方法
11
深度学习语言模型都有哪些?(粗略) 2003年,Bengio,三层的神经网络构建语言模型
《A Neural Probabilistic Language Model》 后面会详细叙述
12
深度学习语言模型都有哪些?(粗略) 2008,Ronan Collobert 和 Jason Weston
C&W model 《Natural Language Processing (Almost) from Scratch》 2008,Andriy Mnih 和 Geoffrey Hinton 《A scalable hierarchical distributed language model》 2010,Mikolov RNNLM 《Recurrent neural network based language model》 2012,Huang 《Improving Word Representations via Global Context and Multiple Word Prototypes》 Duyu、huang都是基于CW Hinton Log-Bilinear M&H model Mikolov word2vec的作者
13
Bengio2003 Bengio提出的理论上是三层模型,如右上角的图,但是为了和word2vec进行统一,将其泛化为下图的四层模型。
即输入层、投影层、隐含层、输出层。 输入是上文n-1个词,投影层是追加,WU为权值pq为向量,隐层为tanh函数,输出层为词表大小,最后将输出向量softmax为归一化概率
14
Bengio2003 该结构中的学习参数 各层的规模 most computation here (也是 word2vec 的主要优化点)
输入的词向量v(w), w属于Dictionary 各层的参数WUpq 各层的规模 投影层:(n-1)*m,n为上下文词数,不超过5;m为词向量维度,10~10^3 隐藏层:n_hidden,用户指定,一般为10^2量级 输出层:N,词表大小,语料相关,10^4~10^5量级 most computation here (也是 word2vec 的主要优化点) 隐藏层to输出层的tanh 输出层的softmax
15
Bengio2003 计算公式推导 公式为 W矩阵 映射层 隐藏层(未画出) 输出层 输入层与输出层(跨了两层)的直连边矩阵,线性变换
首尾拼接(n-1)*m ,记作x 隐藏层(未画出) 假设有h个节点 tanh(H*x + d) 隐藏层与输出层权值矩阵为 U (|V|*h) 输出层 |V|个节点,softmax为归一化概率 y 公式为 W矩阵 输入层与输出层(跨了两层)的直连边矩阵,线性变换 Bengio 发现直连边虽然不能提升模型效果,但是可以少一半的迭代次数 同时他也猜想如果没有直连边,可能可以生成更好的词向量
16
ffnnlm相对于 ngram模型的优点 词语之间的相似性可以通过词向量计算 计算过程自带平滑效果 计算的是p(w|context)
下面例子中 cat 和 mouse 在ffnnlm中词向量相近,而在ngram中cat的概率要大很多 A cat is walking on the street * 10000 A mouse is walking on the street * 1 计算过程自带平滑效果 计算的是p(w|context)
17
ffnnlm中词向量的角色 输入与训练的参数 语言模型训练结束 后的副产品
18
词向量的历史 词向量表示最先于1986年Hinton提出 2003年Bengio发扬光大ffnnlm
Feed-forward Neural Net Language Model SENNA、HLBL、Word2vec 、SSWE、 GloVe
19
Word2Vec所做改进(Mikolov 2013)
映射层不再是将输入单词的向量表示按顺序排列,而是将他们相加,减少计算量 去掉了tanh隐层,减少计算量,同时效果并不差 目的是寻找单词的向量表示,而不是语言模型 利用了上下文而不是上文了 使用层次softmax 使用negative sampling Word2vec理论上不属于深度学习,属于特征学习
20
Word2Vec所使用模型 CBOW & Skip-gram
CBOW(continuous bag-of-words)和Skip-gram。 在cbow方法里,训练目标是给定一个word的context,预测word的概率; 在skip-gram方法里,训练目标则是给定一个word,预测word的context的概率。
21
(CBOW & Skip-gram) *2 两个模型(可选其一) 两套框架(可选其一)
CBOW (Continuous Bag-Of-Words Model) Skip-gram (Continuous Skip-gram Model) 两套框架(可选其一) Hierarchical Softmax Negative Sampling 当然在工具包里用参数也可以同时选择两套框架
22
CBOW+HS (structure) 输入层 隐层 输出层 上下文2C个词向量(m维) 输入词向量的累加和
Huffman Tree (Why?) 权值:词频 非叶节点(|D|-1 个) 代表某一类别的词 叶节点(|D|个) 代表某一个词 1、使用hierarchical softmax做基础 2、任意二叉树也能达到效果,但是信息熵理论给出了最优的方案——霍夫曼树 词频就是好使 好使就行。
23
CBOW+HS (huffman code)
Huffman tree 叶节点是单词,对应一个huffman code,例如“00101” 每个叶节点对应一个路径,记左子树为1,右子树为0 投影层每维节点与每个非叶节点有连线,可以看做非叶节点具有不同权值theta 每个节点分裂概率使用 逻辑回归 正例概率(左分支 1) 负例概率(右分支 0)
24
CBOW+HS (a train sample)
Train sample (Context(“足球”), 足球) Train huffman path 1001 四次分裂 Loss function ( 是0/1) i.e.
25
CBOW+HS (Gradient Ascent Method)
GD (Gradient Descent Method) 要在整个训练集上最小化代价函数J(θ)需要计算所有窗口里的参数梯度 SGD (Stochastic Gradient Descent Method) 窗口太多,迭代一轮太慢 随机梯度下降(SGD):在每一个窗口计算完毕后更新所有的参数 X_w代表w词上下文词vector的累加 更新每个词的方法很简单是直接加对sum的导数,均摊到每个input中
26
CBOW+HS (Gradient Ascent Method)
SGD (Stochastic Gradient Descent Method) 随机梯度下降(SGD):在每一个窗口计算完毕后更新所有的参数 但是在每一个窗口里,我们仅有2c-1个词,这样的话要更新的参数非常稀疏 解决方法 保留词向量的哈希值* 更新词嵌入矩阵L和L′的固定列 如果你有上百万个词向量并且在做分布式训练的话就不需要发送大量的更新信息了 保留词向量的哈希值 是干啥?
27
CBOW+HS (Gradient Ascent Method)
theta update (theta gradient) word_vector update (word_vector gradient) X_w代表w词上下文词vector的累加 更新每个词的方法很简单是直接加对sum的导数,均摊到每个input中 Ascent意思是找最大值
28
CBOW+HS (hierarchical)
No hierarchical structure 输出层每一个词都算一遍,时间复杂度是O(|V|) Binary tree O(log2(|V|))
29
CBOW+HS (softmax) softmax softmax函数是logistic(sigmoid)函数的推广
sigmoid函数只能分两类,而softmax能分多类 如果某一个z_j大过其他z,那么softmax的分量就逼近于1,其他就逼近于0
30
Skip-gram + HS 输入层=投影层 输出层仍为二叉树 优化目标转化 每个词概率相乘 求导过程类似CBOW+HS
31
Negative Sampling Negative Sampling (简称NEG)
理论支撑Noise Contrastive Estimation(NCE) 用于提高训练速度、改善词向量质量 Hierarchical softmax的替代版本 采用随机负采样替代tree structure
32
Negative Sampling Negative Sampling 中的 Negative Sample?
以CBOW为例 已知Context(w) 和 词w 正样本为 词w 负样本为 除去词w之外的所有词 Negative Sampling的依据 负样本太多了 高频词更易被采样 带权采样问题* 带权采样问题 解释略
33
CBOW + Negative Sampling
约定:上下文Context(w) 和 词w, 优化目标 其中 i.e. 增大正样本概率(前半部分) 减少负样本概率(后半部分) 求导、更新参数略
34
Skip-gram + Negative Sampling
优化目标 其中 i.e. 同样, 增大正样本概率(前半部分) 减少负样本概率(后半部分) 求导、更新参数略
35
词向量评价(翻译版) Intrinsic Extrinsic 在一个特定的子任务(后几页)中进行评测 计算迅速 有助于理解相关的系统
不太清楚是否有助于真实任务除非和实际的NLP任务的相关性已经建立起来 Extrinsic 在一个真实任务中进行评测 需要花很长的实际来计算精度 不太清楚是否是这个子系统或者其他子系统引起的问题 如果用这个子系统替换原有的系统后获得精度提升–>有效(Winning!)
36
词向量评价 (Intrinsic - Word Vector Analogies)
通过一些语义或语法类比问题上的余弦相似度距离的表现来评测词向量 问题:如果信息符合但不是线性的怎么办?
37
词向量评价 (Intrinsic -Semantic)
句法 理论评价
38
词向量评价 (Intrinsic - Syntactic)
39
词向量评价 (Intrinsic - Sem. & Syn.)
GloVe是最优的,那么我们就看看GloVe下的调参
40
词向量评价 (Sem. & Syn. using GloVe)
非对称上下文(仅有左侧的单词)并不是很好 最佳的向量维度:300左右,之后变化比较轻微 对于GloVe向量来说最佳的窗口长度是8 虽然图中y轴坐标实在难以分辨
41
词向量评价 (Sem. & Syn. using GloVe)
训练的时间 对于GloVe来说有帮助 Word2vec不一定
42
词向量评价 (Sem. & Syn. using GloVe)
训练数据 Wiki比新闻语料更相关
43
如何应对歧义问题 (好像有点跑题) 我们希望一个词向量能捕获所有的语义信息(例如run即是noun也是verb),但是这样的话词向量会被拉向两个方向 对词窗口进行聚类,并对每个单词词保留聚类标签,例如bank1, bank2等
44
如何应对歧义问题 (好像有点跑题)
45
词向量评价 (Intrinsic - correlation)
46
词向量评价 (Extrinsic) 任何词向量可以辅助的NLP任务 越来越多的领域 表格是C&W的SENNA工具包
47
简单的单词的分类问题 (原PPT乱入) 从深度学习的词向量中最大的获益是什么?* 有能力对单词进行精确的分类
国家类的单词可以聚和到一起 因此可以通过词向量将地名类的单词区分出来 可以在其他的任务中将单词的任意信息融合进来 可以将情感分析问题映射到单词分类中 在语料库中寻找最具代表性的正/负例单词 最大的获益 这个ppt里 考虑的太少 只考虑了以上两点
48
分类问题 引出的 softmax 分类(1) softmax分类在给定词向量x的情况下获得y类的概率
49
分类问题 引出的 softmax 分类(2) 损失函数 (Loss function) 代价函数 (Cost function)
目标函数 (Objective function) Softmax的损失(Loss): 交叉熵(Cross Entropy) 假设分布是:p = [0,…,0,1,0,…0], 对应计算的概率分布是q 交叉熵,可以写成熵和两个分布的KL散度之和 三个函数 其实是说的一个 在我们的case里p是0(即使不是0也会因为它是固定的对梯度没有固定),最小化交叉熵等价于最小化KL散度 KL散度并非是一个距离函数而是一个对于两个概率分布差异的非对称的度量 维基百科:KL散度是两个概率分布P和Q差别的非对称性的度量。 KL散度是用来 度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。 典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。
50
简单的单词的分类问题 例子:情感分析 两个选择: 问题:训练词向量的优点和缺点是什么 方案1:仅仅训练softmax权重W
方案2:同时训练词向量 问题:训练词向量的优点和缺点是什么 Pro: 更好的适应训练数据 Con: 更差的泛化能力
51
简单的单词的分类问题 -训练的词向量的情感分享可视化
简单的单词的分类问题 训练的词向量的情感分享可视化 Fun Enjoyable Worth Right Blarblar dull boring 中间的都是情感倾向不强的
52
最后:词向量的应用汇总 NLP任务 非NLP任务 挖掘词之间的关系,word analogy,譬如同义词、上位词
将词向量作为特征应用到其他机器学习任务中,例如作为文本分类的feature,NER、CHK等任务 机器翻译 Relational extraction Connecting images and sentences,image understanding 非NLP任务 将qq群作为doc,用户作为word,训练user distributed representation,挖掘相似user 将query session作为doc,query作为word,训练query distributed representation,挖掘相似query 将不同用户点击行为作为doc,单个点击作为word,训练product distributed representation,挖掘相似product
53
参考文献(按照PPT页面顺序) Socher,CS224d Slides
fandywang,斯坦福大学自然语言处理 Language Modeling licstar,Deep Learning in NLP (一)词向量和语言模型 falao_beiliu,深度学习word2vec笔记 hisen,word2vec傻瓜剖析 Mikolov,word2vec source code shujun_deng,Deep 皮果提,word2vec 中的数学原理详解 杨超,Google 开源项目 word2vec 火光摇曳,语义分析的一些方法(中篇) 王芊,Softmax 52nlp,斯坦福大学深度学习与自然语言处理
54
Thanks Q&A
Similar presentations