论文阅读和分析:A Tree-Structured Decoder for Image-to-Markup Generation

news2024/11/26 2:21:19

目录

      • 1.主要内容:
      • 2.树解码器
      • 3、损失函数
      • 4、结论:
      • 参考:

1.主要内容:

(1、提出创新的树结构解码器来表示树、输出树、优化基于注意力的编解码框架;

(2、设计一个问题说明特别是在复杂结构时字符解码失败的背后原因,图示解释为什么树结构在解码过程中使得更优的解码能力;

(3、证明在化学式识别和数学公式识别上,树解码器的有效性;

2.树解码器

在这里插入图片描述

Figure 5. Illustration of tree decoder, including parent decoder part, child decoder part, memory attention part and an optional relation prediction part. “Pred” is short for “prediction”

树解码器使用GRU和注意力机制生成一系列的子树结构:
( o 1 c , o 1 p ) , ( o 2 c , o 2 p ) , … , ( o T c , o T p ) . (o_{1}^{\mathrm{c}},o_{1}^{\mathrm{p}}),(o_{2}^{\mathrm{c}},o_{2}^{\mathrm{p}}),\ldots,(o_{T}^{\mathrm{c}},o_{T}^{\mathrm{p}}). (o1c,o1p),(o2c,o2p),,(oTc,oTp).
需要添加一些规则,限制:

(1、每个孩子节点必须有一个父节点,因此不存在孤立节点;

(2、父节点必须是一个现存的节点;

2.1、parent解码器

当前父亲节点的隐藏层状态 s ~ t p \tilde{\mathbf{s}}_t^{\mathbf{p}} s~tp
s ~ t p = G R U ( o t − 1 c , s t − 1 c ) \tilde{\mathbf{s}}_t^{p}=GRU(o_{t-1}^{c},\mathbf{s}_{t-1}^{c}) s~tp=GRU(ot1c,st1c)
o t − 1 c o_{t-1}^c ot1c:前面孩子节点;

s t − 1 c \mathbf{s}_{t-1}^c st1c:前面孩子节点的隐藏层;

计算注意力部分:

α t p = f a t t p ( A , s ~ t p ) c t p = ∑ i α t i p a i \begin{array}{c}\alpha_t^p=f_{\mathrm{att}}^p(\mathbf{A},\tilde{\mathbf{s}}_t^\mathrm{p})\\ \mathbf{c}_t^p=\sum_i\alpha_{ti}^p\mathbf{a}_i\end{array} αtp=fattp(A,s~tp)ctp=iαtipai

A A A:编码器(DenseNet)生成的特征图 A = { a i } . \mathbf{A}=\{\mathbf{a}_i\}. A={ai}.

α t P \alpha_t^P αtP:父亲注意力概率;

c t P c_t^P ctP:父亲上下文向量;

f a t t P f_{att}^P fattP:注意力函数:

在这里插入图片描述

α t i P \alpha_{ti}^P αtiP:在 t t t步解码的 i − t h i-th ith元素的父亲节点注意力概率;

∗ * :卷积层;

∑ l = 1 t − 1 α l p \sum_{l=1}^{t-1}\alpha_l^p l=1t1αlp:过去父亲注意力概率和;

e t i P e_{ti}^P etiP:输出energy;

f i P \mathbf{f}_i^P fiP F P \mathbf{F}^P FP的元素,可以帮助添加历史信息到标准注意力机制;

使用父亲上下文向量 c t P \mathbf{c}_t^P ctP,计算父亲解码器:
s t p = G R U ( c p , s ~ t ) \mathbf{s}^{p}_t=GRU(\mathbf{c}^{p},\tilde{\mathbf{s}}_t) stp=GRU(cp,s~t)
类似于父解码器,还有孩子解码器、记忆注意力、关系预测;

2.2、child解码器

计算子节点隐状态:
s ~ t c = G R U ( o t − 1 p , S t − 1 p ) \tilde{\mathbf{s}}_t^{c}=GRU(o_{t-1}^{p},\mathbf{S}_{t-1}^{p}) s~tc=GRU(ot1p,St1p)
使用和父亲相同的注意力机制计算孩子注意力概率和上下文向量:
α t c = f a t t c ( A , s ~ t c ) \boldsymbol{\alpha}_t^c=f_{\mathrm{att}}^c(\mathbf{A},\tilde{\mathbf{s}}_t^c) αtc=fattc(A,s~tc)
c t c = ∑ i α t i c a i \mathbf{c}_t^{\mathsf{c}}=\sum_i\alpha_{ti}^{\mathsf{c}}\mathbf{a}_i ctc=iαticai

计算孩子节点隐藏状态:
s t c = G R U ( c t c , s ~ t c ) \mathbf{s}_t^c = G RU(\mathbf{c}_t^c,\tilde{\mathbf{s}}_t^c) stc=GRU(ctc,s~tc)
预测孩子节点概率:
p ( o t c ) = s o f t m a x ( W o u t c ( o t p , s t c , c t c ) ) p(o_t^c)=\mathrm{softmax}\left(\mathbf{W}_{\mathrm{out}}^c(o_t^p,\mathbf{s}_t^c,\mathbf{c}_t^c)\right) p(otc)=softmax(Woutc(otp,stc,ctc))
计算分类损失函数:
L c = − ∑ t log ⁡ p ( w t c ) \mathcal{L}_{\mathrm{c}}=-\sum_t\log p(w_t^{\mathrm{c}}) Lc=tlogp(wtc)
w t c w_t^c wtc:在时间步 t t t,孩子节点的ground-truth

2.3、基于记忆的注意力

生成中间父亲节点序列和为训练父亲解码器的目标函数
d t j m e m = tanh ⁡ ( W m e m s t p + U m e m b e r s s j m e m ) \mathbf{d}_{tj}^{\mathrm{m}em}=\tanh(\mathbf{W}_{\mathrm{mem}}\mathbf{s}_t^{\mathrm{p}}+\mathbf{U}_{\mathrm{members}}\mathbf{s}_{j}^{\mathrm{mem}}) dtjmem=tanh(Wmemstp+Umemberssjmem)
G t j m e m = σ ( ν m e m T d t j m e m ) G^{\mathrm{m}em}_{tj}=\sigma(\mathbf{\nu}^{\mathrm{T}}_{\mathrm{mem}}\mathbf{d}^{\mathrm{mem}}_{tj}) Gtjmem=σ(νmemTdtjmem)

s t p \mathbf{s}_t^p stp:父亲解码器状态;

s j m e m \mathbf{s}_j^{mem} sjmem:孩子解码器状态 s t c \mathbf{s}_t^c stc存储,作为key;

父亲节点二分类训练损失:
L p = − ∑ t ∑ j [ G ˉ t j m e m log ⁡ ( G t j m e m ) + ( 1 − G ˉ t j m e m ) log ⁡ ( 1 − G t j mem ) ] \begin{aligned}\mathcal{L}_\mathrm{p}=-\sum_t\sum_j[\bar{G}_{tj}^\mathrm{mem}\log(G_{tj}^{\mathrm{mem}})\\ +(1-\bar{G}_{t j}^\mathrm{mem})\log(1-G_{tj}^\text{mem})]\end{aligned} Lp=tj[Gˉtjmemlog(Gtjmem)+(1Gˉtjmem)log(1Gtjmem)]
G ˉ t j m e m \bar{G}_{tj}^\mathrm{mem} Gˉtjmem:父亲节点的ground-truth;如果 j − t h j-th jth孩子节点被存储在内存中是step t t t的父亲节点则是1,否则是0;

在测试阶段,选择作为父亲节点;
o j ^ c , j ^ = argmax ⁡ ( G t j mem ) o^c_{\hat{j}},\hat{j}=\operatorname{argmax}(\mathbf{G}_{tj}^{\text{mem}}) oj^c,j^=argmax(Gtjmem)
2.4、关系预测

正如父亲上下文向量和孩子上下文向量包含空间信息,加上父亲节点和孩子节点的内容信息,可以计算关系:
p r e ( o t r e ) = s o f t m a x ( W o u t r e ( c t p , c c ) ) p^{\mathrm{re}}(o_t^{\mathrm{re}})=\mathrm{softmax}\left(\mathbf{W}^{\mathrm{re}}_{\mathrm{out}}(\mathbf{c}_t^{\mathrm{p}},\mathbf{c}^{\mathrm{c}})\right) pre(otre)=softmax(Woutre(ctp,cc))
损失函数:
L r e = − ∑ t log ⁡ p r e ( v t ) \mathcal{L}_{\mathrm{re}}=-\sum_t\log p^{\mathrm{re}}(v_t) Lre=tlogpre(vt)
2.5、实现在父亲注意力和孩子注意力的正则化

在不同时间步中的孩子节点,可能有相同的父亲节点,这时不同时间步的孩子节点的父亲节点的注意力概率是相似的。
L r e g = − ∑ t α ^ t p log ⁡ α ^ t p α t P \mathcal{L}_{\mathrm{reg}}=-\sum_t\hat{\alpha}_t^{\mathrm{p}}\log\dfrac{\hat{\alpha}_t^\mathrm{p}}{\alpha_t^\mathrm{P}}\quad Lreg=tα^tplogαtPα^tp

3、损失函数

O = λ 1 L c + λ 2 L p + λ 3 L r e + λ 4 L r e g O=\lambda_1\mathcal{L_c}+\lambda_2\mathcal{L_p}+\lambda_3\mathcal{L_\mathfrak{re}}+\lambda_4\mathcal{L_{\mathfrak{reg}}} O=λ1Lc+λ2Lp+λ3Lre+λ4Lreg

实验经验上: λ 1 = λ 2 = 1 ; λ 4 = 0.1 ; \lambda_1=\lambda_2=1;\lambda_4=0.1; λ1=λ2=1;λ4=0.1;如果是数学公式识别 λ 3 = 1 \lambda_3=1 λ3=1,如果是化学式识别 λ 3 = 0 \lambda_3=0 λ3=0;

4、结论:

在这里插入图片描述

Table 1. Evaluation of math formula recognition systems on CROHME 2014, CROHME 2016 and CROHME 2019 test sets (in %). “ExpRate”, “≤ 1 s.error” and “≤ 1 s.error” means expression recognition rate when 0 to 2 symbol or structural level errors can be tolerated, “StruRate” means structure recognition rate.

在这里插入图片描述

Figure 8. Split the SMILES test set into four sub-sets (“Easy”, “Normal”, “Hard”, “Massive”) based on the length of testing SMILES strings.

在这里插入图片描述

Table 3. Recognition rate comparison (in %) between string decoder and tree decoder on SMILES dataset. “Easy”, “Normal”, “Hard”, “Massive” denote the four sub-sets of test set with different length of SMILES string, “All” means the overall recognition rate on the whole test set (in %). “SD” and “TD” refer to string decoder and tree decoder based approaches, respectively.

参考:

A Tree-Structured Decoder for Image-to-Markup Generation (ustc.edu.cn)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AidLux AI 应用案例悬赏征集活动正式启动!

ChatGPT爆火之后,AI领域的人才需求迎来了疯狂增长,AI学习也一跃成为业界大热门。 但AI囊括知识广、学习周期长,要克服理论、实战等多重阻碍并不容易。 而持续降低AI学习门槛是我们一直在做的事情。 为此,我们举办了多期AidLux …

R语言基础(五):流程控制语句

R语言基础(一):注释、变量 R语言基础(二):常用函数 R语言基础(三):运算 R语言基础(四):数据类型 6.流程控制语句 和大多数编程语言一样,R语言支持选择结构和循环结构。 6.1 选择语句 选择语句是当条件满足的时候才执行…

【麒麟服务器操作系统忘记开机密码怎么办?---银河麒麟服务器操作系统更改用户密码】

银河麒麟服务器操作系统更改用户密码 1.启动主机进入 grub 菜单,如图 1.1 以最新版本 Kylin-Server-10-SP2-x86-Release-Build09-20210524 为例。 图 1.1 grub 菜单 2 编辑 kernel 2.1按下”e”输入,输入用户名和密码(root/Kylin123123&…

【数据结构初阶】由浅入深学习链表

目录 前言 链表的概念及结构 链表的分类 单链表的实现 接口实现 1.结构体 2.创建一个新结点 3.打印链表数据 4.尾插数据 5.尾删数据 6.头插数据 7.头删数据 8.任意位置删除 9.查找位置 10.pos之前插入 11.pos之后插入 12.释放内存 完整源码 总结 前言 在我们…

Java Web 实战 07 - 多线程基础之单例模式

大家好 , 这篇文章给大家带来的是单例模式 , 单例模式中分为懒汉模式和饿汉模式 , 懒汉模式是需要用的到的时候才去创建实例 , 而饿汉模式是程序一启动就立刻创建实例 , 在这其中还有很多其他问题需要我们去研究 推荐大家跳转到这里 , 观看效果更加 上一篇文章的链接我也贴在这…

1641_strchr函数的功能分析以及peek功能实现分析

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 继续分析shell例程代码,再次遇到了一个陌生的库函数strchr。 1. 从这里看,这个是一个库函数无疑了。 2. 这个函数,或者说这三个…

2个步骤就能批量给视频添加滚动字幕

现在很多小伙伴在剪辑视频的时候都会给自己的视频添加适配的字幕,但是有很多的视频想要添加一样的滚动字幕时,有一个能批量添加剪辑的工具非常重要,今天小编就给大家分享一个可以批量剪辑大量视频的工具,下面一起看看具体的操作步…

超导百年:物理学“圣杯”是如何诞生的?

最近科技圈流传的大新闻,大家都知道了吧?简单来说,美国物理学会的三月会议上,来自罗彻斯特大学的Ranga Dias宣布,他们团队在近环境压强下实现了室温超导。这个消息在中文互联网流传之后,很快就有了详细的解…

刷题(第三周)

目录 [CISCN2021 Quals]upload [羊城杯 2020]EasySer [网鼎杯 2020 青龙组]notes [SWPU2019]Web4 [Black Watch 入群题]Web [HFCTF2020]BabyUpload [CISCN2021 Quals]upload 打开界面以后&#xff0c;发现直接给出了源码 <?php if (!isset($_GET["ctf"]))…

网络工程师面试题(面试必看)(3)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 前言 本系列将会提供网络工程师面试题,由多位专家整合出本系列面试题,包含上百家面试时的问题。面试必考率达到80%,本系列共86道题…

银行管理系统--课后程序(Python程序开发案例教程-黑马程序员编著-第7章-课后作业)

实例1&#xff1a;银行管理系统 从早期的钱庄到现如今的银行&#xff0c;金融行业在不断地变革&#xff1b;随着科技的发展、计算机的普及&#xff0c;计算机技术在金融行业得到了广泛的应用。银行管理系统是一个集开户、查询、取款、存款、转账、锁定、解锁、退出等一系列的功…

一文分析Linux v4l2框架

说明&#xff1a; Kernel版本&#xff1a;4.14 ARM64处理器&#xff0c;Contex-A53&#xff0c;双核 使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 V4L2(Video for Linux 2)&#xff1a;Linux内核中关于视频设备驱动的框架&#xff0c;对上向应用层提供…

Transformer-XL:打破序列长度限制的Transformer模型

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️&#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

Redis经典五种数据类型底层实现原理解析

目录总纲redis的k,v键值对新的三大类型五种经典数据类型redisObject结构图示结构讲解数据类型与数据结构关系图示string数据类型三大编码格式SDS详解代码结构为什么要重新设计源码解析三大编码格式hash数据类型ziplist和hashtable编码格式ziplist详解结构剖析ziplist的优势(为什…

TypeScript 基础学习之泛型和 extends 关键字

越来越多的团队开始使用 TS 写工程项目&#xff0c; TS 的优缺点也不在此赘述&#xff0c;相信大家都听的很多了。平时对 TS 说了解&#xff0c;仔细思考了解的也不深&#xff0c;借机重新看了 TS 文档&#xff0c;边学习边分享&#xff0c;提升对 TS 的认知的同时&#xff0c;…

Qt静态扫描(命令行操作)

Qt静态扫描&#xff08;命令行操作&#xff09; 前沿&#xff1a; 静态代码分析是指无需运行被测代码&#xff0c;通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描&#xff0c;找出代码隐藏的错误和缺陷&#xff0c;如参数不匹配&#xff0c;有歧义的嵌…

Linux查看UTC时间

先了解一下几个时间概念。 GMT时间&#xff1a;Greenwich Mean Time&#xff0c;格林尼治平时&#xff0c;又称格林尼治平均时间或格林尼治标准时间。是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间。 GMT时间存在较大误差&#xff0c;因此不再被作为标准时间使用。现在…

数据传输服务DTS的应用场景(阿里巴巴)

数据传输服务DTS的应用场景(阿里巴巴) 数据传输服务DTS&#xff08;Data Transmission Service&#xff09;支持数据迁移、数据订阅和数据实时同步功能&#xff0c;帮助您实现多种典型应用场景。 不停机迁移数据库 传输方式&#xff1a;数据迁移 为了保证数据的一致性&#…

【17】组合逻辑 - VL17/VL19/VL20 用3-8译码器 或 4选1多路选择器 实现逻辑函数

VL17 用3-8译码器实现全减器 【本题我的也是绝境】 因为把握到了题目的本质要求【用3-8译码器】来实现全减器。 其实我对全减器也是不大清楚,但是仿照对全加器的理解,全减器就是低位不够减来自低位的借位 和 本单元位不够减向后面一位索要的借位。如此而已,也没有很难理解…

Python3简单实现图像风格迁移

导语T_T之前似乎发过类似的文章&#xff0c;那时候是用Keras实现的&#xff0c;现在用的PyTorch&#xff0c;而且那时候发的内容感觉有些水&#xff0c;于是我决定。。。好吧我确实只是为了写点PyTorch练手然后顺便过来水一篇美文~~~利用Python实现图像风格的迁移&#xff01;&…