融合策略
切换语言: Fusion Strategies
增强子-启动子预测不只是单序列编码问题,还涉及两条序列编码结果如何在分类前组合。
支持的策略
concataddsubtractmultiplybilinearconcat_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 才更值得。