NLP精彩结赛!获奖选手解题思路说给你听

Posted 科赛Kesci

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NLP精彩结赛!获奖选手解题思路说给你听相关的知识,希望对你有一定的参考价值。



今年四月由百度和科赛网共同举办的NLP智能问答大赛与汽车大师产业问答大赛,在经历了初赛复赛和决赛的重重选拔后,最终在六月底落下帷幕。来自上海理工大学计算机科学与技术专业的的王忠萌和来自清华大学电子工程系的李淼分别获得冠军。


【百度PaddlePaddle AI大赛智能问答】


  • 一等奖:

  • iioiio 团队——王忠萌

  • 上海理工大学计算机科学与技术硕士三年级学生。研究方向为自然 语言理解方向。在2018MRC获得第四名。

  • 二等奖:

  • 浅尝辄止 团队——谢峰,刘洋

  • 算法不work 团队——陈云山

  • 三等奖:

        • 积雨云小队 团队——陈志雄

        • PaddlePaddleLover 团队——尹伊淳,刘世兴

        • 一剑飘雪之西门吹 团队——王涛


        【PaddlePaddle AI产业应用赛汽车大师问答摘要与推理】


        • 一等奖:

        • MG 团队——李淼

        • 清华大学电子工程系,多媒体信号与智能信息处理实验室博士。主攻自然语言处理方向。

        • 二等奖:

        • - 团队——黎健成

        • iioiio 团队——王忠萌

        • 三等奖:

          • =.= 团队——林天威

          • 汽车滴滴滴 团队——陈大军

          • SCL 团队——昌志松


          此次百度NLP智能问答大赛不仅为参赛者提供了在线数据分析平台K-Lab,嵌入PaddlePaddle 深度学习框架,更为选手在复赛提供百度云GPU计算资源。赛题要求选手对人工智能回答实际问题进行模型训练,希冀在不远的将来创造出用户无需打开网页手动筛选,便能获得全套解决方案的AI应用, 节省大量时间的同时将代替目前市面上的绝大部分AI搜索助手。

          NLP精彩结赛!获奖选手解题思路说给你听

          汽车大师作为一款为车主答疑解惑用车问题的APP,此次汽车大师产业赛同样采用PaddlePaddle作为赛事框架,提供共10万元的奖金池供参赛优秀选手分享,并在第二比赛阶段免费提供强大的GPU计算资源——英伟达深度学习开发卡。

          NLP精彩结赛!获奖选手解题思路说给你听

           

          对于这两次比赛的获奖选手,小科有幸和他们进行采访调研,以下是采访的重要部分节选,希望对你的比赛和学习会有帮助,enjoy




          百度NLP智能问答



          选手1:


          问:为什么参加本次大赛,最吸引你的地方在哪里?


          答:参加本次大赛主要有以下几个原因:


          1)对大赛的主题比较感兴趣。这次大赛的主题是智能问答,目前比较流行使用深度学习的方法解决这个问题。在校期间我也主要使用深度学习等方法解决自然语言处理、计算机视觉等问题,因此大赛的主题与平时研究的课题比较相关,个人也十分感兴趣。


          2)能学习PaddlePaddle。这次大赛要求使用PaddlePaddle平台训练模型,通过这次大赛我可以学习使用PaddlePaddle,有利于锻炼自己在多平台进行实验的能力。


          3)比赛提供GPU。这次大赛提供了GPU给大家使用,对于模型的训练有十分重要的作用。


          4)有奖励。大赛提供了一定的奖励,这让人有不断优化模型的动力。


          问:看到赛题时你是如何思考的,分享主要思路?


          答:主要思路:


          1)充分了解赛题。首先要了解赛题的任务是回答一些给定候选文档集合的问题,目标是能够正确、完整、简洁地回答问题。比赛提供了DuReader这个迄今为止规模最大的中文公开领域阅读理解数据集,我们需要了解这个数据集的特性,对其进行统计和分析。


          2)尝试目前较优秀的开源方法。比赛要解决的问题是典型的文本问答问题,目前有一些优秀的开源算法可以解决这个问题。我们可以参考这些方法,实现一个基线(baseline)模型。例如,对于每个问题给定的候选文档集合,我们先从每个文档中选择一个最相关的段落,再在选定的段落中应用Match-LSTM或BiDAF模型。


          3)进行改进。对于基线模型没有很好回答的问题,我们要分析其效果不好的原因。根据这个原因,我们对模型进行改进和优化。这时不仅仅需要进行多次对比实验和参数调整,还需要翻阅最新的论文寻找解决相关问题的方法。


          问:是否有论文中的思路或算法借鉴?


          答:有。参考论文:

          [1] DuReader: a Chinese Machine Reading Comprehension Dataset from Real-world Applications

          [2] Machine comprehension using match-lstm and answer pointer

          [3] Bidirectional attention flow for machine comprehension

          [4] Attention is all you need

          [5] Efficient Estimation of Word Representations in Vector Space


          问:自己队伍本次比赛用应用的算法的创新性?比较好的点?


          答:创新性:


          1)加入Attention层。参考Attention is all you need,在模型的match层之后,我们会对上下文信息进行融合,此时加入self attention,能够一步到位捕捉到全局的联系,取得较好的效果。


          2)使用适合中文的词向量。开源代码中的词向量是在训练过程中不断学习的,初始时随机初始化。使用适合中文的词向量word2vec-CBOW-cn,可以减少这部分参数的学习,并且能得到较好的词向量表示,有利于模型的快速训练和得到较好的效果。


          3)训练段落排序模型。基线模型使用了一个简单的段落选择方法,并没有训练段落排序(paragraph ranking)模型。训练一个段落排序模型并对段落的选择进行预测,对最终摘要生成的效果有提升作用。


          问:为什么选择在目前的领域学习/发展?主要的动力或者灵感是什么?


          答:选择在目前的领域学习/发展原因:同10,因为个人感兴趣,而且科技发展所需,该领域发展较快,能接触到很多先进的方法。


          动力:


          1)通过长时间的研究取得一定的成果。确定研究方向之后,研究过程中会遇到很多困难和挑战,即使想办法一点点去克服,依然会有各种新的问题等待着我们去解决。不过,每当取得阶段性的成果,并对其进行整理总结的时候,总能给人以继续研究的动力。


          2)不断学习新的技术。由于人工智能领域发展非常迅猛,很快会有新的论文、新的方法被提出,不断跟进这些优秀的方法能让人感到兴奋。


          3)认识许多厉害的朋友。在这个领域,总是能认识到许多优秀的朋友,与他们共事非常开心,也有很多的收获。



          选手2:


          问:看到赛题时你是如何思考的?主要思路?


          答:因为之前参加的比赛还有很多没有掌握的,想借此更加深入理解,思路主要还是沿用现在流行的一些框架,主要是文章,问题的语义表达,注意力机制,筛选答案。主要是之前都是用的tensorflow框架,且不是在ipython(klab我认为的是一个变种,理解有误的话请见谅),卷积神经研究的比较多,在NLP也就是今年才刚知道的,并开始学习的,好多的东西都是第一听到,也不好和群里的人讨论,看的一些网上的介绍,都是翻译论文或转载,没有比较系统的,只能找一些百度教学视频或比较老的有独立见解的文章学习了解释疑,而且理论知道了一些,具体转换到代码和工程上,这个现在还是断档的,需要费心力


          问:本次比赛最大的挑战和困难在哪里?


          答:怎么在实际应用中能取得好的效果,而不是像比赛中固定的数据集


          问:是否借鉴参考哪些论文中的思路或算法?


          答:主要是BiDAF和Match-lstm的思路


          问:自己队伍本次比赛用应用的算法的创新性?比较好的点?


          答:想的是根据偏旁部首、字、和词,再通过获取5段文章、问题和答案,通过迁移训练能抽取出5段文章的和问题最接近的组成一篇文章,来与答案匹配。


          这个都是一些想法,之前是tensorflow框架,且是在linuxe环境或windows中,现在用PaddlePaddle只能Docker还有好多不知道怎么使用,还要结合论文,只能是一些初步的想法。


          因为看到一些相关的文章,基本都是英文的为主,而中文的一些偏旁部首,也能表示出一些语义,这个英文通过字母能过预防一些过拟合,我想中文也能在字符之上再通过偏旁部首减少一些,但基于目前的水平和验证环境,不知道能起到什么效果,但我想这相当于再次做了“卷积”,应该是有点作用的。


          而整个数据集看了一下,描述性的占绝大部分,其他的yesno和实体的一些的占一部分,这个需要区别对待,描述性的,看5段段落,一般都是对这个问题的描述和扩充,其实如果数据集比较准确的话,我想这5段抽取出来的最核心的组成一个新的段落,比选其中一个段落我想应该更符合人的阅读理解模式和贴近答案,但这个通过机器评估可能不一定就比选其中一个高recall的就好,但这样我觉得更基础和贴近人,而不是比赛。


          问:参加这次比赛最大的感受和收获和遇到最大的挑战是那些?


          答:NLP还有好多不懂的,虽然现在用的一些技术可能是之前的20多年前的,但还有很多需要学习和了解的,希望能更加“智能”的NLP,而不是靠算力。


          其实看到现在比赛,一个模型能通吃好多,且还是在LSTM,ATTENTION,MEMORYnet这些好些年之前的技术,就算google的一些selfAttention也是一个巧妙的词袋,只不过确实代码技巧和加入的一些其他能看起来比其他好很多,但也没有太多的技术基础突破的,纯靠算力,而不像人会有灵光一闪的感觉。


          问:未来希望从事的工作或研究,为什么?


          答:还是希望能尽快NLP落实到实际应用中,因为现在可能是基础研究还没有突破,导致现在还是在用20多年前的技术,其实已经是发展停滞了,想能在这方面学习研究并能提供一点点的绵薄之力。


          问:为什么选择在目前的领域学习/发展,主要的动力或者灵感是什么?


          答:因为想能学习到后能应用到实际工作当中来,能真正的解决实际问题。

          主要现在可能还是兴趣驱动和一些工作上的一点点驱动,其实在这个领域中一些交流学习的氛围其实还是很好的,但在具体工作和生活环境中,这个现在还是阳春白雪,曲高和寡的状态,有时自己搞懂一点点,不是核心算法,就是数据处理都能欣喜一阵,有时有疑问周围都没有解决的(现在是竞赛中,不方便询问),导致很是郁闷。



          最后还是感谢klab的给了我这次机会,感谢klab的工作人员辛苦付出 ~!



                      汽车大师的采访记录


          选手3:


          问: 看到赛题时你是如何思考的,分享一下主要的思路?


          答:最初看到赛题时,我认为最终要生成的报告(report)应该类似是对话内容(conversation)的摘要,所以就考虑使用attention seq2seq框架来做这个问题,同时问题(problem)对于选择conversation中的哪些内容出来作为report也是有用的,所以在seq2seq框架中也必须把problem考虑进来,这又有点和阅读理解类似了,只不过我还是使用seq2seq框架,直接把report生成出来,而不是从conversation中选择一段作为report。


          其实我最想实现的模型是类似pointer network的摘要网络,然后使用reinforcement learning的方法继续训练模型,但是用于种种原因并没能实现。


          问:是否借鉴参考哪些论文中的思路或算法?


          答:我的模型主要借鉴了“Teaching Machines to Read and Comprehend(arXiv:1506.03340)”这篇论文。


          问:自己队伍本次比赛用应用的算法的创新性和比较好的点在于?


          答:我设计的网络模型主要借鉴了上面提到的论文中的attentive reader,但是也略有不同,比如


          1)我在编码problem和conversation时使用的是同一个bi-Gru encoder(共享了参数),但是由于没有时间做对比实验,不知道这个改动实际上好不好; 2)我共享了decoder生成词参数矩阵和embedding 矩阵,并且用在训练集上skip-gram预训练得到的参数作为初值,虽然同样没有对比实验,但是我感觉这点是比较好的。


          问: 未来希望从事怎样的工作或研究?


          希望从事自然语言处理、对话系统相关的研究工作,这是我的研究方向和兴趣所在。



          文末彩蛋


          汽车大师冠军选手已经为科赛的社区小伙伴分享了代码开源贴,点击阅读原文,一起来学习吧!


          另外,百度的自然语言部门正在招人,感兴趣的小伙伴或者获奖选手请火速联系小科~



          非常感谢以上选手的干货分享

          希望你的阅读有所收获


          还有什么想问的吗?

          欢迎给我们反馈、留言或评论



          看到这里 不妨点击阅读原文 

          挑战一波


          科赛Kesci.com是聚合数据人才和行业问题的在线社区。科赛打造的K-Lab在线数据分析协作平台,为数据工作者的学习与工作带来全新的体验。


          以上是关于NLP精彩结赛!获奖选手解题思路说给你听的主要内容,如果未能解决你的问题,请参考以下文章

          请高手帮忙,要解题思路或者是代码,最好c语言。

          华为OD机试真题Python实现玩牌高手真题+解题思路+代码(2022&2023)

          华为OD机试真题Java实现玩牌高手真题+解题思路+代码(2022&2023)

          笔试强训之每日一题

          2021亚太杯C题全网最全解题思路+塞罕坝林场数据数据分享

          leetcode二叉树