ASC20 比赛因为疫情的原因,proposal 的提交延期了一个多月,所以中间我也休息了一段时间。最近随着诸多工作的完成,ASC 20 的比赛之旅也渐渐到了尾声。
题目
这一次的赛题是有关 NLP 方向的,要在只使用 Pytorch 框架的情况下完成 Cloze 下游任务的设计,并且以准确率作为最终的分数计算。
主办方并未提供 baseline,只提供了数据集,格式为 json,具体如下:
{
'article': '...',
'options': [[words * 4] * 20],
'answers': ['A','B'... * 20]
}
目前的进展及思路
在之前的训练的过程中出现了一个比较恼人的问题,最早我采用的是 4 分类,但是网络会出现不收敛的问题,我尝试了许多的手段(正如之前所提到的那样)也是没有办法去解决。后来经过检查和与师兄的讨论才发现作 4 分类本身就比较难作拟合——可能根本就没有拟合,毕竟样本太少,每一部分的文字又太多,导致 embedding 出来的矩阵差距较小。
后来采用了 2 分类效果就好了很多,因此目前训练的成果已经成功追上了 1 队。而且由于 Transformers 在训练的时候能够自动判断 GPU 的环境使用分布式训练,所以还是很顺畅地做了分布式训练。