DiffSeq

目录
  • 符号说明
  • 流程
  • 代码

 

Gong S., Li M., Feng J., Wu Z. and Kong L. DiffuSeq: Sequence to sequence text generation with diffusion models. In International Conference on Learning Representations (ICLR), 2023

本文提出了一种用于 Seq2Seq 的不需要 classifier 引导的扩散模型, 且是在连续空间上讨论的.
虽然方法看起来很简单, 但是感觉很容易 work 和推广.

符号说明

  • z0q(z)z0∼q(z), a real-world data distribution;
  • zTN(0,I)zT∼N(0,I), Gaussian noise;
  • q(zt|zt1)=N(zt;1βtzt1,βtI),t[1,2,,T]q(zt|zt−1)=N(zt;1−βtzt−1,βtI),t∈[1,2,…,T];
  • fθfθ, a diffusion model;
  • wx=[wx1,,wxm]wx=[w1x,…,wmx], m-length soure sequence (离散的);
  • wy=[wy1,,wyn]wy=[w1y,…,wny], n-length soure sequence (离散的).

流程

  • 首先利用获取词的 embeddings:

     

    z0=Emb(w)=[Emb(w1),Emb(w2),],z0=Emb(w)=[Emb(w1),Emb(w2),…],

     

    这一步实际上是相当于构建从离散空间到连续空间的一个映射:

     

    qϕ(z0|w)=δEmb(w)(z0).qϕ(z0|w)=δEmb(w)(z0).

     

  • 因为整个流程设计两个部分: source xx, target yy, 不妨令

     

    x0=Emb(wx)=[Emb(wx1),Emb(wx2),],y0=Emb(wy)=[Emb(wy1),Emb(wy2),].x0=Emb(wx)=[Emb(w1x),Emb(w2x),…],y0=Emb(wy)=[Emb(w1y),Emb(w2y),…].

     

    于是

     

    z0=x0y0.z0=x0⊕y0.

     

    类似的之后的 ztzt 均可以分为 source 和 target 两部分, 即

     

    zt=xtyt.zt=xt⊕yt.

     

  • 前向过程: 如上图所示:

    1. 根据 qϕ(z0|w)qϕ(z0|w) 得到 z0z0 (这一步实际上是确定的);
    2. 此时我们依旧在连续空间中了, 故我们可以使用一般的高斯分布来加噪, 即:

       

      ztq(zt|zt1)=N(zt;1βtzt1,βtI).zt′∼q(zt|zt−1)=N(zt;1−βtzt−1,βtI).

       

      但是特别地, 我们只对 target 部分加噪:

       

      zt=x0yt.zt=x0⊕yt′.

       

  • 反向过程: 同样如上图所示:

    1. 从标准的高斯分布中采样 zTzT′, 并令

       

      zT=x0yT.zT=x0⊕yT′.

       

    2. 根据如下分布进行反向传递:

       

      zt1N(zt1;μθ(z,t),σθ(zt,t)),zt1=x0yt1,t2.zt−1′∼N(zt−1;μθ(z,t),σθ(zt,t)),zt−1=x0⊕yt−1′,t≥2.

       

  • 最后的损失为如下:

  • 需要注意的是, 其中 qϕ(z0|wxy)qϕ(z0|wx⊕y) 本身是一个确定的过程, 所以是不提供导数的, 可以省略. 整体的推导其实普通的 VLB 没什么差别, LroundLround 也只是原来的损失一部分, 只是被作者单拎了出来. 不过也有道理, 因为但看它, 其实就是希望训练一个分类网络, 将 z0z0 映射回词.

  • 不过作者最后用的也不是上面的损失, 而是一个简化的版本 (即把原先的系数给去掉后的结果):

     

    LVLB=[Tt=2z0fθ(z,t)2+Emb(wxy)fθ(z1,1)2logpθ(wxy|z0)][Tt=2y0~fθ(z,t)2+Emb(wy)~fθ(z1,1)2logpθ(wxy|z0)].LVLB=[∑t=2T‖z0−fθ(z,t)‖2+‖Emb(wx⊕y)−fθ(z1,1)‖2−log⁡pθ(wx⊕y|z0)]⇒[∑t=2T‖y0−f~θ(z,t)‖2+‖Emb(wy)−f~θ(z1,1)‖2−log⁡pθ(wx⊕y|z0)].

     

  • f,~ff,f~ 就是对 zt,ytzt,yt 的直接拟合, 是另一种损失的写法. 具体看 here

