# metaLSTM **Repository Path**: xbnpyk/metaLSTM ## Basic Information - **Project Name**: metaLSTM - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-16 - **Last Updated**: 2021-05-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

-------------------------------------------------------------------------------- # metaLSTM Meta Learning for LSTM 项目从搭建RNNs和MetaRNNs开始,首先用Jupyter测试RNNs和MetaRNNs的输入输出,然后用MNIST数据集测试RNNs和MetaRNNs的性能, 这些测试都是为了保证实现的RNNs和MetaRNNs基本正确,接着在CoNLL-2003数据集上进行NER实验,在这个过程中,需要保证RNNs性能和 Pytorch库提供的RNNs性能相差不大。之后的实验慢慢迁移到多任务,用的数据集是公开的医学数据集。 *注:我用PyCharm运行项目,远程连接服务器。如果直接通过命令行运行文件可能不行,会出现找不到包的问题。* ## 1 参考资料 感谢作者们的辛苦付出,让我有幸搬砖 :-P - [x] [(1)[代码] pytorch_workplace/rnn](https://github.com/DingKe/pytorch_workplace/tree/master/rnn) - [x] [(2)[文档] Pytorch Doc](http://pytorch.org/docs/0.3.1/) - [x] [(3)[论文] HyperNetworks](https://arxiv.org/pdf/1609.09106.pdf) - [x] [(4)[代码] supercell](https://github.com/hardmaru/supercell) - [x] [(5)[论文] Meta Multi-Task Learning for Sequence Modeling](https://arxiv.org/pdf/1802.08969.pdf) - [x] [(6)[论文] Optimization As a Model For Few-Shot Learning ](https://openreview.net/pdf?id=rJY0-Kcll) - [x] [(7)[代码] NCRF++](https://github.com/jiesutd/NCRFpp) - [x] [(8)[论文] Recurrent Batch Normalization](https://arxiv.org/pdf/1603.09025.pdf) - [x] [(9)[代码] batch_normalized_LSTM](https://github.com/sysuNie/batch_normalized_LSTM) - [x] [(10)[论文] Optimal Hyperparameters for Deep LSTM-Networks for Sequence Labeling Tasks](https://arxiv.org/pdf/1707.06799.pdf) - [x] [(11)[数据集] MTL-Bioinformatics-2016](https://github.com/cambridgeltl/MTL-Bioinformatics-2016) - [x] [(12)[代码] BioNLP-2016](https://github.com/cambridgeltl/BioNLP-2016) - [x] [(13)[论文] How to Train good Word Embeddings for Biomedical NLP](https://aclweb.org/anthology/W/W16/W16-2922.pdf) - [x] [(14)[论文] A Neural Network Multi-Task Learning Approach to Biomedical Named Entity Recognitio](https://link.springer.com/article/10.1186/s12859-017-1776-8) - [x] [(15)[论文] Effective Neural Solution for Multi-Criteria Word Segmentation](https://arxiv.org/pdf/1712.02856.pdf) - [x] [(16)[代码] multi-criteria-cws](https://github.com/hankcs/multi-criteria-cws) - [x] [(17)[代码] CoVe](https://github.com/salesforce/cove) - [x] [(18)[论文] Learned in Translation: Contextualized Word Vectors](https://arxiv.org/pdf/1708.00107.pdf) ## 2 环境 ``` pip install -r requirements.txt ``` ## 3 目录 本地目录还包括data/,models/,完整目录如下: metaLSTM ----data ----conll2003(保存CoNLL-2003,用BMES标注) ----embedding(词向量目录) ----cellular(有关细胞的数据集) ----BioNLP13CG-IOBES ----BioNLP13PC-IOBES ----CRAFT-IOBES ----jointCellulars(用于加标签的多任务学习的数据集) ----multiDatasets(从资料11中下载的数据集) ----images (图片) ----MNIST(在MNIST数据集上测试RNNs) ----models(保存训练好的模型) ----Modules(RNNs, MetaRNNs, NormLSTM...) ----NER(主要实验的目录) ----Module(char, encoder, crf, ner) ----Tests(测试Optimizers/Normalizations...) ----cellulars(在3个cellular数据集上测试多任务性能) ----utils(配置文件,功能函数) ## 4 进展 - [x] metaRNNs - [x] 简单测试RNNs和MetaRNNs - [x] 在MNIST上测试RNNs - [x] 在MNIST上测试MetaRNNs - [x] 在CoNLL-2003上测试RNNs - [x] 在CoNLL-2003上测试MetaRNNs - [ ] NER冲刺state of the art - [ ] MetaLSTM的迁移能力 ## 5 实验 *5.1和5.2用于测试RNNs的性能,没有调整超参,所以效果并不好,等5.3完成后,再更新图片* ### 5.1 测试集MNIST [MNIST官网](http://yann.lecun.com/exdb/mnist/) MNIST是一个手写数字数据集,训练集有60,000个例子,测试集有10,000个例子。 #### 5.1.1 标准RNN和RNN - [x] 实验结果

