返回列表

First solo gold, 7th place solution: transformers with convolution/deconvolution

402. OpenVaccine: COVID-19 mRNA Vaccine Degradation Prediction | stanford-covid-vaccine

开始: 2020-09-11 结束: 2020-10-06 药物研发 数据算法赛
首次单人金牌,第7名方案:带有卷积/反卷积的Transformer

首次单人金牌,第7名方案:带有卷积/反卷积的Transformer

作者:Shujun
发布时间:2020年10月7日

在介绍我的解决方案之前,我想感谢许多人。首先,我要感谢 @herbison,在最近主要针对 angtk.ai 的大规模合规行动中,我(错误地)被封禁,是他帮助我澄清了名声。还要感谢 Kaggle 合规团队 @inversion 调查了我的案件并解封了我。如果没有他们,这一切都不可能发生。

还要感谢那些质疑排行榜结果的人 @cpmp@group16@onodera,事实证明他们是对的,也感谢斯坦福团队调查了这个问题并重新进行了评分。昨天我本来已经放弃了,心想也许深度学习在这个 RNA 问题上根本行不通。

非常感谢斯坦福团队(@dosoon@rhijudas@wayment@andywatkins)主办了这样一场精彩且重要的比赛。特别感谢 @andywatkins 解释 RNA 结构并帮助我更好地理解它。

你们许多人可能都知道一年前的 CHAMPS 比赛,当时所有顶尖的解决方案都使用了 Transformer,这也是我参加这次比赛的灵感来源。

最后但同样重要的是,感谢我的 PI(项目负责人)允许我将这次比赛作为我研究工作的一部分。

这次比赛时间很短,我犯了很多错误……上周六我做了一些大的改进,不得不匆忙进行集成,所以如果有更多的时间,我可能会得出更好的分数,但这对于比赛中的每个人来说可能都是一样的,无论哪种方式我都对最终结果感到满意。

核心思想

我想说我的解决方案是我对 RNA 和深度学习基本理解的最简单体现。我没有使用任何技巧,只专注于架构设计。没有特征工程,最少的后处理或预处理。一切都执行得简单直接。在这里我将谈谈主要思想,如果有什么解释不清楚的地方请告诉我。

  1. 自注意力机制用于学习全局依赖关系
  2. 卷积用于提供局部连接性
  3. RNA 应被视为分子(共价和局部连接的核苷酸,有机会形成非共价键)而不是序列(这意味着不应该像 BERT 和原始 Transformer 那样存在位置编码)

核心架构:ConvTransformerEncoder

大多数人都知道,如果直接将单个核苷酸编码输入 Transformer 编码器,在这个问题上是不起作用的。有效的方法不是使用自注意力来获取核苷酸到核苷酸的注意力图,而是在自注意力之前使用 1D 卷积在局部聚合单个核苷酸。你可以说这是一个区域到区域的注意力映射(因此没有填充)。

在比赛初期,我认为将 BPP 矩阵作为偏置添加到注意力函数中肯定能改善结果。这是有道理的,因为我认为二级结构能稳定 RNA。我使用了 CHAMPS 顶尖解决方案 https://www.kaggle.com/c/champs-scalar-coupling/discussion/106575 中使用的相同想法(数学上)。这个想法归功于 @zkolter

Modified Self Attention

添加 BPP+距离矩阵结果显著改善。由于我在所有 1D 卷积操作中都不使用填充,BPP 矩阵也应该被处理成区域到区域的映射,使用相同内核大小的 2D 卷积且不填充,直接对应于 2D 层面上的核苷酸区域到区域映射,并且可以在 softmax 之前直接添加到注意力函数 QK^T 中。

由于无填充卷积会导致编码维度降低,这种

同比赛其他方案