Task1:赛题解析&背景入门
思考引导(前言)
RNA干扰(RNAi)
RNA干扰(RNAi)是一种天然存在的基因表达调控机制,通过小干扰RNA(siRNA)等分子来沉默特定基因的表达。这一机制在细胞中起着重要作用,能精确地抑制目标基因的表达,从而减少相应蛋白质的产生。siRNA通过与靶mRNA结合,诱导RNA诱导沉默复合物(RISC)切割mRNA,最终导致mRNA降解和基因沉默。在基因治疗和疾病治疗中,RNAi技术有望通过沉默致病基因来发挥治疗作用。
化学修饰siRNA
化学修饰siRNA是指在siRNA分子中引入化学修饰,以增强其稳定性、靶向性和有效性。这些修饰可以增加siRNA在体内的稳定性,减少其毒性和副作用,提高其基因沉默效率。常见的化学修饰包括磷酸酯骨架修饰、核苷酸修饰和末端修饰等。这些修饰不仅能提高siRNA的药效,还能减少非特异性沉默,提升siRNA药物的临床应用潜力。
深度学习与RNN
深度学习是一种基于人工神经网络的机器学习方法,擅长处理复杂的非线性关系和高维数据。递归神经网络(RNN)是一类深度学习模型,特别适用于处理序列数据。RNN通过在隐藏层中引入循环连接,可以有效捕捉序列中的时间依赖关系。在RNAi效率预测任务中,RNN能够通过学习siRNA序列和靶mRNA序列之间的复杂关系,准确预测其基因沉默效果。
词汇表与序列编码
在处理基因序列数据时,通常需要将核酸序列转换为数值表示形式,以便输入到深度学习模型中。词汇表(vocab)是一种将序列中的每个元素(如核苷酸或核苷酸组合)映射到一个唯一的数值索引的结构。在本文中,使用了一个基于3-gram的词汇表,这意味着每三个连续的核苷酸组合成一个“单词”。这种方法能够捕捉序列中的局部模式,并提高模型的预测能力。
关注重点:
-
哪种模型最适合当前的任务? 在baseline提供的RNN模型基础上,尝试不同的深度学习模型(如LSTM、Transformer)和传统机器学习模型(如随机森林、XGBoost)。比较不同模型的性能,选择最佳模型。
-
如何调优模型的超参数? 利用网格搜索或随机搜索方法调整模型的超参数(如学习率、隐藏层数、嵌入维度等),找到最优的超参数组合。【已尝试,但效果不好,还是推荐改进算法,第二个成绩是将迭代次数(epochs)改为100,可能过拟合了,第三次是将批次大小(bs)改为100,迭代次数改为20(因为想赶十二点前,多了训练不完),第三次是将批次大小改为128,迭代次数改为50,对比起来还是推荐改算法再调参,每天就三次机会参数改动大了不好把握,小了又怕浪费机会,还不如尝试改进算法】
-
如何通过数据增强提高模型的鲁棒性? 通过序列随机截断、拼接等方法增强数据,增加模型的鲁棒性和泛化能力。
Part1: 赛题介绍
本次比赛旨在利用机器学习技术,预测化学修饰后的siRNA序列在RNA干扰(RNAi)机制下对靶基因的沉默效率。RNAi是一种重要的基因表达调控机制,通过干扰特定基因的表达,可以用于疾病治疗。这次比赛的目标是通过构建并优化模型,准确预测siRNA的沉默效率,从而提升药物设计的效率和效果。
数据集
数据集包括siRNA裸序列、经过化学修饰的siRNA序列、目标mRNA序列以及实验条件(如药物浓度、细胞系、转染方式等)。最重要的字段是mRNA_remaining_pct,这是我们模型的训练目标,表示siRNA对靶基因沉默后的剩余mRNA百分比,值越低表示沉默效率越好。
Part2: 评分机制
在这次比赛中,模型的评分由多个指标共同决定,以全面评估模型的性能。这些指标包括平均绝对误差(MAE)、区间内的平均绝对误差(Range MAE和和F1得分(F1 Score)。这些指标分别衡量模型在预测上的准确性和稳定性,以及在区间内的表现。最终的评分(Score)是综合这些指标的加权结果。通过下述代码,我们可以更加了解本次赛题的评分细节。
# score = 50% × (1−MAE/100) + 50% × F1 × (1−Range-MAE/100)
def calculate_metrics(y_true, y_pred, threshold=30):
mae = np.mean(np.abs(y_true - y_pred))
y_true_binary = (y_true < threshold).astype(int)
y_pred_binary = (y_pred < threshold).astype(int)
mask = (y_pred >= 0) & (y_pred <= threshold)
range_mae = mean_absolute_error(y_true[mask], y_pred[mask]) if mask.sum() > 0 else 100
precision = precision_score(y_true_binary, y_pred_binary, average='binary')
recall = recall_score(y_true_binary, y_pred_binary, average='binary')
f1 = 2 * precision * recall / (precision + recall)
score = (1 - mae / 100) * 0.5 + (1 - range_mae / 100) * f1 * 0.5
return score
最终的评分结合了MAE和区间内MAE的反比例值,以及F1得分。MAE和Range MAE越小,1减去它们的比值越大,表明误差小,模型表现好。F1得分高则表示模型分类性能好。最终评分是这几个值的加权平均数,权重各占50%。
Part3: 相关生物背景知识与应用
AI与制药、RNAi作用机制、传统siRNA设计原则与知识、AI在生命科学领域应用
【主要讲解在现代生命科学研究中,人工智能(AI)正日益成为不可或缺的工具,通过其强大的数据处理和分析能力,显著推动了多个领域的发展,感兴趣可以搜索相关资料】
Part4: 代码解读
鉴于不知道能不能全部展示,就展示介绍一下调用的包吧,顺便看看调参,算法没改动感觉没什么好讲的。
对于一些跑过深度学习的人来说基本上都是老朋友,上述是用pycharm展示的,在配置的python环境中确保上述内容均有即可,没有的话就用pip install 跟上上述包即可,后面可以跟版本不跟就是默认下载最新版本。【这里有个重点比赛用魔塔平台跑十分迅速,但用自己电脑跑是真的很慢,我跑了一下就放弃用电脑自带的GPU跑了】
批次大小 (bs):批次大小影响训练速度和模型性能。通常建议尝试不同的批次大小,一般来说,较大的批次大小可以加快训练速度,但可能会增加内存需求。
迭代次数 (epochs):训练的迭代次数通常需要根据数据集大小和模型复杂度来调整。50次迭代可能足够,但也可以尝试更多的迭代次数,例如100或200次,以提高模型的性能。
学习率 (lr):学习率对训练的影响很大,是一个关键的超参数。通常建议从较小的值开始,如0.001,并观察训练过程中的损失情况。如果损失不断减小,说明学习率合适;如果损失停滞或波动较大,可能需要调整学习率。可以尝试使用学习率调度器,如optim.lr_scheduler.ReduceLROnPlateau,来动态调整学习率。
后面几天的任务就是尝试一下改进算法啦,大家一起努力吧~
标签:Task,AI,模型,Datawhale,学习,MAE,序列,100,siRNA From: https://blog.csdn.net/2301_78848706/article/details/140756643