#### 5.1.2 标准LSTM和LSTM - [x] 实验结果

#### 5.1.3 MetaRNN和MetaLSTM - [x] 实验结果

### 5.2 测试集CoNLL-2003 [CoNLL-2003官网](https://www.clips.uantwerpen.be/conll2003/ner/) CoNLL-2003是一个命名实体识别数据集,包含4类实体:PER, LOC, ORG, MISC #### 5.2.1 标准RNN和RNN - [x] 实验结果

*注:RNN图很快停止是因为训练时出现了NAN* #### 5.2.2 标准LSTM和LSTM - [x] 实验结果

#### 5.2.3 MetaRNN和MetaLSTM - [x] 实验结果

*注:MetaRNN图很快停止是因为训练时出现了NAN* ### 5.3 冲刺state of the art - [x] 梯度更新方法(SGD, Adagrad, Adadelta, Adam, Nadam ...) - [x] 归一化方法(Dropout, Batch, Layer) - [x] 词向量(cove) - [x] 多任务学习(加标签) - [ ] 注意力机制(待学习) - [ ] 元学习(学习率更新) #### 5.3.1 模型最优 - 双向 - 超参数 Model | Hidden_size | LR Method | Bidirectional | F1 :-: | :-: | :-: | :-: | :-: BaseLSTM | 200| SGD(0.015) | True | 91.18 LSTM | 200 | SGD(0.015) | True | 91.04/91.20(drop_lstm) MetaLSTM | 200 | SGD(0.015) | True | 90.97/90.54(drop_lstm) #### 5.3.2 梯度更新方法 **结论** - [x] 使用Adam,Loss下降最快 - [x] SGD训练结果最好 - [x] 我选择SGD **实验结果** - [x] Loss of Optimizers

- [x] F1 of Optimizers{train}

- [x] F1 of Optimizers{dev}

- [x] F1 of Optimizers{test}

#### 5.3.3 归一化方法 Method | Detail :-: | :-: Dropout | 在encoder的输出加dropout Batch Norm | Batch Norm LSTM #### 5.3.4 词向量 Model | Hidden_size| Layer | Embed Dict | F1 :-: | :-: | :-: | :-: | :-: LSTM | 600 | 2 | golve.840B.300d | 90.35 LSTM | 600 | 2 | CoVe | 87.57 - [x] 实验结果

#### 5.3.5 多任务学习 Dataset | STM | MTM :-: | :-: | :-: BioNLP13CG | 77.65 | **78.45** BioNLP13PC | **83.28** | 82.49 CRAFT | 76.59 | **78.61** **加标签** 将BioNLP13CG、BioNLP13PC和CRAFT三个数据集合并成一个,通过在句子首尾加标签的方式进行区分,例如: S-BioNLP13CG This O may O reflect O a O transition O ... S-BioNLP13CG 在打分的时候,将这些标签去掉。 - [x] 实验结果

- [x] 补充实验 **Cellular component group** Dataset | STM | MTM :-: | :-: | :-: BioNLP13CG-cc | **74.72** | 70.81 BioNLP13PC-cc | **88.17** | 81.17 CRAFT-cc | 64.24 | **65.65** **Cell group** Dataset | STM | MTM :-: | :-: | :-: BioNLP13CG-cell | **85.61** | 81.75 CRAFT-cell | **89.33** | 88.79 **Chemical group** Dataset | STM | MTM :-: | :-: | :-: BC4CHEMD | **82.90** | 82.10 BC5CDR-chem | 84.80 | **87.32** BioNLP11ID-chem | **64.89** | 58.30 BioNLP13CG-chem | 66.15 | **72.78** BioNLP13PC-chem | **74.27** | 70.80 CRAFT-chem | **80.48** | 79.34 **Disease group** Dataset | STM | MTM :-: | :-: | :-: BC5CDR-disease | 78.18 | **78.25** NCBI-disease | **85.62** | 83.44 **Species group** Dataset | STM | MTM :-: | :-: | :-: BioNLP11ID-species | **68.80** | 66.93 BioNLP13CG-species | 79.80 | **80.08** CRAFT-species | 97.84 | **97.99** Linnaeus | **86.23** | 85.96 #### 5.3.6 注意力机制 - [ ] 实验结果 #### 5.3.7 元学习 - [ ] 实验结果 ## 6 MetaLSTM的迁移能力 ## 7 体会 - [x] SGD训练,学习率lr设置很重要,过大容易训练不了 - [x] LSTM比RNN及其变种更容易训练,即使学习率lr设置过大 - [x] RNN在训练过程中,Loss容易变成NAN,而无法进一步训练 - [x] 对于NER任务,加CRF,双向LSTM效果显著(2~3个点),hidden_emb有些许的提升(1个点)