# Task 2 学习笔记
## 1. 官方 Baseline 分析
在本任务中,我们首先对官方提供的基线(baseline)进行了分析。基线是使用 `siRNA_antisense_seq` 和 `modified_siRNA_antisense_seq_list` 这两个特征,它们都是由符号标记的序列。这些序列特征需要经过处理才能输入到 RNN 模型中。
### 1.1 SiRNAModel 类的 Forward 方法
- 该方法首先将输入序列通过嵌入层转换。
- 然后使用 GRU 层处理每个嵌入的序列,并取最后一个隐藏状态。
- 最后,通过全连接层输出预测结果。
### 1.2 序列特征处理
- 使用 `GenomicTokenizer` 对序列进行分词,构建词汇表。
- 将序列转换为索引,并填充到最大长度。
## 2. RNN 模型分析
RNN(递归神经网络)是处理序列数据的强大工具,但存在一些局限性,如长期依赖问题和梯度消失或爆炸问题。
### 2.1 LSTM 和 GRU 的改进
- **LSTM** 通过三个门(输入门、遗忘门、输出门)来解决 RNN 的局限性。
- **GRU** 是 LSTM 的简化版本,通过两个门(更新门、重置门)来实现类似的功能。
### 2.2 PyTorch 中的 GRU
- 在 PyTorch 中,GRU 层的参数设置会影响模型的输入输出张量维度。
## 3. 数据的特征工程
特征工程是提高模型性能的关键步骤。我们可以通过以下方式来增强特征:
### 3.1 类别型变量处理
- 使用 `pd.get_dummies` 函数构造 one-hot 特征。
### 3.2 时间特征构造
- 从 `siRNA_duplex_id` 中提取序列号和版本号。
### 3.3 包含某些单词
- 使用 `str.contains` 方法来检测字符串中是否包含特定单词。
### 3.4 根据序列模式提取特征
- 根据 RNA 的背景知识,构造基