3. 功能预测任务定义与建模目标
在蛋白功能预测建模工程中,最先要做的不是选模型,而是把“预测什么”定义清楚。同一个蛋白序列,可以问出很多不同的问题:它属于哪个家族?它的最适温度是多少?它同时具备哪些功能?哪些残基参与催化?哪些突变更可能致病?这些问题对应的输出空间、损失函数、评价指标和可用数据形态完全不同。如果任务定义错了,后面无论用多复杂的网络,都只是在优化一个错误的目标。
本节把常见的蛋白功能预测任务归纳为五类:分类、回归、多标签、位点识别和排序。理解它们的差别,是后续数据构造、模型选型和评估设计的前提。
一、分类:从序列到一个离散类别
分类任务假设每个样本属于且仅属于一个类别,输出是互斥的。典型场景包括:酶与非酶判别(二分类)、蛋白亚细胞定位预测(多分类,如细胞核、细胞质、线粒体、分泌途径等)、以及蛋白家族归属(如把序列分到某个 Pfam 家族)。
建模时,标签通常编码为 one-hot 向量,模型末端接 softmax,损失用交叉熵。评价指标不能只看准确率:当类别极不平衡时(例如膜蛋白只占少数),应同时看宏平均 F1、每类召回率和混淆矩阵。一个常见误区是把“多标签”当成“多分类”处理——如果一条序列可以同时是激酶和转录因子,用 softmax 会强迫模型二选一,这是任务定义错误。
二、回归:预测连续数值
回归任务的输出是实数,例如最适 pH、最适温度、热稳定性 ΔTm、催化效率 kcat/Km、表达量或结合亲和力。与分类不同,回归对标签的数值精度和量纲非常敏感。
建模时通常对目标做标准化或对数变换(如 kcat 常跨多个数量级,宜取 log10),损失用 MSE 或 Huber。评价指标用 MAE、RMSE、Pearson/Spearman 相关系数。需要注意:如果训练集里同一蛋白有多个实验条件下的测量值,直接回归会引入标签噪声,应先明确预测的是“某个条件下的值”还是“条件平均趋势”。
三、多标签:一条序列对应多个功能
多标签任务中,每个样本可以同时拥有多个标签,标签之间不互斥。蛋白功能注释(GO term 预测)是最典型的例子:一条序列可能同时具有“ATP 结合”“蛋白激酶活性”“细胞凋亡调控”等多个功能。
建模时,输出层对每个标签独立做 sigmoid,损失用二元交叉熵(BCE),每个标签单独设阈值。评价指标常用 mAP、micro-F1、macro-F1 以及每个 GO term 的 AUPRC。由于 GO 标签极度不平衡且存在层级关系(子 term 蕴含父 term),实际工程中常做标签传播或层级约束,而不是把几千个 term 完全独立对待。
四、位点识别:从整条序列到残基级标注
位点识别把预测粒度从“整条序列”下沉到“每个残基”。典型任务包括:催化残基识别、金属结合位点、糖基化位点、蛋白-蛋白相互作用界面残基、以及二硫键半胱氨酸配对。
这类任务的输入是序列(或结构),输出是长度等于序列长度的标签序列,属于序列标注问题。模型常用 CNN、BiLSTM 或蛋白语言模型加逐残基分类头,损失用逐位置交叉熵。评价时不能只看残基准确率——正例通常只占 1%~5%,应看残基级 AUPRC、precision/recall,以及“命中一个真实位点即算对”的蛋白级指标。位点识别还常与结构信息结合,例如用距离图约束预测的残基在三维空间中是否聚集。
五、排序:关心相对顺序而非绝对分数
排序任务不要求预测出精确数值,只要求把候选对象按某种功能相关性排出先后。典型场景包括:给定一个蛋白,对候选配体/底物/突变体排序;或在定向进化中,对突变文库排序以挑选下一轮实验对象。
建模时常用 pairwise 或 listwise 损失(如 RankNet、LambdaRank),评价指标用 NDCG、MAP、Top-k 命中率。排序任务的价值在于:实验验证预算有限时,模型只需把真正有功能的候选排进前几名即可,而不必给出准确的活性值。
六、如何判断一个任务属于哪一类
可以用三个问题快速定位:第一,输出是离散还是连续?离散→分类/多标签/位点识别,连续→回归或排序分数。第二,标签之间是否互斥?互斥→分类,不互斥→多标签。第三,预测粒度是整条序列还是单个残基?残基级→位点识别。第四,是否只关心相对顺序?是→排序。
实际项目中,任务常常是组合的。例如“预测某突变对蛋白稳定性的影响”可以建模为回归(预测 ΔΔG 数值),也可以建模为排序(把突变按有害程度排序);“预测蛋白功能”可以同时输出 GO 多标签和催化位点。此时应明确主任务与辅助任务,并设计多任务损失权重,而不是把所有输出混在一个头里。
七、从任务定义到建模目标的落地检查
确定任务类型后,还要把它翻译成可执行的建模目标。建议按以下顺序检查:
- 输出维度:分类为类别数 C,多标签为标签数 L,位点识别为序列长度 × 类别数,排序为每个候选的分数。
- 标签编码:分类用整数或 one-hot,多标签用 0/1 向量,位点识别用与序列等长的标签序列,排序用相关性等级或成对偏好。
- 损失函数:分类用交叉熵,多标签用 BCE,回归用 MSE/Huber,位点识别用逐位置交叉熵,排序用 pairwise/listwise 损失。
- 评价指标:必须与任务类型匹配,并考虑类别不平衡、标签不平衡和正例稀疏问题。
- 基线:分类可用逻辑回归或 kNN,回归可用均值预测,多标签可用频率最高标签,位点识别可用保守性打分,排序可用 BLAST 相似度。先跑通基线,再上深度模型。
以“预测蛋白是否具有某个酶活”为例,如果只判断“有/无”,是二分类;如果要同时预测 EC 号的前三位,是多标签;如果要预测具体催化残基,是位点识别;如果只是把候选底物按反应可能性排序,是排序。同一个生物学问题,任务定义不同,数据标注方式、模型输出和评估标准都会随之改变。
总结来说,分类回答“是哪一个”,回归回答“是多少”,多标签回答“有哪些”,位点识别回答“在哪里”,排序回答“哪个更可能”。在蛋白功能预测建模工程中,先把这五个问题分清楚,后续的数据构造、模型设计和评估才有稳定的落脚点。