发布时间:2020-01-08
2019年12月14—15日,中国人工智能学会主办的“人工智能前沿讲习班” (简称 CAAI-AIDL)第8期“自然语言理解、生成与人机对话”在复旦大学成功举办。本期人工智能前沿讲习班上,来自苏州大学的洪宇教授做了题为“信息抽取的常识与前沿”的精彩分享。
洪宇
苏州大学教授,研究兴趣集中在自然语言处理和人工智能,具体涉及信息抽取、篇章关系理解、多模态机器翻译及智能问答。主持和参与多项国家自然科学基金重大专项、重点、面上项目,以及市厅级国际合作和基础研究基金项目。已发表论文近百篇,其中包括ACL、EMNLP、COLING、SIGIR、CIKM等CCF认定的A和B类国际会议论文,以及国内计算机领域一级与核心学报《计算机学报》、《软件学报》、《计算机研究与发展》、《人工智能与模式识别》、《中文信息学报》中文论文,已获授权发明专利5项,受理专利6项。合作参与多项国际评测,包括TAC-KBP信息抽取评测,于2014-2016期间,在事件检测和Slot Filling(Cold Start)任务中,曾获得综合排名第一和第二的评测成绩。参与制定事件关系标准及数据标注规范,以及低资源信息抽取、垂直领域信息抽取和跨模态信息抽取的项目指南。
报告导读
信息抽取是自然语言处理(NLP)研究领域的常青树之一,是多项应用研究的重要基础,是与多学科研究交叉(如aspect term extraction)的一种技术。主要包括事件抽取(Event Extraction/Nugget Detection)、关系抽取(Entity Relation Extraction)、属性抽取(Aspect Term Extraction)、槽填充(Slot Filling)、名实体识别(Named Entity Recognition)、实体链接(Entity Linking)这些门类。整体分为两方面内容,我们将首先介绍信息抽取的常识,包括研究背景、常用的神经网络技术以及件抽取、属性抽取和关系抽取的小模型;然后从事件抽取、属性抽取、关系抽取三部分来介绍信息抽取技术的前沿技术;最后进行总结与交流。
以下是洪宇的演讲实录:
首先,这是我们现在所处的一个很大的背景,这是19年的一个主题,它的大概情况就是说我们现在在信息处理领域有一些人工智能等等这种比较新兴的技术,它大概的一个分布情况。这条线应该也有人知道,就是有一个突发增长的升起,这个优势是非常多的,然后很快就衰落,衰落以后又慢慢崛起达到了一个比较平稳的状态。黄色的部分大概是指这个技术有多少年比较热门,在这里看到比较多的就是AI技术了,还有我们比较熟悉的3D打印、机器学习等等。
在人工智能的大背景下,我们自然语言处理它大概是一个什么样的位置呢?就是这个黄圈圈起来的地方,它已经过了峰值了,不过大家可以看这个图,这个是有一个理论,就是说我们从19年做的统计,在ACL领域,最主要的会议投稿量的分布,最后这个数字显示出来,这里大概是18年,这个数量还是蛮多的,前几天10号左右的时候可能在座很多人已经投稿了,不知道你们投稿的时间大概什么样,如果靠后的话可能你会发现已经过了2千,最后几个小时里面有没有突破3千就不清楚了。所以我觉得现在过峰值的这个情况,可能与ACL这边实际统计的数据不是很相符。
仍然是以ACL这个国际会议为背景,我们来看一下主要研究的热点在最近几年大概是哪些呢?比如说18年占35%,热词也体现出来了,11%是信息抽取,也就是我今天讲的相关知识所处的领域。在这个里面其实是有一些交叉的部分,比如说纯粹的信息抽取和机感分析部分有一个交叉的地方,也就是我们经常说的面向情感词或者是关联属性的抽取部分,在这里35%可能要拿出一部分的份额放到IE里面去,大家一会可以看一下这个表,这是17到19年这三年关于IE和情感分析,也就是说论文的收集情况,这是从网上截图截下来的。
比如说属性抽取,它是在情感分析里面有的,在信息抽取里面也是有的,所以这个就是交叉的部分。我们现在针对ALP里面主干的就是事件抽取、关系抽取、属性抽取,还有槽填充、名实体识别、实体链接。今天我们讲的主要是前三项,它会跟后面三项有一些交叉,比如说槽填充我们可以把它认为是一种关系抽取的研究,比如说实体链接可能跟我们经常讨论到的织带胶结等等也有交叉,所以我们就挑三个最主要的进行一下讨论。
这个就是大概的背景了,我们现在进入主题,我们先看一看事件抽取,就是他有两种称位,实际上它们两个的任务是差不多的,只不过是在两个评测下支持的任务。其中这个可以追溯到91年,也就是上个世纪末的时候,再往后就是在本世纪初ACE的出现,这里包含了很多实体关联抽取以及事件抽取相关评测任务,这个评测任务到04年就相应结束了,但是相应的研究却没有间断过,这里有一个早期的背景,我们可能在座资深的学者在前几年还能经常听到话题检测与跟踪,那个时候实际上跟事件抽取他们做这个研究的背景和目的是类似的,他们都想说我们对于一些比较关心敏感的事件把信息收起来。
那个时候因为我们互联网还没有像现在这么发达,数据量也不会像现在这么大,那个时候才会进入基本的分类,是这样的一个时代。想要达到的目的就是把我们关心事件的文档收集过来就可以了。那我们可以想像一个场景,比如说你的领导比较关心医疗方面的相关资讯,那你就把一些文档聚类出来,然后根据分类,然后你就可以给他看了。但现在的数据这么大,可能任何事件你能够从网上得到的信息是海量的,你都把它提供给你的领导他可能也没有时间看,所以就形成了ACE里面的事件抽取,它变得非常精细。
在ACE之后,以ACE为背景的评测,我们事件抽取就是叫Event extraction,但后来它的名字就变了,叫Nugget detection,可能我们后续还会持续较长时间,这里有一个LORELEI的项目,里面我资源很稀缺、没有数据怎么办?我还要进行抽取,还涉及到适应性的问题等等,这个就是比较更加精细化的研究任务了。我们先看一下事件抽取都要做哪些事情呢?这里有一个例子我们先看一下,比如说它的处理过程,你的模型输入一般是一句话,由单词拼成的一串词,它就是要找到一个词是不是一个触发词,它的意思是说这个词直接表达了某一种事件的发生,如果我们把一个词都看作是触发词可不可以?可以的。
那为什么我们还要做这个研究呢?因为我可以指定某几类事件进行研究,需要到文字的句子一级去抽关键的词汇和相关资讯,这个例子有这样一个词,我们可以把它提炼出来,它是表达了一个什么样的东西呢?就是这样一种类型的事件,这边有一个表格里面放的是ACE里面的评测,需要各位去考虑有哪些类型的事件需要把它的触发词识别出来,所以一般是二次判断,这个词是不是触发词,剩下的问题就是你判断它是触发词了,触发了一种你感兴趣的事件,到那么是哪一种类型的事件呢?是基于死亡伤害还是移动等等?这样你就可以猜出来这样的研究它的应用背景会是什么样的。
除了这些以外,它还有两项你要从这句话里面找出来,那个里面我们也有一个称位是一样的,但是它是承认强调我这个实体是参与了某一个事件,是事件的参与者,所以你要找到这个直接的证据和词是什么,分析这个词对应哪一种类型的事件,然后从这句话里面找出来一些实体,你的系统输出来告诉其他人,这些实体是参与事件的。
还有就是这个实体是一个什么角色,比如说一个事件,里面有受害者和袭击者这样两个实体,所以它就会有两个实体的区分,这个任务蛮难的,现在也就是74%到75%左右的识别率,后来它的性能到了80%,之前我们都是在一个点、两个点这样上下折腾。
难在哪呢?比如说我们有一句话,现在有一个词叫“鞭策”,可能在另外一句话里面叫“鞭刑”,同样是有鞭子,鞭策就不是袭击了,那它可能是有另外一个含义,是另外一种触发类型,所以词义非常重要,你要考虑上下文,这样就非常清楚了。为了让同行之间减少误伤,我们也做了区分,因为EE是从ACE来的,ND这个称位是从TAC-KBP来的,但其实都是这些人做的。
我们英文里面有一些词,比如我们经常说你想一想这个事行不行,还有它的另外一个说法,但其实这是一个整体,它对应了一个事件,有时候是拆开的,有时候是合在一起的,这个就是它们两个比较主要的变化,把任务的难度都增加了。除此之外在TAC-KBP里面增加了这个事件真伪的判别,比如说这个事情是真的,就是确切的,还是说你只是一个假设或者是一个否定,这些东西里面也会涉及到一些任务。
另一个会涉及到的就是关系抽取,这个数据是比较官方的,这些数据就是能够让大家去支持一个关系识别。关系识别是什么关系呢?是实体之间的关系,这个篇章当中去识别两个实体的关系是不一样的。比如说这是一个人,这是一个地点,它们两个之间有什么样的关系呢?根据这句话的意思,就有一个变化的关系。这有什么用呢?一会我们看一看他们经常会涉及到的应用场景就一目了然了,总之在关系和事件抽取方面都有一个很一致的地方,就是都要把一句话输入进去,在这个里面要么是找到事件,要么找到已知两个实体关系之间的判别。
还有就是属性抽取,这个属性抽取我们的终极目标是形成知识卡片,大家知道现在的信息非常多,你的领导没时间看,所以就有这些槽,你把信息相应的槽给抽进去给他看,这些都是手动编辑的,希望机器自主去做。从18年到现在都有,关于属性抽取16年里会直接把这个任务定义得很细,是与情感分析之间相关的,所以在18年前后相关的特别多。
这个任务大概是什么意思呢?就是说我希望也是一句话,这句话里面有一个情感词或者有一个关联词汇,我想找到你的观点合乎情感对象是谁。比如说这句话里面我们很容易地去做这件事和这件事,这个简单词对应的就是这个词和这两个短语,这个就是面向情感或者关联找到直接涉及到的对象。我们更直接一点,比如说我们做科学技术处理的抽取,或者是军方敏感词汇的抽取这些都是有明确定义,你有针对性地去进行抽取。
基本上我们三个涉及到的主要任务就介绍到这里,顺便提一下,以后是TAC-KBP还是ACE,它们两个有哪些变化呢?如果大家有兴趣,你们可以没事儿去看一看,他们美国人现在正在研究的项目都是一些什么东西,你就可以找到很多相应的项目出来,你看一看就很清楚了,它跟评测都是有直接关系的,比如说19年的评测里面。慢慢变成了什么呢?变成了医疗药物方面的信息抽取,那大家想一下医疗方面的信息抽取大概是什么样的。
这里还用了多媒体,我稍微说一点题外话,关于多媒体知识库构建的任务,它大概是怎么回事,为什么会有这样的任务出来?比如说我们做抽取,目的就是为了更精准化地把我们的金主最感兴趣的信息快速调出来,那假设我们有一个红海小队到了一个人迹罕至的新部落,他可能会遭遇到一个什么样的问题呢?他去抓捕一个匪帮的头目,可能他到那里语言不通,清华大学正在保护一种女书的文字,就是这种文字只有女人认识,男人不认识,他们那个村男生不是字,只有女人识字,学习也只有女人学,男人不学,这个为什么会传下来呢?就是女孩子在劳作的时候唱的歌谣,所以她们就会传唱下来,给另外一个女生看看是这个意思,男生就不会去学,这个文字是非常少的。
那相同的情况,我们到了一个人迹罕至的地方,那里的人说话你也不懂,你需要抽取的信息就是人、时间、在哪、干什么这4个信息,但问题是你的语言没有任何标注,甚至你就不懂,这就是一个问题,你没有标准数据,你整个模型的适应性不行,那怎么办?所以你的翻译人员也不OK,你带去的机器翻译NMT神经机器发言专家也不OK,所以这里就有一个做多模态的想了一个办法,把你的想法在地上画出来,当地人也听懂了,他也开始在地上画,这样就告诉你老乡正在思考。
这个评测完全是为了支持刚才提到的这样一个项目的应用背景,是非常实用化的,所以我们说到19年的时候,关于信息抽取它的整个研究焦点,慢慢在任务上来看是非常具有领域性,非常精细化,同时它把多媒体、多模态的问题引入进来了,多模态也不仅仅是只是信息抽取引入进来,其实很多都引入进来了,包括做机器的图片注解,我刚才讲的并不只是一个笑话,其实也是可以实现的,你这样做了就可以出来一个基本的模型。
总之,到现在我们做了很多。比如说事件抽取、关系抽取、属性抽取。事件抽取考虑的是事物和行为之间的关系,关系抽取是考虑事物之间的关系,属性抽取是情感与事物之间的关系,所以这三个任务已经概念很广了,把情感、行为和事物之间的关系都覆盖到了。
我们来稍微看一下这个研究背景。这些东西我们做完了以后能干嘛呢?就是抽取,比如说你有整个的知识,然后你可以去抽取,抽取完了以后可以用来让他去进行管理,然后你可以用来支持KBQA这样的一个东西,然后你再循环,进行知识的管理和收集等等。
除此之外,这些抽取技术就有我刚才提到的,就是你可以让他去生成一个知识卡片,就是他在商用和军用方面、国家安全方面都有帮助,因为我们不可能给他很多文本让他慢慢去看,我们只是把知识抽出来让他去看,还可以进行人机对话等等。
下面就进入技术环节了,我尽量把一些复杂的东西简化,把它的功能和玩法给大家传递一下,我们不会去推导公式,时间来不及。
首先,我们看一下刚才那个人出来的统计数据,第一个数据显示的是现在的训练模型已经不是热点了,因为有很多的数据我们怎么去用,另外一个就是下面的图会告诉你,现在我们用的神经网络哪些比较时髦,在18年的时候,我们原来肯定是做语言,肯定是循环神经网络比较多,那为什么卷积神经网络变多了呢?就是基于图的神经网络技术出来了以后,因为我们要做KB和KBQA,有这种上层应用的需求我们下面也要做KB,也要去分析他,也要做编码等等一系列事情的时候我们就要考虑图的问题,因为他们本身的问题就是图构的或者是异构的图。图和卷积之间是很好的一个默契在那里的,等一下可以看到。
这个是挺挠头的一件事,我们用神经网络去解决信息抽取的问题,可能要把很多的知识都搞通,实际上这个发展是特别快的,比如说在11年ACL发表的论文还是特征工程的,这种玩法我们就完全不可能再进行下去了。我们来看一看,这边是经常用到的神经网络,比如说RA系列的、ZA系列的,下面还有侦查等等这些网络,如果你拿着这个图放在自己的座位上,今天搞明白这个,明天搞明白那个,慢慢就都搞定了,从最上面的结构性神经网络开始。
下面是基于图的这种神经网络,有很多的名字,这里有一个小云朵,大家可以看到现在比较时髦的有哪几个,就是图神经网络的一个雏形,这边有GAT,这里的GAT跟我们说的GAN不一样,这里是指图注意力神经网络,也就是GCN,反正就是把这些东西慢慢一点一点往图里面去拼,会产生很多的变化。
还有一些传达工具的技术是在这边,这是其他同学帮我总结的,大概区分的方法就是这个地方是LOOK-UP only的,就是这个里面你输入一个词,它就给你输出一个向量来,里面都是数字的向量,你就可以把它拿过去放到神经网络的输入层,这些东西是在输入的部分要用到的。
右边这个黄色的东西,很大很恐怖的,他不只是会帮你大规模的训练里面产生这样一个桌面,除此之外还可以帮你形成一个模型,这个模型你去微调一下,放到实际的应用里面,可能上面还会集成其他的RNN或者是CNN网络,让它们一起来协调工作,这个变化会非常大,它的性能提升也很大。
为什么会产生这样的情况呢?为什么在这里相当于是一个协同的呢?这些工作很快就出现了一系列的,包括微软、百度他们都在做,足见它的重要性,产生了这样一些模型。为什么我们要产生一个可以动态微调的模型?它的作用是一样的,就是我在去输入端的时候把字符转化成机器可读的机器表示,为什么要这样做呢?大家如果没有仔细揣摩一下这些的用意是什么,如果你只是拿来用的话,我觉得可能性能好了你也不知道好在那,性能差了可能也只是一个好点子,你就放弃掉了。
首先把这些技术从头到尾快速过一遍因为后面还有报告,也许我这些回顾的东西会提供一些帮助。大家知道一定是你要玩神经网络,肯定都要有做编码,编码完了以后做计算,计算完了希望再转化。
我不知道大家有没有关注过这个词的来源,当然的确encode词在的,但实际上它是加密,然后这边还有一个是破译密码,也就是说我为了让机器去解读一件事情,帮你做一件事,首先要把你人类的东西,比如说语言汉字,这个1用机器的表示到底是什么样的我们不清楚,转化成了机器语言,它有会计算了,处理完了以后再给人看,然后在解码成可以看得到的,当然这个过程你可以做语音,你把音波给它,它立马解码成另一段音波,或者是图像你也可以给它,它就给你转化成机器语言。比如说我们刚才说的场景,你到当地没办法跟人沟通,只能画图怎么办?其实图在各种语言之间都是相通的,可以把它通过编码和解码生成出来文字,也可以跨模式来用这个。
这里有一个问题,就是信息总量不变的这个事,不知道大家有没有留意到,在考虑编码解码的时候,如果有空的话,大家可以去看一看这个信息论,里面有很多值得我们深思的东西,比如说你有没有想到我们的信息总量是不能变的,1+1等于几?其实这边是2,信息量是一样的。如果在这个过程当中有信息流失就算不准,如果这个过程当中增加了一些噪声进去,那信息也算不准。所以我们要套用三板斧的时候要考虑到这个信息量是否趋近或者正好,这个事是很难办的。
我们到第二步,肯定是要考虑到词向量,这里有一个我不太赞同很多人的想法,跟大家分享一下。我们通过模型,最终还是希望把一个符号,比如说语言符号转化成一个表示,这样计算机就能计算了,在这个高位空间里面一个词通过变化和转换,一定会到最后一个点,我们过去经常跟大家讨论,这个点就是这个词了,所有词在空间里面到处都有点,我们有一个基本原则就是反义词或者关系词要离的足够远,这样才能有意义。
其实应该用空间来代表一个词,为什么是这样呢?我们来考虑这样一个东西,它大概的意思就是这样的。我认为这个词中间是代表了一个词,平时我们把它定量空间当中应该是在这个空间内部,为什么这样来说呢?我们举个例子,比如说人这个词,一个点可以概括它吗?肯定概括不了,我们有工人、农民、工程师、商人等等,这一个点就可以概括吗?概括不了。
我们可以这样来想象,如果你这样想象的话,我们一个词在空间当中是有一个范围的,这个范围实际上是对应于我们这个词的,我们这个分布式表示,它在各个维度都有一个具体的数值,实际上可以应用到空间当中的一个点,这个点是在一个小空间的中心,它概括了代表的相关特性。
我们再来看一个例子,比如说我们有4个点,4个点每个点我们经常会做这样一件事情,就是说线性变换,然后再进行激活,这个也是同学们帮我整理的,如果大家感兴趣可以去试一试、玩一玩。为什么我们一定要做线性变换呢?这些是在干嘛呢?如果是这个词足够理想的情况下,这个Wb存在的价值,这个W相当于一个变换,我要控制向想在空间上转动,那这个点就变了。这个b就相当于平移或者是上下左右移,它也会变,为什么要让它变呢?总之Wb它的作用就是让它产生变换。
激活这个地方我们先抛开,因为这是神经网络里面肯定要考虑的一个问题,就是说你单层的神经网络就不用考虑这个非线性变化了,就是加一个激活,你要是层数多的话是要加激活的,为什么呢?大家上网去查一查非线性变化和线性变化之间的区别很快就解决了。我还是说一说Wb的问题为什么要让它变,这个空间实际上是真正一个词应该在整个空间当中的一个区域,一共有4个词应该有4个区域,然后我们算W的时候是旋转,然后再平移,原来如果我们只考虑它们4个中心点的话,我们这个模型就根据这4个中心点去解码,这是4个正方形,也就是说我们在最开始接触的时候经常做的一件事,embedding我们直接把每个词拼到一个大向量的表示,你表示完了,它一解码是一个正方形。
但是我们做一下变换的话,比如说这个点往上一点就是旋转了,成了w,这个点往下一点,就是这样一点点去变,变换以后这4个点还是构成了一个句子,它的意思好像就变了,不是正方形,它变成了三角形。那为什么要这样做呢?大家想,如果词固定不变就是那个点的话,那你形成的句子表示或者是更深层的表示,它的意思也就那样了。
我们看一个例子,也是我们的第四步,大家很熟悉的一个RNN的神经网络,这是最基本的RNN,这是加了长短的模型RNN,这是双向的。这个东西大家忽略,因为这个图是我从网上拿下来的,这个应该是作者的水印,我担心他这样的签名很敏感我都做了签署文献。我们可以看到他把这个信息输入进去,直接输入进去了吗?没有,它成为了一个U,然后我要考虑它前面的状态,这个状态直接输入到这个里面了吗?没有,它直接打了这个,所以我的公式和我的前一个状态分别成了W和U,我们做了一个变换。这个就是我们刚才的问题,我们为什么要这样来变换呢?
大家想一下,RNN的基本作用是什么?每个时刻第几个词这样,每个词我要对它进行表示,我没有用你的embedding,直接训练出来的,我要把前面的状态加进去,也就是前面这几个词的语义表示,然后把信息加进去,不是完全加进去,而是有条件的加进去,这个条件是靠W来控制的,难道就是这么简单吗?不是的。大家在用RNN的时候有没有经常遇到一个问题?就是你在这样的数据集上去训练测试非常OK,但是拿到另外一个语言或者另外一个领域的数据集上去,这个结果一落千丈,为什么呢?我觉得问题就出在U和W上面。
它们两个本身的目的是什么呢?是我刚才讲了,你输入了X是一个空间上的点,不对,我这个U要给你变一下,就在你这个词应该对应的空间里能否找到另外一个点,就像人把这边变一下可能就变成了工人,再变一下可能变成了警察等各种各样的人。但这个语义信息可能也不准,那你形成的这个词也不准,那你前面的词进来,我也要用W给你控制转换一下。
回过头来,为什么说我们的领域适应性不好呢?我们的模型设计得很好,其实不一定只是这么简单,我们来试想一个问题,大家看一看,你在进行领域的置换的时候,为什么说有领域特性呢?我们举一个例子,比如说汉字里面有一个字叫“打”,打人它的意思很明显,一打啤酒也是这个打,代表12个,打酱油大家也明白,可能是混日子,也可能真的是打酱油,还有打毛线等等有各种各样的打出来,还有打扑克,那你是出牌。
现在我们试想一下,你用的训练语调往往具有领域性,比如说都是新闻的,那这个新闻如果与战争、冲突相关的时候,这里出现“打”字的时候,这个打字在语义空间里面是有倾向性的,它倾向于袭击的含义。你在另外一个领域的时候这个模型就不工作了,因为你另外一个领域里面的U是要让你的模型工作,这个模型工作得好不好与训练直接相关,你在新闻里面打都是一个意思,上下文也都是一个字,所以你把U加进去控制以后,它是要偏向一个比较特殊的含义了,你用这个U去到另外一个部门去,比如还是这个打字,它就变成了棋牌类的,我打一个A、我打一个同花顺等等,这个时候这个打字完全不是一个意思,它就无法达到效果,因为你这个U已经被你训练好了,你把这个打字给它,它只是将打这个词的含义向小空间里打击的意思去偏移,W的意思也是这样。
所以通过这个例子,我希望大家跟我形成共识,就是说我们看到的embedding只是它真正含义的一个部分或者是一个中心。
上面的这个模型就是对RNN一个局部的修正,就是它求解隐状态的时候一个修正,它增加了输入门、临时记忆,这是横贯始终的记忆,它把人们记东西、忘东西的情况用这个模型给模拟出来了。
下面这个双向的大家也应该很熟,比如说我在考虑当前这个重要词的时候,我除了embedding输入进来,我还要考虑前面的上下文,因为整个运行模式是有方向的,所以你按照这个方向来只能考虑前面的了,所以我对于一个词义的理解,如何从embedding转化成一个语义,是需要上下文的,上下文的含义是怎么传递出来的?就是通过前文的隐状态进行转换,就把这个信息加进来了,这个加就是这么一个加法。那前文加进来了,后文怎么办?所以后面再来一次,所以这个词的表述是前文和后文的隐状加上它自己一起搞出来的。
接下来是第五步CNN,这是大家都比较熟悉的,就不细讲了。这边可以考虑成是我们屏幕上的像素点,每个点有256色,就有256个曲直,所以会变得五花八门,按照这种分步模式过来。这两种中间是经过了这里,然后产生了这样一个结果,再进行maxpool转换成一个结果然后再进行非线性变换,再进行卷积产生了这样个结果,反正就是经过了很多次的转换。
但是有一个事情可以说一说,比如说maxpool在干嘛,卷积是在干嘛,这是一个分布式的情况,然后它找到了这么一个盒,对应的这么大,在这个里面他会挑一个最大值,9就是在这里了,那为什么要把原来图像分布式的情况转化成这样呢?这个就是maxpool了,我拿出一块挑一个最大值,我们认为他是在里面挑最有代表性的特征出来。比如说这个鸟,我们正好有一小块扣到了它的眼睛上,我们现在做特征提取,我们用maxpool,把里面最有代表性的颜色提取出来。
那另外一个部分就是卷积了,为什么要做卷积呢?卷积也是有一个滤波器的,这些东西其实就是一个小滑窗,从左到右按照一定的波去滑,然后把这个里包含的像素点拿出来,然后成为了一个矩阵,这个矩阵都有参数,CNN的训练过程主要是在参数的训练步骤里面。他的这个训练之后有可能还是保持原来大概像素点的总数在这里,有可能我进行了一个压缩,我把它缩成一个点或者是几个点这样的。那为什么要这样来做呢?他就要考虑到一个局部上下文的信息了。
比如说这里我们做了maxpool,我们把眼睛变成了一个黑点,脸部红色的地方就是用红点。最后我们把它的红点、黑点相对的位置关系,用这种东西卷出来,再用一个数值去代表就可以了。这个过程是在干嘛呢?是将一个局部关联性的特征统一地表示成一个分布式的数值或者是向量。所以卷积你看它很复杂,其实里面就是两个套路,一个是我去找有代表性的特征,一个就是把关联性的特征进行一个转化,转化成一种数值表示。
那我们在这里有一件事情,它在这里举了个例子,比如说我们会输入不同的字符,都是在屏幕上的,不是我们正常去考虑语言的问题,这是在做图像语言识别这个方面的问题。我们画了一些X,那我们想去识别这个东西到底是不是X,有这么多的X,你在识别的时候能不能识别出来其中某一个图是X呢?所以他没办法去解决,那就需要CNN,然后把这些局部特征拿出来,再把这些局部特征放在一起卷起来,算出来一个数值或者是向量,进行概念化的抽象,然后这些图慢慢在模型里面就可以达到很类似的效果,我学到了这样的图以后可以得到不同的手写体X。所以CNN是一个不断抽象的过程,有点让它变得越粗糙越好,这样对于我们的识别是有帮助的。
刚才这个RNN作为对比可能它就不一样,我们在考虑每一个时刻,而不是考虑全局,全局最后可能我们也有一个拼起来,但是最基本的时候我们考虑局部的表示,这个局部的表示我们希望是信息量越多越好,把前文转化一下加进来,后文转化一下加进来,信息量越多我对它的表述就越精确。这是RNN和CNN之间的整体思路差异,可能大家需要区分一下,在使用的时候针对你的任务有所选择。
CNN应用的原理就是这个图,它大概的用法是这样的,每个词看起来像一个矩阵了,这个矩阵不会举这么小的一个模型,它是按行来的,比如说三行做一次卷积,每次不一样会卷出来不同的结果,就是这样的一个过程。
卷积我们搞定了,来一个比较费劲的东西,这个就是我们刚才说的,把图搞进来了,就是有GNN、GCN、GAN,就是我们刚才说大家一定要区分,这个不是对抗网络,这个里面基于图的网络里面是指的图注意力神经网络,所以大家有时候写作文的时候不要直接上术语的简写,可能就蒙了,可能你的GNN全称没有写出来你这篇文章就挂掉了。
我们来看看GAN是怎么做的呢?它做了两层神经网络,第一层是这样的,这是原来的图,我要对它进行表示,表示完以后再进行解码处理。逐点逐点地去表示,我看A的时候会看图像当中相连的BDC,假设BDC是词的话,它都有词向量,它做的是把BDC加起来,注意不是拼起来,拼起来是三个向量拼成更长的向量,加起来是第一维和第二维加起来的数,最后还是一个等长的向量。加起来以后我把周围图当中与你有联系的信息进行统一表示,这是第一层干的事情。
那A干嘛呢?A自己也有embedding,然后我把它三个点形成统一的表示,然后变化一下,变化完再加在一起,这种表示的方法。他们在这个图里面选择的是相加,第一层这样做,第二层还是这样做,所以大家看看还是有了神经网络的一些基本流程,我每一层上去是不是都在循环做相同的一件事情,做的相同的事情就是我把连接点,然后进行转换,再与你自己的转换结果进行相加,每一个点都要这样去做,我算A的时候用到了C,我算C的时候还用到了A,就是都要做。在循环做这件事情的时候就把每个点的语义表示不断去加强,最终加强到一定程度,你觉得够了就可以了,比如说他加强只做了两层,这是GAN一个简单的模型,它的特点就是我会考虑你的结构,你的边,你的相邻节点之间是有关的,没有关的我是不考虑的。
我们来看一下GAN的特点,在目标节点和邻居节点之间进行注意力计算及加权,实际上就是多加了一步而已。那这个就是比较复杂的东西了,是GCN的一个基本流程,如果你要是看上面的注解也一样,你会想到我们刚才做CNN的时候最基本的操作,一个就是卷积,一个就是实化,然后继续卷积、实化一直下去,得到统一的表述,后面这个地方全连接层,然后就输出,其实前面都是在编码或者是在编码上面加一些操作。
在这里面它是作用做的呢?一般会维持三个矩阵,第一个矩阵是表示这个图当中节点与节点之间有没有边,比如说十个节点每一行代表节点,每一列代表节点,那你的第I行和这一行的交点,如果交叉的话也就表示它们之间是有边的,这是第一个矩阵。
第二个矩阵,我们刚才看到卷积神经网络这个部分,卷积神经网络处理语言的时候有这么一个东西,每一行是一个词向量。
第三个矩阵,其实就是一个可以进行训练学习的,它们三个凑在一起达成什么效果呢?它一定要考虑有边的,所以这个矩阵乘下来,如果这两个节点之间有边那我们就给你卷到一起去,卷一次得到一个数值,我再实化,我再乘上W,如果没有对图整个节点总数进行减少的话还是这样的,但实际上节点上面的数值已经变了,这是卷积。卷积完了以后实化,它可能把其中几个临界点当中最大最好的点留下来,其他的就减支了,所以这个图变少了,依此类推,后面又卷积,然后再实化,最后再转化成向量,就是这个样子。所以它跟CNN之间有非常密切的关系在里面。
这个就是注意力家族,基础知识马上就要结束了,CRF稍微提一下,我们一会要再的很多事情都是跟CRF有关的,虽然放在这里有点牵强,所以还是要一下。
大家有没有详细考虑一下注意力它的目的是什么?我想首先介绍一个在信息检索里面比较有代表性的词就是相关性,我们扔进去一个查询,然后他给你反馈结果,因为你的显示器屏幕很小,他不可能把所有的详细都给你看,有时候里面是对的,有时候是错的,他自己不清楚,他想都给你看,不可能,这是小视界现象。所以他就给你提供一个表,里面还有一个滑轮,你可以上下去看这个表,你可以尝试一个表里面显示10个结果或者100个结果,如果你选择100个结果的时候他就会给你拉一个很长的表单。
那这个表单就有问题了,如果你做检索的话他们会告诉你,一般很少有人看检索结果三个以下的,所以前三个检索非常重要,那个表单放在这儿只是提供给新人去慢慢挖掘,大部分情况下前几个就够了,不管对不对前三个就够了。这里就涉及到排序的问题,谁排在前面?当然是广告了,人家付钱嘛,那第二个就是我们的相关性,哪一个相关性大就排在前面。
下面我们解释一下,这是在神经机器翻译里面经常会用到的一个基本架构,这面有一个序列,它处理的是原语言,比如说英文,这里也有一个序列,它处理的是中文,就是做英到中的一个翻译。在这个过程当中,我们前面叫做编码,所以它是非常对称的编码与解码的语言结构,处理原语言的时候就是编码,破译的时候就是解码,把它转换成另外一种语言。这里就有单向的GRU或者是RNN,我的embedding进来乘U,自己先变一下,找到我自己在语义小空间里面最好的位置,你很可能因为这种变换,导致你的模型当前的数据里面就可以,另外一个数据里面就不OK。所以你要好好考虑一下。
最后我们把这两个加起来,这个就表示完了,这是最简单的结构。那解码的时候我们就是这种传传传,传到最后的时候,我们不考虑了它的产出隐状态,比如说又产生O,又产生H,你可以用O也可以用H,他们都不用,因为他们想要做一个句子级的表示,把这种句子级的语义通过信息往后加,形成整个句子的表示,然后它把这个东西做解码的初始化,就是你把整个句子意思给他,他来猜在另外一个语言里面应该先生成哪一个词,然后我想这个词的前提条件的时候下一个词应该是什么,就这样解码就产生了,所以是这样玩儿的。
那我们注意力神经网络是怎么搞的呢?比如说现在在解码阶段,当前时刻我要马上生成一个新的词,它与我的原文是有一定一致性的,那我要生成当前这个词的时候我要考虑我前面生成的词是什么,他做了这样一个操作,就是前一个时刻这个词的向量我去原语言里面每个时刻的向量去做一个相关性,它的目的是考虑什么?我要生成一个词,你前面的一个词已经生成完了,我假设你准确,那我到原语言里面去,跟每个词算一个相关性,大家想想检索做的事情是什么?相关性做完了肯定要排序,当然他不用去排,这个直接去用就可以了,这个相关性体现的是这个原文里面的词与其他领域的一个相关性,那这个就成为了相关性的表示。
这个相关性就是注意力,因为我要生成下一个词,原文当中的这个词和这个词关联性很强,那我想在生成下一个词的时候把原文中相关性很强的词更加凸显出来,你不是算了相关性的分嘛,这个分是整个乘回去,这个乘是要与每个词都要乘,也就是说它要被提高整体都提高,它要被弱化整体都弱化了,这个就是分布。然后再按照这个方向去取合,然后得到了一个新的句子表示,原语言的句子表示。在解码的时候可以多用一种东西,原来我只是用前文生成的状态为条件来预测下一个词,现在我有了一个新的东西,就是我把原语言里面整个句子都拿过来了,而且这个我还是经过筛选的,有些重要的信息凸显出来了,有些不重要的信息给你弱化了,所以这个注意力是这样操作的,它每个步骤都这样做,这是我们经常传统用到的注意力。
这个地方之前我不太明白,前几天我跟我的学生们一起讨论,我一直以为self attention就是这个东西,结果发现不是。它是用到哪?就是用在这里的,然后又用到这里,还用到其他的一些模型里面,就是一串就都出来了,我们现在只看最基本的,就是这个self attentoon也要做一个表示,比如说一个词要表示它,或者是一个短语或者是一个句子,大家看这三个X都是一样的,然后成了三个不同的矩阵,那得出来的结果一定是不一样的,所以得出来的结果是Q、V、K。然后Q和K算一下attention,然后得到一个分,我们要先算一下相关性,相关性就是我们的分,我们再回去,看看不是要提高或者是降低,你都是X,乘了三个不同的矩阵就得到了三个不同的东西,你管哪一个叫Q都可以,但是Q和K一定是要算注意力的分,还要再乘回来,你看都是它自己在算。这面我们是用解码端的一个隐状态跟编码端所有的词去算,然后再加权加回去,这个都是自己在跟自己算,只不过成立不同的矩阵。
这个挺难解释的,后来我就想了一个办理来说明self attention的原理,大概是什么样呢?就是你在照一个镜子,多面镜,反正都是你自己,我这么照好胖,这样照锥子脸,好像都不一样,那到底你长什么样呢?好像我这样照鼻子不太一样,我这样照嘴巴好像不太一样,就是我用两个镜子,里面的每个矩阵就是镜子,照出来的是不同的东西,但是你镜子不管怎么不同,出现的哈哈镜,大部分情况下只有微弱的差异,那你用Q和K去算的时候,往往会把你们很近似一致的东西给凸显出来,这个就是我们的分,然后你再乘回去就可以对自己的鼻子加权,我要凸显自己的鼻子、眼睛、嘴。那self attention好了,那thinking attention呢?总之同样的东西你多做几套矩阵就可以了。
那我们先讲一下CRF,它里面有没有神经网络一样的东西呢?有。就是这里会乘很多的W,就是乘很多转移矩阵的东西,这个是神经网络,有时候看起来很像,但是我觉得它更像是一种在策略层面做出来的模型。什么意思呢?这个里面是公式,里面包含两种东西,一个是蓝色的块,一个是红色的块,蓝色的块一般是叫发射,红色的一般是转移概率。
这两个有不同的作用,我们首先来讲转移概率,上面有一个神经网络,比如说这是每个时刻产生的一个词,要对这个词打分做分类,在这种情况下,等一下我们会做一个BIO的标签,我们再去看那个。这个时刻我有一个结果求出来,然后我这个时刻应该选择哪一种结果呢?我有4种结论去进行分类,比如说到底是哪一个类,要给它打标签,在这个时刻我要打哪一个标签,每个时刻都要做一个决策,那这个怎么办呢?我当然是哪一个最大就用谁,但是用CRF就不一样,它考虑的是我当前时刻产生的结果一定与上一个时刻产生的结果是有一定依赖关系的,这样解释起来稍微麻烦一点,总之它要达到一个全局整体最优的结果。
它的解释方法最好的是田忌赛马,这个就不用讲了,肯定是你要用最差的马跟人家最好的马去比,你用你最好的马跟他中等的马比,你用中等的马跟最差的马比,这样就赢了,否则你铁输,你三个马都比别人的差,所以这是一个策略的问题。那现在我在这里到底用哪一匹马的时候,我要考虑发射频率的状态,我还要考虑转移概率,所以通过发射概率和转移概率,我们可以进行一个全局最优的解。
下面我们就进入到了三个小案例,就是每个模型我们都用一个简单的神经网络模型连同着它的输出来看看是怎么做的。首先就是事件抽取的小模型,这是一个双向的LSTM,等到它的表述出来了,然后我们直接投影输出结果上面去,比如说在这儿已经表示完了,这里的乘项要投影到所有ACE里面预定意义的事件当中去,这是一个类别的空间,你在最后解码的阶段用一个全链接层,就是要把你产生的一个俞恩编码通过全链接层往最终的结果,你需要的结论上面去投影。投影到这儿会得到一个概率,然后你挑最大的,在这里实验抽取做的事情实际上一个是是不是触发词这么一个意思,另外一个是是触发词以后有什么意思,所以我们多一个类型就可以了,原来预定类的是已定义的,根据你的表示全链接层投影到每一个层上面去,概率最大的就是你要选的了,这是一个很简单的小模型。
我们来看看这是怎么玩儿的,前面都是一样的,双向的表示,然后是全链接层,这个时候也要投影到一个类别的空间上去,这个类别不是我们刚才讲的ACE类别了,就变成了一共是3个类,就是BIO,B代表的是我感兴趣的那个属性词串的开头,I代表的是我感兴趣的那个属性词的中间词,你中间的可能有很多个,结尾也是它,O就是一个普通的词,是我不感兴趣的词,所以它实际上仍然是对每个词进行一个表示,表示完了全链接层,然后投影到BIO上面去,每个词都要投影一次,有一个值,然后取最大的。
在这个里面按理说就完事儿了,按我们刚才看的事件抽取的方法我已经搞定了,你这个里面哪些词是B,哪些词是I,我把BI标签对应的词提取出来就行了,反正是神经网络学出来的。但是不行,一般我们去看ACE上抽取的文章,后面都习惯加一个CRF,CRF的目的是什么呢?我们来看一下。
比如说,我们说B表现开头,I表示一个中间词,那我们想一下,先出现I紧接着出现B的概率大不大?想想田忌赛马,我下一个标记已经跟这些表示学习没有关系了,已经完全出来结果了,所以我要做一套策略,这些是你打的分,我看0.5最高我就标O,在这儿0.3最高我就标B,但实际上不对,这是发射概率。我们还要考虑转移概率,就是每个类别之间转换的可能性有多大,它可能会是一个W,所以这些都代表了W的矩阵,上面是参数,都是需要顺应的。
总之,它的目的是说每一个时刻,这个结果我根据你当前输出的一个发射概率和我通过网络里面的参数W算出来,跟你前一个标记的概率依赖关系,一起算出来的,所以想一想田忌赛马,他是要找到一个最优的路径,把每一个时刻的标记找出来,也就是说在这种情况下,可能你原来这里面得出来的分类概率,最大的那个标记不一定最终回被选出来,比如你可能是O最高,但实际上我们选出来的是I,不是按照这个分来的,因为只是一个局部的现象,表示了局部的概率,就像这个马就是一个中等的马,但是到底在这次比赛当中用不用它,我要考虑到前面一次是用的什么马,所以这是CRF的应用。
这里有一个问题,大家觉得分类标记好像很简单,实际上它可以更加复杂化一点,比如说你做实体识别的时候,这些是可以不断变大的,做更多的分类,它不仅可以把目标提出来,同时连分类也做好了。
这是一个关系抽取的小例子,我们都用了相同的神经网络,它跟我们前面看到的两个神经网络最开始的不同点会出现在哪呢?就是它的embedding会比较多样化一些,比如说我们用词的embedding以外还要用实体的embedding,这些都是基本讨论,上来都得用,它要表示实体与一些词的相对位置关系,这是比较重要的,这是考虑实体的。
这个地方经常有人问,你做实体的embedding你怎么知道这是实体?你在测试,你是不知道的,你怎么把它embedding出来的呢?实际上这样的,就是说它在做关系抽取的时候,这个实体是作为已知条件的,就是在ACE里面,当然你也可以把它当做一个临时抽取的过程,这个里面我们对每个词都来做一个embedding,如果你不是实体,那我们会有一个表,它也有一个对应的embedding,是实体的自然就会按照你的实体类型去打一个标签,比如说人,他给你一个embedding。
这个基本上就够了,我们做关系抽取的时候就是通过STM,我们把这两个方向求出一个embedding,然后把它们两个乘在一起或者是加和进行一个表述,然后最后的结果就出来了。
还有一个小案例,我们前段时间做了个联合抽取的小模型,因为两种都是用的ACE的材料,我们就想借助两者之间的互补性来形成一个统一复杂的模型,所以这边玩人,这边玩事这样来做的。它们两个之间要贡献一部分的信息过来,共享什么呢?假设这边有个模型已经做好了事件抽取,你找到了这句话里面,它们两个输入的都是同一句话,在训练的步骤里面,这句里面哪些词是事件类型的,我都已经得到了,在这边进行输出,会放到关于抽取的输入里面来,然后我们在这里面做attention,我把你输出事件的表示,包括你词的embedding和事件类型的embedding拼到一起,跟我们当前所有的词去算一个attention,然后把attention乘回去,形成了一个新的表述,这个表述再放入到双向LSTM里。
然后这边它们两个实体是什么关系我已经得到了,直接把它放到事件检测中去,然后放入输入端,整个思路就是这样的,我们经常看到两个人之间有一种关系,这种关系往往反映了他们两个人之间会做什么样的事情,比如说两个国家要么就是战争,要么就是合作,所以实体之间的关系对于这句话里面很可能发生的事件是有一定指导作用的。我们的实践结果做下来,关系抽取对于事件抽取的影响不是很大,但是事件抽取的结果大概有3%去提高了关系抽取的结果。
现在我们就进入到前沿的技术部分。首先我们来回忆一下任务,这个任务是这样的,事件抽取我要把这句话回到语句里面去,是不是一个触发词,然后再进行分类,我们也可以一起做,我把RNN分类做一个单独的类型,扔到我的事件总表里面去,专门做一个不是事的类型,做一个多分类就好了。
这是16年的付博士(音),他我是的师弟,这个模型是16年做检测的,我为什么把这个挑出来呢?并不是说我一定觉得他特别好,而是在下面的过程里面我希望各位同行能够看到一点,在最开始从15年开始,很多神经网络模型就开始陆续投入到事件抽取和检测当中来,最开始是属于尝试性的,我就是用了这个模型,没有其他的原因,我就用了它了,因为它好。后续有一些变化,就是大家有使用神经网络当中的新经验就加进去了。
这个很简单,数据在这儿,逐题去进行装向编码,然后用了CNN收集,所以它是把RNN和CNN全部用了,这个是卷积神经网络,卷积神经网络把前面几个词刚才我们讲的CNN是一模一样的,没有任何的变化,我就把前面几个词打包,我做一次卷积,生成了一个向量表示,然后最后再变成一个点,最后这是整个一句话的表示放进来。三个词一打包是我要做多次卷积的,我会用不同的卷积盒,然后再用maxpool,这是一个词的表示,刚才说错了。
卷积形成的表示跟双向LSTM的表述拼到一起就形成了这个词当前时刻的表示,然后后面就输出了,这是16年的。这个还是16年的,这个区别就是在这里做了一个分支,它的前提条件是我会假定所有的句子里面会包含一些规则,先拿出来生成好一堆词包或者是短语包,这个包里面的每个词都有可能是触发词,现在来了一句话以后先去看一看有没有这些词,当然你这个包如果一开始收的不全就会有错,如果理想的情况下这个包是工作的。
大家回想一下我们刚才讲的例子,鞭策和鞭打,鞭打在目前的社会中一定是袭击事件,但是鞭策不是袭击事件输出,鞭策可能是在教育、培养,这个东西是不是一个事件?是的,但是它没有在care的事件列表里,所以它是也没有用,我们不会去抽它。也有可能这个词会出现什么情况呢?就是这个词本身没有事件,那你这个表在一开始收集的时候,你把它作为侯选的地方一定要加入神经网络进行更深入的学习。
它的表述方法就是我找到了侯选前面的这几个词,用一个单独的RNN,这个词假设是一个短语,我又用了一个RNN,这个词后面的那些文字片段我再用一个RNN,就是三个RNN分别形成它的表示,拼接拼到一起,然后做了一次全连接,然后又做了一次全连接,就结束了。这是16年,把神经网络的模型套用进来。这个是在事件抽取方面做了很多的工作,这个工作可图就可以看出来,是特别夯实的工作,它把传统解决事件抽取的经验全部都用到了神经网络上。
怎么来看这个图呢?下面的就是一个长短期的基因模型,这是输入的句子,然后每个时刻就是这么一条,到这儿就是两个方向,RNN搞一下。然后输出了,以这个为例,他要用神经网络来解决联合抽取的事情,什么叫做联合抽取?刚才讲事件抽取好几个子任务,一个是触发词,一个是触发词的什么类型,那你的实体比如说有五六个,那哪两三个来参与这个事件呢?在事件里面的角色是什么呢?每个都做了,这个是是否是触发词,分类也在这里,是否是轮缘,轮缘的角色都在这一行。所以它都一起来进行表示,表示完了以后进行训练,这个就是联合抽取了。这里就是说我来考虑你的实体是不是事件里面的参与者,他是要有相关的,所以这里要逐步地去进行表示。
时间有限,我先讲一下我们做的模型,就是这么简单。它的意思大概就是这样的,这是18年的,这是用了对抗了,这边就是一个正常的双向LSTM,其实这是一个多层点GMLP,这个通道就是很正常的神经网络,然后就预测了。这是一个时刻的X,都是一样的,这个东西就不一样了,就是这里面我们用了生成对抗,就是GN,这个不是生成对抗的GN,也是要做表示,这里做判别,我们就知道对抗型网络里面基本的两个原则,我要有一个生成期和判别期,生成期一定要做假,判别期一定要再对。这是做伪钞的,这是银行职员,他一定要善于表示做伪,他一定要善于辨别伪钞。
实际上这是分开做的,做一次最大化的损失,又做一次最小化的损失,虽然输出的结果都是判别式输出的,会输出一个概率,我算损失是这样的,我调参的时候是为了让它更加擅长做假,所以我要把损失最大化,我调整他的参数的时候是把整体损失往大了去做的。同样还是这个词我要做两遍,一个是调它的参数,一个是调它的参数,但是目的就不一样了,一定要做对,所以一定要最小化它的损失,这是最大和最小的意思。
这是分别做的,同样的要做两遍,只是情况不一样。上面是正常的神经网络,我们把它放在一起干了一件什么事呢?就是你不是老做假吗?我把它做假的工作放在这儿,这里我们是想把你正常神经网络里面做的表示学习当中产生的表示,也就是个向量的表示,这些噪音是他不小心犯错的,这个哥们儿是专门造假,所以我们通过计算把这里出现假的东西扣出去,让它更加纯,然后它就变好了,所以这个网络玩的过程就是这样的,这是一个好学生,这是一个调皮捣蛋的学生,然后我们这里有一个老板,它干的事情就是把4个人搅和起来,让他们去进行合作,再让他们两个进行合作,他们两个就整天吵架,最后把两人的经验通过S集中在一起。
稍微提一下,19年的时候思乐(音)老师他们整个模型一个是做了强化学习,一个是做了对抗,这个对抗跟我们是不一样的,但是也了对抗的神经网络,大概意思是这样的,我的对抗目的是让我的表示词用不上,这边我有一个通道,我是一个强化,我要想方设法让我这个词发挥最大的作用,然后我弱化词的表示,强化这个表示,然后这里再进行加权,就成为了一个参数。这里是神经网络,也就是说这里的学习就是生成对抗网络,而这边就是一个普通的神经网络。
大概就是这样,后面关于关系抽取和实体抽取的部分还没有讲,因为时间关系。谢谢大家!
(本报告根据速记整理)
CAAI原创 丨 作者洪宇
未经授权严禁转载及翻译
如需转载合作请向学会或本人申请
转发请注明转自中国人工智能学会