RowitZou / topic-dialog-summ

AAAI-2021 paper: Topic-Oriented Spoken Dialogue Summarization for Customer Service with Saliency-Aware Topic Modeling.
MIT License
77 stars 9 forks source link

关于模型的理解?谢谢 #10

Closed pymLovelyq closed 2 years ago

pymLovelyq commented 3 years ago

image

请问博主,这个红色箭头指向的句子,应该也是被抽取出来的句子吧,但是透明的这三个方块的信息是不是说完全没有送进去生成?还是说以一种soft的模式,抽取出来的这5句都送入“生成式提炼器”里面,只是透明的3条在生成时候权重低,不透明的2条在生成时候权重高一些? 主要想问的是“Concatenation”后送进去生成器的是哪些信息? 谢谢博主

RowitZou commented 3 years ago

送进生成器的只包含第一阶段抽出的句子。透明部分在图中是指未被抽中的句子,不会被输入第二阶段生成器。

pymLovelyq commented 3 years ago

那这样岂不是会少了很多信息?其他句子就直接没掉了。 是不是如果都把句子输入进去但是权重不同,“软”的方式这样,分数会高一点?

RowitZou commented 3 years ago

这需要分情况考虑,如果对话较短,soft selection 可能更加合适。如果对话很长,包含了许多无关信息(我们论文的动机之一),采用 hard selection 先过滤掉大部分无关内容会更好。

PYMAQ commented 3 years ago

您好,咨询一下模型这一块的理解:多角色主题建模这一块用到了SNTM(NTM改造后的),直觉理解是基于参考摘要来选定对话中哪些是【主题信息词】哪些是【其他主题词】,这算是个无监督的过程吗?对于没有参考摘要的测试集,其是怎么实现找到【主题信息】和【其他信息】的呢?

RowitZou commented 3 years ago

您好,咨询一下模型这一块的理解:多角色主题建模这一块用到了SNTM(NTM改造后的),直觉理解是基于参考摘要来选定对话中哪些是【主题信息词】哪些是【其他主题词】,这算是个无监督的过程吗?对于没有参考摘要的测试集,其是怎么实现找到【主题信息】和【其他信息】的呢?

NTM训练时包括两个阶段,inference 和 generation,类似VAE。第一阶段,将文档表示进行编码,并导出主题分布,并使其逼近标准正态分布。第二阶段,通过主题分布重构原文档表示。在测试阶段,VAE只需要用到 generation 部分,即从训练得到的分布中采样并生成结果;而在此任务中,NTM 只需要用到 inference 部分,即输入文档表示,得到对应的主题分布和主题表示。

SATM 是 NTM 的改进。原来的NTM只有一组主题,因为对话的关键信息混杂于无关信息,所以我们在SATM设置了两组主题,用来区分关键信息(saliency)和无关信息(other)。在训练时,saliency 主题分布在 generation 阶段直接重构出参考摘要内容,other主题分布则直接重构出参考摘要之外的内容(一种有监督的训练)。这样可以让主题模型在 inference 阶段学会区分文档中的 saliency 主题和 other 主题。在测试时,因为我们只用到 inference 阶段,即从一个文档表示导出两组不同的主题分布和主题表示,所以不需要参考摘要。

综上,这是一个有监督的过程,参考摘要仅用在训练阶段。

PYMAQ commented 3 years ago

那这样的话,请问在代码的哪一块可以输出具体的 关键信息(saliency)和无关信息(other),想看看模型把对话中的哪些当成了关键信息,哪些是无关信息?看了下已经做了word2vec的embedding,但是没看到具体词表?有什么办法可以输出看看吗?

RowitZou commented 3 years ago

论文中,我们分析了两组主题的主题词分布,通过看 top-k 的主题词可以知道哪些词是统计意义上的关键词和无关词。一般我们会发现“谢谢”、“你好”等词会出现在无关词主题top-k之中,因为这些词不会出现在参考摘要里。

具体地,可在 topic.py 中的 self.beta (主题词分布)分析 top-k 主题词。词表id和词文本转换,使用others/vocab_wrapper.py 的 VocabWrapper.i2w() 函数。

PYMAQ commented 3 years ago

