Kaggle比赛银牌记录

  • 0、比赛内容背景
  • 1、数据处理
  • 2、模型/结构
  • 3、其他方法
  • 4、总结

从六月以来,一直在华为实习,没抽出时间写一写文章,最近很开心的是刚结束的Kaggle比赛U.S. Patent Phrase to Phrase Matching中取得了银牌,很感谢队友给予的大力帮助,在这里简述一下具体的做法,以作回顾。

0、比赛内容背景

背景:以美国专利库为主要数据集,匹配专利文档中的关键词短语来提取相关信息

  • 类型:深度学习/NLP
  • 数据:成对的短语(anchor和target),在0到1的范围内评估它们的相似性,训练集36473对短语,训练集大约有12000对短语
  • 评估标准:皮尔逊相关系数

1、数据处理

数据处理方面一些常规的处理方法,例如转换成小写、去掉前后的空格等就不再赘述。
主要说一些数据集的处理,本次数据集主要处理:

  1. 讨论区引入了CPC文件,该文件中每个专利代码的标题作为title text。
  2. 对anchor和context进行groupby,获得聚合后的targets列表。
  3. 在2的基础上生成文本 anchor[SEP]target[SEP]title[SEP]gp_targets
  4. 使用groupKfold将数据拆分成训练集和验证集,能够有效地避免数据泄露导致的线上线下分数差别过大问题。

2、模型/结构

模型使用的是Deberta(主流)、bert for patent、ELECTRA、Funnel-Transformer四者的融合。

Model seq_length CV PB
deberta-v3-large 200 0.844 0.842
electra-large 200 0.832 0.833
funnel-large 200 0.824 0.825
bert for patent 200 0.824 0.824
Ensemble 0.85x

Deberta作为Bert的改进版本,主要包含以下三点:

  1. 首先是解耦注意机制(Disentangled attention),每个词分别用两个向量表示,分别对其内容和位置进行编码,单词之间的注意权值分别用其内容和相对位置的解耦矩阵计算。
  2. 一种增强的掩码解码器用于在解码层中合并绝对位置,以预测模型预训练中的掩码tokens。
  3. 此外,采用一种新的对抗训练方法用于微调,以提高模型的泛化能力

Deberta与bert不同的是,输入层中的每个单词都用一个向量表示,这个向量是单词(内容)嵌入和位置嵌入的总和,而Deberta中的每个单词都用两个向量表示,分别对其内容和位置进行编码,分别根据单词的内容和相对位置,采用解耦矩阵计算单词间的注意权值。

实现方面主要利用了Huggingface Transformer,其能够帮我们跟踪流行的新模型,并且提供统一的代码风格来使用BERT、XLNet和GPT等等各种不同的模型。而且它有一个模型仓库,所有常见的预训练模型和不同任务上fine-tuning的模型都可以在这里方便的下载。其主要的三大类:

  • Model 类 :包括30+的PyTorch模型(torch.nn.Module)和对应的TensorFlow模型(tf.keras.Model)。
  • Config 类:它保存了模型的相关(超)参数。我们通常不需要自己来构造它。如果我们不需要进行模型的修改,那么创建模型时会自动使用对于的配置。
  • Tokenizer类:它保存了词典等信息并且实现了把字符串变成ID序列的功能。

上述模型作为backbone,最后加上一个全连接层与sigmod层

3、其他方法

  • 损失函数:MSELoss
  • 优化器:AdamW
  • 调度器:CosineAnnealingWarmRestarts
  • FGM对抗训练(帮助不大,上分很微弱)

4、总结

多关注数据方面的处理,数据的处理往往是最重要的!!!!
多进行模型的融合,比无目的的调参要有用一些!!!!

