U3D对话任务插件 Dialogue System for Unity 研究
Posted 我是重阳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了U3D对话任务插件 Dialogue System for Unity 研究相关的知识,希望对你有一定的参考价值。
这篇是关于在对话插件中,使用U3D情感插件 Love/Hate 的。
Love/Hate能实现一些送礼,偷东西,表扬,辱骂等行为感情的变化,感情也可以分特别多。
我装这个Love/Hate是因为和对话插件Dialogue System for Unity同一个公司出的,兼容性能得到保证,Love/Hate这个插件是可以不用写代码的,全部用组件来完成,组件还挺多的, FactionMember 这种,一大堆组件。
因为我的需求就是各个NPC和主角的亲密度,一对多的关系,怎么简单怎么来,我也不太喜欢加组件的方式,下面主要说写代码的方式怎么弄,如果想用组件的方式,可以去看DEMO,其实完全可以不用这个插件,亲密度自己记录就行了,主要是怕以后功能增加要扩展就麻烦了,干脆一步到位,Love/Hate这个插件做的还是挺细的,远远不止一个亲密度这么简单。
这两款插件,我用的都是2022年9月的,版本更新日期一定要同步,因为有一些公用脚本,差别太大会出问题。
Love/Hate 版本 v1.10.31
Dialogue System for Unity 版本 v2.2.32
这个插件网上几乎没有教程,只能去看官方手册: https://www.pixelcrushers.com/lovehate/LoveHate_Manual.pdf
一.安装插件。
装好
RASATED Policy:Dialogue Transformers
最近工作中使用到rasa,其core部分有一个rasa自己提出的TED Policy框架组建,可用于进行对话决策。今天有空,就来研究下它~
论文《Dialogue Transformers》地址:https://arxiv.org/abs/1910.00486
让我们整体的看一下当 TED Policy从输入到输出进行预测时会发生什么。
在每个对话回合,TED Policy将三条信息作为输入:用户的消息、预测的先前系统动作以及作为插槽保存到助手内存中的任何值。这些中的每一个都在输入到transformer之前进行了特征化和连接。
这就是自注意力机制发挥作用的地方:transformer 在每一轮动态访问对话历史的不同部分,然后评估和重新计算前几轮的相关性。这允许 TED Policy一次考虑用户话语,但在另一轮完全忽略它,这使得transformer 成为处理对话历史的有用架构。
接下来,将dense layer应用于transformer的输出以获得用于近似文本含义的嵌入数值特征,用于对话上下文和系统动作。计算嵌入之间的差异,TED Policy最大化与目标标签的相似性并最小化与错误标签的相似性,这是一种基于Starspace算法的技术。这种比较嵌入之间相似性的过程类似于Rasa NLU pipeline中的EmbeddingIntentClassifier预测意图分类的方式。
当需要预测下一个系统动作时,所有可能的系统动作根据它们的相似度进行排序,并选择相似度最高的动作。
这个过程在每个对话回合中重复,如下所示:
效果:
在极低数据情况下,REDP 优于 TED Policy。应该注意的是,REDP 严重依赖其复制机制来预测非合作题外话后先前提出的问题。然而,TED Policy既简单又通用,在不依赖于重复问题等对话属性的情况下实现了类似的性能。此外,由于transformer架构,TED 政策训练比 REDP 更快,并且需要更少的训练周期来达到相同的精度。
以上是关于U3D对话任务插件 Dialogue System for Unity 研究的主要内容,如果未能解决你的问题,请参考以下文章
论文阅读Conversations Are Not Flat: Modeling the Dynamic Information Flow across Dialogue Utterances