跑了别的数据集想看看top-k的主题词,发现self.beta(主题词分布)输出的都是类似下面这种tensor,这种怎么分析top-k词?VocabWrapper.i2w() 这个需要词表的id吧?但是self.beta并不是id?代码中怎么改可以看到top-k主题词的输出呢?非常感谢。 tensor([[3.1212e-05, 1.4558e-05, 3.1777e-05, ..., 2.6175e-05, 3.5738e-05, 3.1157e-05], [3.4798e-05, 2.1182e-05, 4.4652e-05, ..., 3.5006e-05, 4.5328e-05, 4.1224e-05], [4.3409e-05, 2.8280e-05, 5.4672e-05, ..., 3.5513e-05, 4.6227e-05, 4.2016e-05], ..., [3.4564e-05, 5.5003e-05, 1.0587e-04, ..., 4.3245e-05, 5.2577e-05, 5.1537e-05], [2.8353e-05, 4.2249e-05, 7.7049e-05, ..., 4.1991e-05, 5.1827e-05, 5.0553e-05], [1.3203e-05, 4.1200e-05, 7.6885e-05, ..., 2.9261e-05, 3.7014e-05, 3.7441e-05]], device='cuda:0')

RowitZou commented 3 years ago

self.beta 是概率分布,需要取出其中top-k的值以及对应id,可参考torch.topk()

PYMAQ commented 3 years ago

好的,明白了,我去试试,谢谢!!

PYMAQ commented 3 years ago

您好,咨询一下模型这一块的理解:多角色主题建模这一块用到了SNTM(NTM改造后的),直觉理解是基于参考摘要来选定对话中哪些是【主题信息词】哪些是【其他主题词】,这算是个无监督的过程吗?对于没有参考摘要的测试集,其是怎么实现找到【主题信息】和【其他信息】的呢?

NTM训练时包括两个阶段,inference 和 generation,类似VAE。第一阶段,将文档表示进行编码,并导出主题分布,并使其逼近标准正态分布。第二阶段,通过主题分布重构原文档表示。在测试阶段,VAE只需要用到 generation 部分,即从训练得到的分布中采样并生成结果;而在此任务中,NTM 只需要用到 inference 部分,即输入文档表示,得到对应的主题分布和主题表示。

SATM 是 NTM 的改进。原来的NTM只有一组主题,因为对话的关键信息混杂于无关信息,所以我们在SATM设置了两组主题,用来区分关键信息(saliency)和无关信息(other)。在训练时,saliency 主题分布在 generation 阶段直接重构出参考摘要内容,other主题分布则直接重构出参考摘要之外的内容(一种有监督的训练)。这样可以让主题模型在 inference 阶段学会区分文档中的 saliency 主题和 other 主题。在测试时,因为我们只用到 inference 阶段,即从一个文档表示导出两组不同的主题分布和主题表示,所以不需要参考摘要。

综上,这是一个有监督的过程,参考摘要仅用在训练阶段。

参考了网上资料,发现VAE是无监督学习(引:https://zhuanlan.zhihu.com/p/112513743),为什么NTM和SATM这种算是有监督过程呢?谢谢

RowitZou commented 3 years ago

VAE 没有用到额外标签,NTM也是,只重构原文或原图像,所以这两者是无监督学习。

SATM 额外用到了摘要数据,显式区分并重构摘要和非摘要文本,是有监督学习。

PYMAQ commented 3 years ago

image 关于这个模型图,还有个不太理解的地方: 1.模型图的最右边的SATM可以理解为一种筛选【saliency主题】和【other主题】的机制,但模型图的中间怎么理解合适? 2.看到结合指针网络做一个词注意力的进一步筛选? 3.模型图中间的topic-informed Attention Mechanism图中各个箭头怎么理解? 4.还有个最关键的问题:知道模型图中间和右边的理解后,其作用在模型图左边的二阶(有两根虚线指向左边),这两根虚线怎么理解?是否把SATM和TIAM(模型图中间的机制)得到的结果与二阶段的机制(应该是follow18年chen的那篇吧)进行一个concat?还是怎么做的? 非常感谢作者耐心回答!!

RowitZou commented 3 years ago
  1. 中间部分利用了SATM得到的主题向量,对 Transformer Decoder 的 cross attention 部分进行了主题信息增强。它能够使得词注意力不仅依赖于 decoder query,还依赖于整个对话的主题信息。

  2. 词注意力,包括了基于 decoder query 的注意力,和基于主题信息的注意力,指针网络对两者做一个选择。

  3. 箭头表示计算流程,并且图中用黄色箭头将指针网络的相关计算区分开了。

  4. 虚线的意思是,将TIAM运用在了左边的两阶段中。原始的两阶段模型,只使用了基于 decoder query 的 cross attention,我们将其替换成了TIAM机制下的 cross attention。