NLP学习笔记(6)

news/2024/7/5 19:49:07
  • 我们希望把多个单词组成的短语同样在词向量的空间中找到对应的向量,当然你也可以在不同的空间中,但是如果在同一空间中是有好处的 ,我可以利用该空间捕捉到短语与单词之间意思的相似度,比如the man on the snowboard 和 snowboarder。但是你不可能为每一个短语定义一个向量,即使为每一个单词定义一个词向量都不能完全实现,所以为了实现在这个空间中找到这个意思对应的向量,我们要借助principal of compositionality,这个是语言学的一个有名的原则,大概是说,你可以利用一个合成函数,利用短语或句子中每个单词的意思,来得到短语或句子的意思。如果找到了这样一个函数,它可以以两个语义为输入,产生一个新的语义,这个函数将可以产生两个结果,一个是合成的语义,一个是合成语言结构。如果事先知道一个句子的树状结构的前提下,就可以根据这个树状结构来合成语义。这个tree structure的recursive network没有流行起来的原因在于,如果要对每个句子建立不同的树结构,训练的梯度传导是个问题,还有就是GPU不友好。还有一种结构是上节课讲的卷积神经网络,它只是简单地对所有相邻单词实施合成,而不考虑句子的结构。
  • 这个图说明了recursive和recurrent的区别 在这里插入图片描述
  • 如果我们事先不知道句子的结构,为了实现recursive,我们需要这样一个函数,输入两个词向量,输出合成的向量和一个分数,这个分数用来评估这个结构是否合理,也就是说是否应该把这两个向量合成为一个向量在这里插入图片描述
  • 这个合成函数的一个形式如下 在这里插入图片描述
  • 如何利用这个函数来生成树状结构:一种方法是用一种类似受限哈夫曼数的贪婪策略来生成,每一步都看所有相邻两个向量的分数,找到最高的分数,合并为一个新的向量,然后继续这个过程直至剩下一个向量。也可以有别的方法像beam search之类的,但是这些方法都不能保证找到的tree结构是最优的,除非进行全局搜索,但是这是指数级的时间复杂度,所以一般还是采取一些次优但是效率高的策略
    在这里插入图片描述
  • 最终我们会得到一个树结构,为了计算这个树结构的分数我们要把所有节点的分数加起来。损失函数是这样的:我们有一个target的树结构,还有一个模型根据贪婪策略生成的树结构,这两个树结构都可以算分数,用模型生成的树结构的分数减去target的树结构的分数得到loss,只有当target的树结构的分数就是模型生成的树结构的分数时loss会最小化,下图是这个loss的max-margin形式,但是总觉得这个loss函数减反了,后面那个应该是被减数。。因为后面的是模型的预测。在这里插入图片描述
  • 但是上述合成函数有两个问题,一个问题是用于合成的两个单词之间没有交互,一个是我们用同一个W来对各种各样的单词对进行合成,形容词和名词组成的单词对与介词和名词组成的单词对显然应该用不同的合成函数才对,为了解决第二个问题,提出了下述方法在这里插入图片描述
    ,找到了方法去分割syntax(语法)和semantics(语义)。用CFG来标记每个单词的词性,然后对不同词性组合的两个vector应用不同的W,并且分析合成的vector的词性。也就是说,语法部分交给传统语言模型,语义部分交给深度学习。
  • 关于第一个问题的解决办法是一种称为matrix-vector recursive neural network的方法,每个单词的表示由一个vector和一个matrix组成,当用合成函数去融合两个单词时,用第一个单词的vector去乘以第二个单词的matrix得到一个vector,第二个单词的vector乘以第一个单词的matrix得到第二个vector,再将这两个vector送进合成函数生成新的vector 在这里插入图片描述
  • 此外还需要得到新的matrix,是通过下图的方法得到的 在这里插入图片描述
  • 此外再记一下research highlight的内容,是用强化学习来做nlp的。有一个观点我觉得比较值得记:问答系统中,最高概率的回答不代表最好的回答,好的回答要有以下几个特点:在这里插入图片描述

http://www.niftyadmin.cn/n/3658045.html

相关文章

Programming C# 4th. Edition 中文/英文版对照阅读体验

Programming C# 4th Edition 中文版/英文版 对照阅读体验大概是耐心所至的缘故,我那几篇冠以“深入浅出C#”的文章在网络里被广泛转载——这当然是好事!有更多的朋友通过我的介绍认识并喜欢上了C#这门可爱的语言。广泛转载的Side Effect就是我的邮箱时常…

C# 3.0 语言定义文档(微软官方版)正式发布!

C# 3.0 语言定义文档(微软官方版)正式发布如果想精通一门编程语言,你就需要像律师研究法律条款一样来研究这门语言的定义文档(Language Specification,简称LangSpec)。静悄悄地,C# 3.0语言定义文…

NLP学习笔记(8)

这节课的内容看得太快而且有点难,所以这里只是做一下记录,并不详细,作为一个内容的索引,事后需要自己取搜论文了解细节 这是一个想改进tree LSTM的模型 有人用基于字符的模型,也有人用基于单词的模型,还有…

进程编程1 – Unix环境高级编程7章读书笔记

Process Environment1 Process Termination进程的终止有些下面的方法:1. 从main函数return2. 调用exit:exit属于ISO C标准中定义的函数,会执行清理工作。包括关闭IO库中所有打开的文件流(这会导致所有的文件buffer都被flu…

NLP学习笔记(7)

QA系统 希望一个QA系统能同时完成:回答问题、语义分析、词性标注三个任务有两个难点,一个是在这三个任务上各自表现效果好的模型不同,也就是说没有一个模型能同时很好地完成者三个任务;第二个是,在NLP中并没有发现在一…

WPF/E简介

WPF/E是微软下一代Web平台的核心技术,跨平台(支持Windows和Mac),可以在多种浏览器中运行,会自动下载一个很小只有数M的客户端来运行WPF/E代码:WPF/E简介:http://msdn2.microsoft.com/en-us/libr…

NLP学习笔记(9)

目前深度学习的NLP存在一些局限性,比如通过自监督学习学得一个很好的模型真正理解语言的奥义(需要大量的标注信息) 第一个难题就是没有一个模型可以在所有的任务上取得好效果,之前提到的dynamic memory network就是为了来解决 这…

进程编程2 – Unix环境高级编程8章读书笔记

Process Control1 Process Identifiers1. PID0一般是调度进程,又称为swapper2. PID1一般是init进程,在引导过程之后启动,负责启动整个UNIX系统,所有Orphaned子进程都会自动成为init的子进程3. PID2一般是页面守护进程…