返回列表

45th solution, my journey and learnings, feeling grateful :)

361. TensorFlow 2.0 Question Answering | tensorflow2-question-answering

开始: 2019-10-28 结束: 2020-01-22 自然语言处理 数据算法赛
第45名方案,我的旅程与心得,心怀感激 :)

第45名方案,我的旅程与心得,心怀感激 :)

作者:Darek Kłeczek
发布时间:2020-01-23

今天我凌晨4点就醒了,就像比赛最后几周的每一天一样。昨天我最后一次查看时,还在公共排行榜上排第54名,我真的很指望通过这次比赛获得奖牌并晋升为 Kaggle Expert。我做了日常的快速锻炼,终于打开了 Kaggle,发现我上升了几个名次,留在了银牌区。我笑了,放松下来,决定立刻写下我的心得。

我的方案非常简单:

  1. 从 prvi 的 bert-joint 内核开始(感谢 @prokaj)。
  2. 训练了一个新的 bert-joint 模型,从 bert-large-uncased 开始(我相信全词掩码比现有的 bert-joint 检查点提高了1-2分),先在 SQUAD 上微调1个 epoch,然后在 NQ 数据集上微调1个 epoch(lr=3e-5)。我尝试了其他几种设置,学习率在 1e-5 到 3e-5 之间,epoch 为 1-3,但最初的设置效果最好。
  3. 我在 NQ 开发集上进行了广泛的验证,将模型输出与基本事实进行比较(使用修改版的 NQ 浏览器),并利用这些见解来设置后处理阈值。

我想做但没做成的事——我花了相当多的时间试图在 bert-joint 的输出特征上再加一层,以学习后处理规则,而不是手工设定。最后,由于要在工作和家庭之间平衡,我抽不出那么多时间,所以放弃了这个想法。我很期待看到获胜的方案,看看他们是否实现了这一点,并向他们学习。

在分享我的心得之前,先介绍一下背景。我在 IT 行业工作了 15 年,担任过项目管理、产品管理、运营和咨询等各种职务,但没有做过编程/数据科学工作。我最初在 2 年前通过 Andrew Ng 的课程对 ML 产生兴趣(那时第一次注册 Kaggle),但直到几个月前发现 fast.ai 才真正做过什么实际操作。我学习了 fast.ai 深度学习课程的第一部分,然后来到 Kaggle 练习这些技能。感谢 @jhoward 的教导和激励!

我的心得:

  1. 感到不知所措没关系。很多个晚上我对妻子说这东西对我来说太难了……然后早上醒来,逐行检查代码以理解输入/输出,分析错误,并想出解决方案。
  2. 每天花一点时间总比什么都不做强。我有全职工作,有妻子和2.5岁的女儿……我开始在晚上做 Kaggle,等我的女孩们睡着后,但在花1-2小时哄女儿睡觉后,我已经没有精力写代码了……后来我改成早睡早起,每天1-2小时,我觉得我可以学习并取得进步。
  3. ML/Kaggle 社区太棒了!我常去学习的地方是 fast.ai 论坛、Kaggle 讨论区和 ML Twitter。这个社区如此开放,有这么多学习和分享正在进行,真是太棒了。谢谢你们!!!

在此,我想感谢 Kaggle 和 Google 组织这次比赛并提供 TPU 额度。感谢 Kaggle 社区(特别是 @prokaj, @kashitsky, @christofhenkel, @yihdarshieh)分享你们的代码和见解,能向这么多有才华的人学习真是太棒了。祝贺获胜者、奖牌获得者以及所有在这次比赛中学到东西的人!

最后一件事——到目前为止我只参加过单人比赛,但我期待在未来的比赛中找到合作伙伴。如果你想在未来组队,请通过 darek.kleczek@gmail.com 与我联系 :)

同比赛其他方案