当前位置: 首页 > news >正文

【论文阅读】Generating Radiology Reports via Memory-driven Transformer (EMNLP 2020)

资料链接

论文原文:https://arxiv.org/pdf/2010.16056v2.pdf
代码链接(含数据集):https://github.com/cuhksz-nlp/R2Gen/

背景与动机

在这里插入图片描述
这篇文章的标题是“Generating Radiology Reports via Memory-driven Transformer”,发表于会议EMNLP2020。它的主要目的是使用记忆驱动的Transformer生成放射性医学影像的报告。
在这里插入图片描述
文章中给出了一个示例的X光片的报告,包含发现和印象两个部分。

文章指出,相比较于传统的NLP任务,放射性医学影像报告生成任务会需要生成内容包含很长的文本描述,详细地解释图像内容,同时生成的内容还具有模板式的特征,因此传统的基于字幕的方式对于这个任务是不太够用的。
在这里插入图片描述
在过往的研究中,针对这一任务,往往采用的两种方式是基于数据库检索的方法和基于模板的方法,然而这两种方法都依赖于大量的数据集或手工创建的模板,存在一定的局现性。

方法

首先在整体的架构方面,采用了一个端到端的Transformer架构,输入的图像序列首先进行Patch Partition操作,然后输入到特征提取网络中,得到一组Patch Features,用于Transformer的输入。论文对Transformer的改进主要集中在Decoder部分。
在这里插入图片描述
可以看到上面右侧这张图,在Decoder部分作者主要引入的两个机制是Relational Memory和Memory-driven Conditional LN。用一个公式来表示的话,其中hi是来自encoder的输出序列,yt是t时刻生成的新token。整体仍然保留了Transformer的架构,只是在它的基础上有一些模块的增加和改变。

为了描述方便,后面就统称Relational Memory为RM, Memory-driven Conditional LN为MCLN。
在这里插入图片描述
首先来看到RM部分。该部分的主要作用是使得模型能够学到更好的report patterns,它和retrieval-based的方法里面的模板的准备差不多,但这里的模板是可训练的,而不是需要手工去做的。

具体看到它的结构,可以看见该部分使用一个矩阵Mt来保存t时刻的记忆信息,根据文章的介绍,该矩阵的每个行是一个存储槽,代表一些重要的模式信息。在decoder生成token的过程中,矩阵结合前面时间步的输出逐步更新,更新的过程参考右边的这三个公式。首先在时间步t上,将来自时间步t-1的矩阵Mt-1通过一个Wq转化为Q,然后将Mt-1和前一时刻的输出yt-1连接,并转化为K和V,一起送进多头注意力模块中,得到结果Z。

考虑到这个记忆存储器是循环运行的,所以随着时间推移可能会发生梯度消失或爆炸的问题,因此引入了残差连接,同时引入了类似于LSTM中的门机制。

门机制的示意图如上面右下角的图片所示,Mt-1是上一时刻的记忆矩阵M,yt-1是上一时刻输出的token,两者分别送入遗忘门和输入门中,最后得到输出Mt。
在这里插入图片描述
接下来看到MCLN部分。这一部分我认为是整篇论文创新点最大的部分,它创新性地将记忆力机制引入到了LayerNorm层中。使得每一时刻的Mt对LN层中的γ和β产生作用。它的思路也不复杂,分别通过一个MLP得到拉长后的Mt对γ和β的影响,然后将它们与原来的γ和β相加,然后再应用LayerNorm。LN的结果作为第一个MultiHead Attention的Q,V和K来源于编码器。

结果

在这里插入图片描述
最后来到结果部分。论文主要是针对IU X-RAY和MIMIC-CXR这两个数据集进行实验。在与baseline对比的过程中,在多个评价指标下都超过了baseline。同时与先前的研究进行比较,也取得了不错的结果。

作者也针对结果进行了调参与分析,发现记忆槽size=3时效果最佳,size=4时产生了性能下降,意味着太大的记忆槽可能会记忆过多的冗余和无效信息,从而对文本生成过程产生负面影响。并且还做了消融实验,比之于BASE+RM,BASE+RM+MCLN生成的报告长度分布更接近于ground truth,这表明将记忆机制应用在更多的内部层中,会对模型生成的内容有更细粒度的控制。
在这里插入图片描述

总结

本文将记忆力机制引入到了端到端的放射性医学影像描述生成的任务重,从而确保了生成结果能够准确、详细地描述输入的影像,并且遵循常规的模式性的描述机制。
在引入记忆力机制的过程中,其更改Transformer的结构的地方比较新颖,在LN层上动刀子,从而将记忆的影响带到了Decoder内部的隐层状态中,获得了更细粒度的控制。

相关文章:

【论文阅读】Generating Radiology Reports via Memory-driven Transformer (EMNLP 2020)

资料链接 论文原文:https://arxiv.org/pdf/2010.16056v2.pdf 代码链接(含数据集):https://github.com/cuhksz-nlp/R2Gen/ 背景与动机 这篇文章的标题是“Generating Radiology Reports via Memory-driven Transformer”&#xf…...

IP协议相关技术

文章目录 IP协议相关技术仅凭IP无法完成通信DNSARP IP协议相关技术 仅凭IP无法完成通信 人们在上网的时候其实很少直接输入某个具体的IP地址。 在访问Web站点和发送、接收电子邮件时,我们通常会直接输入Web网站的地址或电子邮件地址等那些由应用层提供的地址&…...

Visual Studio2022安装教程【图文详解】(大一小白)编译软件