代码

official

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式测试手册——基于NXP iMX6ULL开发板(2)

基于测试板卡:创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。评估板接口资源丰富,引出双路网口、双路RS485、双路CA…

广东注塑行业MES系统——优化生产管理的利器

注塑行业MES系统是优化生产管理的利器,具有以下优势和作用: 实现生产过程的数字化管理:注塑行业MES系统可以实现生产过程的数字化管理,实时监控生产数据、设备状态和生产进度,提高生产过程的可视化和透明度。提高生产效率:通过优化生产计划、资源调度和工艺流程,注塑MES…

嵌入式基础测试手册——基于NXP iMX6ULL开发板(4)

前 言 本文档适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.1.0 Linux开发环境:Ubuntu18.04.4 64bit U-Boot:U-Boot-2020.04 Kernel:Linux-5.4.70 Linux SDK:5.4.70_2.3.0 基于测试板卡:创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6…

Markdown 常用语法

上一篇简单介绍了 Markdown 是什么,以及如何使用,本篇就来详细说说 Markdown 的常见语法。上一篇简单介绍了 Markdown 是什么,以及如何使用,本篇就来详细说说 Markdown 的常见语法。 ‍ 注意,并不是所有编辑器,都支持所有的 Markdown 语法,如果遇到失效的也不必疑惑。 此…

软件无线电系统基带信号处理卡:612-基于6UVPX C6678+XCVU9P的4路2Gsps AD 8路2Gsps DA 信号处理板卡

基于6UVPX C6678+XCVU9P的4路2Gsps AD 8路2Gsps DA 信号处理板卡 一、板卡概述板卡基于6U VPX标准结构,包含一个C6678 DSP芯片,一个XCVU9P 高性能FPGA,8路DA ,4路AD。 二、技术指标● DSP处理器采用TI 8核处理器TMS320C6678; ● DSP 外挂一组64bit DDR3颗粒,总容量2G…

AM62x相比AM335x,到底升级了什么?

Sitara作为TI处理器经典系列,曾推出众多优秀处理器型号(如AM335x)。因其能在相同价位下,提供比市面上其他厂商处理器更优良的性能,并凭借GPMC高速并口、PRU协处理器等个性化硬件资源,可提供更便利的拓展性,在工业控制、能源电力、轨道交通、智慧医疗等领域广受用户欢迎。…

NXP IMX8M Plus工业核心板规格书

核心板简介 创龙科技SOM-TLIMX8MP是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 + 单核ARM Cortex-M7异构多核处理器设计的高端工业核心板,ARM Cortex-A53(64-bit)主处理单元主频高达1.6GHz,ARM Cortex-M7实时处理单元主频高达800MHz。 处理器采用14nm最新工艺,内置2.3TO…

数据驱动测试-多组数据测试

背景:测试多组数据 解决方法:使用文件写入参数化具体操作具体设置

公共数据维护

背景:每写一个用例都需要重复写协议、域名、端口号等信息 解决方法:使用用户定义变量,实现公共数据维护实现初级自动化 具体操作语法格式 ${K值}

案例源码公开!分享瑞芯微RK3568J与FPGA的PCIe通信案例,嵌入式必读!

ARM + FPGA架构有何种优势 近年来,随着中国新基建、中国制造2025的持续推进,单ARM处理器越来越难满足工业现场的功能要求,特别是能源电力、工业控制、智慧医疗等行业通常需要ARM + FPGA架构的处理器平台来实现特定的功能,例如多路/高速AD采集、多路网口、多路串口、多路/高…

【经验分享】Docker容器部署方法说明

前 言本案例适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:Ubuntu 18.04.4 64bit 虚拟机:VMware15.1.0 Docker是一个开源的应用容器引擎,让开发者可打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows…