需求简述
- 基于给定的 RNA 三维骨架结构,生成一个 RNA 序列。评估标准是序列的恢复率 (recovery rate),即算法生成的 RNA 序列,在多大程度上与真实能够折叠成目标结构的 RNA 序列相似。恢复率越高,表明算法性能越好。
学习总结
- 以前有算法经验,代码理解起来还是很快的
- 虽然没弄过阿里云镜像仓库+ModelScope+Codeup,但是这一套,还是很熟悉的
- 重点(老生长谈的算法话题)
- 数据质量:有些原始数据还是很乱的,所以需要做一些前期的数据工程,数据对齐,去除噪音数据等
- 数据特征:QUALITY IN, QUALITY OUT, 数据表征是模型的输入,好的表征能否让模型更好地捕捉到数据间的联系,逼近更好地效果
- 模型架构:核心算法所在,影响数据的前向传播及权重优化,非常重要
- 超参数:有很多超参数,但是要理解其意思,不要乱调,有目的地调,可以提升效率
- 结果分析也很重要,知道问题出在哪,以后在哪优化
- 问题
- 熟悉docker,有些包问题,小case
- 比赛代码提交怎么运行的,涉及导入的模型权重文件名有变化,改下代码就行
- 专业知识问题
- DNA链还是很熟悉的,如果给了所有的原子坐标及原子类型,其实很好判断,因为ACUG核糖核苷酸的侧链是不一样的
- 背景知识:DNA链只所以能折叠成固定的空间结构,肯定是有某些力的作用,范德华力,氢键作用等,所有特定的核糖核苷酸,肯定具有某些别人不具有的特征。重点就是要让模型找到这些特征
优化
- 训练数据通过旋转空间左边,增加训练数据
- 除了将三维空间坐标作为特征外,还增加了二面角,方向特征,同一个核糖核苷酸内原子间最大最小欧几里得距离等特征,增强数据的表示能力
- 增加了模型的层数,及训练批次,这个我是基于经验自己调的
- 大量增加旋转后的训练数据,可能会有过拟合的情况,所以调大了一点dropout的比例
准确率
- 从原始的0.3不到提升到0.6