工欲善其事,必先利其器。想要学好编程,首先要把手中的工具利用好,今天小编教一下大家如何下载安装并使用史上最强大的编译器--Visual Studio🍗 一.Visual Studio下载及安装 https://visualstudio.microsoft.com/ 打开文件 点击.ex…...

matlab 点云最小二乘拟合平面(PCA法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫网站自重。 一、算法原理 见:matlab 点云最小二乘拟合平面(PCA法详细过程版)。 二、代码实现 clc;clear; %% --------...

socks5代理和https代理有什么不同?各自有哪些优点?

socks5代理和https代理是两种不同的代理服务,它们在实现方式、安全性和协议特点等方面存在差异。下面我们来详细了解一下这两种代理的优点。 一、socks5代理的优点 1. 速度快 socks5代理采用了TCP协议,能够有效地减少网络延迟和数据传输速度慢的问题&…...

springboot,spring框架返回204 status code的时候,会吞掉返回值

背景 发现有个有意思的现象,就是当你的接口返回204的 HTTP status code 的时候,会自动把 response body 吃掉,即使代码里是有返回的。例如 (其实204本身就是NO_CONTENT的意思,不过我是真没想到真干掉了返回&#xff0…...

6-爬虫-scrapy解析数据(使用css选择器解析数据、xpath 解析数据)、 配置文件

1 scrapy解析数据 1.1 使用css选择器解析数据 1.2 xpath 解析数据 2 配置文件 3 整站爬取博客–》爬取详情–》数据传递 scrapy 爬虫框架补充 # 1 打码平台---》破解验证码-数字字母:ddddocr-计算题,滑块,成语。。。-云打码,超…...

idea 一直卡在maven正在解析maven依赖

修改maven Importing的jvm参数 -Xms1024m -Xmx2048m...

警告:未配置spring boot 配置注解处理器

前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 问题 我再使用ConfigurationProperties(prefix “redisson”)去加载配置文件中的属性的时候,发现idea有个警告 并且配…...

详解虚拟DOM的原理

Virtual DOM(虚拟DOM)是一种编程概念,它是对真实DOM的轻量级抽象表示。在前端开发中,直接操作真实DOM是昂贵的,尤其是当涉及到大量的DOM更新时。Virtual DOM的出现,为优化和提高Web应用的性能提供了一个有效…...

开设自己的网站系类03安装数据库(centos版)

编者买了一个服务器打算自己构建一个网站,用于记录生活。网站大概算是一个个人博客吧。记录创建过程的一些步骤。 前面已经讲过配置服务器的程序运行环境 网站运行还需要数据库,本篇文章则是安装数据库的内容。 卸载mariadb 查看是否有安装 mariadb&…...

Flutter StreamBuilder 实现局部刷新 Widget

Stream 就是事件流或者管道,是基于事件流驱动设计代码,然后监听订阅事件,并针对事件变换处理响应。 Stream 分单订阅流和广播流,单订阅流在发送完成事件之前只允许设置一个监听器,并且只有在流上设置监听器后才开始产生事件&…...

【代码随想录】算法训练营 第十六天 第六章 二叉树 Part 3

104. 二叉树的最大深度 题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例: 输入:root [3,9,20,null,null,15,7] 输出:3 思路 用递归来做&#xff0c…...

【C++数据结构】顺序存储结构的抽象实现

文章目录 前言一、目标二、SeqList实现要点三、SeqList函数实现3.1 get函数3.2 set函数3.3 insert函数带2个参数的insert带一个参数的insert 3.4 remove函数3.5 clear函数3.6 下标运算符重载函数无const版本const版本 3.7 length函数 总结 前言 当谈到C数据结构时,…...

LeetCode75——Day31

文章目录 一、题目二、题解 一、题目 206. Reverse Linked List Given the head of a singly linked list, reverse the list, and return the reversed list. Example 1: Input: head [1,2,3,4,5] Output: [5,4,3,2,1] Example 2: Input: head [1,2] Output: [2,1] Exa…...

小白学爬虫:通过商品ID或商品链接封装接口获取淘宝商品销量数据接口|淘宝商品销量接口|淘宝月销量接口|淘宝总销量接口

淘宝商品销量接口是淘宝开放平台提供的一种API接口,通过该接口,商家可以获取到淘宝平台上的商品销量数据。使用淘宝商品销量接口的步骤如下: 1、在淘宝开放平台注册并创建应用,获取API Key和Secret Key等必要的信息。 2、根据淘宝…...

AI:75-基于生成对抗网络的虚拟现实场景增强

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…...

【MySQL数据库】| 索引以及背后的数据结构

🎗️ 主页:小夜时雨 🎗️ 专栏:MySQL数据库 🎗️ 如何优雅的活着,是我找寻的方向 目录 1. 基本知识2. 索引背后的数据结构总结 1. 基本知识 概念 索引是一种特殊的文件,包含着对数据表里所有…...

家用电脑做服务器,本地服务器搭建,公网IP申请,路由器改桥接模式,拨号上网

先浇一盆冷水! 我不知道其他运营商是什么情况。联通的运营商公网IP端口 80、8080、443 都会被屏蔽掉,想要开放必须企业备案(个人不行)才可以。也就是说,只能通过其他端口进行showtime了。 需要哪些东西? 申…...

原神游戏干货分享:探索璃月的宝箱秘密,提高游戏资源获取效率!

《原神》是一款备受玩家喜爱的开放世界冒险游戏,而在游戏中获取资源是提升角色实力的重要途径。在这篇实用干货分享中,我们将介绍一些探索璃月地区的宝箱秘密,帮助你提高游戏资源获取的效率。 首先,璃月地区的宝箱分为普通宝箱和精…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...