本文最后更新于:星期二, 十一月 22日 2022, 11:16 上午

先占坑,等比赛结束记录模型的思想

11 月至 12 月 15 作品提交

给看课程的同学算力,100 小时;fork 项目、创建项目,提升用户等级,从而获取免费时长;相当多实际项目;其他比赛;其他项目的 baseline paddleNLP 在 github

baseline:
赛道 1 的 baseline 5043272 4960090
赛道 2 的 baseline TensorRT 5007642

序列标注任务的思路、QA 的思路

思路 1:使用抽取式问答思路

baseline1: 水哥

https://aistudio.baidu.com/aistudio/projectdetail/5029712?forkThirdPart=1

notebook逻辑

1. 按照。分句,需要统计还可以按照什么进行分句切割
2. 删除文档中存在单句超长的文档,该部分可以提升,可以看一些 case 决定是由于分词不佳还是数据质量低
3. 对输入数据进行编码,
3.1 问题+答案长度超过 512 的会被跳过
3.2 调用 tokenizer.encode 接口,参数 1 是 query,参数 2 是 sentence
3.3 确认 start_pos 和 end_pos
产出的数据为
'input_ids', 'token_type_ids', 'seq_len', 'attention_mask', 'position_ids', 'start_positions', 'end_positions'

4. 数据批量打包,使用 batch_size = 6,这里可以使用其他的 batch_size
5. 设置 SGD 优化器,learning rate = 0.0005,这里可以使用其他的优化器以及learning rate
损失函数设置为 CrossEntropyLoss
6. 开始训练
7. 导出结果

步骤:

  1. 先跑通 Fine tune 中文预训练模型
  2. 调试一些超参数,batch_size/learning rate/epoch/等
  3. 应用学习率的一些 trick,adam/学习率衰减等
  4. 提升数据预处理的效果,不同切分方法、不同建模目标、数据增强等;
  5. 尝试使用其他预训练模型,做模型调研并修改;
  6. 提升数据后处理的效果,模型融合等;

会议提到的其他思想

数据整理手段:

  1. 。分段
  2. 滑动窗口

ErnieForQuestionAnswering
ErnieTokenizer
Ernie 结构

预处理方法调研
不同模型、不同框架调研
模型融合调研

SEO 的思路应用在数据增强
混合精度
warm up

optimizer
xgboost/lightgbm
bert 参数个数

水哥的优化思路:
1、他的方案只使用了 5000 条训练数据,后续可以使用全量数据;
2、数据预处理的改进,分割 sentences 的方式、正负样本比例的采样方式、句子长度改小一点方便训练等;
3、预训练模型,使用更 large 的模型;
4、集成模型,使用多折数据,或者不同文本处理方法来训练不同模型,然后集成;
5、标题信息可能会有用,不同类别的帖子中包含答案的概率不同;把标题、domain 等信息作为树模型的输入进行分类;
6、不同的建模方式,可以使用 query-answer 匹配的思路(nsp)来做?本思路是传统的 QA 方式进行建模的,提供 start 和 end
7、水哥的效果再 0.4~0.46,官方基线会更好,因为官方用到了更大的模型以及更多的数据;
8、必须用 paddle 开发。

baseline2:

https://aistudio.baidu.com/aistudio/projectdetail/4960090

baseline3:

https://aistudio.baidu.com/aistudio/projectdetail/5043272

默认回答:【】详情请看视频回答】,重复越高可能问题越大
长度过短:Noanswer 越可能
Noanswer:数据占 1/3,可以把 haveanswer 作为二分类,或者多任务学习方法

多片段抽取详见参考资料,框架应该支持;无答案?
官方的 baseline 优化的比较底层
对抗训练

思路 2:使用序列标注思路

baseline4:

https://aistudio.baidu.com/aistudio/projectdetail/5030168

对齐

滑窗要提前处理

没有答案就少滑窗,答案短就划得快,答案长过滑动窗口的大小,则以滑动窗口的上下标为start、end

focal loss 损失函数

标注 0-1 改造成高斯分布

分层任务,先预测是否存在答案,然后预测答案的开始和结束

分词按照 [,。【】、] 等等

查看水哥的代码,检验 badcase;answer list 有好多个答案的情况,他们如何对答案进行建模的?

序列标注问题

doc_stride 小的情况下,正负样本如何决定?如果 window 内只有部分答案,能算作正样本还是负样本?

CRF

问题

算力如何获取?大家算力充足吗

  1. 公开代码?代码仓库
  2. 时间表;分工

关键时间节点:
调研模型、挖掘 baseline 思想、数据预处理,数据增强结束
提交第一版模型,预计分数
不同数据训练出来不同的模型,多个高水平模型进行投票集成

11 月至 12 月 15 作品提交

11 月 21 日——11 月 27 日

11 月 28 日——12 月 4 日

12 月 5 日——12 月 11 日

12 月 12 日——12 月 15 日


notes      Extractive Question Answering Competition

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!