论文《Unsupervised Dialog Structure Learning》笔记:详解DD-VRNN

D-VRNN模型和DD-VRNN模型

总体架构

image.png
离散-可变循环变分自编码器(D-VRNN)和直接-离散-可变循环变分自编码器(DD-VRNN)概述。D-VRNN和DD-VRNN使用不同的先验分布来建模 z t z_t zt之间的转换,如红色实线所示。 x t x_t xt的再生成用蓝色虚线表示。状态级别的循环神经网络的循环关系以灰色虚线点划线表示。 z t z_t zt的推断过程以黑色虚线表示。

方法

原则上,变分递归神经网络(VRNN)在每个时间步都包含一个变分自编码器(VAE),这些VAE通过一个状态级的递归神经网络(RNN)相连。在这个RNN中,隐藏状态变量 h t − 1 h_{t-1} ht1 编码了直到时间 t t t 的对话上下文。这种连接帮助VRNN模拟对话的时间结构(Chung等人,2015年)。模型的观测输入 x t x_t xt 是构建的话语嵌入。 z t z_t zt 是时间 t t t 时VRNN中的潜在向量。与Chung等人(2015年)的工作不同,我们模型中的 z t z_t zt 是一个离散的独热向量,其维度为 N N N,其中 N N N 是潜在状态的总数。

D-VRNN与DD-VRNN之间的主要区别在于 z t z_t zt 的先验设定。在D-VRNN中,我们假设 z t z_t zt 依赖于整个对话上下文 h t − 1 h_{t-1} ht1,如图(a)中红色部分所示,这与Chung等人(2015年)的设定相同;而在DD-VRNN中,我们假设在先验中, z t z_t zt 直接依赖于 z t − 1 z_{t-1} zt1,以模拟不同潜在状态之间的直接转换,如图(b)中红色部分所示。我们使用 z t z_t zt h t − 1 h_{t-1} ht1 来重新生成当前话语 x t x_t xt,而不是生成下一个话语 x t + 1 x_{t+1} xt+1,如图1中蓝色虚线所示。重生成的思想有助于恢复对话结构。接下来,递归神经网络利用 h t − 1 h_{t-1} ht1 x t x_t xt z t z_t zt 更新自身,并允许上下文随着对话的进行而传递,如图1中灰色点划线所示。最后,在推断中,我们用上下文 h t − 1 h_{t-1} ht1 x t x_t xt 构建 z t z_t zt 的后验,并通过从后验中抽样来推断 z t z_t zt,如图1中黑色虚线所示。每个操作的数学细节在下文中描述。φ(·)τ 是高度灵活的特征提取函数,如神经网络。 φ τ x φ_{τ}^x φτx φ z τ φzτ φzτ φ τ p r i o r φ^{prior}_τ φτprior φ τ e n c φ^{enc}_τ φτenc φ τ d e c φ^{dec}_τ φτdec 是分别用于输入 x x x,潜在向量 z z z,先验,编码器和解码器的特征提取网络。

句子嵌入

用户话语 u t = [ w 1 , t , w 2 , t , … , w n w , t ] u_t = [w_{1,t}, w_{2,t}, \ldots, w_{n_w,t}] ut=[w1,t,w2,t,,wnw,t] 和系统话语 s t = [ v 1 , t , v 2 , t , … , v n v , t ] s_t = [v_{1,t}, v_{2,t}, \ldots, v_{n_v,t}] st=[v1,t,v2,t,,vnv,t] 是在时间 t t t 的用户话语和系统话语,其中 w i , j w_{i,j} wi,j v i , j v_{i,j} vi,j 是单独的词语。两方话语的连接, x t = [ u t , s t ] x_t = [u_t, s_t] xt=[ut,st],是VAE中的观测变量。我们使用Mikolov等人(2013年)的方法来进行词嵌入,并对 u t u_t ut s t s_t st 的词嵌入向量进行平均,得到 u ~ t \tilde{u}_t u~t s ~ t \tilde{s}_t s~t u ~ t \tilde{u}_t u~t s ~ t \tilde{s}_t s~t 的连接被用作 x t x_t xt 的特征提取,即 ϕ τ x ( x t ) = [ u ~ t , s ~ t ] \phi^x_\tau (x_t) = [\tilde{u}_t, \tilde{s}_t] ϕτx(xt)=[u~t,s~t] ϕ τ x ( x t ) \phi^x_\tau (x_t) ϕτx(xt) 是模型的输入。

Prior in D-VRNN

在D-VRNN中,先验是我们在观察数据之前对 z t z_t zt 的假设。在D-VRNN中,假设 z t z_t zt 的先验依赖于上下文 h t − 1 h_{t-1} ht1,并遵循公式(1)中显示的分布是合理的,因为对话上下文是影响对话转换的关键因素。由于 z t z_t zt 是离散的,我们使用softmax函数来获取分布。

z t ∼ softmax ( ϕ τ prior ( h t − 1 ) ) (1) z_t \sim \text{softmax}(\phi^{\text{prior}}_\tau (h_{t-1}))\tag{1} ztsoftmax(ϕτprior(ht1))(1)

Prior in DD-VRNN

DD-VRNN中的先验。 z t z_t zt 在公式(1)中对整个上下文 h t − 1 h_{t-1} ht1 的依赖性,使得我们难以解开 z t − 1 z_{t-1} zt1 z t z_t zt 之间的关系。但这种关系对于解码对话交换如何从一次流向下一次至关重要。因此,在DD-VRNN中,我们直接在先验中模拟 z t − 1 z_{t-1} zt1 z t z_t zt 的影响,如公式(2)和图1(b)所示。为了将这个先验分布适配到变分推断框架中,我们用公式(3)中的 p ( z t ∣ z t − 1 ) p(z_t|z_{t-1}) p(ztzt1) 来近似 p ( x t ∣ z t , z t ) p(x_t|z_{t}, z_{t}) p(xtzt,zt)。稍后,我们将展示设计的新先验在特定场景下的优势。
z t ∼ softmax ( ϕ τ prior ( z t − 1 ) [ ] (2) z_t \sim \text{softmax}(\phi^{\text{prior}}_\tau (z_{t-1})[\tag{2}] ztsoftmax(ϕτprior(zt1)[](2)

它表示潜在状态 z t z_t zt 的先验分布直接依赖于前一时间步的潜在状态 z t − 1 z_{t-1} zt1,并通过特征提取函数 ϕ τ prior \phi^{\text{prior}}_\tau ϕτprior 映射和softmax函数来确定。

image.png

模型整体的概率分布可以近似为:
p ( x ≤ T , z ≤ T ) ≈ ∏ t = 1 T p ( x t ∣ z ≤ t , x < t ) p ( z t ∣ z t − 1 ) (3) p(x_{\leq T}, z_{\leq T}) \approx \prod_{t=1}^{T} p(x_t|z_{\leq t}, x_{<t})p(z_t|z_{t-1})\tag{3} p(xT,zT)t=1Tp(xtzt,x<t)p(ztzt1)(3)

生成

z t z_t zt 是在上下文下当前对话交换的概括。我们使用 z t z_t zt h t − 1 h_{t-1} ht1 来重构当前的话语 x t x_t xt。这种 x t x_t xt 的重生产允许我们恢复对话结构。

我们使用两个RNN解码器,dec1和dec2,分别由参数 γ 1 \gamma_1 γ1 γ 2 \gamma_2 γ2 参数化,以分别生成原始的 u t u_t ut s t s_t st c t c_t ct d t d_t dt 是dec1和dec2的隐藏状态。上下文 h t − 1 h_{t-1} ht1 和特征提取向量 ϕ τ z ( z t ) \phi^z_\tau (z_t) ϕτz(zt) 被连接起来,形成dec1的初始隐藏状态 h 0 dec1 h^{\text{dec1}}_0 h0dec1 c ( n w , t ) c(n_w,t) c(nw,t) 是dec1的最后一个隐藏状态。由于 v t v_t vt u t u_t ut 的响应,并且会受到 u t u_t ut 的影响,我们将 c ( n w , t ) c(n_w,t) c(nw,t) d 0 d_0 d0 连接起来,将信息从 u t u_t ut 传递给 v t v_t vt。这个连接向量被用作dec2的 h 0 dec2 h^{\text{dec2}}_0 h0dec2。这个过程在公式(4)和(5)中显示。

c 0 = [ h t − 1 , ϕ τ z ( z t ) ] c_0 = [h_{t-1}, \phi^z_\tau (z_t)] c0=[ht1,ϕτz(zt)]
w ( i , t ) , c ( i , t ) = f γ 1 ( w ( i − 1 , t ) , c ( i − 1 , t ) ) (4) w(i,t), c(i,t) = f_{\gamma_1}(w(i-1,t), c(i-1,t))\tag{4} w(i,t),c(i,t)=fγ1(w(i1,t),c(i1,t))(4)

d 0 = [ h t − 1 , ϕ τ z ( z t ) , c ( n w , t ) ] d_0 = [h_{t-1}, \phi^z_\tau (z_t), c(n_{w},t)] d0=[ht1,ϕτz(zt),c(nw,t)]

v ( i , t ) , d ( i , t ) = f γ 2 ( v ( i − 1 , t ) , d ( i − 1 , t ) ) (5) v(i,t), d(i,t) = f_{\gamma_2}(v(i-1,t), d(i-1,t))\tag{5} v(i,t),d(i,t)=fγ2(v(i1,t),d(i1,t))(5)

递归过程

状态级RNN根据以下等式(6)更新其隐藏状态 h t h_t ht h t − 1 h_{t-1} ht1 f θ f_\theta fθ 是由参数 θ \theta θ 参数化的RNN。
h t = f θ ( ϕ τ z ( z t ) , ϕ τ x ( x t ) , h t − 1 ) (6) h_t = f_\theta (\phi^z_\tau (z_t), \phi^x_\tau (x_t), h_{t-1}) \tag{6} ht=fθ(ϕτz(zt),ϕτx(xt),ht1)(6)

推断

我们根据上下文 h t − 1 h_{t-1} ht1 和当前话语 x t x_t xt 来推断 z t z_t zt,并构建 z t z_t zt 的后验分布,通过另一个softmax函数,如等式(7)所示。一旦我们得到了后验分布,我们应用Gumbel-Softmax来取 z t z_t zt 的样本。D-VRNN和DD-VRNN在它们的先验上有所不同,但在推断上没有不同,因为我们假设在先验中 z t z_t zt 之间的直接转换而不是在推断中。
z t ∣ x t ∼ softmax ( ϕ τ e n c ( h t − 1 ) , ϕ τ x ( x t ) ) (7) z_t|x_t \sim \text{softmax}(\phi^{enc}_\tau (h_{t-1}), \phi^x_\tau (x_t)) \tag{7} ztxtsoftmax(ϕτenc(ht1),ϕτx(xt))(7)

这段文字描述了变分递归神经网络(VRNN)的损失函数,以及为了解决变分自编码器(VAE)中潜在变量消失的问题,如何结合了两种损失函数:bow-loss和Batch Prior Regularization (BPR)。以下是对该段落的翻译以及相关公式的解释:

损失函数

VRNN的目标函数是其在每个时间步的变分下界,如等式(8)所示(Chung等人,2015)。为了缓解VAE中潜在变量消失的问题,我们结合了bow-loss和Batch Prior Regularization (BPR)(Zhao等人,2017,2018)到最终的损失函数中,并引入了可调整的权重 λ \lambda λ,如等式(9)所示。

L VRNN = E q ( z ≤ T ∣ x ≤ T ) [ log ⁡ p ( x t ∣ z ≤ t , x < t ) ] + \mathcal{L}_{\text{VRNN}} = \mathbb{E}_{q(z_{\leq T}|x_{\leq T})}[\log p(x_t | z_{\leq t},x_{<t})]+ LVRNN=Eq(zTxT)[logp(xtzt,x<t)]+
∑ t = 1 T − KL ( q ( z t ∣ x ≤ t , z < t ) ∥ p ( z t ∣ x < t , z < t ) ) (8) \sum_{t=1}^{T} -\text{KL}(q(z_t | x_{\leq t},z_{<t}) \| p(z_t | x_{<t},z_{<t}))\tag{8} t=1TKL(q(ztxt,z<t)p(ztx<t,z<t))(8)

L D-VRNN = L VRNN-BPR + λ ∗ L bow (9) \mathcal{L}_{\text{D-VRNN}} = \mathcal{L}_{\text{VRNN-BPR}} + \lambda * \mathcal{L}_{\text{bow}} \tag{9} LD-VRNN=LVRNN-BPR+λLbow(9)

状态转移概率计算

一种既能数值表示又能视觉表示对话结构的好方法是构建一个潜在状态之间的转移概率表。这样的转移概率也可以用来设计在强化学习(RL)训练过程中的奖励函数。我们因为D-VRNN和DD-VRNN的先验不同,所以分别计算它们的转移表。

D-VRNN

从等式(6)我们知道 h t h_t ht x ≤ t x_{\leq t} xt z < t z_{<t} z<t 的函数。结合等式(1)和(6),我们发现 z t z_t zt x ≤ t x_{\leq t} xt z < t z_{<t} z<t 的函数。因此, z < t z_{<t} z<t z t z_t zt 有一个间接的影响通过 h t − 1 h_{t-1} ht1。这个间接影响加强了我们的假设,即前面的状态 z < t z_{<t} z<t 影响未来的状态 z t z_t zt,但也使得恢复一个清晰的结构和解开 z t − 1 z_{t-1} zt1 z t z_t zt 直接影响变得困难。

为了更好地可视化对话结构并与基于HMM的模型进行比较,我们通过估算二元转移概率表来量化 z t − 1 z_{t-1} zt1 z t z_t zt 的影响,其中 p i , j = # ( s t a t e i , s t a t e j ) # ( s t a t e i ) p_{i,j} = \frac{\#(state_i,state_j)}{\#(state_i)} pi,j=#(statei)#(statei,statej)。分子是有序对( s t a t e i , t − 1 state_i, t-1 statei,t1 s t a t e j , t state_j, t statej,t)的总数,分母是数据集中 s t a t e i state_i statei 的总数。我们选择一个二元转移表而不是一个更大 n n n n n n-gram转移表,因为最近的上下文通常是最相关的,但应该注意的是,与HMM模型不同,我们模型中的转移程度既不是有限的也不是预先确定的,因为 z t z_t zt 捕获了所有上下文。根据不同的应用,可能会选择不同的 n n n

命名实体离散变分递归神经网络(NE-D-VRNN)

在任务导向对话系统中,某些命名实体的存在,如食物偏好,对于确定对话的阶段起着关键作用。为了确保潜在状态捕获此类有用信息,我们在计算等式(9)中的损失函数时,对命名实体赋予更大的权重。这些权重鼓励重构的话语含有更多正确的命名实体,因此影响潜在状态有更好的表示。我们将这个模型称为NED-VRNN(命名实体离散变分递归神经网络)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/180779.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Effective C++】 (六) 继承与面向对象设计

【六】继承与面向对象设计 条款32 &#xff1a; 确保public继承是"is a"的关系 Item 32: Make sure public inheritance models “is-a”. C面向对象程序设计中&#xff0c;最重要的规则便是&#xff1a;public继承应当是"is-a"的关系。当Derived public继…

设计师不能忽视的几个宝藏图标设计工具

在这个快速变化的时代&#xff0c;设计师对创新和实用工具的需求越来越大。这就要求我们及时跟上潮流&#xff0c;不断探索和尝试最新、最有价值的图标设计工具。只有这样&#xff0c;我们才能在竞争激烈的设计市场中脱颖而出。以下是我们精心挑选的2024年值得一试的图标设计工…

Linux C++ 服务器端这条线怎么走?一年半能做出什么?

Linux C 服务器端这条线怎么走&#xff1f;一年半能做出什么&#xff1f; 既然你是在校学生&#xff0c;而且编程语言和数据结构的基础还不错&#xff0c;我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫&#xff0c;然后才去读编程方面的 APUE、UNP 等书。 最…

ffmpeg播放器实战(播放器流程)

1.流程图 1.main窗口创建程序窗口 程序窗口构造函数执行下面内容 2.开启播放 3.开启解码 4.开启渲染 5.反馈给ui 本文福利&#xff0c; 免费领取C音视频学习资料包学习路线大纲、技术视频/代码&#xff0c;内容包括&#xff08;音视频开发&#xff0c;面试题&#xff0c;FFmpeg…

vue中怎么根据选择的名称 生成印章图片

项目中需要根据选择的印章名称&#xff0c;动态生成印章 &#xff0c;印章下方显示当前的日期 代码如下 <template><div><label for"name">选择名称&#xff1a;</label><select id"name" v-model"selectedName">…

virtualbox 扩展磁盘后在win10 虚拟机看不到新扩展的空间

造成标题中问题的原因是&#xff0c;扩展的是win10.vdi 的空间&#xff0c;虚拟机使用使用的下边那个以uuid命名的空间&#xff0c;将这个磁盘的虚拟分配空间也调整到150G . 然后在win10的磁盘管理里就可以看到新加的空间了。之后再点相应的盘进行扩展卷操作即可。

Android跨进程传图片或者大数据(解决TransactionTooLargeException)

跨进程传图片方案 直接intent传bitmap使用文件读写intent传递自定义binder&#xff0c;binder中传递image使用网络传输 一、直接intent传bitmap 优势 使用简单 劣势 相关代码可能有侵入性&#xff0c;必须在四大组件中接收。 intent传递数据的总大小是1MB&#xff0c;其中…

SA实战 ·《SpringCloud Alibaba实战》第14章-服务网关加餐:SpringCloud Gateway核心技术

大家好,我是冰河~~ 一不小心《SpringCloud Alibaba实战》专栏都更新到第14章了,再不上车就跟不上了,小伙伴们快跟上啊! 在《SpringCloud Alibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基…

geemap学习笔记012:如何搜索Earth Engine Python脚本

前言 本节主要是介绍如何查询Earth Engine中已经集成好的Python脚本案例。 1 导入库 !pip install geemap #安装geemap库 import ee import geemap2 搜索Earth Engine Python脚本 很简单&#xff0c;只需要一行代码。 geemap.ee_search()使用方法 后记 大家如果有问题需…

前端处理返回数据为数组对象且对象嵌套数组并重名的数据,合并名称并叠加数据

前端处理返回数据为数组对象且对象嵌套数组并重名的数据&#xff0c;合并名称并叠加数据 var newList[]; var table{}; var dataObj{}; var finalList[]; var tableData[{brName:营业部,dateStr:2023-11-23,tacheArr:[{dealCnt:20,tacheName:奔驰}]},{brName:营业部,dateStr:2…

想自学软件测试?一般人我还是劝你算了吧。。。

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

python+pytest接口自动化:token关联登录这样做,阿里p8都直呼牛逼!!!

在PC端登录公司的后台管理系统或在手机上登录某个APP时&#xff0c;经常会发现登录成功后&#xff0c;返回参数中会包含token&#xff0c;它的值为一段较长的字符串&#xff0c;而后续去请求的请求头中都需要带上这个token作为参数&#xff0c;否则就提示需要先登录。 这其实就…

如何在Linux系统上检测GPU显存和使用情况?

如何在Linux系统上检测GPU显存和使用情况&#xff1f; 在Linux系统上&#xff0c;你可以使用一些命令行工具来检测GPU显存和使用情况。以下是一些常用的方法&#xff1a; 1. 使用nvidia-smi&#xff08;仅适用于NVIDIA GPU&#xff09; 如果你使用的是NVIDIA的显卡&#xff0…

小猪优版的前世今生:从籍籍无名到行业瞩目,再到骤变的风暴中心

1. 前世&#xff1a;籍籍无名到行业新星的崛起 小猪优版在初创时期&#xff0c;并不被大众所知。然而&#xff0c;它凭借对短视频行业的深度洞察&#xff0c;以及独特的商业模式&#xff0c;开始在这个领域崭露头角。它提供了一个平台&#xff0c;不仅助力内容创作者更好地展现…

1688商品详情数据接口(1688.item_get)

1688商品详情数据接口是一种程序化的接口&#xff0c;通过这个接口&#xff0c;商家或开发者可以使用自己的编程技能&#xff0c;对1688平台上的商品信息进行查询、获取和更新。这个接口允许商家根据自身的需求&#xff0c;获取商品的详细信息&#xff0c;例如价格、库存、描述…

中医馆管理系统预约小程序效果如何

人们生活水平提升的同时&#xff0c;无论是工作压力还是自然压力&#xff0c;都给身体带来了一些损伤&#xff0c;如各科常见病、多发病、慢性病及疑难杂症等。中医具有治未病的优势&#xff0c;因此对患者而言&#xff0c;找中医诊治是一个很好的选择&#xff0c;而无论中医院…

财报解读:电商GMV增长30%后,快手将坚守本地生活?

快手逐渐讲好了其高质量成长的故事。 根据财报&#xff0c;快手三季度业绩超出预期&#xff0c;其中&#xff0c;营收279.5亿元&#xff0c;同比增长20.8%&#xff1b;调整后净利润31.7亿元&#xff0c;同比扭亏为盈。 而联系市场环境来看&#xff0c;三季度广告、电商市场较…

2 使用React构造前端应用

文章目录 简单了解React和Node搭建开发环境React框架JavaScript客户端ChallengeComponent组件的主要结构渲染与应用程序集成 第一次运行前端调试将CORS配置添加到Spring Boot应用使用应用程序部署React应用程序小结 前端代码可从这里下载&#xff1a; 前端示例 后端使用这里介…

【C语言】函数(三):为什么要有函数声明

目录 前言函数定义函数声明为什么要有函数声明原因1&#xff1a;分模块编程原因2&#xff1a;静态库文件 前言 在上文中已经介绍了函数调用&#xff0c;分为传值调用和传址调用&#xff0c;以及嵌套调用和链式访问。在本文中将介绍函数的声明和定义&#xff0c;以及为什么要有函…

使用 Pinia 的五个技巧

在这篇文章中&#xff0c;想与大家分享使用 Pinia 的五大技巧。 以下是简要总结&#xff1a; 不要创建无用的 getter在 Option Stores 中使用组合式函数&#xff08;composables&#xff09;对于复杂的组合式函数&#xff0c;使用 Setup Stores使用 Setup Stores 注入全局变量…