“Datawhale AI夏令营” Task1 笔记

33 阅读4分钟

一、代码运行过程

1、环境搭建

夏令营提供的教程十分详细,代码环境搭建的过程十分顺利。魔搭平台很方便,以后如果还有需要的话,我也会选择这个平台的。

2、代码运行

整个代码运行过程大约耗时四分半,不过我看教程中写着大约要运行十分钟,关于这一点我不太明白(?),好在最后结果是合理的。

3、成绩提交

获得了一个中规中矩的分数,希望在后续的学习中改进!

二、代码理解部分

运行结束后,我结合教程中给出的注释尝试理解代码。

1、库的导入

这一部分中,引入了许多我们在后续的代码中需要的库,比如pytorch、numpy等等,在我之前的学习过程中也有所涉猎,所以这部分难度对我来说不太大。不过教程在每一条代码旁边都标注上了它的具体作用,让我能了解得更加透彻,很感谢!

2、基因组分词器类

由于一段基因序列很长,含有很多信息,为了让程序更方便处理,需要将这段基因分成更便于处理的、更简短的小部分,这段程序就是起到了这样的作用。首先是将输入的基因信息全都转换成大写,这样更方便处理,然后代码设定一个片段的长度为5,相邻两个片段间舍弃2个信息。在这里有部分信息的丢弃,所以后续如果想提高模型的正确率,可以从这部分下手(按我目前的理解是可以将舍弃信息减少,或者加大每个片段的长度,后续如果有不同理解再修改)。

3、基因组词汇类

按我的想法,这个部分是根据一个关于基因的片段的列表,与上一部分分出的各个片段基因相对照,记录上一个部分中的各个片段基因在这个列表中出现的频率,再按高到低选取相应列表基因作为结果。后续改进模型也能从这部分入手(提高选取的列表中的基因的数量或降低最低频率)。

这部分我有一些代码不是很理解,比如说填充序列的作用,我不太清楚是干什么的,是为了给长度不足5的片段基因填充成长度为5的吗,但上述部分不是应该以及保证了这些基因片段的长度都为5吗(?)。

4、siRNA数据集类

这部分的主要作用是将siRNA的数据处理得方便使用。如果没有理解错误,这部分的处理与对基因的处理类似,也是切成一个个长度相同的片段(如果不够会有填充序列补上),并且舍弃部分基因信息,所以后续调优的办法也与第二部分类似吧!

5、siRNA模型

从这里开始就结束信息处理部分,开始神经网络的计算了。这个模型基于门控循环单元(GRU),可以更好地捕捉长期依赖性,减少梯度消失的问题。对于这部分我没太理解,其实之前对于神经网络的学习也是,我只能勉强理解他有什么作用,具体过程如何实现我不太清楚,希望这次能理解更深入吧!

6、评估部分

搭建完整个模型后,需要对模型的实用性进行评估,这部分给出了评估指标的具体计算方法以及评估函数,后续根据实例对这部分计算方法和函数进行修改以达到提高模型性能的目的。

7、训练程序

这部分通过提供数据对整个模型进行训练来提高性能。将提供的数据集分成数个大小固定的部分,每个部分以固定的更新幅度迭代50次,以此来提高模型相应参数的准确率。后面改进程序这里也能作为切入点(改变固定部分的大小、迭代次数、学习率等等)。

8、测试程序

最后就是让程序上“战场”了!

三、后记

我之前在学校组织的AI精训营中学习过RNN等神经网络,也跟着老师复现过部分模型,不过对那些知识我现在还是一知半解,知其然不知其所以然,这次的夏令营我认为是一个很好的学习的机会,希望能在这里弥补以前的知识漏洞吧!