当前位置: 首页 > 工具软件 > Edward > 使用案例 >

【deep learning学习笔记】New Directions in Vector Space Models of Meaningful_Edward_acl2014Tutorial

后阳炎
2023-12-01
时间:2014
作者:Edward,牛津的
发表于:acl tutorial

概要:
总结NLP中的向量表示(vsm),将新近的deep learning纳入到这个表示体系(思路)当中。概要性的ppt。当前难点在于如何从词的表示扩展到短语、语句的表示,对现阶段工作有比较好的总结。

1. 分布式表示方法

1.1  symbolic/discrete approach
符号表示法,离散表示法,如:ngram模型。
优点是快速、训练代价小;缺点是不能解决长距离问题、不能解决推理问题

1.2  from discrete to distributed representations
用feature vector来代替具体的符号。

这个tutorial主旨是:(1)如何学习词的向量表示;(2)如何把这种表示扩展到短语、语句

2.  Distributional Semantics 

vsm的回顾:利用词语之间的同现关系来描述某个特定词语;词语和文档之间的矩阵;词语和pattern之间的同现,等等。
向量中每个维度的取值:tf/idf, 互信息,Dice系数等等
LDA用来降维。矩阵分解方法。等等。
向量之间的距离(相似度)计算:欧氏距离、jaccard相似度、Dice稀疏、KL距离等等

 3.  Neural Distributed Representations 

3.1 对数线性(最大熵)模型的回顾
神经网络对对数线性模型的扩展:(1)所有词语(特征)都用向量表示;(2)从前的特征函数f,由指示函数(符合条件的值为1,否则为0)变成非线性函数,如:sigmoid函数;(3)特征之间的关系用矩阵表示,如:修饰关系 
Neural   language model的计算复杂度通常由词表大小决定,此表比较大的时候效率会急剧降低。两种解决方法:
(1)用 Neural   language model针对常用词来简历语言模型,用传统ngram模型对剩下的词语建立语言模型
(2)调整目标函数,在计算梯度的时候采用近似方法:其中一个方法是用词类来代替梯度计算中的词语本身,还有一个方法是对词表构造二叉树,在训练中用二叉树中的节点来代替词语本身。
相比传统Ngram模型, Neural   LM的优势在于:能够很好地对未出现事件进行预测,所占用的内存更小;不过缺点在于,当数据规模很大的时候,NLM的规模也会很大,训练时间也会很长。

3.2 conditional generation
word2vec不像ngram考虑词语顺序,而只是考虑词语之间的同现关系。 word2vec将词语表示成实属向量的形式,如何根据词语的实数向量来”生成“语句?
“加法模型”:将所有词语向量每个维度加和,作为语句的隐层内部表示,然后由这个内部表示再生成原来的语句对应的目标语句(机器翻译)。

4.  Semantic Composition (翻译为“语义表示”或者“语义组成”)

4.1 初衷
词语可以用实数向量表示,并且根据向量我们可以计算词语之间的关系(距离、相似度、等等),如何把这个扩展到语句呢?如何计算两个语句是否相似呢?——对于语句级别,当用统计方法(而非语言学方法),对于unseen event无法做出准确估计,且统计方法面临维数灾难的问题。语句级别的计算很有意义,对于paraphrase、机器翻译等都很有帮助。

4.2 model

4.2.1 Algebraic vector composition方法
说白了就是对词语的向量中的每个维度做线性代数计算,加减乘除、扩展等等,最终的结果向量,作为语句的表示向量。
缺点很明显:没有词序信息、没有上下文信息等等

4.2.2  Neural model
一种方法,建立句法树,叶子节点是词节点,用实数向量表示,内部节点是句法节点,从叶子节点的表示中学习得到
另一种方法,每个节点表示成一个向量和一个矩阵(越来越玄了)
第三种方法,convolutional neural network方法:convolutional neural network通过学习、组合局部特征来对全局进行判定,用在图像处理当中,如:手写体识别。convolutional neural network的解决问题的特点与NLP问题很相似:都是由局部特征组成、都是位置相关、都是有层次结构、等等。convolutional neural network处理的基本数据结构是:一个语句中的所有词语都由实属向量组成,这些向量按照在句子的顺序排列在一起,形成一个矩阵,处理对象就是这个矩阵。卷积开一个M的窗口,类似ngram模型,这个窗口作为上下文,将输入投影到输出空间当中,移动M窗口,不断如此做下去,最终得到的输出作为句子表示。————这个方法听起来靠谱多了。Kalchbrenner 在acl2014的poster的工作就是这个。

4.2.3 training
autoencoder, recursive autoencoder, 反向传播、梯度下降


4.2.4 应用
语义相关的分析、交叉语言文本分类。

 类似资料: