一、导读

论文:

A Character-Centric Neural Model for Automated Story Generation

任务:

给定title进行故事生成

本期:

在故事生成模型上显式的获取人物信息和情节与人物之间的关系,以提高可解释性和一致性。

机构:

北大 / 上交 / IBM

代码:

https://github.com/liudany/character-centric

发表:

AAAI2020

二、摘要

自动生成故事是一项具有挑战性的任务,其目标是自动生成尽可能真实的故事,这些故事由连续的情节和一致的角色组成。

最新的一代模型是建立在先进的神经网络,例如,变分自动编码器(VAE),生成对抗网络(GAN),卷积序列到序列模型(convolutional sequence to sequence model)。

虽然这些模型在语言模式的学习上取得了一定的成绩,但是很少有方法考虑到故事类型的属性和先验知识,特别是从可解释性和一致性的角度考虑。

为了填补这一空白,我们提出了一个以人物为中心的神经网络讲故事模型

在这个模型中,一个故事围绕着给定的人物来创造,即一个故事的每一部分都取决于一个给定的角色和相应的上下文环境。

通过这种方式,我们明确地捕捉人物信息和情节与人物之间的关系,以提高可解释性和一致性。

三、Motivation

在过去,人们会提出各种基于规则或基于模板的方法,这些方法具有显式的先验领域知识。

最近,大量的神经模型被用于故事生成,不需要手工领域知识,因此更适合各种场景。但由于黑箱性质和建模长期依赖关系以及复杂的情节和角色的要求,神经模型仍然受到可解释性和一致性的限制。

对于神经故事生成,以往的框架主要将其作为一个标准的长文档生成任务,并提出将其分解为一个多阶段生成过程来解决长期依赖问题。

对于神经故事生成的经典方法有:首先使用神经语言模型生成中间表示,例如,关键字(Yao et al. 2019)、骨架(Xu et al. 2018)、提示(Fan、Lewis、Dauphin 2018),然后利用另一个神经语言模型在这些中间表示上生成每个句子。

在此过程中,这些模型可以很好地从训练故事中获取语法和词汇信息,但可能无法将特定于任务的属性考虑进去,例如,显式地建模角色、情节等。

这些方法依旧存在以下问题:

一方面,注重生成框架可能会导致生成的故事无法从故事的角度进行解释,比如一个看似可信的故事可能由不相关的情节和不匹配的人物组成。

另一方面,以往的神经模型主要侧重于语义层面的一致性建模,例如,主题的一致性,跨句的连贯性,而角色的一致性则没有得到探索。

四、本文贡献

本文在借鉴前人的故事生成方法的基础上,结合已有的故事类型知识,我们尝试将深度神经生成网络与角色建模显式结合起来,这被认为是提高角色可信度的有效方法。

具体地说,我们为一个故事分配了一致的角色,并将故事生成过程重新表述为在上下文环境下选择给定角色的一系列动作。

这样,生成的故事的每个部分都明确地将角色与给定的上下文环境相关联,从故事类型的角度增强了生成故事的可解释性。

此外,给定的角色在故事生成过程的每一步都指导着动作选择操作,以促进角色的一致性。在对话系统(Li et al. 2016)中也验证了这种策略可以提高说话人在神经响应生成中的一致性。

在这篇论文中,我们提出了一个以角色为中心的神经讲故事模型,它在分布式嵌入中显式地编码角色以指导故事的生成

五、模型整体结构

我们将每个角色表示为一个分布式嵌入embedding,它编码角色的个性特征以及角色在不同情况下的表现。

在我们的模型中,故事的发展是由角色和当前情况之间的持续交互驱动的。因此我们将故事生成分解为两个步骤:

  • 首先,我们的模型预测了角色在每个时间步上对当前情况的反应动作。即根据S与C预测V。

  • 其次,通过角色embedding、预测动作和情景信息来生成完整的句子。即根据S、C与V进行句子的生成。

图1:我们模型的整体框架。

实箭头表示每个句子的生成过程。

黑色虚线箭头表示更新过程。

S、C、V分别为上下文内容、角色embedding和预测行为。

如图1所示,我们的模型包含三个元素:角色C、场景S和动作V。前一个生成的句子被用作输入来生成下一个句子。

我们将我们的方法的输入和输出正式定义如下:

  • 输入:

    • 标题:T = {t1, t2,…, tm}

    • 角色嵌入:C = {c1, c2,…,cp }

    • 其中ti表示第i个单词,m表示标题的长度

    • 其中ci表示故事中的第i个角色嵌入。

  • 输出:

    • 生成的故事:Y = {y1, y2, y3,…, yn}作为我们模型的结果生成

    • 其中yi = {wi,1, wi,2, wi,3,…, wi,l}表示生成的故事中总共n个句子中第i个句子

    • 其中wi,j表示生成的第i个句子中的第j个单词。

注:原本的故事生成模型是给定title,生成story,本文的模型要求给定title的同时给定character(角色)。这一改进提升了模型效果,增进了角色一致性。但角色需要提前给定,且需要角色本身的社会信息。

六、一个直观的例子

翻译:

标题(给定)

《尖峰时刻》

角色(给定)

警察(以向量表示)

上下文内容

…一场枪战爆发了。

预测的行为

逮捕

生成的句子

陈警官逮捕了一群枪支走私犯。

如上表所示,这是一句子的生成过程,根据这个直观的例子,我们可以更好的理解数据集的形式。

七、结合例子看模型

如图2所示,我们的模型将故事生成分解为两个步骤:

  • 1)动作预测,预测当前角色(警察)对当前语境环境(如图所示Si)作出的反应(逮捕)。

  • 2)句子生成,构成一个完整的句子。

这个分层生成框架提供了对生成过程的细粒度控制,其中每个步骤由给定的角色显式地选择操作,以增强可解释性和字符一致性。

图2:假设上下文内容是根据香港发生的一场激烈的枪战。

给定的角色是警察闵洙。

T表示给定的标题。

结合以上信息,我们的动作预测器计算出动作应该是arrest,输出的句子是警官逮捕一群枪支走私犯。

注意,在句子生成器的每个步骤中都涉及到角色嵌入。

本模型可以分为角色嵌入、动作预测、句子生成和训练策略四个模块细节。

图2左下角展示的是角色嵌入空间。

本文的角色建模(char-embedding)使用每个角色的语言特征(包括相关的动词和属性)的特征求avg作为初始化。

角色嵌入编码角色的属性(例如。(如性格、工作、情感、性别、年龄),这些都会影响角色的行动决定。

注意,初始化之后,我们的模型根据训练过程将角色沿着其中一些属性进行聚类。在动作预测器和句子生成器的训练过程中,通过反向传播学习角色嵌入。

相近的角色往往具有相似的个性特征(例如,工作、年龄、性别)。因此构建了分布式embedding之后在使用时遇到没有见过的角色,可以通过嵌入向量相似而预测出相似的action。

然后char-embedding在decoder的每一个时间步随着target的wordemb一起输入,以此做到角色在故事生成过程的每一步都指导着动作选择操作,以促进角色的一致性。

图2中下方展示的是动作预测。

经过训练,我们的动作预测器将获得推断动作的能力。更具体地说,它是泛化能力,这意味着它有助于推断出一个角色将会执行的动作,即使他/她在训练故事语料库中从未经历过这种情况。

由于训练语料库不能涵盖所有的角色特征,所以这一属性非常重要。

我们的模型基于对特定场景的动作选择来学习角色表征,使得具有相似动作风格的角色在嵌入空间中更倾向于定位在邻近区域。

该特性提高了动作预测器的泛化能力。

例如

考虑角色i和j,他们都是警察,并且在嵌入空间中很邻近。

在训练数据中,当现场显示有一名男子在人群中开枪时,警察进行了逮捕。即使人物j从未经历过相同的情况,但由于其嵌入向量相似,j执行逮捕行动的概率很高。

这就是角色嵌入的泛化能力,它帮助模型在不熟悉角色的情况下执行与其特征一致的动作。

图2中右方展示的是句子生成部分。

在句子生成阶段引入角色嵌入是非常重要的。因为除了动作之外,还有很多与角色相关的信息(例如:形容词、副词、宾语)构成一个完整的句子。

例如

假设角色i是一名篮球运动员,预测的动作是play。考虑角色嵌入C使得我们的模型更倾向于生成篮球而不是计算机作为游戏对象。

同时,角色嵌入增强了角色的可解释性和一致性。

例如

考虑到角色i是一个新生儿,当面对危险时,新生儿所能做的就是哭泣。

但是现有的基于最大似然估计(MLE)的模型更倾向于记住故事语料库的常见模式,这意味着它们更倾向于预测动作逃跑或故事语料库中在危险情况下经常同时出现的其他词汇。

我们的模型明确地引用了每一步的角色嵌入,这使得模型能够选择适当的操作来匹配角色的属性(例如,年龄、性别、个性)。

八、总结

以前的方法缺少故事类型的属性和先验知识,可解释性和一致性差:

  • 一方面,注重生成框架可能会导致生成的故事无法从故事的角度进行解释,比如一个看似可信的故事可能由不相关的情节和不匹配的人物组成。

  • 另一方面,以往的神经模型主要侧重于语义层面的一致性建模,例如,主题的一致性,跨句的连贯性,而角色的一致性则没有得到探索。

本文为一个故事分配了一致的角色,并将故事生成过程重新表述为在上下文环境下选择给定角色的一系列动作。

这样,生成的故事的每个部分都明确地将角色与给定的上下文环境相关联,从故事类型的角度增强了生成故事的可解释性。

此外,给定的角色在故事生成过程的每一步都指导着动作选择操作,以促进角色的一致性。在对话系统(Li et al. 2016)中也验证了这种策略可以提高说话人在神经响应生成中的一致性。

在这篇论文中,我们提出了一个以角色为中心的神经讲故事模型,它在分布式embedding中显式地编码角色以指导故事的生成。

角色char-embedding是由每个角色的语言特征(包括相关的动词和属性)的特征求avg得到,在decoder的每一个时间步随着target的wordemb一起输入。在char-emb上遇到没有见过的角色,可以通过嵌入向量相似而预测出相似的形式。

作者:西柚媛

编辑:西柚媛



投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

【Paper】AAAI 2020 故事生成模型 之 角色一致性相关推荐

  1. AAAI 2020 | 通过解纠缠模型探测语义和语法的大脑表征机制

    2020-01-06 10:26 导语:使用分离的语义和语法特征来研究大脑对应的神经基础. 作者 | 王少楠.张家俊 语义和语法是自然语言中最重要的特征.已有神经影像学的研究证明大脑处理语义和语法的神 ...

  2. 直播预告 | AAAI 2022论文解读:基于生成模型的语音/歌声合成与歌声美化

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  3. AAAI 2020 | NAS+目标检测:AI设计的目标检测模型长啥样?

    ©PaperWeekly 原创 · 作者|刘畅 学校|上海交通大学博士生 研究方向|计算机视觉 太长不看版 论文标题:SM-NAS: Structural-to-Modular Neural Arch ...

  4. AAAI 2020 开源论文 | 一种针对图嵌入模型的受限黑盒对抗攻击框架

    AAAI(人工智能促进协会年会)是人工智能领域的顶级国际会议之一.今年的 AAAI 2020 是第 34 届,于 2 月 7 日至 12 日在美国纽约举行.今年,第 3 次参会的腾讯 AI Lab 共 ...

  5. KDD 2020(五) | 基于多源异构信息整合的视频标题生成模型(作者带你读论文)...

    ⬆⬆⬆              点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 论文:Comprehensive Information Integration Modeling F ...

  6. GAN︱生成模型学习笔记(运行机制、NLP结合难点、应用案例、相关Paper)

    我对GAN"生成对抗网络"(Generative Adversarial Networks)的看法: 前几天在公开课听了新加坡国立大学[机器学习与视觉实验室]负责人冯佳时博士在[硬 ...

  7. 无需训练RNN或生成模型,我写了一个AI来讲故事

    作者 | Andre Ye 译者 | 弯月 出品 | AI科技大本营(ID:rgznai100) 这段日子里,我们都被隔离了,就特别想听故事.然而,我们并非对所有故事都感兴趣,有些人喜欢浪漫的故事,他 ...

  8. AAAI | 深度生成模型—NEVAE

    今天给大家介绍的是印度理工学院Niloy Ganguly教授课题组在AAAI2019发表的一篇关于分子生成的论文.作者基于VAE提出一种新的分子图生成模型NEVAE,其编码器和解码器经过特殊设计,通过 ...

  9. 华盛顿大学《生成模型》2020秋季课程完结,课件、讲义全部放出

    来源:机器之心 本文约1000字,建议阅读5分钟. 这门课聚焦生成建模技术的理论和数学基础,探讨多种生成模型技术. 在概率统计理论中,生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的 ...

  10. ICLR要搞深度生成模型大讨论,Max Welling和AAAI百万美元大奖得主都来了,Bengio是组织者之一...

    萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 用深度生成模型搞科学发现,是不少AI大牛最近的研究新动向. 就在最新一届ICLR 2022上,包括Max Welling和Regina Barzi ...

最新文章

  1. PHP代理模式Proxy Mode
  2. 用C语言解“求特殊方程得正整数解”题
  3. mysql5.6.28安装教程百度经验_Linux(Ubuntu)下Mysql5.6.28安装配置方法图文教程
  4. 6kyu Persistent Bugger
  5. 找不到 快速启动 ,怎么办
  6. RDBMS运行过程示例
  7. JVM面试1 :谈谈你对Java的理解
  8. 中台之上(十三):探讨支持组装式开发的业务架构设计方法
  9. java date sethours,如何替换不推荐使用的方法Date.setHours(int)?
  10. 关于使用easyui dataGrid遇到的小bug问题
  11. javascript案例32——中文简繁体转换
  12. Sequence Modeling With CTC : Labelling Unsegmented Sequence Data with RNN
  13. oracle 乘法表,ORACLE SQl——9*9 乘法表的实现方法
  14. 持续更新,mysql的复习强化路
  15. 「CTS2019」氪金手游
  16. 【文献解读】RNAi技术在油菜基因功能研究中的应用
  17. valist的使用方法(队可变参数的处理)
  18. eclipse 同时打开两个
  19. Nginx+Tomcat+Redis负载均衡实现Session共享
  20. 安霸Alberto Broggi :计算机视觉技术驱动自动驾驶的发展 | 2019 AI+智能汽车创新峰会...

热门文章

  1. C#学习历程(四)[实际问题]
  2. (转)一张图学会Dockerfile
  3. 如何将自己在github写的android library开源,让大家依赖使用
  4. [Sciter] 资源引用
  5. puppet中anchor的作用
  6. 【C语言】为什么指明数组的列数?
  7. 装饰模式/适配器模式/代理模式
  8. 小心中中国移动“短号集群网”的招
  9. 新手小白之学习python一飞冲天日志之—基本数据类型,条件控制语句
  10. HTML网页随笔笔记