记录自己第一个Kaggle银牌相关推荐

  1. oracle 被另一用户锁定,Oracle报错记录被另外一个用户锁定的解决方案

    原因 当一个用户对数据进行修改时,若没有进行提交或者回滚,Oracle不允许其他用户修改该条数据,在这种情况下修改,就会出现:"记录被另外一个用户锁定"错误. 解决 查询用户.数据 ...

  2. oracle 记录被另一个用户锁住

    oracle数据中删除数据时提示"记录被另一个用户锁住" 解决方法 1 查看数据库锁,诊断锁的来源及类型   select object_id,session_id,locked_ ...

  3. [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …...

    [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Python学习] ...

  4. java+oracle数据库锁,数据库学习之Oracle数据库\记录被另一个用户锁住\解决方法...

    1.先来看看为什么会出锁住: 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数 ...

  5. 记录自己第一个java学习博客

    记录自己第一个java学习博客 阿里java规范 弄懂 JRE.JDK.JVM 之间的区别与联系 DOS常用命令 常用mac终端命令 今天我学习了java第一个程序打印出helloworld! pac ...

  6. 精华转贴:只是为了记录---我们实验室一个牛人去年写的找工作的总结

    精华转贴:只是为了记录---我们实验室一个牛人去年写的找工作的总结 精华转贴:只是为了记录---我们实验室一个牛人去年写的找工作的总结2008-01-28       15:30最近由于某些原因,不能 ...

  7. plsql 提示记录被另一个用户锁住

    ** 一.开发环境 plsql oracle 二.报错 提示记录被另一个用户锁住 三.解决方法 1.找出数据库的sid,serial#,以便于之后杀死: select t2.username,t2.s ...

  8. 记录发现的一个hiredis的bug

    hiredis是redis官方提供的c客户端库.在读代码的过程中,发现了一个bug,记录一下. hiredis里定义了一个上下文结构(struct redisContext),代码如下(deps/hi ...

  9. 用 Python 写一个 Kaggle 比赛排行榜的爬虫

    长久以来,我和小伙伴们都被 Kaggle 网站的加载速度困扰着,比如最近在用 Kaggle 上的数据集测试模型效果时,遇到排行榜(Leaderboard)刷新困难的问题.于是我们开始探索解决方案. 首 ...

最新文章

  1. NYOJ 179 LK's problem
  2. java 类数组_Java常用类-字符串、日期类、算法及数组工具类等
  3. 2015-12-01 存储过程
  4. 【实习记】2014-09-26恢复linux下误删的ntfs盘中的文件
  5. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_4字符输出流的基本使用_写出单个字符...
  6. amos调节变量怎么画_结构方程模型建模思路及Amos操作--调节变量效果确定(二)(还是满满都是骚操作)...
  7. 单片机超声波测距模块原理与源码解析
  8. openstack-packstack一键式在线部署
  9. windows下安装ruby(一)
  10. VMWare Fusion 导入已有的虚拟机
  11. Latex公式中符号上下分别加横线的写法
  12. ESD问题案例分析-智能手表为例
  13. 关于sockaddr_in 、WSAData 、sockaddr等未定义的问题
  14. 在c语言中作为字符串结束标志是什么,字符串的结束标志是什么?
  15. MapReduce:Combiner与Shuffle阶段之Reducer输入
  16. latex中report目录_latex系列--2 标题、章节、目录、标签、引用
  17. HTML标签与CSS样式
  18. 竟然在GitHub标星27k+阿里大牛肝出的443页TCP/IP协议趣谈笔记,有何神奇之处?
  19. 软件测试实训的意义和目的,软件测试报告目的是什么
  20. 第1章 数字图像处理绪论

热门文章

  1. 人才管理精编资料大全
  2. 【UE4 RTS游戏】07-控件蓝图显示当前游戏时间
  3. 有关optimizer.param_groups用法的示例分析
  4. Testdisk 操作指南
  5. python保留字_开始了类定义_Python 类的定 义
  6. Android高级架构师整理面试经历发现?(大厂面经,移动端静态网站开发
  7. 谷歌眼镜GDK开发指南之快速开始
  8. 云存储学习笔记5-FreeNAS搭建
  9. lvds接口屏线安装图解_区分LVDS屏线及屏接口定义
  10. 网管必备的一键快速修复电脑网络批处理命令