融合策略

切换语言: Fusion Strategies

增强子-启动子预测不只是单序列编码问题,还涉及两条序列编码结果如何在分类前组合。

支持的策略

  • concat

  • add

  • subtract

  • multiply

  • bilinear

  • concat_sub_mul

如果把 enhancer / promoter 表示写成 \(h_e\)\(h_p\),那么主要融合形式 可以写成:

\[\mathrm{concat}: [h_e; h_p]\]
\[\mathrm{add}: h_e + h_p\]
\[\mathrm{subtract}: h_e - h_p\]
\[\mathrm{multiply}: h_e \odot h_p\]
\[\mathrm{concat\_sub\_mul}: [h_e; h_p; h_e - h_p; h_e \odot h_p]\]

为什么融合层重要

即便单路编码器很强,如果 pairwise interaction 层太弱,最终性能仍可能受限。 融合层决定了 enhancer 与 promoter 之间的关系信息,能以多丰富的形式暴露给分类器。

所以融合层不应该被看成无关紧要的小实现细节。它直接决定了分类器到底能看到哪些关系结构。

主要策略的含义

  • concat:保留两条向量原貌,把关系学习交给分类头

  • add:强调共享强度与对称聚合

  • subtract:显式暴露方向差异

  • multiply:强调逐元素协同与一致性

  • bilinear:用可学习双线性交互表示更复杂关系

  • concat_sub_mul:把身份、差异、一致性三种信息同时保留

默认选择

当前项目默认使用 concat_sub_mul,因为它在表示丰富度和参数代价之间取得了比较平衡的折中。

计算复杂度与适用范围

  • 时间复杂度:融合层本身通常只占总计算的一小部分,真正昂贵的仍然是前面的序列编码器;例外是 bilinear 会更重。

  • 显存特征:concat 类融合会增加分类头输入宽度,而 bilinear 会更明显地增加参数量。

  • 适用范围:大多数 benchmark 场景下,逐元素和拼接类融合已经足够;只有在确实需要更强 pairwise interaction 表达时,bilinear 才更值得。

../_images/div.png