少年帮|利用深度学习生成医疗报告( 九 )


9.注意机制
少年帮|利用深度学习生成医疗报告注意机制是对编解码模型的改进 。 事实证明 , 上下文向量是这些类型模型的瓶颈 。 这使他们很难处理长句 。 Bahdanau et al. , 2014和Luong et al. , 2015提出了解决方案 。
这些论文介绍并改进了一种叫做“注意机制”的技术 , 它极大地提高了机器翻译系统的质量 。 注意允许模型根据需要关注输入序列的相关部分 。 后来 , 这一思想被应用于图像标题 。
那么 , 我们如何为图像建立注意力机制呢?
少年帮|利用深度学习生成医疗报告对于文本 , 我们对输入序列的每个位置都有一个表示 。 但是对于图像 , 我们通常使用网络中一个全连接层表示 , 但是这种表示不包含任何位置信息(想想看 , 它们是全连接的) 。
我们需要查看图像的特定部分(位置)来描述其中的内容 。 例如 , 要从x光片上描述一个人的心脏大小 , 我们只需要观察他的心脏区域 , 而不是他的手臂或任何其他部位 。 那么 , 注意力机制的输入应该是什么呢?
我们使用卷积层(迁移学习)的输出 , 而不是全连接的表示 , 因为卷积层的输出具有空间信息 。
少年帮|利用深度学习生成医疗报告例如 , 让最后一个卷积层的输出是(7×14×1024)大小的特征 。 这里 , “7×14”是与图像中某些部分相对应的实际位置 , 1024个是通道 。 我们关注的不是通道而是图像的位置 。 因此 , 这里我们有7*14=98个这样的位置 。 我们可以把它看作是98个位置 , 每个位置都有1024维表示 。
少年帮|利用深度学习生成医疗报告现在我们有98个时间步 , 每个时间步有1024个维表示 。 我们现在需要决定模型应该如何关注这98个时间点或位置 。
一个简单的方法是给每个位置分配一些权重 , 然后得到所有这98个位置的加权和 。 如果一个特定的时间步长对于预测一个输出非常重要 , 那么这个时间步长将具有更高的权重 。 让这些重量用字母表示 。
现在我们知道了 , alpha决定了一个特定地点的重要性 。 alpha值越高 , 重要性越高 。 但是我们如何找到alpha的值呢?没有人会给我们这些值 , 模型本身应该从数据中学习这些值 。 为此 , 我们定义了一个函数:
少年帮|利用深度学习生成医疗报告这个量表示第j个输入对于解码第t个输出的重要性 。 h_j是第j个位置表示 , s_t-1是解码器到该点的状态 。 我们需要这两个量来确定e_jt 。 f_ATT只是一个函数 , 我们将在后面定义 。
在所有输入中 , 我们希望这个量(e_jt)的总和为1 。 这就像是用概率分布来表示输入的重要性 。 利用softmax将e_jt转换为概率分布 。
少年帮|利用深度学习生成医疗报告现在我们有了alphas!alphas是我们的权重 。 alpha_jt表示聚焦于第j个输入以产生第t个输出的概率 。
现在是时候定义我们的函数f_ATT了 。 以下是许多可能的选择之一:
少年帮|利用深度学习生成医疗报告V、 U和W是在训练过程中学习的参数 , 用于确定e_jt的值 。


推荐阅读